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