В 1C:EDT
страницаВ 1C:EDT
В список регистров, в которых документ ПриходнаяНакладная будет создавать движения, добавьте регистр бухгалтерии Управленческий.
Откройте модуль документа ПриходнаяНакладная и внесите изменения в процедуру обработчика события ОбработкаПроведения. В самом конце цикла перед строкой КонецЦикла добавьте строки кода, создающие движения регистра Управленческий (листинг 17.1).
Листинг 17.1. Движения документа «ПриходнаяНакладная» (фрагмент)
// Регистр Управленческий
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Основной.Товары;
Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставщиками;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаМатериалы.Сумма;
Движение.КоличествоДт = ТекСтрокаМатериалы.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаМатериалы.Материал;
Перед началом цикла установите свойство Записывать набора записей регистра Управленческий в значение Истина для записи изменений регистра в базу данных.
В результате процедура ОбработкаПроведения() будет выглядеть следующим образом (листинг 17.2).
Листинг 17.2. Движения документа «ПриходнаяНакладная»
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Управленческий.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// Регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.НаборСвойств = ТекСтрокаМатериалы.НаборСвойств;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаМатериалы.Количество;
// Регистр Стоимость Материалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Стоимость = ТекСтрокаМатериалы.Сумма;
// Регистр Управленческий
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Основной.Товары;
Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставщиками;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаМатериалы.Сумма;
Движение.КоличествоДт = ТекСтрокаМатериалы.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаМатериалы.Материал;
КонецЦикла;
КонецПроцедуры
Как видите, движения для регистра бухгалтерии формируются таким же образом, как и для регистра накопления.
Но платформа (при создании таблицы хранения данных) добавила к созданным вами реквизитам регистра еще ряд полей, которые явились следствием использования плана счетов Основной.
Прежде всего, это поля СчетДт и СчетКт. В этих полях указываются счета, дебет и кредит которых затрагивает данная проводка.
Кроме того, для измерений и ресурсов регистра, связанных с признаками учета, платформа создает пару полей для хранения значения каждого ресурса отдельно по дебету и отдельно по кредиту проводки: КоличествоДт и КоличествоКт. А также для счетов, по которым ведется учет в разрезе субконто, платформа создает коллекции СубконтоДт и СубконтоКт.
Если обратиться к таблице 17.1, то при проведении приходной накладной счетом по дебету должен быть счет Товары(41), а счетом по кредиту – счет РасчетыСПоставщиками(60).
К счету вы обращаетесь с помощью свойства глобального контекста ПланыСчетов. Оно предоставляет доступ ко всем планам счетов, созданным в конфигурации. Через точку от него вы указываете имя нужного вам плана счетов – Основной. А далее, тоже через точку, указываете имя предопределенного счета в этом плане счетов – Товары. Этот счет (и три других) вы создали ранее в 1С:EDT.
Так как количественный учет у вас ведется только для счета Товары(41), поле регистра КоличествоДт заполняется количеством товара из табличной части документа. Поле регистра КоличествоКт не заполняется, так как по счету кредита проводки (РасчетыСПоставщиками) количественный учет не ведется.
Теперь обратите внимание на последнюю строку цикла, в которой присваивается значение субконто дебета.
Дело в том, что количество субконто на счете дебета и на счете кредита в каждой проводке будет различное в зависимости от того, как определены счета в используемом плане счетов. Поэтому для каждой записи движения регистра бухгалтерии платформа хранит две коллекции значений: коллекцию субконто дебета и коллекцию субконто кредита. Каждая из них содержит ровно столько элементов, сколько видов субконто указано использовать для соответствующего счета (дебета или кредита) в плане счетов.
Обратиться к элементу коллекции можно, указав в квадратных скобках ссылку на соответствующий вид субконто (ПланыВидовХарактеристик.ВидыСубконто.Материалы).
Другой способ – в явном виде указать имя предопределенного вида субконто через точку от коллекции субконто дебета.
Другими словами, запись Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] равносильна записи Движение.СубконтоДт.Материалы.
Коллекция регистра СубконтоКт не заполняется, так как по счету кредита проводки (РасчетыСПоставщиками) учет в разрезе субконто у вас не ведется.
В заключение установите видимость команды Управленческий в панели навигации формы документа, в группе Перейти.