Как найти алгоритм заполнения табличной части документа в 1С:Бухгалтерии 3.0?

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

В процессе доработки или анализа типовых конфигураций на базе 1С:Предприятия часто возникает необходимость понять, как именно работает встроенная кнопка «Заполнить». В частности, при работе с документом Инвентаризация товаров в 1С:Бухгалтерии 3.0, разработчики сталкиваются с тем, что стандартные средства отладки не всегда позволяют «поймать» исполнение кода. Рассмотрим пошагово, где искать этот алгоритм и как настроить инструменты для успешной отладки.

Где искать логику заполнения данных

Типовые конфигурации, созданные на базе БСП (Библиотеки стандартных подсистем), используют унифицированный механизм заполнения объектов. Когда вы нажимаете кнопку «Заполнить» в командной панели табличной части, система не выполняет код напрямую в модуле формы. Вместо этого вызывается механизм, распределяющий команды через модуль менеджера объекта.

Чтобы найти нужный участок кода:

  1. Откройте конфигуратор и найдите в дереве метаданных нужный документ (в нашем случае ИнвентаризацияТоваров).
  2. Раскройте ветку объекта и перейдите в Модуль менеджера.
  3. В модуле менеджера следует искать процедуру или функцию, которая отвечает за регистрацию команд заполнения. Чаще всего она называется ДобавитьКомандыЗаполнения или аналогично. Именно здесь описываются команды, которые вы видите в меню «Заполнить» в режиме «1С:Предприятие».
  4. Изучите параметры, передаваемые в команды — в них будет указан обработчик (процедура или функция), который вызывается при выборе пользователем конкретной команды (например, «Заполнить по остаткам на складе»).

Почему не работает отладка и как это исправить

Частая проблема при анализе таких механизмов — отладчик просто «проскакивает» точку останова или не останавливается вовсе. Это происходит потому, что многие операции в современных конфигурациях 1С выполняются в фоновых заданиях на стороне сервера. По умолчанию конфигуратор не отслеживает процессы, запущенные на сервере в фоновом режиме.

Чтобы увидеть исполнение кода, выполните следующие действия:

  1. Убедитесь, что сервер 1С:Предприятия запущен с параметром /debug. Без этого ключа отладка на сервере невозможна в принципе.
  2. В конфигураторе перейдите в меню Отладка -> Подключение -> Настройка автоматического подключения.
  3. В открывшемся окне обязательно установите флажок Фоновые задания. Это позволит отладчику «подцепляться» к процессам, которые система запускает для выполнения операций заполнения или проведения документов.
  4. Если вы работаете в клиент-серверном варианте, попробуйте временно протестировать поведение на файловой базе (как это сделал автор темы), чтобы убедиться, что логика кода отрабатывает корректно. Если в файловой базе отладка работает, значит, проблема была исключительно в настройках подключения к фоновым заданиям сервера.

Анализ кода заполнения по остаткам

Когда вы найдете нужный обработчик в общем модуле, вы увидите, что заполнение по остаткам опирается на запрос к виртуальной таблице Остатки. Рассмотрим примерный вид того, как это выглядит внутри:


// Пример логики запроса для получения остатков на складе
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
ГДЕ
    ТоварыНаСкладахОстатки.Склад = &Склад

При анализе подобных запросов обращайте внимание на использование параметров &Период и &Склад. В типовых конфигурациях они передаются из контекста документа через специальные структуры. Если вам нужно внести изменения в алгоритм заполнения, лучше всего создать собственную внешнюю обработку заполнения табличной части, используя механизм БСП, чтобы не снимать конфигурацию с поддержки и не модифицировать типовой код.

Итоги и рекомендации

Разбор работы типовых функций заполнения требует понимания архитектуры БСП. Главное, что стоит запомнить:

Теперь, когда вы знаете, как правильно настроить конфигуратор и где искать вызываемые процедуры, анализ работы стандартных механизмов 1С станет для вас значительно проще и продуктивнее. Совместное использование поиска по дереву метаданных и правильной настройки Подключения к фоновым заданиям — это ваш основной ключ к пониманию сложных типовых алгоритмов.

← На главную