Продвинутый курс. Домашнее задание №15

Эта запись посвящена второму потоку продвинутого курса по программированию.

Для выполнения рекомендуется изучить следующие главы 3-го блока.
Глава 5. Складской учет.
Глава 6. Универсальная аналитика.
Глава 7. Кейсы.
Глава 8. Отчеты бухгалтерского учета.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте
залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись —
напишите нам на e-mail поддержки.

комментариев 10 на “Продвинутый курс. Домашнее задание №15”

  1. Задание выполнил.
     
    В плане счетов добавил активный предопределенный счет  Продукция, код 43 с субконто Товары. Установил для него признак учета Количественный.
    Создал документ ВыпускПродукции с реквизитами шапки Подразделение, Заказ и табличной часть Продукция с реквизитами Номенлатура и Количество.
    Создал документ ЗакрытиеМесяца. Закрытие происходит за месяц, в который попадает дата документа. Обработка проведения документа:
     
    <code>
    Движения.РегистрУправленческий.Записывать = Истина;
    Запрос = Новый Запрос;
    // создадим временную таблицу выпущенной продукции
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос.Текст =
    “ВЫБРАТЬ
    |           РегистрУправленческийОборотыДтКт.СубконтоКт1 КАК Подразделение,
    |           РегистрУправленческийОборотыДтКт.СубконтоКт2 КАК Заказ,
    |           РегистрУправленческийОборотыДтКт.СубконтоКт3 КАК Товар,
    |           РегистрУправленческийОборотыДтКт.КоличествоОборотДт КАК КоличествоВыпущено
    |ПОМЕСТИТЬ ТаблицаВыпущеннойПродукции
    |ИЗ
    |           РегистрБухгалтерии.РегистрУправленческий.ОборотыДтКт(&НачалоМесяца, &КонецМесяца, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Продукция), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОсновноеПроизводство), , ) КАК РегистрУправленческийОборотыДтКт”;
     
    Запрос.УстановитьПараметр(“КонецМесяца”, КонецМесяца(Дата));
    Запрос.УстановитьПараметр(“НачалоМесяца”, НачалоМесяца(Дата));
    Результат = Запрос.Выполнить();
     
    // 25 счет
    Запрос.Текст =
    “ВЫБРАТЬ
    |           ТаблицаВыпущеннойПродукции.Подразделение,
    |           ТаблицаВыпущеннойПродукции.Заказ,
    |           ТаблицаВыпущеннойПродукции.Товар,
    |           ТаблицаВыпущеннойПродукции.КоличествоВыпущено,
    |           РегистрУправленческийОстатки.СуммаОстатокДт КАК СуммаДляРаспределения
    |ИЗ
    |           РегистрБухгалтерии.РегистрУправленческий.Остатки(&МоментВремениОстатки, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщепроизводственныеРасходы), , ) КАК РегистрУправленческийОстатки
    |                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаВыпущеннойПродукции КАК ТаблицаВыпущеннойПродукции
    |                       ПО РегистрУправленческийОстатки.Субконто1 = ТаблицаВыпущеннойПродукции.Подразделение
    |                                   И РегистрУправленческийОстатки.Субконто2 = ТаблицаВыпущеннойПродукции.Заказ
    |ИТОГИ
    |           СУММА(КоличествоВыпущено)
    |ПО
    |           Подразделение,
    |           Заказ”;
     
    Запрос.УстановитьПараметр(“МоментВремениОстатки”, КонецМесяца(Дата) + 1);
    Результат = Запрос.Выполнить();
     
    ВыборкаПодразделение = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПодразделение.Следующий() Цикл
    ВыборкаЗаказ = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаЗаказ.Следующий() Цикл
    ВсегоВыпущено = ВыборкаЗаказ.КоличествоВыпущено;
    КоличествоУчтено = 0;
    СуммаСписано = 0;
    ВыборкаДетальныеЗаписи = ВыборкаЗаказ.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СчетКт = ПланыСчетов.Управленческий.ОбщепроизводственныеРасходы;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Подразделение;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Заказы] = ВыборкаДетальныеЗаписи.Заказ;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Товар;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Подразделение;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Заказы] = ВыборкаДетальныеЗаписи.Заказ;
     
    КоличествоУчтено = КоличествоУчтено + ВыборкаДетальныеЗаписи.КоличествоВыпущено;
    Если (КоличествоУчтено = ВсегоВыпущено) Тогда
    Проводка.Сумма = ВыборкаДетальныеЗаписи.СуммаДляРаспределения – СуммаСписано;
    Иначе
    Проводка.Сумма = Окр(ВыборкаДетальныеЗаписи.СуммаДляРаспределения * ВыборкаДетальныеЗаписи.КоличествоВыпущено / ВсегоВыпущено, 2);
    КонецЕсли;
    СуммаСписано = СуммаСписано + Проводка.Сумма;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
     
    // 26 счет
    Запрос.Текст =
    “ВЫБРАТЬ
    |           ТаблицаВыпущеннойПродукции.Подразделение,
    |           ТаблицаВыпущеннойПродукции.Заказ,
    |           ТаблицаВыпущеннойПродукции.Товар,
    |           ТаблицаВыпущеннойПродукции.КоличествоВыпущено,
    |           РегистрУправленческийОстатки.СуммаОстатокДт КАК СуммаДляРаспределения
    |ИЗ
    |           РегистрБухгалтерии.РегистрУправленческий.Остатки(&МоментВремениОстатки, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщехозяйственныеРасходы), , ) КАК РегистрУправленческийОстатки
    |                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаВыпущеннойПродукции КАК ТаблицаВыпущеннойПродукции
    |                       ПО РегистрУправленческийОстатки.Субконто1 = ТаблицаВыпущеннойПродукции.Подразделение
    |ИТОГИ
    |           СУММА(КоличествоВыпущено)
    |ПО
    |           Подразделение”;
     
    Результат = Запрос.Выполнить();
     
    ВыборкаПодразделение = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПодразделение.Следующий() Цикл
    ВсегоВыпущено = ВыборкаПодразделение.КоличествоВыпущено;
    КоличествоУчтено = 0;
    СуммаСписано = 0;
    ВыборкаДетальныеЗаписи = ВыборкаПодразделение.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СчетКт = ПланыСчетов.Управленческий.ОбщехозяйственныеРасходы;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Подразделение;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Заказы] = ВыборкаДетальныеЗаписи.Заказ;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Товар;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Подразделение;
     
    КоличествоУчтено = КоличествоУчтено + ВыборкаДетальныеЗаписи.КоличествоВыпущено;
    Если (КоличествоУчтено = ВсегоВыпущено) Тогда
    Проводка.Сумма = ВыборкаДетальныеЗаписи.СуммаДляРаспределения – СуммаСписано;
    Иначе
    Проводка.Сумма = Окр(ВыборкаДетальныеЗаписи.СуммаДляРаспределения * ВыборкаДетальныеЗаписи.КоличествоВыпущено / ВсегоВыпущено, 2);
    КонецЕсли;
    СуммаСписано = СуммаСписано + Проводка.Сумма;
    КонецЦикла;
    КонецЦикла;
     
    Движения.РегистрУправленческий.Записать();
     
    // 20 счет
    Запрос.Текст =
    “ВЫБРАТЬ
    |           РегистрУправленческийОстатки.Субконто1 КАК Подразделение,
    |           РегистрУправленческийОстатки.Субконто2 КАК Заказ,
    |           РегистрУправленческийОстатки.Субконто3 КАК Товар,
    |           РегистрУправленческийОстатки.СуммаОстатокДт КАК Сумма
    |ИЗ
    |           РегистрБухгалтерии.РегистрУправленческий.Остатки(&МоментВремениОстатки, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОсновноеПроизводство), , ) КАК РегистрУправленческийОстатки
    |                       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                                   ТаблицаВыпущеннойПродукции.Товар КАК Товар
    |                       ИЗ
    |                                   ТаблицаВыпущеннойПродукции КАК ТаблицаВыпущеннойПродукции) КАК ТаблицаВыпущеннойПродукции
    |                       ПО РегистрУправленческийОстатки.Субконто3 = ТаблицаВыпущеннойПродукции.Товар”;
     
    Результат = Запрос.Выполнить();
     
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.Продукция;
    Проводка.СчетКт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Товар;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Подразделение;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Заказы] = ВыборкаДетальныеЗаписи.Заказ;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Товар;
     
    Проводка.Сумма = ВыборкаДетальныеЗаписи.Сумма;
    КонецЦикла;
     
    Движения.РегистрУправленческий.Записать();
     
    // корректировка себестоимости реализации
    Запрос.Текст =
    “ВЫБРАТЬ
    |           РегистрУправленческийОборотыДтКт.СубконтоКт1 КАК Товар,
    |           РегистрУправленческийОборотыДтКт.КоличествоОборотКт КАК КоличествоПродано,
    |           РегистрУправленческийОборотыДтКт.СуммаОборот КАК СуммаПродано
    |ПОМЕСТИТЬ Продажи
    |ИЗ
    |           РегистрБухгалтерии.РегистрУправленческий.ОборотыДтКт(&НачалоМесяца, &КонецМесяца, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Себестоимость), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Продукция), , ) КАК РегистрУправленческийОборотыДтКт
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |           РегистрУправленческийОборотыДтКт.СубконтоДт1 КАК Товар,
    |           РегистрУправленческийОборотыДтКт.СуммаОборот,
    |           РегистрУправленческийОборотыДтКт.КоличествоОборотДт
    |ПОМЕСТИТЬ ТаблицаПрихода
    |ИЗ
    |           РегистрБухгалтерии.РегистрУправленческий.ОборотыДтКт(
    |                                   &НачалоМесяца,
    |                                   &КонецМесяца,
    |                                   ,
    |                                   СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Продукция),
    |                                   ,
    |                                   ,
    |                                   ,
    |                                   СубконтоДт1 В
    |                                              (ВЫБРАТЬ РАЗЛИЧНЫЕ
    |                                                          Продажи.Товар
    |                                              ИЗ
    |                                                          Продажи КАК Продажи)) КАК РегистрУправленческийОборотыДтКт
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |           Продажи.Товар,
    |           ВЫБОР
    |                       КОГДА ЕСТЬNULL(РегистрУправленческийОстатки.КоличествоОстатокДт, 0) + ЕСТЬNULL(ТаблицаПрихода.КоличествоОборотДт, 0) = 0
    |                                   ТОГДА -Продажи.СуммаПродано
    |                       ИНАЧЕ (ЕСТЬNULL(РегистрУправленческийОстатки.СуммаОстатокДт, 0) + ЕСТЬNULL(ТаблицаПрихода.СуммаОборот, 0)) * Продажи.КоличествоПродано / (ЕСТЬNULL(РегистрУправленческийОстатки.КоличествоОстатокДт, 0) + ЕСТЬNULL(ТаблицаПрихода.КоличествоОборотДт, 0)) – Продажи.СуммаПродано
    |           КОНЕЦ КАК Дельта
    |ИЗ
    |           Продажи КАК Продажи
    |                       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(&НачалоМесяца, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Продукция), , ) КАК РегистрУправленческийОстатки
    |                       ПО Продажи.Товар = РегистрУправленческийОстатки.Субконто1
    |                       ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПрихода КАК ТаблицаПрихода
    |                       ПО Продажи.Товар = ТаблицаПрихода.Товар”;
     
    Результат = Запрос.Выполнить();
     
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
     
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.Себестоимость;
    Проводка.СчетКт = ПланыСчетов.Управленческий.Продукция;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Товар;
     
    Проводка.Сумма = ВыборкаДетальныеЗаписи.Дельта;
    КонецЦикла;
    </code>
     

  2. Задание выполнил.  Документом Выпуск продукции зарегистрировал затраты, дополнил Закрытие месяца для 25, 26 счетов.

    Обратная связь:
    1-2. Во время изучения блока больше внимания уделял практике с запросами к остаткам по субконто.
    3. Приветствовал бы расширение тематики кейсов по БУ, весьма интересный раздел.

  3. Задание выполнил.
    Создал документ ВыпускПродукции с указанными в задании реквизитами. Добавил предопределенный счет Продукция (43) с одним субконто – Номенклатура, флаг количественный. Обеспечил проведение документа по регистру Управленческий.
    В документе ЗакрытиеМесяца реализовал закрытие затратных счетов. Данные выбираю одним пакетным запросом, в котором последовательно собираю обороты между счетами 43-20 с детализацией по субконто (таблица ОборотыДтКт) и сохраняю в соответствующие ВТ, затем выбираю остатки по счетам затрат 25 и 26 (таблица Остатки) и соединяю их с полученными ВТ для расчета сумм списания. Записываю движения. Затем аналогичным образом (только с учетом субконто Товары) закрываю 20 счет.

  4. Задание выполнил. Трудностей не возникло. Алгоритмы закрытия счетов не универсальны, копипастил.

  5. ДЗ выполнил!
    Создал документ ВыпускПродукции, создал предопределенный счет 43 для проведения этого документа.
    Для закрытия затратных счетов доработал документ ЗакрытиеМесяца . При помощи запросов к виртуальным таблицам остатки и оборотыДТКТ выбираю данные для формирования проводок, а после формирования вызываю еще раз расчет средней себестоимости.

  6. Задание выполнено.
    1. В план счетов добавил счет 43 с субконто Номенклатура и количественным учетом. Создал новый документ “Выпуск продукции”, который делает приходные движения по РН Остатки товаров и формирует проводки по Дт счета 43 с аналитикой по номенклатуре и Кт счета 20  с аналитикой по подразделению, заказам и номенклатуре. Количество берется из табличной части документа, сумму не заполняется.

    2. Внес изменения в документ ЗакрытиеМесяца. Сперва закрывается счет 26 и 25 пропорционально объема выпуска, т.е. затраты на продукцию не распределяются, если нет информации о выпуске. Затем закрывается 20 счет.

    2.1. Для закрытия 25 и 26 счетов сформировал пакет запросов, где в первой временной таблице получаю кредитовый оборот счета 20 по количеству с группировкой по подразделению. Во второй ВТ выбирается ДО по счету 26 по сумме с группировкой по подразделению. В третьей ВТ получаю КО по счету 20 по количеству с группировкой по подразделению, заказу и номенклатуре. К этой ВТ левым соединением присоединяю первые две ВТ и вычисляю сумму закрытия по формуле:
    [code]
    ВЫБОР
    КОГДА ЕСТЬNULL(ВТ1.КоличествоОборотКт,0) = 0
    ТОГДА ВТ3.КоличествоКО * ВТ2.СуммаДО
    ИНАЧЕ ВТ3.КоличествоКО * ВТ2.СуммаДО / ВТ1.КоличествоКО
    КОНЕЦ
    [/code]
    Для закрытия 25 счета использую аналогичный запрос, единственное отличие – добавлена группировка по заказу.

    2.2. Для закрытия 20 счета сформировал пакет запросов, где в первой временной таблице выбирается ДО по счету 20 по сумме с группировкой по подразделению, заказу и номенклатуре. Во второй ВТ выбирается ДО по счету 43 по количеству с группировкой по номенклатуре. К ней левым соединением присоединяется первая ВТ и по результату запроса формируются проводки Дт счета 43 по субконто номенклатура и Кт счета 20 по субконто подразделение, Заказ и номенклатура.

    2.3. В существующий алгоритм доведения до средневзвешенной себестоимости добавил учет 43 счета. Сделал проверку, если в течение месяца, который закрывается, были продажи продукции документом РеализацияТоваровИУслуг, то документом ЗакрытиеМесяца делаются корректирующие проводки:
    Дт 90.02 Кт 43 Номенклатура Сумма

    3. Сформировал хозяйственные операции, которые указаны в условии задания и сделал проверку на тестовых данных. Кстати в тексте условия в проводках по закрытию 20 счета похоже опечатки в корреспонденциях: Дт 43 – Дт 20, а нужно Дт 43 – Кт 20. Результат тестирования совпал с данными, приведенными в задании.

  7. 1.Создал отсутствующий счёт 43 (номенклатура, количество). Создал документ “Выпуск продукции” с количественными проводками(посредством конструктора).
    2.Для теста ввёл 2 таких документа. Документом “Операция” ввёл все недостающие для закрытия проводки.
    3.Создал новый докумнет “ЗакрытиеПроизводства” (из реквизитов только стандатрные). Большая часть работы по расчёту сумм проводок возложена на запрос, но не вся. Работа в пакетном запросе такая, например для 26 счета:
    3.1.Во временную таблицу “ВыпускПродукции” отбираю из таблицы оборотов бух. егистра
    все обороты Дт43 Кт20 с количеством и аналитикой.
    3.2.Во временную таблицу “ВыпускПоЦехам” отбираю сгруппированные по цехам объёмы
    (т.е Сумма от количестива).
    3.3.Отбираю суммы оборотов ДТ26 в таблицу “ПоЦехам”
    3.4.Левым соединенияем соединяю таблицы3.1 с 3.2 и потом с 3.3, т.о. у меня
    есть конкретное кол-во оборота, общая сумма которая на эту групировку должна быть распределена и общее кол-во
    3.5.Аналогично делаю для 25.
    3.6.И просто выгребаю обороты Дт20 Кт10
    3.7.всё это добро выгребаю и для 25 и 26 делаю проводки и сверх того скдалываю все эти цифры с аналитикой в таблицузначений. Обороты по Дт20 Кт10  тоже складываюю в таблицу значений.
    3.8.Сворачиваю таблицу. То, что получилось на выходе использую как данные для проводок Дт43-Кт20 (кстати в описании ДЗ ошибочно указано Дт43-Дт20).
    Обратная связь по блоку нужна? Или в следующем ДЗ?

    • С закрытием месяца тоже всё норм при последовательном проведении, в принципе можно объединить документы “ЗакрытиеМесяца” и “ЗакрытиеПроизводства” т.к. процессы удалось выполнить только последовательно.  Единственное перед выполнением второй части нужно сохранить проводки первой части.

  8. Задание выполнил.
    1.Добавил предопределенные счета 43 (ГотоваяПродукция) и 10 (Материалы) с субконто Номенклатура. 
    2.Создал документ ВыпускПродукции с ТЧ Продукция(Номенклатура,Количество). 
    Обеспечил его проведение по БУ (с нулевой суммой) и по РН ОстаткиТоваров.
    3.Добавил возможность формирования проводок (Дт 10 Кт 60) в документах поступления и (Дт 90.02 Кт 43) в документах реализации и ввел данные исходных хоз.операций.
    4.Модифицировал документ ЗакрытиеМесяца. Для закрытия счетов 25 и 26 пропорционально объему выпуска использовал один пакетный запрос. Во временную таблицу ОборотыДтКт соотв. вирт. таблицы регистра бухгалтерии помещаются обороты выпущенной продукции за месяц (условия СчетДт=43, СчетКт=20).  Далее левым соединением таблицы Остатки РБ (условие Счет=25) к ОборотыДтКт свожу затраты по счету 25 и выпущенную продукцию (связь по двум субконто – подразделение,заказ) в две ВТ –
    ЗатратыОбороты25 и ЗатратыОборотыГруппировка25 – с группировкой по счету и субконто. Соединяя две эти ВТ по счету и двум субконто, в вычисляемом поле запроса получаю необходимую пропорцию от суммы затрат. Аналогично со счетом 26. Только связь производится по одному субконто (подразделение).
    Далее проводки записываются в РБ и вызывается процедура закрытия счета 20. Использовал ту же связку вирт.таблиц РБ ОборотыДтКт-Остатки (условие Счет=20), что и в случае со счетами 25,26.  Связь – по трем субконто. Проводки опять записываются и вызывается расчет себестоимости, формирующий проводки (Дт 90.02 Кт 43 <Номенклатура> <Сумма>).

  9. В план счетов добавил счет 43 «Продукция» количественный с одним субконто «Товары». Добавил счет 10 «Материалы» с одним субконто «Номенклатурные группы» он мне нужен для того, чтобы смоделировать представленный в здании пример.
    Доработал форму документа «Операция», добавив 3-е субконто по дебету и кредиту.
    С справочнике Номенклатура создал реквизит булевого типа Продукция для фильтрации выбора продукции в документе «Выпуск продукции». Реализовал документ «Выпуск продукции». Выполняющий необходимые проводки.
    Заполнил данные примера списание прямых затрат в корреспонденции с 10 счетов реализовал с помощью документа «Операция». Также с помощью него выполнил реализацию продукции СчетДт 90.02 СчетКт 43 Номенклатура КоличествоКт.
    Далее началась самая интересная часть. В документе «Закрытие месяца» сначала в отдельной процедуре реализовал закрытие 26 счета, все данные для проводок получал с помощью пакета запросов. В первом пакете запроса получал данные по общему объему выпуска по цехам. Во втором пакете запроса,  получал данные по кредитовому обороту 20-счета в корреспонденции со счетом 43 и добавил левым соединением «Объем выпуска по цеху» из результата первого запроса пакета, подготовив тем самым все необходимые данные для расчета себестоимости продукции. Последний пакет запроса получал левым соединением к результату второго запроса остатки по 26 счету и здесь же пропорционально рассчитывал сумму распределяемую на 20 счет.
    Закрытие 25 счета проводил похожим образом, с незначительной модификацией текста запроса, поскольку аналитика по 25 ведется уже в разрезе подразделений и  заказов, а не просто подразделений как на 26 счете. После формирования проводок по закрытию 25 и 26 счета записал движение по регистру БУ, поскольку данные проводок учитываются при закрытии 20 счета.
    Данные для закрытия 20 счета получал, обращаясь к ВТ ОборотыДтКт в качестве параметров которой, указывал СчетДт=20 счету и Субконто3 (Товары)  В результате запроса которой возвращал выпущенную в данном месяце продукцию. Снова запись движений регистра БУ. И последний этап корректировка стоимости реализации. Запрос пришлось несколько доработать поскольку при расчете суммы у меня не учитывалась, что сумма оборота может быть равна нулю и в этом случае необходимо в корректирующую проводку добавить всю дельту целиком.
    Обратная связь.

    Большинство тем были для меня знакомыми, наиболее полезными являлись главы 1, 3 и 7, которые позволили лучше понять «механику» организации хранения данных БУ на более низком уровне.
    Затруднений при изучении материала не возникло.
    На ваше усмотрение.