Разберем достаточно распространенную задачу, с которой сталкиваются программисты 1С при доработке конфигураций. Допустим, поступает требование: добавить в регистр накопления ПартииТоваровНаСкладах новый ресурс для учета дополнительных затрат (например, на доставку или таможню). Цель — видеть отдельно полную стоимость партии и наложенные на нее дополнительные расходы, чтобы в дальнейшем строить отчеты и анализировать рентабельность продаж с учетом этих затрат и без них.
Первая мысль — просто добавить ресурс в конфигураторе и найти места, где он должен заполняться. Однако проанализируем ситуацию глубже и выясним, почему прямое изменение структуры партионного регистра — это плохая практика, и какие существуют правильные архитектурные решения.
Типовой регистр ПартииТоваровНаСкладах является одним из ключевых и самых сложных узлов во многих конфигурациях (например, в УТП). Посмотрим на основные проблемы, с которыми вы столкнетесь при попытке «в лоб» добавить туда новый ресурс:
Рассмотрим наиболее технически грамотный подход, если транзакционный учет в разрезе партий все-таки необходим. Правильно будет не трогать типовой объект, а вынести ресурс в отдельный регистр.
Разберем по шагам, как это реализовать:
ДополнительныеРасходыПоПартиям. Скопируйте в него основные измерения из типового регистра (Номенклатура, Склад, ДокументОприходования/Партия) и добавьте необходимые вам ресурсы (например, СуммаДопЗатрат).ОбработкаПроведения документов-регистраторов, либо на событие ПриЗаписи набора записей самого типового регистра партий.Проанализируем альтернативные варианты, которые позволяют решить бизнес-задачу пользователя вообще без программирования сложных механизмов списания партий.
Использование типового регистра затрат: Во многих комплексных конфигурациях уже существует развитый механизм учета затрат. Дополнительные расходы логичнее не «вкручивать» в себестоимость самой партии в складском контуре, а относить на отдельные статьи затрат в соответствующий управленческий регистр. В этом случае рентабельность рассчитывается в отчетах путем сопоставления выручки, базовой себестоимости реализованных товаров и распределенных на направление продаж дополнительных затрат. Это стандартный методологический подход.
Использование плановых типов цен: Если задача состоит исключительно в анализе плановой рентабельности менеджерами, можно обойтись без изменения партионного учета. Создайте два типа цен: «Базовая закупочная» и «Закупочная с учетом средних доп. расходов». Анализ валовой прибыли в таком случае легко настраивается через типовые отчеты путем сравнения фактической выручки с этими расчетными типами цен.
Расчет «на лету» в отчетах: В некоторых случаях информацию о дополнительных расходах можно получить прямо в отчете, вытащив из движений нужные суммы по типу документа-регистратора (например, документа «Поступление доп. расходов»). Однако стоит учитывать, что при таком подходе могут возникнуть сложности с производительностью при построении отчетов за большие периоды, а также проблемы с учетом ручных корректировок в системе.
Подводя итог: перед тем как вмешиваться в алгоритмы партионного списания, внимательно проанализируйте задачу. Практика показывает, что создание отдельного параллельного регистра или использование заложенных в систему методологических инструментов учета затрат дает гораздо более стабильный и легко обновляемый результат.