Продвинутый курс. Занятие №16

Второе занятие 3-го блока продвинутого курса по программированию.

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

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

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

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

комментариев 14 на “Продвинутый курс. Занятие №16”

  1. Задание выполнено, частично освоено решение.

    Создан документ “Выпуск продукции”.  Реализовано закрытие требуемых счетов.

  2. Задание выполнила. Создала документ “Выпуск продукции”, реализовала проведение количества. В “закрытии месяца” реализовала закрытие затратных счетов и расчет себестоимости через пакет запросов с последующим формированием проводок. Из вирт таблицы ОборотыДтКт за период получаю кол-во продукции которое было выпущена в разрезе субконто 20 счета(ВыпускПродукции). Формирую 2 вспомогательные таблицы с группировками по подразделению(ВыпускПодразделение) и подразделению+заказ(ВыпускЗаказ). Для закрытия 26 счета связываю ВыпускПродукции с остатками по счету и ВыпускПодразделение -> Закрытие26Счета. Похожим образом формируется запрос для закрытия 25 счета -> Закрытие25Счета. Для расчета себестоимости связываю ВыпускПродукции с остатками по 20 и таблицами закрытия счетов. На тестовых данных решение проверила.

  3. respublica 19.07.2011 в 23:50

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

  4. Задание выполнила. Добавила документ “Выпуск продукции”.  Для закрытитя счетов затрат в модуле документа “Закрытие месяца” создается временная таблица “КоличествоВыпуска”, затем выполняю соединение с ней в  запросах по остаткам 25 , 26 и 20 счетов. Для 25-го счета соединение делаем по двум субконто, для 20-го и 26-го по одному. В запросах настраиваю итоги, проводки формирую в циклах обхода результатов запросов.

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

    Результат = Запрос.Выполнить();
    ВыборкаПодразделение = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПодразделение.Следующий() Цикл
    ВсегоКолПоПодразделению = ВыборкаПодразделение.Количество;
    Если ВсегоКолПоПодразделению = 0 Тогда
    Продолжить;
    КонецЕсли;

    ОстатокСуммы26 = ВыборкаПодразделение.СуммаОстаток26;
    ВыборкаЗаказ = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    ВсегоЗак = ВыборкаЗаказ.Количество();
    СчЗак=0;

    Пока ВыборкаЗаказ.Следующий() Цикл
    СчЗак=СчЗак+1;

    ВсегоКолПоЗаказу = ВыборкаЗаказ.Количество;
    Если ВсегоКолПоЗаказу = 0 Тогда
    Продолжить;
    КонецЕсли;

    ОстатокСуммы25 = ВыборкаЗаказ.СуммаОстаток25;

    ВыборкаПродукция = ВыборкаЗаказ.Выбрать();
    ВсегоНом = ВыборкаПродукция.Количество();
    СчНом=0;

    Пока ВыборкаПродукция.Следующий() Цикл
    СчНом = СчНом+1;
    Если СчНом=ВсегоНом Тогда
    СуммаРаспределения25 = ОстатокСуммы25;
    Иначе
    СуммаРаспределения25 = Окр(ВыборкаЗаказ.СуммаОстаток25*ВыборкаПродукция.Количество/ВсегоКолПоЗаказу,2);
    КонецЕсли;    

    Если СуммаРаспределения25>0 Тогда
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СубконтоДт.Подразделения = ВыборкаПодразделение.Подразделение;
    Проводка.СубконтоДт.ЗаказПокупателя = ВыборкаЗаказ.Заказ;
    Проводка.СубконтоДт.Товары = ВыборкаПродукция.Продукция;
    Проводка.СчетКт = ПланыСчетов.Управленческий.ОбщепроизводственныеРасходы;
    Проводка.СубконтоКт.Подразделения = ВыборкаПодразделение.Подразделение;
    Проводка.СубконтоКт.ЗаказПокупателя = ВыборкаЗаказ.Заказ;
    Проводка.Сумма = СуммаРаспределения25;
    ОстатокСуммы25 = ОстатокСуммы25-СуммаРаспределения25;
    КонецЕсли;

    Если СчЗак=ВсегоЗак и СчНом=ВсегоНом Тогда
    СуммаРаспределения26 = ОстатокСуммы26;
    Иначе
    СуммаРаспределения26 = Окр(ВыборкаПодразделение.СуммаОстаток26*ВыборкаПродукция.Количество/ВсегоКолПоПодразделению,2);
    КонецЕсли;    

    Если СуммаРаспределения26>0 Тогда
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СубконтоДт.Подразделения = ВыборкаПодразделение.Подразделение;
    Проводка.СубконтоДт.ЗаказПокупателя = ВыборкаЗаказ.Заказ;
    Проводка.СубконтоДт.Товары = ВыборкаПродукция.Продукция;
    Проводка.СчетКт = ПланыСчетов.Управленческий.ОбщехозяйственныеРасходы;
    Проводка.СубконтоКт.Подразделения = ВыборкаПодразделение.Подразделение;
    Проводка.Сумма = СуммаРаспределения26;
    ОстатокСуммы26 = ОстатокСуммы26-СуммаРаспределения26;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;

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

    // закрытие счета Основное производство
    ЗакрытьСчет20();
    </code>
    На приведенном в задании тестовом наборе данных получены правильные результаты списаний.
    Доведение списанной стоимости до средневзвешенной, в принципе, работало. Но необходимо учесть, что корректируемые суммы могли списываться на счета, по которым в свою очередь также необходима корректировка суммы. Также возможна ситуация зацикливания списаний.
    Чтобы учесть это все, механизм доведения стоимости по БУ был переработан. Создана рекурсивно вызываемая процедура СформироватьДвиженияПоСтоимостиБУ(ТаблСчета, Отказ), в которую передаются счета, по которым необходимо произвести расчет суммы и параметр Отказ. Код приводить не буду, чтобы не загромождать отчет, опишу принцип работы.
    Первоначально в процедуру передаются все счета, на которых производится учет номенклатуры. Если в результате работы процедуры были скорректированы движения, в которых дебетовым является один из счетов учета, то набор записей записывается и вызывается эта же процедура с новым списком счетов. Если дебетовым был счет 20, дополнительно вызывается процедура закрытия 20-го счета (для обновления информации о стоимости продукции) и в список добавляется счет 43. Для предотвращения возможного зацикливания при формировании очередной проводки коррекции проверяется уже сформированный набор записей на наличие точно такой же проводки (по счетам и аналитике). Если проводка существует и счет дебета является одним из счетов учета номенклатуры, то это означает зацикливание списаний, Отказ устанавливается в значение Истина и процедура прекращает работу с выдачей диагностического сообщения.

  6. Самостоятельно задание сделал только наполовину. Остальное смотрел по решению. Ну тут моя вина. Катастрофически не хватает времени до конца все осознать в данном блоке (а для этого мне нужно пару-тройку раз пройтись по материалу). Из-за этого частичное непонимание.

  7. Создан предопределенный счет “43” и документ “Выпуск”, который делает проводки по выпуску с нулевой суммой. В документ “Закрытие месяца” добавлены процедуры, осуществляющие списание 20, 25, 26 счетов. Документ работает следующим образом. Сначала получаем аналитику (Подразделение, Заказ, Номенклатура) и количество выпуска за месяц (оборот в дебет счета 43 со счета 20), результат помещаем во временную таблицу. После этого анализируем остатки по счетам 25, 26 и списываем их на 20 счет, используя внутреннее соединение по субконто с временной таблицей выпуска. При этом сумма на остатке распределяется пропорционально количеству выпущенной продукции. После списания 25, 26 счетов записываем получившиеся проводки в БД. Далее, используя временную таблицу выпуска, закрываем 20 счет на 43. Снова записываем проводки в БД. И на последнем шаге производим доведение стоимости до среднезвешенной. Таким образом, учитывается ситуация, когда выпущенная продукция реализуется с нулевой суммой.

  8. Откровенно признаться, последние домашние работы не прорешиваю от и до, а просто выкладываю предполагаемую схему решения с частичными кусочками реализации. Наверное, это из-за ужасного временного цейтнота. Вот и в этот раз… С документов проблем не возникло. 26 счет закрываю с помощью запроса
    <code>
    ВЫБРАТЬ
    РегистрУправленческийОстатки.Счет,
    РегистрУправленческийОстатки.СуммаОстатокДт,
    РегистрУправленческийОстатки.Субконто1 КАК Цех
    ПОМЕСТИТЬ Остатки26
    ИЗ
    РегистрБухгалтерии.РегистрУправленческий.Остатки(, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщехозяственныеРасходы), , ) КАК РегистрУправленческийОстатки
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    РегистрУправленческийОборотыДтКт.СчетДт,
    РегистрУправленческийОборотыДтКт.СчетКт,
    РегистрУправленческийОборотыДтКт.СубконтоДт1 КАК Номенклатура,
    РегистрУправленческийОборотыДтКт.СубконтоКт1 КАК Цех,
    РегистрУправленческийОборотыДтКт.КоличествоОборотДт
    ПОМЕСТИТЬ ВыпускПродукции
    ИЗ
    РегистрБухгалтерии.РегистрУправленческий.ОборотыДтКт(, , , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Продукция), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОсновноеПроизводство), , ) КАК РегистрУправленческийОборотыДтКт
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВыпускПродукции.Цех,
    СУММА(ВыпускПродукции.КоличествоОборотДт) КАК ВсегоВыпустили
    ПОМЕСТИТЬ ВсегоПоЦеху
    ИЗ
    ВыпускПродукции КАК ВыпускПродукции

    СГРУППИРОВАТЬ ПО
    ВыпускПродукции.Цех
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВыпускПродукции.СчетДт,
    ВыпускПродукции.СчетКт,
    ВыпускПродукции.Номенклатура,
    ВыпускПродукции.Цех,
    ВыпускПродукции.КоличествоОборотДт,
    Остатки26.СуммаОстатокДт,
    ВсегоПоЦеху.ВсегоВыпустили,
    ВЫБОР
    КОГДА ЕСТЬNULL(ВсегоПоЦеху.ВсегоВыпустили, 0) = 0
    ТОГДА 0
    ИНАЧЕ ЕСТЬNULL(Остатки26.СуммаОстатокДт, 0) * ВыпускПродукции.КоличествоОборотДт / ВсегоПоЦеху.ВсегоВыпустили
    КОНЕЦ КАК СуммаПроводки
    ИЗ
    ВыпускПродукции КАК ВыпускПродукции
    ЛЕВОЕ СОЕДИНЕНИЕ Остатки26 КАК Остатки26
    ПО ВыпускПродукции.Цех = Остатки26.Цех
    ЛЕВОЕ СОЕДИНЕНИЕ ВсегоПоЦеху КАК ВсегоПоЦеху
    ПО ВыпускПродукции.Цех = ВсегоПоЦеху.Цех
    </code>
    По 25 скорее всего такой же принцип, только добавляется еще одно измерение Заказ, которое в дальнейшем присутствует в условии соединения. 20 счет закрываем путем присоединения к таблице ВыпускПродукции таблиц закрытия 25 и 26 счетов.
    Сразу скажу, что с производством никогда не сталкивался, поэтому скорее всего что-нибудь напутал.

  9. Кононов Сергей 07.07.2011 в 21:56

    Создал документ Выпуск продукции с реквизитами Цех-тип(спр-к Подразделения и Заказ-Заказ покупателя), таб. часть Товары с
    реквизитами номенклатура и количество. Создал счет 43 с признаком количественный Активный. Далее обеспечил проведение документа с заполнением соотвествующих ресурсов и измерений.
    Создал документ Выпуск продукции с реквизитами Цех-тип(спр-к Подразделения и Заказ-Заказ покупателя), таб. часть Товары среквизитами номенклатура и количество. Создал счет 43 с признаком количественный Активный. Далее обеспечил проведение документа с заполнением соотвествующих ресурсов и измерений.
    Далее вводил данные по примеру, но до закрытия так и не добрался. Изучаю Буху )))

  10. Закрытие счетов 25,26
    Запрос.Текст =
    “ВЫБРАТЬ
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2,
    | РегистрУправленческийОбороты.Субконто3,
    | СУММА(РегистрУправленческийОбороты.КоличествоКорОборотКт) КАК КоличествоКорОборотКт
    |ПОМЕСТИТЬ Выпуск
    |ИЗ
    | РегистрБухгалтерии.РегистрУправленческий.Обороты(&НачалоМесяца, &КонецМесяца, , Счет =

    ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОсновноеПроизводство), , , КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ГотоваяПродукция), ) КАК

    РегистрУправленческийОбороты
    |
    |СГРУППИРОВАТЬ ПО
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2,
    | РегистрУправленческийОбороты.Субконто3
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    | РегистрУправленческийОбороты.Счет КАК Счет,
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2 КАК Субконто2,
    | СУММА(РегистрУправленческийОбороты.СуммаОборотДт) КАК СуммаОборотДт
    |ПОМЕСТИТЬ Затраты
    |ИЗ
    | РегистрБухгалтерии.РегистрУправленческий.Обороты(&НачалоМесяца, &КонецМесяца, , Счет =

    ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщехозяйственныеРасходы), , , , ) КАК РегистрУправленческийОбороты
    |
    |СГРУППИРОВАТЬ ПО
    | РегистрУправленческийОбороты.Счет,
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | РегистрУправленческийОбороты.Счет,
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2,
    | СУММА(РегистрУправленческийОбороты.СуммаОборотДт)
    |ИЗ
    | РегистрБухгалтерии.РегистрУправленческий.Обороты(&НачалоМесяца, &КонецМесяца, , Счет =

    ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщепроизводственныеРасходы), , , , ) КАК РегистрУправленческийОбороты
    |
    |СГРУППИРОВАТЬ ПО
    | РегистрУправленческийОбороты.Счет,
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    | Затраты.Счет КАК Счет,
    | Выпуск.Субконто1 КАК Субконто1,
    | Выпуск.Субконто2 КАК Субконто2,
    | Выпуск.Субконто3 КАК Субконто3,
    | Выпуск.КоличествоКорОборотКт КАК Количество,
    | Затраты.СуммаОборотДт КАК Сумма
    |ИЗ
    | Выпуск КАК Выпуск
    | ЛЕВОЕ СОЕДИНЕНИЕ Затраты КАК Затраты
    | ПО (ВЫБОР
    | КОГДА Затраты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщехозяйственныеРасходы)
    | ТОГДА Выпуск.Субконто1 = Затраты.Субконто1
    | КОГДА Затраты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОбщепроизводственныеРасходы)
    | ТОГДА Выпуск.Субконто1 = Затраты.Субконто1
    | И Выпуск.Субконто2 = Затраты.Субконто2
    | КОНЕЦ)
    |ИТОГИ
    | СУММА(Количество)
    |ПО
    | Счет,
    | Субконто1,
    | Субконто2”;

    Результат = Запрос.Выполнить();

    ВыборкаСчет = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаСчет.Следующий() Цикл

    ВыборкаСубконто1 = ВыборкаСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаСубконто1.Следующий() Цикл //подразделения

    ВыборкаСубконто2 = ВыборкаСубконто1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаСубконто2.Следующий() Цикл //Заказы

    ВыборкаДетальныеЗаписи = ВыборкаСубконто2.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;

    Проводка.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Субконто1;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Заказы] = ВыборкаДетальныеЗаписи.Субконто2;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Субконто3;

    Проводка.СчетКт = ВыборкаСчет.Счет;
    Для каждого СтрокаВидыСубконто Из Проводка.СчетКт.ВидыСубконто Цикл
    ВидСубконто = СтрокаВидыСубконто.ВидСубконто;
    Проводка.СубконтоКт[ВидСубконто] =

    ВыборкаДетальныеЗаписи[“Субконто”+СтрокаВидыСубконто.НомерСтроки];
    КонецЦикла;
    Если Проводка.СчетКт=ПланыСчетов.Управленческий.ОбщехозяйственныеРасходы тогда
    Проводка.Сумма =

    ВыборкаДетальныеЗаписи.Сумма*ВыборкаДетальныеЗаписи.Количество/ВыборкаСубконто1.Количество;
    ИначеЕсли Проводка.СчетКт=ПланыСчетов.Управленческий.ОбщеПроизводственныеРасходы тогда
    Проводка.Сумма =

    ВыборкаДетальныеЗаписи.Сумма*ВыборкаДетальныеЗаписи.Количество/ВыборкаСубконто2.Количество;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;

    Закрытие счета 20

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

    Запрос.Текст =
    “ВЫБРАТЬ
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2,
    | РегистрУправленческийОбороты.Субконто3,
    | СУММА(РегистрУправленческийОбороты.СуммаОборотДт) КАК СуммаОборотДт
    |ИЗ
    | РегистрБухгалтерии.РегистрУправленческий.Обороты(&НачалоМесяца, &КонецМесяца, , Счет =

    ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ОсновноеПроизводство), , , , ) КАК РегистрУправленческийОбороты
    |
    |СГРУППИРОВАТЬ ПО
    | РегистрУправленческийОбороты.Субконто1,
    | РегистрУправленческийОбороты.Субконто2,
    | РегистрУправленческийОбороты.Субконто3”;

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Проводка = Движения.РегистрУправленческий.Добавить();
    Проводка.Период = Дата;
    Проводка.СчетДт = ПланыСчетов.Управленческий.ГотоваяПродукция;
    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Субконто3;

    Проводка.СчетКт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Подразделения] = ВыборкаДетальныеЗаписи.Субконто1;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Заказы] = ВыборкаДетальныеЗаписи.Субконто2;
    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = ВыборкаДетальныеЗаписи.Субконто3;
    Проводка.Сумма = ВыборкаДетальныеЗаписи.СуммаОборотДт;

    КонецЦикла;

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

    Далее рассчитывается себестоимость. При записи суммы учитываем, что “дельта” может получиться отрицательной, если СуммаОборотКт=0 (при продаже с нулевой себестоимостью).

  11. Предлагаю немного подправить текст задания.
    1. “цех, который изготовил номенклатуру”. Как-то обозначить, что “цех” – это подразделение. А то я, например, сдуру создал новый справочник “Цеха”. Потом уже посмотрел на проводку и понял, что цех и подразделение – одно и тоже.
    2. Ни в задании №15, ни в этом задании не указано, что такое 43 счет.

  12. Не совсем понятно, какой все-таки план-график актуален для нашего потока (от 25 апреля) – старый или тот, что в конфигурации 1.1.21.1 ?
    Новую конфигурацию я установил, указал начало курса и получил “новый” план-график, но задания, кажется продолжают выкладываться по “старому”.

    • Для Вашего потока действует старый план-график.
      Однако дадим дополнительное время для завершения работы с материалами курса.