Где формируются движения по регистру «Затраты» в документе «Требование-накладная» (УТ 10.3) и почему не срабатывает отладка?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При доработке типовой конфигурации «1С:Управление торговлей 10.3» (или аналогичных решений на обычных формах, таких как КА 1.1 и УПП 1.3) разработчики часто сталкиваются с ситуацией, когда в модуле объекта документа Требование-накладная отсутствуют явные строки записи в регистр накопления Затраты. При попытке установить точку останова в коде или в модуле набора записей регистра отладчик не останавливается, хотя движения в информационной базе успешно создаются. Разберем архитектуру партионного учета, определим точное место формирования движений и выясним, как правильно настроить отладку на платформе 1С:Предприятие 8.3.

Архитектура проведения документа «Требование-накладная» и регистр «Затраты»

В конфигурации УТ 10.3 проведение складских документов разделено на два ключевых этапа: оперативный количественный учет и стоимостный партионный учет.

  1. Модуль объекта документа: здесь формируются только оперативные количественные движения по регистрам ТоварыНаСкладах и СписанныеТовары. Непосредственной записи в регистр Затраты в модуле документа нет.
  2. Общий модуль партионного учета: стоимостные движения и распределение сумм на затраты предприятия выполняются в общем модуле УправлениеЗапасамиПартионныйУчет. Точкой входа служит процедура ДвижениеПартийТоваров, которая анализирует строки списания и вызывает специализированные алгоритмы.
  3. Процедура списания на затраты: движения по регистру накопления Затраты формируются в процедуре СформироватьДвиженияСписаниеНаПостоянныеЗатратыУпр (а также в сопутствующих процедурах распределения производственных и косвенных расходов в зависимости от характера статьи затрат).

Рассмотрим типовой пример модификации алгоритма, когда в регистр Затраты добавлено новое пользовательское измерение, которое требуется заполнить при списании материальных ценностей:


// Фрагмент процедуры СформироватьДвиженияСписаниеНаПостоянныеЗатратыУпр
// Общий модуль: УправлениеЗапасамиПартионныйУчет

Движение = Движения.Затраты.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = СтруктураШапкиДокумента.Дата;
Движение.СтатьяЗатрат = ВыборкаПоТоварам.СтатьяЗатрат;
Движение.НоменклатурнаяГруппа = ВыборкаПоТоварам.НоменклатурнаяГруппа;

// Заполнение добавленного пользовательского измерения
Движение.НовоеИзмерение = ВыборкаПоТоварам.НовоеИзмерение;

Движение.Количество = ВыборкаПоТоварам.Количество;
Движение.Сумма = Стоимость;

Факторы, влияющие на появление движений по затратам

Если движения по регистру Затраты не формируются вовсе, проверим следующие параметры учета:

  1. Учетная политика (управленческий учет): проверим состояние флага «Списывать партии при проведении документов». Если флаг снят, стоимостные движения и записи по затратам откладываются до запуска регламентной обработки Проведение по партиям.
  2. Флаги документа: в шапке документа должен быть установлен флаг «Отражать в упр. учете».
  3. Заполнение статьи затрат: в табличной части документа обязательно должна быть выбрана статья затрат с корректным статусом материальных расходов. Если статья не заполнена, процедура формирования движений по постоянным затратам пропускает такую строку.

Почему не работают точки останова на платформе 8.3

Основная причина, по которой отладчик игнорирует точки останова в модуле УправлениеЗапасамиПартионныйУчет — исполнение кода на стороне сервера при отключенном режиме серверной отладки. Общий модуль имеет установленные флаги исполнения на сервере, поэтому при переходе с платформы 8.2 на 8.3 требуется заново активировать отладку серверных вызовов.

Разберем по шагам, как восстановить работу точек останова:

  1. Включение ключа -debug на сервере 1С:

    В операционной системе Windows откроем редактор реестра (regedit) и перейдем в ветку службы агента сервера:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent...

    В строковом параметре ImagePath добавим ключ -debug к команде запуска ragent.exe и перезапустим службу 1С:Предприятия.

    В среде Linux проверим конфигурационный файл /etc/init.d/srv1cv83 или systemd-юнит службы, указав параметр SRV1CV8_DEBUG=1.

  2. Настройка автоматического подключения в Конфигураторе:

    Откроем меню Отладка → Подключение → Настройка автоматического подключения.

    Установим флаги напротив пунктов «Серверные контексты» (или «Серверные процедуры») и «Фоновые задания». Без этих флагов Конфигуратор не будет перехватывать вызовы, выполняемые в серверных модулях кластера.

  3. Очистка кэша и перезапуск рабочих процессов:

    Если после динамического обновления конфигурации точки останова остаются неактивными (серыми), выполним полный перезапуск рабочих процессов сервера (rphost) и очистим локальный кэш конфигуратора на рабочем месте разработчика.

После включения ключа -debug и настройки автоматического подключения серверных контекстов точка останова в процедуре СформироватьДвиженияСписаниеНаПостоянныеЗатратыУпр будет гарантированно срабатывать при проведении документа Требование-накладная.

← На главную