Как удалить две повторяющихся строки подряд? У нас есть таблица в которой есть повторяющиеся подряд строки (после сортировки) и обе они ненужны!
Например в таблице будут будущие проводки и если суммы совпадают, то эти проводки нам не нужны.
Значит нужно удалить повторяющиеся строки:
Код 1C v 8.х #Область УдалениеЛишнихСтрок
Индекс= 0 ;
Для каждого СтрТаб Из ТаблицаКурсовыхРазниц Цикл
Индекс = ТаблицаКурсовыхРазниц. Индекс( СтрТаб) ;
СтрТаб2 = ТаблицаКурсовыхРазниц. Получить( Индекс) ;
Если СтрТаб. СубконтоДт1 = СтрТаб2 . СубконтоДт1 И СтрТаб. Сумма = СтрТаб2 . Сумма Тогда
ТаблицаКурсовыхРазниц. Удалить( Индекс+ 1 ) ;
ТаблицаКурсовыхРазниц. Удалить( Индекс) ;
КонецЕсли ;
КонецЦикла ;
#КонецОбласти
На выходе получим уже чистую таблицу.
Категория:
Работа с Таблицей Значений Как в запросе объединить несколько значений в один столбец отобрав по условию? Бывают ситуации, особенно когда формируешь отчеты по проводкам, где надо вывести отчет по одному типу значений и эти значения могут быть в разных колонках регистра.
В примере ниже, необходимо собрать отчет в разбивке по Номенклатурным группам.
Проводки разные - поэтому Субконто с типом Номенклатурная группа может быть как Дт1 и Дт2 или Дт3
Пример запроса объединяющий несколько значений в один столбец отобрав по условию и собирающий данные по этим условиям:
Код 1C v 8.х Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3
| КОНЕЦ КАК Измерение,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.LOCATION_ACTIVITY,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.REVENUE_COST_CENTER,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Организация,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Комментарий,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка КАК Документ
|ПОМЕСТИТЬ втПоИзмерениям
|ИЗ
| Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
|ГДЕ
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Проведен
| И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.ПериодРегистрации МЕЖДУ &НачалоПериода И &ОкончаниеПериода
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втПоИзмерениям.Измерение,
| втПоИзмерениям.LOCATION_ACTIVITY,
| втПоИзмерениям.REVENUE_COST_CENTER,
| втПоИзмерениям.Сумма,
| втПоИзмерениям.Организация,
| втПоИзмерениям.Комментарий,
| втПоИзмерениям.Документ
|ИЗ
| втПоИзмерениям КАК втПоИзмерениям
|ГДЕ
| втПоИзмерениям.Измерение ССЫЛКА Справочник.НоменклатурныеГруппы" ;
Запрос. УстановитьПараметр( "НачалоПериода" , Дата( "01.09.2014 0:00:00" ) ) ;
Запрос. УстановитьПараметр( "ОкончаниеПериода" , Дата( "30.09.2014 23:59:59" ) ) ;
Результат = Запрос. Выполнить( ) ;
Выборка = Результат. Выгрузить( ) ;
Для каждого СтрокаТЗ Из Выборка Цикл
КонецЦикла ;
Категория:
Запросы Как получить виды субконто счета Пример получения возможных видов субконто у счета
Код 1C v 8.2 УП &НаСервере
Процедура ВывестиСубконтоСчета(сч)
ТаблицаСубконто = Сч. ВидыСубконто;
Для Каждого ТекущаяСтрока Из ТаблицаСубконто Цикл
Сообщить( ТекущаяСтрока. ВидСубконто) ;
КонецЦикла ;
КонецПроцедуры
Пример получения значений субконто в движениях документа
Код 1C v 8.2 УП &НаСервере
Процедура ВывестиСубконтоДокумента(ДокументПроверки)
Регистр = РегистрыБухгалтерии. Бухгалтерский;
ДвиженияБУ = Регистр. ВыбратьПоРегистратору( ДокументПроверки) ;
Пока ДвиженияБУ. Следующий( ) Цикл
Сообщить( "Проводка " + ДвиженияБУ. НомерСтроки) ;
Сообщить( "Счет Дт " + ДвиженияБУ. СчетДт) ;
ТаблицаСубконтоДт = ДвиженияБУ. СчетДт. ВидыСубконто;
Для Каждого ТекущаяСтрока Из ТаблицаСубконтоДт Цикл
Сообщить( "Субконто Дт" + ТекущаяСтрока. НомерСтроки + " - " + ДвиженияБУ. СубконтоДт[ТекущаяСтрока. ВидСубконто]) ;
КонецЦикла ;
Сообщить( "Счет Кт " + ДвиженияБУ. СчетКт) ;
ТаблицаСубконтоКт = ДвиженияБУ. СчетКт. ВидыСубконто;
Для Каждого ТекущаяСтрока Из ТаблицаСубконтоКт Цикл
Сообщить( "Субконто Кт" + ТекущаяСтрока. НомерСтроки + " - " + ДвиженияБУ. СубконтоКт[ТекущаяСтрока. ВидСубконто]) ;
КонецЦикла ;
КонецЦикла ;
КонецПроцедуры
Категория:
Регистры бухгалтерии Проведение документа по регистру бухгалтерии Задача: Есть два склада Склад1 и Склад2. Нужно переместить определенное количество товара со склада1 на склад2. При списании со склада1 нужно проверять остаток, что хватает товара. Проведение сделать по регистру бухгалтерии.(проверку тоже по регистру бухгалтерии).
Решение: В Шапке документа Склад1 и Склад2. В Табличной части номенклатура и количество.
Код 1C v 8.х Процедура ОбработкаПроведения(Отказ, Режим)
Движения. Хозрасчетный. Очистить( ) ;
Движения. Хозрасчетный. Записать( ) ;
Движения. Хозрасчетный. Записывать = Истина ;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.КоличествоОстатокДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
|ГДЕ
| ХозрасчетныйОстатки.Счет = &Счет
| И ХозрасчетныйОстатки.Субконто1 = &Субконто1
| И ХозрасчетныйОстатки.Субконто2 = &Субконто2" ;
Запрос. УстановитьПараметр( "Счет" , ПланыСчетов. Хозрасчетный. ТоварыНаСкладах) ;
Запрос. УстановитьПараметр( "Субконто1" , ТекСтрокаТовары. Номенклатура) ;
Запрос. УстановитьПараметр( "Субконто2" , Склад1 ) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Если Выборка. КоличествоОстатокДт < ТекСтрокаТовары. Количество Тогда
Сообщить( "На складе1 остака: " + СокрЛП( Выборка. КоличествоОстатокДт) ) ;
Отказ = Истина ;
Возврат ;
КонецЕсли ;
Иначе
Сообщить( "нет остатка на складе1" ) ;
Отказ = Истина ;
Возврат ;
КонецЕсли ;
Движение = Движения. Хозрасчетный. Добавить( ) ;
Движение. СчетКт = ПланыСчетов. Хозрасчетный. ТоварыНаСкладах;
Движение. СчетДт = ПланыСчетов. Хозрасчетный. ТоварыНаСкладах;
Движение. Период = Дата;
Движение. КоличествоКт = ТекСтрокаТовары. Количество;
Движение. ДатаЗаписи = Дата;
Движение. Содержание = "Перемещение" ;
БухгалтерскийУчет. УстановитьСубконто( Движение. СчетКт, Движение. СубконтоКт,
"Номенклатура" , ТекСтрокаТовары. Номенклатура) ;
БухгалтерскийУчет. УстановитьСубконто( Движение. СчетКт, Движение. СубконтоКт,
"Склады" , Склад1 ) ;
БухгалтерскийУчет. УстановитьСубконто( Движение. СчетДт, Движение. СубконтоДт,
"Номенклатура" , ТекСтрокаТовары. Номенклатура) ;
БухгалтерскийУчет. УстановитьСубконто( Движение. СчетДт, Движение. СубконтоДт,
"Склады" , Склад2 ) ;
КонецЦикла ;
КонецПроцедуры
Категория:
Регистры бухгалтерии Как реализовать метод "красного сторно" для регистра бухгалтерии? Код 1C v 8.х Процедура ОбработкаПроведения(Отказ, Режим)
СторнируемыеДвижения = РегистрыБухгалтерии. Хозрасчетный. ВыбратьПоРегистратору( СторнируемыйДокумент) ;
Пока СторнируемыеДвижения. Следующий( ) Цикл
Проводка = Движения. Хозрасчетный. Добавить( ) ;
Проводка. Период = Дата;
Проводка. СчетДт = СторнируемыеДвижения. СчетДт;
Проводка. СчетКт = СторнируемыеДвижения. СчетКт;
Для каждого Субконто Из СторнируемыеДвижения. СубконтоДт Цикл
Проводка. СубконтоДт[Субконто. Ключ] = Субконто. Значение;
КонецЦикла ;
Для каждого Субконто Из СторнируемыеДвижения. СубконтоКт Цикл
Проводка. СубконтоКт[Субконто. Ключ] = Субконто. Значение;
КонецЦикла ;
Проводка. ВалютаДт = СторнируемыеДвижения. ВалютаДт;
Проводка. ВалютаКт = СторнируемыеДвижения. ВалютаКт;
Проводка. ВалютнаяСуммаДт = - СторнируемыеДвижения. ВалютнаяСуммаДт;
Проводка. ВалютнаяСуммаКт = - СторнируемыеДвижения. ВалютнаяСуммаКт;
Проводка. КоличествоДт = - СторнируемыеДвижения. КоличествоДт;
Проводка. КоличествоКт = - СторнируемыеДвижения. КоличествоКт;
Проводка. НомерЖурнала = СторнируемыеДвижения. НомерЖурнала;
Проводка. Организация = СторнируемыеДвижения. Организация;
Проводка. Содержание = СторнируемыеДвижения. Содержание;
Проводка. Сумма = - СторнируемыеДвижения. Сумма;
КонецЦикла ;
Движения. Хозрасчетный. Записать( ) ;
КонецПроцедуры
Категория:
Регистры бухгалтерии Как перенести остаток со счета на счет? Код 1C v 8.х Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.СуммаОстатокДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, ,
| Субконто1 = &Контрагент И Организация = &Организация И Субконто2 = &Договор) КАК ХозрасчетныйОстатки" ;
Запрос. УстановитьПараметр( "Период" , Период1 ) ;
Запрос. УстановитьПараметр( "Контрагент" , Контрагент) ;
Запрос. УстановитьПараметр( "Договор" , Договор) ;
Запрос. УстановитьПараметр( "Организация" , Организация) ;
Запрос. УстановитьПараметр( "Счет" , ПланыСчетов. Хозрасчетный. РасчетыСПокупателями) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
Документ = Документы. ОперацияБух. СоздатьДокумент( ) ;
Документ. Дата = РабочаяДата;
Документ. Организация = Организация;
Документ. Содержание = "Погашение дебиторской задолженности" ;
Проводка = Документ. Движения. Хозрасчетный. Добавить( ) ;
Проводка. СчетДт = ПланыСчетов. Хозрасчетный. РасчетыСПокупателями;
Проводка. СчетКт = ПланыСчетов. Хозрасчетный. ПрочиеРасходы;
Проводка. СубконтоДт. Контрагенты = Контрагент;
Проводка. СубконтоДт. Договоры = Договор;
Проводка. Сумма = Выборка. СуммаОстатокДт;
Документ. СуммаОперации = Выборка. СуммаОстатокДт;
Форма = Документ. ПолучитьФорму( ) ;
Форма. Открыть( ) ;
КонецЕсли ;
Категория:
Регистры бухгалтерии Документ "Корректировка записей регистров" - Как программно создать и заполнить? Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ «Корректировка записей регистров», - ввод начальных остатков, исправление ошибок в учете, отражение в учете операций, для которых в конфигурации нет специальных документов. В документе есть сервис автоматического заполнения движений с предопределенным действием «Сторно движений документа». С его помощь можно автоматически создать движения по регистрам бухгалтерии и регистрам накопления, аналогичные движениям указанного документа, но с отрицательными значениями.
Иногда количество вводимых записей по регистрам может быть велико и тогда целесообразно выполнить корректировку регистров программно. Документ «Корректировка записей регистров», как Вы уже, наверно, догадались, не совсем обычный. А иначе бы о нем не стоило и писать.
В качестве примера, когда может потребоваться программно создать документ «Корректировка записей регистров», предлагаю рассмотреть операцию переоценки основных средств. Переоценка основных средств - ситуация хоть и нечастая, но все же вполне реальная, а специального документа для переоценки в типовых конфигурациях 1С нет. Чтобы пример получился более представительным (включал в себя все виды корректируемых регистров), я сделал обработку для конфигурации «1С:Управление производственным предприятием». Но с другой стороны, чтобы не перегружать пример лишней информацией, мы рассмотрим случай, когда в результате переоценки происходит увеличение стоимости основных средств и накопленной амортизации (дооценка).
В этом случае переоценка основных средств отражается в бухгалтерском учете проводками:
* Дт. 01.01. - Кт. 83.01 - Увеличение первоначальной стоимости ОС.
* Дт. 83.01. - Кт. 02.01 - Увеличение суммы накопленной амортизации ОС.
В налоговом учете операция переоценки основных средств не предусмотрена, но для того чтобы соблюдалось равенство БУ = НУ + ПР + ВР, мы должны отразить в учете возникновение постоянных разниц. Также мы должны сделать движения в регистрах накопления «СтоимостьОС», «СтоимостьОСБухгалтерскийУчет» и в регистрах сведений «ПараметрыАмортизацииОС», «ПараметрыАмортизацииОСБухгалтерскийУчет», «СобытияОС» и «СобытияОСОрганизаций».
Исходные данные для переоценки ОС берутся из dbf-таблицы с набором полей:
* OS (строка) - код основного средства;
* SumU (число) - сумма дооценки по управленческому учету в единицах валюты управленческого учета;
* SumB (число) - сумма дооценки по бухгалтерскому учету;
* AmortU (число) - сумма дооценки накопленной амортизации по управленческому учету в единицах валюты управленческого учета;
* AmortB (число) - сумма дооценки накопленной амортизации по бухгалтерскому учету.
Упрощенный фрагмент кода обработки, иллюстрирующий запись проводок в регистр бухгалтерии, представлен в листинге:
Код 1C v 8.х Сч01 _01 = ПланыСчетов. Хозрасчетный. ОСвОрганизации;
Сч02 _01 = ПланыСчетов. Хозрасчетный. АмортизацияОС_01;
Сч83 _01 = ПланыСчетов. Хозрасчетный. ПриростСтоимостиИмуществаПоПереоценке;
ДБФ = Новый XBase;
ДБФ. ОткрытьФайл( ИмяФайла) ;
Если ДБФ. Открыта( ) Тогда
Попытка
НачатьТранзакцию( ) ;
ДокКорректировка = Документы. КорректировкаЗаписейРегистров. СоздатьДокумент( ) ;
ЗаполнениеДокументов. ЗаполнитьШапкуДокумента( ДокКорректировка. ЭтотОбъект, ПараметрыСеанса. ТекущийПользователь) ;
ДокКорректировка. Дата = Период;
НоваяСтрокаРегБух = ДокКорректировка. ТаблицаРегистровБухгалтерии. Добавить( ) ;
НоваяСтрокаРегБух. Имя = "Хозрасчетный" ;
НоваяСтрокаРегБух. Представление = "Журнал проводок (бухгалтерский учет)" ;
ДокКорректировка. Записать( ) ;
ДокКорректировкаСсылка = ДокКорректировка. Ссылка;
НЗХозрасчетный = РегистрыБухгалтерии. Хозрасчетный. СоздатьНаборЗаписей( ) ;
НЗХозрасчетный. Отбор. Регистратор. Значение = ДокКорректировкаСсылка;
ДБФ. Первая( ) ;
Пока Не ДБФ. ВКонце( ) Цикл
ОсновноеСредство = Справочники. ОсновныеСредства. НайтиПоКоду( СокрЛП( ДБФ. OS) ) ;
Если ОсновноеСредство. Пустая( ) Тогда
Сообщить( "Не найдено ОС с кодом " + ДБФ. OS + "!" , СтатусСообщения. Важное) ;
Продолжить;
КонецЕсли ;
ЗХозрасчетный = НЗХозрасчетный. Добавить( ) ;
ЗХозрасчетный. Период = Период;
ЗХозрасчетный. Регистратор = ДокКорректировкаСсылка;
ЗХозрасчетный. Организация = Организация;
ЗХозрасчетный. Содержание = "Увеличение первоначальной стоимости ОС" ;
ЗХозрасчетный. СчетДт = Сч01 _01;
ЗХозрасчетный. СчетКт = Сч83 _01;
БухгалтерскийУчет. УстановитьСубконто( ЗХозрасчетный. СчетДт, ЗХозрасчетный. СубконтоДт, "ОсновныеСредства" , ОсновноеСредство) ;
БухгалтерскийУчет. УстановитьСубконто( ЗХозрасчетный. СчетКт, ЗХозрасчетный. СубконтоКт, "ОсновныеСредства" , ОсновноеСредство) ;
ЗХозрасчетный. Сумма = ДБФ. SumB;
ЗХозрасчетный = НЗХозрасчетный. Добавить( ) ;
ЗХозрасчетный. Период = Период;
ЗХозрасчетный. Регистратор = ДокКорректировкаСсылка;
ЗХозрасчетный. Организация = Организация;
ЗХозрасчетный. Содержание = "Увеличение накопленной амортизации ОС" ;
ЗХозрасчетный. СчетДт = Сч83 _01;
ЗХозрасчетный. СчетКт = Сч02 _01;
БухгалтерскийУчет. УстановитьСубконто( ЗХозрасчетный. СчетДт, ЗХозрасчетный. СубконтоДт, "ОсновныеСредства" , ОсновноеСредство) ;
БухгалтерскийУчет. УстановитьСубконто( ЗХозрасчетный. СчетКт, ЗХозрасчетный. СубконтоКт, "ОсновныеСредства" , ОсновноеСредство) ;
ЗХозрасчетный. Сумма = ДБФ. AmortB;
ДБФ. Следующая( ) ;
КонецЦикла ;
ДБФ. ЗакрытьФайл( ) ;
НЗХозрасчетный. Записать( ) ;
ЗафиксироватьТранзакцию( ) ;
Исключение
Сообщить( ОписаниеОшибки( ) , СтатусСообщения. ОченьВажное) ;
ОтменитьТранзакцию( ) ;
КонецПопытки ;
КонецЕсли ;
Как видно из примера, документ «Корректировка записей регистров» используется в качестве регистратора, движения же записываются непосредственно в регистр. Движения по регистрам накопления и регистрам сведений делаются аналогично.
Смотрите так же:
Корректировка регистров накопления через документ
Источник Категория:
Документы Документ "Операция" - Как программно создать и заполнить? В бухгалтерских подсистемах типовых конфигураций есть всем известный документ «Операция». Бухгалтерам не приходится долго объяснять, как им пользоваться. Все по-бухгалтерски просто и лаконично: счет дебета, счет кредита, субконто, количество, сумма и прочие атрибуты бухгалтерских проводок. Проводки вводятся вручную, поэтому результат абсолютно прозрачен и понятен.
Время от времени возникает необходимость массово ввести большое количество проводок. Ситуации могут быть самыми разными: загрузка остатков или наоборот - списание с учета, исправление ошибок в учете и т. д. И тут уже дело за программистом.
На первый взгляд задача может показаться простой: создать документ, заполнить таблицу проводок данными и провести. Но не тут-то было! Как только дело доходит до «Конфигуратора», начинаются сюрпризы. Оказывается, у документа «Операция» вообще нет таблицы проводок, которую мы видим в пользовательском режиме.
Как же так? А вот так! Документ «Операция" используется в качестве регистратора, а проводки пишутся непосредственно в регистр бухгалтерии.
Решается задача довольно просто. Рассмотрим в качестве примера фрагмент кода обработки загрузки остатков по счету 001 «Арендованные основные средства» из dbf-таблицы.
Код 1C v 8.х
ДокОперация = Документы. ОперацияБух. СоздатьДокумент( ) ;
ДокОперация. Дата = ДатаДокумента;
ДокОперация. Организация = Организация;
ДокОперация. Ответственный = Ответственный;
ДокОперация. Содержание = Содержание;
ДокОперация. Комментарий = Комментарий;
ДокОперация. Записать( ) ;
ДокОперацияСсылка = ДокОперация. Ссылка;
РегХозрасчетный = РегистрыБухгалтерии. Хозрасчетный. СоздатьНаборЗаписей( ) ;
РегХозрасчетный. Отбор. Регистратор. Значение = ДокОперацияСсылка;
ДБФ. Первая( ) ;
Пока Не ДБФ. ВКонце( ) Цикл
КодКонтрагента = СокрП( ДБФ. CA) ;
Контрагент = Справочники. Контрагенты. НайтиПоКоду( КодКонтрагента) ;
Если Контрагент. Пустая( ) Тогда
Сообщить( "Не найден контрагент с кодом " + КодКонтрагента, СтатусСообщения. Внимание) ;
КонецЕсли ;
КодОС = СокрП( ДБФ. OS) ;
ОсновноеСредство = Справочники. ОсновныеСредства. НайтиПоКоду( КодОС) ;
Если ОсновноеСредство. Пустая( ) Тогда
Сообщить( "Не найдено ОС с кодом " + КодОС, СтатусСообщения. Внимание) ;
КонецЕсли ;
РегЗапись = РегХозрасчетный. Добавить( ) ;
РегЗапись. Период = ДатаДокумента;
РегЗапись. Регистратор = ДокОперацияСсылка;
РегЗапись. Организация = Организация;
РегЗапись. Содержание = "Корректировка стоимости ОС с 0 стоимостью" ;
РегЗапись. СчетДт = Сч001 ;
БухгалтерскийУчет. УстановитьСубконто( РегЗапись. СчетДт, РегЗапись. СубконтоДт, "Контрагенты" , Контрагент) ;
БухгалтерскийУчет. УстановитьСубконто( РегЗапись. СчетДт, РегЗапись. СубконтоДт, "ОсновныеСредства" , ОсновноеСредство) ;
РегЗапись. Сумма = ДБФ. Sum;
ДБФ. Следующая( ) ;
КонецЦикла ;
РегХозрасчетный. Записать( ) ;
Я полагаю, принцип работы кода понятен из примера. Сначала создаем и записываем документ «Операция». Сам документ не содержит никаких проводок. Затем создаем набор записей регистра бухгалтерии и записываем в него проводки, используя документ «Операция» в качестве регистратора.
Источник Категория:
Документы Как установить значение Субконто Код 1C v 8.х Процедура УстановитьСубконто(Счет, Субконто, ИмяСубконто, ЗначениеСубконто) Экспорт
Если Счет = Неопределено ИЛИ Счет. Пустая( ) Тогда
Возврат ;
КонецЕсли ;
Если ТипЗнч( ИмяСубконто) = Тип( "Число" ) Тогда
Если ИмяСубконто > Счет. ВидыСубконто. Количество( ) Тогда
Возврат ;
КонецЕсли ;
ВидСубк = Счет. ВидыСубконто[ИмяСубконто - 1 ]. ВидСубконто;
Иначе
ВидСубк = ПланыВидовХарактеристик[Метаданные. НайтиПоТипу( ТипЗнч( Счет) ) . ВидыСубконто. Имя][ИмяСубконто];
Если Счет. ВидыСубконто. Найти( ВидСубк) = Неопределено Тогда
Возврат ;
КонецЕсли ;
КонецЕсли ;
Если ВидСубк. ТипЗначения. СодержитТип( ТипЗнч( ЗначениеСубконто) ) Тогда
Субконто. Вставить( ВидСубк, ЗначениеСубконто) ;
Иначе
Сообщить( "Неверное значение "" " + ЗначениеСубконто + """ для вида субконто <" + ВидСубк + ">" ) ;
КонецЕсли ;
КонецПроцедуры
Пример использования:
Код 1C v 8.х
Проводка = Движения. Международный. Добавить( ) ;
Проводка. Период = ДатаЗакрытияПериода;
Проводка. СчетДт = Выборка. Счет;
Проводка. СчетКт = ПланыСчетов. Международный. СуммарныеДоходыИРасходы;
Проводка. Организация = Организация;
Проводка. Сумма = Выборка. СуммаОстатокКт;
Проводка. Содержание = "Закрытие счетов в конце финансового года" ;
Проводка. НомерЖурнала = "Рег" ;
НомерСубконто = 0 ;
Для каждого ВидСубконто Из Проводка. СчетДт. ВидыСубконто Цикл
НомерСубконто = НомерСубконто + 1 ;
ЗначениеСубконто = Выборка["Субконто" + НомерСубконто];
Если ЗначениеЗаполнено( ЗначениеСубконто) Тогда
УстановитьСубконто( Проводка. СчетДт, Проводка. СубконтоДт, НомерСубконто, ЗначениеСубконто) ;
КонецЕсли ;
КонецЦикла ;
Категория:
Регистры бухгалтерии Как получить список реквизитов операции и проводок? Код 1C v 7.x
Для к = 1 по Метаданные. РеквизитПроводки( )
Сообщить( Метаданные. РеквизитПроводки( к) . Идентификатор) ;
КонецЦикла ;
Код 1C v 7.x
СписокРеквизитов = СоздатьОбъект( "СписокЗначений" ) ;
СписокРеквизитов. ДобавитьЗначение( "ДатаОперации" ) ;
СписокРеквизитов. ДобавитьЗначение( "НомерДок" ) ;
СписокРеквизитов. ДобавитьЗначение( "СуммаОперации" ) ;
СписокРеквизитов. ДобавитьЗначение( "Содержание" ) ;
Для М1 = 1 По Метаданные. РеквизитОперации( ) Цикл
СписокРеквизитов. ДобавитьЗначение( Метаданные. РеквизитОперации( М1 ) . Идентификатор) ;
КонецЦикла ;
Для М1 = 1 По Метаданные. ОбщийРеквизитДокумента( ) Цикл
СписокРеквизитов. ДобавитьЗначение( Метаданные. ОбщийРеквизитДокумента( М1 ) . Идентификатор) ;
КонецЦикла ;
СписокРеквизитов. ДобавитьЗначение( "НомерПроводки" ) ;
СписокРеквизитов. ДобавитьЗначение( "ПланСчетов" ) ;
СписокРеквизитов. ДобавитьЗначение( "СчетДт" ) ;
СписокРеквизитов. ДобавитьЗначение( "СчетКт" ) ;
СписокРеквизитов. ДобавитьЗначение( "Субконто" ) ;
СписокРеквизитов. ДобавитьЗначение( "СубконтоДт" ) ;
СписокРеквизитов. ДобавитьЗначение( "СубконтоКт" ) ;
Для М1 = 1 По Метаданные. МаксимальноеКоличествоСубконто Цикл
СписокРеквизитов. ДобавитьЗначение( "Субконто" + М1 ) ;
СписокРеквизитов. ДобавитьЗначение( "СубконтоКт" + М1 ) ;
СписокРеквизитов. ДобавитьЗначение( "СубконтоДт" + М1 ) ;
КонецЦикла ;
СписокРеквизитов. ДобавитьЗначение( "Валюта" ) ;
СписокРеквизитов. ДобавитьЗначение( "Курс" ) ;
СписокРеквизитов. ДобавитьЗначение( "Количество" ) ;
СписокРеквизитов. ДобавитьЗначение( "ВалСумма" ) ;
СписокРеквизитов. ДобавитьЗначение( "Сумма" ) ;
СписокРеквизитов. ДобавитьЗначение( "НомерСтроки" ) ;
Для М1 = 1 По Метаданные. РеквизитПроводки( ) Цикл
СписокРеквизитов. ДобавитьЗначение( Метаданные. РеквизитПроводки( М1 ) . Идентификатор) ;
КонецЦикла ;
СписокРеквизитов. ДобавитьЗначение( "ВидДок" ) ;
СписокРеквизитов. ДобавитьЗначение( "ВремяОперации" ) ;
Для М1 = 1 По Метаданные. ГрафаЖурналаОпераций( ) Цикл
СписокРеквизитов. ДобавитьЗначение( Метаданные. ГрафаЖурналаОпераций( М1 ) . Идентификатор) ;
КонецЦикла ;
Категория:
Метаданные Выгрузка и Загрузка проводок документа через файл Код 1C v 8.х Процедура ВыгрузкаПроводок(Кнопка)
Если Не ЗначениеЗаполнено( Документ) Тогда
Сообщить( "Заполните поле Документ!" ) ;
Иначе
Движ = РегистрыБухгалтерии. Хозрасчетный. СоздатьНаборЗаписей( ) ;
Движ. Отбор. Регистратор. Установить( Документ) ;
Движ. Прочитать( ) ;
ТЗ = Движ. Выгрузить( ) ;
ПараметрОтбора = Новый Структура( "СчетДт" , Счет) ;
ТЗИтог = ТЗ. Скопировать( ПараметрОтбора) ;
Если ЗначениеВФайл( "D:\OUT.TXT" , ТЗ) Тогда
Сообщить( "Создан файл "" D:\OUT.TXT"" " ) ;
КонецЕсли ;
КонецЕсли ;
КонецПроцедуры
Процедура ЗагрузитьПроводки(Кнопка)
ТЗЗагрузка = ЗначениеИзФайла( "D:\OUT.TXT" ) ;
Движ = РегистрыБухгалтерии. Хозрасчетный. СоздатьНаборЗаписей( ) ;
Движ. Отбор. Регистратор. Установить( Документ) ;
Движ. Прочитать( ) ;
ТЗ = Движ. Выгрузить( ) ;
Для Каждого Эл Из ТЗЗагрузка Цикл
ПараметрОтбора = Новый Структура( "СчетДт,СубконтоДт1" , Эл. СчетДт, Эл. СубконтоДт1 ) ;
Массив = ТЗ. НайтиСтроки( ПараметрОтбора) ;
Если Массив. Количество( ) > 0 Тогда
Сообщить( "Запись есть - Пропускаем!" ) ;
Продолжить;
Иначе
Сообщить( "Записи нет - Добавляем!" ) ;
НоваяСтрока = ТЗ. Добавить( ) ;
ЗаполнитьЗначенияСвойств( НоваяСтрока, Эл) ;
КонецЕсли ;
КонецЦикла ;
Движ. Загрузить( ТЗ) ;
Движ. Записать( ) ;
Сообщить( "Проводки для данного документа созданы успешно!" ) ;
КонецПроцедуры
Категория:
Регистры бухгалтерии Формирование проводок в регистре бухгалтерии Код 1C v 8.х
ВыбранныйОтветственный = Справочники. Пользователи. НайтиПоНаименованию( "Иванцова" ) ;
ВыбранныйКонтрагент = Справочники. Контрагенты. НайтиПоКоду( "00027" ) ;
ВыбранныйДоговор = Справочники. ДоговорыКонтрагентов. НайтиПоКоду( "00013" ) ;
ВыбранныйДокумент = Документы. ДокументРасчетовСКонтрагентом. НайтиПоНомеру( 2 , '20050101 ') ;
ВыбранныйСчет = Справочники. БанковскиеСчета. НайтиПоКоду( "00001" ) ;
ВыбраннаяСтатья = Справочники. СтатьиДвиженияДенежныхСредств. НайтиПоКоду( "00002" ) ;
ВыбраннаяОрганизация = Справочники. Организации. НайтиПоКоду( "00001" ) ;
ВыбраннаяВалюта = Справочники. Валюты. НайтиПоКоду( 810 ) ;
ДатаЗаписи = ТекущаяДата( ) ;
Документ = Документы. ОперацияБух. СоздатьДокумент( ) ;
Документ. Дата = ДатаЗаписи;
Документ. Организация = ВыбраннаяОрганизация;
Документ. Ответственный = ВыбранныйОтветственный;
Документ. Содержание = "Оплата поставщику" ;
Документ. Записать( ) ;
НаборЗаписей = РегистрыБухгалтерии. Хозрасчетный. СоздатьНаборЗаписей( ) ;
НаборЗаписей. Отбор. Регистратор. Установить( Документ. Ссылка) ;
Движение = НаборЗаписей. Добавить( ) ;
Движение. Регистратор = Документ. Ссылка;
Движение. Период = ДатаЗаписи;
Движение. СчетДт = ПланыСчетов. Хозрасчетный. НайтиПоКоду( "60.01" ) ;
Движение. СубконтоДт. Контрагенты = ВыбранныйКонтрагент;
Движение. СубконтоДт. Договоры = ВыбранныйДоговор;
Движение. СубконтоДт. ДокументыРасчетовСКонтрагентами = ВыбранныйДокумент;
Движение. СчетКт = ПланыСчетов. Хозрасчетный. НайтиПоКоду( "51" ) ;
Движение. СубконтоКт. БанковскиеСчета = ВыбранныйСчет;
Движение. СубконтоКт. СтатьиДвиженияДенежныхСредств = ВыбраннаяСтатья;
Движение. Организация = ВыбраннаяОрганизация;
Движение. Сумма = 300000 ;
Движение. Содержание = "Оплата поставщику" ;
НаборЗаписей. Записать( ) ;
Категория:
Регистры бухгалтерии