При переходе с устаревших конфигураций (например, 1С 7.7 ПУБ) на современные решения вроде 1С:Бухгалтерия 3.0 (БП 3.0) разработчики часто сталкиваются с трудностями при создании аналитических отчетов. Рассмотрим классическую задачу: руководство требует простой ежедневный отчет по выпущенной продукции и ее себестоимости по материалам (счета 20.01 и 43). Отчет должен содержать выпущенное количество продукции, себестоимость с НДС и без, а также транспортные расходы на единицу продукции.
Проанализируем ситуацию и разберем по шагам, как лучше подступиться к этой задаче: писать отчет программно по старинке или использовать Систему компоновки данных (СКД), а также выясним причину, почему получить себестоимость «за вчерашний день» в типовой БП 3.0 не так просто, как кажется.
Исторически разработчики привыкли рисовать макет, писать цикл по выборке из запроса и выводить строки с помощью команд вроде Вывести() и Присоединить(). Однако в реалиях 1С 8.3 на Управляемых формах (УФ) этот подход считается устаревшим. Разберем подробнее оба варианта.
Разработка отчета на Системе компоновки данных (СКД)
В современных конфигурациях СКД является стандартом де-факто для разработки отчетов. Посмотрим на главные преимущества этого подхода:
Разработка отчета «без СКД» на Управляемых формах
В отличие от обычных форм (как в 8.1 или 7.7), в Управляемых формах нельзя просто написать код генерации отчета в модуле и сразу показать его пользователю. Посмотрим, что потребуется сделать:
ТабличныйДокумент.Этот подход до сих пор оправдан для строгих печатных форм (накладных, актов, счетов-фактур), где внешний вид строго регламентирован. Однако для аналитических отчетов он негибок: если начальство попросит добавить группировку по складам, программисту придется переписывать половину отчета.
Многие начинающие пугаются обилия настроек в СКД. Как советуют опытные разработчики: «Начни с запроса». Разберем алгоритм действий:
ОтчетПроизводстваЗаСмену и ТребованиеНакладная (или РасходМатериалов).В постановке задачи кроется серьезный архитектурный конфликт с логикой работы типовой конфигурации БП 3.0. Требование руководства — получить отчет по себестоимости «за предыдущий день» на основе бухгалтерских проводок (Дт 43 — Кт 20). Выясним причину, почему стандартными оборотками это сделать не выйдет.
Специфика закрытия месяца в 1С:Бухгалтерии
В БП 3.0 точная фактическая себестоимость продукции не формируется в момент проведения документа выпуска. Она рассчитывается только в конце месяца специальной регламентной операцией ЗакрытиеМесяца (которая распределяет и закрывает счета 20, 23, 25, 26).
В течение месяца на счете 43 обычно отражается только количественный учет или предварительная (плановая) себестоимость. А на счете 20.01 просто накапливаются фактические затраты в разрезе подразделений и номенклатурных групп. Корректировка стоимости и доведение ее до фактической происходит только при закрытии месяца.
Как реализовать требования руководства технически?
Поскольку до закрытия месяца в регистрах бухгалтерии нет достоверных сумм фактической себестоимости по каждой единице продукции, для построения ежедневного отчета придется реализовать собственную математическую модель прямо в запросе. Это уже элементы управленческого учета внутри бухгалтерской базы.
Рассмотрим, как должен действовать запрос:
НоменклатурныеГруппы и субконто Продукция.Важно предупредить руководство: суммы в таком «ежедневном» отчете будут иметь сугубо управленческий характер. В конце месяца, после начисления зарплаты рабочим, амортизации оборудования и распределения общехозяйственных расходов, официальная бухгалтерская себестоимость на счете 43 изменится и не будет совпадать с цифрами из оперативного ежедневного отчета по материалам.
Используя этот пошаговый подход, вы сможете преодолеть барьер перехода на новые технологии, освоить СКД и предоставить бизнесу нужный управленческий инструмент, сохраняя при этом понимание архитектурных особенностей типовой бухгалтерии.