1С-Предприятие 8.0. Практическое пособие разработчика

Создание движений документа ПриходнаяНакладная


Начнем с простого: доработаем движения документа "ПриходнаяНакладная". Для этого нам достаточно будет воспользоваться конструктором движений документа и заменить старые движения документа на новые, по трем регистрам.

Откроем конфигуратор. В окне редактирования объекта конфигурации Документ "ПриходнаяНакладная", на закладке "Движения" запустим конструктор движений документа.

В список регистров добавим регистр "РегистрБухгалтерии.Управленческий". В качестве источника данных выберем табличную часть документа "ПриходнаяНакладная" – "Материалы". Счет дебета установим равным "ПланыСчетов.Основной.Товары" (41), а счет кредита – "ПланыСчетов.Основной.РасчетыСПоставщиками" (60).[303]

Нажмем кнопку "Заполнить выражения". У вас должен получиться следующий результат:

Нажмем "ОК" и посмотрим, какой текст платформа добавила в обработчик проведения документа "ПриходнаяНакладная":

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ



   // Данный фрагмент построен конструктором.

   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

       // регистр ОстаткиМатериалов Приход

       Движение = Движения.ОстаткиМатериалов.Добавить();

       Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

       Движение.Период = Дата;

       Движение.Материал = ТекСтрокаМатериалы.Материал;

       Движение.НаборСвойств = ТекСтрокаМатериалы.НаборСвойств;

       Движение.Склад = Склад;

       Движение.Количество = ТекСтрокаМатериалы.Количество;

   КонецЦикла;

   Для Каждого ТекСтрокаМатериалы Из Материалы Цикл




       // регистр СтоимостьМатериалов Приход

       Движение = Движения.СтоимостьМатериалов.Добавить();

       Движение.ВидДвижения = ВидДвиженияНакопления.Приход; [304]

       Движение.Период = Дата;

       Движение.Материал = ТекСтрокаМатериалы.Материал;

       Движение.Стоимость = ТекСтрокаМатериалы.Сумма;

   КонецЦикла;

   Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

       // регистр Управленческий

       Движение = Движения.Управленческий.Добавить();

       Движение.СчетДт = ПланыСчетов.Основной.Товары;

       Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставщиками;

       Движение.Период = Дата;

       Движение.Сумма = ТекСтрокаМатериалы.Сумма;

       Движение.КоличествоДт = ТекСтрокаМатериалы.Количество;

       Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ТекСтрокаМатериалы.Материал;

   КонецЦикла;

   // записываем движения регистров

   Движения.ОстаткиМатериалов.Записать();

   Движения.СтоимостьМатериалов.Записать();

   Движения.Управленческий.Записать();

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры

Платформа сформировала уже знакомые нам три цикла обхода табличной части документа (для каждого регистра свой цикл). В первых двух циклах для нас нет ничего нового. В последнем, по большому счету, тоже – движения формируются таким же образом, как и для регистра накопления. Интерес для нас представляет только последняя строчка цикла, в которой присваивается значение субконто дебета.

Дело в том, что количество субконто как по дебету, так и по кредиту у каждой записи движения регистра будет различное, в зависимости от того, как определены счета в используемом плане счетов. Поэтому для каждой записи движения регистра бухгалтерии платформа хранит две коллекции значений: коллекцию субконто дебета и коллекцию субконто кредита. Каждая из этих коллекций содержит ровно столько элементов, сколько указано использовать видов субконто для соответствующего счета (дебета или кредита) в плане счетов. Обратиться к элементу коллекции можно, указав в квадратных скобках ссылку на соответствующий вид характеристик, либо указав через точку имя предопределенного вида характеристик. [305]



Другими словами, запись:

Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы]

равносильна записи:

Движение.СубконтоДт.Материалы

Запустим 1С:Предприятие в режиме отладки, откроем документ ПриходнаяНакладная №1 и перепроведем его.

Посмотрим, какие движения сформировал документ в регистре бухгалтерии Управленческий:



Обратите внимание, что, поскольку, на счете 60 ("РасчетыСПоставщиками") отсутствует аналитика и ведется только суммовой учет, в записях движений регистра "СубконтоКт1", "СубконтоКт2" и "КоличествоКт" не указаны.

После этого перепроведем документ ПриходнаяНакладная №2 и посмотрим, какие движения сформирует он.

Теперь перейдем к более сложной задаче – добавлению движений по регистру "Управленческий" в документ "ОказаниеУслуги".[306]


Содержание раздела