При сопровождении и доработке конфигураций на базе платформы 1С:Предприятие 8 (в частности, 1С:Комплексная автоматизация 1.1 и 1С:Управление производственным предприятием 1.3) разработчики часто сталкиваются с ситуацией, когда в модуле документа Отчет о розничных продажах отсутствуют привычные строки добавления бухгалтерских записей вида Движения.Хозрасчетный.Добавить(). Кроме того, нередко возникает путаница с суммами списания товаров: почему документ списывает сумму по себестоимости (закупочной цене), а не по розничной цене продажи.
Разберем детально обе проблемы: как устроен механизм генерации проводок в партионном учете и какова методология учета розничной выручки и списания себестоимости на плане счетов.
Выясним причину, по которой проводка по кредиту счета 41.02 формируется на сумму себестоимости, а не розничной цены:
90.02.1 («Себестоимость продаж») обязана равняться именно закупочной стоимости (себестоимости партии), а не выручке.Таким образом, списание со счета 41.02 по закупочной стоимости является корректным поведением типовой конфигурации. Если требуется учет в розничных ценах, необходимо проверить настройки учетной политики по бухгалтерскому учету (способ оценки товаров в рознице) и регистр сведений Счета учета номенклатуры, где для розничных складов должен быть указан счет 41.11, а не 41.02.
Проанализируем, почему в модуле объекта документа Отчет о розничных продажах нельзя найти прямой код добавления бухгалтерских проводок.
В отличие от простых конфигураций (например, 1С:Бухгалтерия предприятия), в конфигурациях КА 1.1 и УПП 1.3 реализован транзакционный и регистровый принцип проведения документов:
СписанныеТовары.
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить());
ПартииТоваровНаСкладах (бухгалтерский учет).УправлениеЗапасамиПартионныйУчетФормированиеПроводокРегл и БухгалтерскийУчет. Данные собираются во временную таблицу значений и загружаются в регистр бухгалтерии методом Загрузить(), без построчного обхода через метод Добавить()."41.02", а извлекаются запросом из регистра сведений СчетаУчетаНоменклатуры либо берутся через обращение к предопределенным элементам:
ПланыСчетов.Хозрасчетный.ТоварыВРозницеПоПокупнойСтоимости
Рассмотрим по шагам практические методы поиска нужного участка кода, если глобальный поиск по строке счета не дает результатов.
Это самый надежный способ перехватить формирование любых проводок. Откроем дерево метаданных, перейдем в ветку Регистры бухгалтерии -> Хозрасчетный -> Модуль набора записей. В процедуре ПередЗаписью или ПриЗаписи установим точку останова с условием:
ЭтотОбъект.Отбор.Регистратор.Значение = ДокументСсылка
При проведении документа выполнение остановится в момент фиксации движений. Открыв окно Стек вызовов, можно по цепочке подняться вверх и увидеть точный общий модуль, процедуру и строку формирования таблицы проводок.
В дереве метаданных найдем Планы счетов -> Хозрасчетный -> Предопределенные. Найдем счет ТоварыВРозницеПоПокупнойСтоимости (код 41.02), нажмем правой кнопкой мыши и выберем пункт «Найти ссылки в объекте» (или «Поиск ссылок на объект»). Конфигуратор выведет список всех общих модулей, запросов и макетов, где используется данный счет метаданных.
В режиме отладки запустим Замер производительности в меню Отладка, проведем документ Отчет о розничных продажах и остановим замер. В полученной таблице отсортируем строки по модулям, относящимся к учету партий и формированию проводок (УправлениеЗапасамиПартионныйУчет*), чтобы увидеть, какие процедуры фактически исполнялись.
Проверим в режиме 1С:Предприятие записи регистра сведений Счета учета номенклатуры. Правила подстановки счетов зависят от приоритета: склад, номенклатура, номенклатурная группа, организация. Если для склада розничной торговли указан счет 41.02 вместо 41.11, программа будет автоматически применять алгоритм списания по покупным ценам.