Почему отладчик не останавливается на точке останова при проведении документов и как включить отладку на сервере 1С?

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

При попытке отладить проведение документов и процедуру списания партий в конфигурации 1С:Управление торговлей 10.3 разработчики часто сталкиваются с ситуацией: точка останова установлена в общем модуле или модуле объекта, но при проведении документа программа не делает паузу и выдает системное сообщение об ошибке (например, Не списано по партиям...). Проанализируем, почему это происходит, как правильно настроить отладку на сервере и как выявить причины различий в поведении аналогичных документов.

Причина: отключен режим отладки на сервере 1С

В клиент-серверном варианте работы базы данных код проведения документов выполняется на стороне сервера (в контексте службы ragent.exe). Если служба сервера 1С запущена в стандартном режиме, отладчик Конфигуратора не может перехватывать выполнение серверных вызовов. Чтобы точка останова сработала, необходимо перезапустить службу сервера с флагом отладки.

Включение отладки на сервере под управлением ОС Windows

Разберем по шагам порядок действий для активации отладочного режима на Windows-сервере:

  1. Откроем редактор реестра: нажимаем комбинацию клавиш Win + R, вводим regedit и нажимаем Enter.
  2. Перейдем к ветке реестра системных служб: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ и найдем службу агента сервера 1С (например, 1C:Enterprise 8.3 Server Agent...).
  3. В правой части окна найдем строковый параметр ImagePath, который содержит путь к исполняемому файлу службы.
  4. Откроем редактирование параметра и добавим в самый конец строки ключ -debug (через пробел).
  5. Сохраним изменения, откроем консоль служб services.msc и выполним перезапуск службы Агент сервера 1С:Предприятия.

Включение отладки на сервере под управлением ОС Linux

Если сервер 1С функционирует в среде Linux, выполним следующие действия:

  1. Откроем файл конфигурации службы сервера 1С (в зависимости от дистрибутива путь может быть /etc/sysconfig/srv1cv83, /etc/default/srv1cv83 или /etc/init.d/srv1cv83).
  2. Установим или раскомментируем параметр: SRV1CV8_DEBUG=1 или добавим ключ -debug в строку параметров запуска демона.
  3. При использовании systemd внесем параметр Environment="SRV1CV8_DEBUG=1" в соответствующий .service-файл.
  4. Перезапустим службу сервера командой systemctl restart srv1cv83 или service srv1cv83 restart.

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

После перезапуска сервера с нужным флагом настроим параметры клиента разработки:

  1. В главном меню Конфигуратора перейдем в раздел Отладка → Подключение.
  2. Нажмем кнопку Настройка автоматического подключения.
  3. Установим флаги для нужных типов предметов отладки: Фоновые задания, Клиентские приложения на сервере и Внешние соединения.
  4. Нажмем ОК. Теперь при повторном проведении документа точка останова в модуле партионного учета будет успешно перехвачена.

Почему два одинаковых документа ведут себя по-разному при списании партий?

Если один документ списывает остатки в минус или проводится без ошибок, а второй выдает сообщение Не списано по партиям, выясним ключевые различия, на которые следует обратить внимание:

  1. Настройки дополнительных прав пользователей: перейдем в меню Сервис → Пользователи → Настройка дополнительных прав пользователей. Проверим значения опций Разрешить превышение остатка товаров на складе, Разрешить превышение остатка товаров по организации и Разрешить списание партий при недостатке партий. Если один документ проводился под пользователем с разрешением списания в минус, программа спишет товар без остановки, в то время как у другого пользователя проведение завершится ошибкой.
  2. Флаги управленческого и бухгалтерского учета: в шапке документа проверим флаги Отражать в упр. учете и Отражать в бух. учете. Проверка списания выполняется по разным регистрам: ПартииТоваровНаСкладах и ПартииТоваровНаСкладахБухгалтерскийУчет. Если отключен один из учетов, контроль по нему игнорируется.
  3. Режим проведения (оперативный / неоперативный): если документ проводится текущим моментом времени (оперативно), проверка остатков выполняется строго на текущую дату и время. При проведении задним числом алгоритм списывает остатки в соответствии с настройками учетной политики и параметрами неоперативного списания.
  4. Учетная политика по партиям: проверим регистр сведений УчетнаяПолитикаПоПартионномуУчету. Если снят флаг Списывать партии при проведении документов, движения формируются регламентной обработкой позже, и ошибка при проведении не появляется.
  5. Детализация аналитики в строках: проверим скрытые реквизиты строк — ХарактеристикаНоменклатуры, СерияНоменклатуры, ЗаказПокупателя, а также статус партии (например, Купленный или Принятый на комиссию). Несоответствие даже одной аналитики между приходом и расходом приводит к нехватке остатка по конкретной партии.

Диагностика списания без отладчика

Для быстрой проверки наличия партий сформируем отчет Ведомость по партиям товаров на складах. В настройках отчета установим группировки строк: Номенклатура → Характеристика → Серия → Склад → Документ движения (партия) и укажем период формирования строго на дату и время документа с точностью до секунды. Это позволит сразу увидеть, какого именно аналитического разреза не хватает для успешного проведения документа.

← На главную