Как найти место формирования данных в отчете «Деньги в кассах ККМ» в 1С:Розница 3.0?

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

При работе с современными конфигурациями 1С, такими как «1С:Розница 3.0» или «1С:Управление нашей фирмой», разработчики часто сталкиваются с трудностями при попытке найти код, отвечающий за заполнение отчетов. Традиционный поиск по ключевым словам типа Новый Запрос или установка точек останова в модуле формы часто не дают результата. Это связано с тем, что отчеты в современных решениях строятся на базе Библиотеки стандартных подсистем (БСП) и выполняются в фоновом режиме. Разберем по шагам, как «поймать» момент формирования данных и внести изменения в отчет.

Выясним причину: почему не работают точки останова?

Проанализируем ситуацию: вы открываете форму отчета, ставите точку останова в процедуре Сформировать, нажимаете кнопку на форме, и... ничего не происходит. Или отладчик останавливается в форме, но при попытке «шагнуть внутрь» серверных функций выполнение просто проскакивает до конца.

Это происходит потому, что формирование отчета вынесено в фоновое задание. С точки зрения системы, это отдельный сеанс, который выполняется параллельно основному. Чтобы ваш отладчик смог перехватить выполнение кода в этом сеансе, необходимо выполнить предварительную настройку.

Рассмотрим порядок включения отладки фоновых заданий:

  1. Откройте Конфигуратор.
  2. Перейдите в меню Сервис — Параметры.
  3. Выберите вкладку Отладка, затем раздел Установка подключений.
  4. В списке доступных типов приложений найдите Фоновые задания и установите напротив них флажок.
  5. Нажмите «ОК» и перезапустите сеанс пользователя (желательно).

Теперь, когда выполнение кода перейдет в фоновый режим на стороне сервера, отладчик автоматически «подцепится» к новому сеансу и остановится на вашей точке останова.

Проанализируем структуру отчета в Рознице 3.0

В конфигурации 1С:Розница 3.0 (которая идеологически повторяет УНФ) отчет «Деньги в кассах ККМ» является самостоятельным объектом метаданных. Если вам нужно изменить запрос или добавить новые колонки, первым делом нужно найти сам объект отчета.

Откройте дерево конфигурации и перейдите по пути: ОтчетыДенежныеСредстваВКассахККМ. Именно здесь сосредоточена вся логика, а не в общих модулях, которые вы видели в коде формы.

В большинстве случаев данные формируются с помощью Системы компоновки данных (СКД). Найдите в ветке отчета макет с именем ОсновнаяСхемаКомпоновкиДанных. Разберем подробнее, что там внутри:

Где искать программное формирование (Модуль объекта)

Иногда простого изменения запроса в СКД недостаточно. Разработчики часто используют программную предобработку или модификацию схемы перед выводом. Если вы изменили запрос в макете, но в отчете ничего не поменялось, или если вы вообще не видите сложной логики в макете, нужно заглянуть в Модуль объекта отчета.

Нас интересует предопределенная процедура ПриКомпоновкеРезультата. Выясним, как она работает в типовых решениях. Пример типовой структуры:


Процедура ПриКомпоновкеРезультата(РезультатХод, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Отменяем стандартный вывод, если хотим полностью управлять процессом
    // СтандартнаяОбработка = Ложь; 
    
    // Здесь может быть вызов общего модуля для инициализации параметров
    ОтчетыСервер.ПриКомпоновкеРезультата(ЭтотОбъект, РезультатХод, ДанныеРасшифровки, СтандартнаяОбработка);
    
КонецПроцедуры

Если вы хотите изменить запрос программно «на лету», точка останова в этой процедуре — идеальное место. Здесь вы можете исследовать объект ЭтотОбъект.КомпоновщикНастроек и увидеть, какие настройки применяются прямо сейчас.

Разберем логику работы формы отчета (БСП)

Код, который автор сообщения привел из модуля формы (функции РезультатФормированияОтчета, СформироватьПослеПредупреждения), — это универсальный механизм БСП. Рассмотрим подробнее, что происходит в этих процедурах:

  1. Программа собирает текущие настройки пользователя из формы.
  2. Вызывает серверную функцию, которая помещает задание на формирование отчета в очередь Длительных операций.
  3. Клиентская часть (форма) начинает периодически «опрашивать» сервер: «Готов ли отчет?».
  4. Как только сервер заканчивает расчет, данные помещаются во Временное хранилище, и клиент получает адрес этого хранилища.
  5. Затем процедура ПослеФормирования выводит этот результат в табличный документ на экране.

Пытаться найти логику формирования данных внутри этих универсальных процедур — это тупиковый путь, так как они работают с любым отчетом в системе. Искать нужно именно в Модуле объекта конкретного отчета или его СКД.

Как добавить новые столбцы: пошаговая инструкция

Если ваша задача — добавить новые данные в отчет «Деньги в кассах ККМ», выполните следующие действия:

Шаг 1. Работа с макетом СКД

Откройте ОсновнаяСхемаКомпоновкиДанных. Перейдите на закладку «Набор данных». В тексте запроса добавьте нужные поля. Например, если вам нужно поле «Организация» (хотя обычно оно есть), выберите его из соответствующих таблиц регистра ДенежныеСредстваВКассахККМ.

Шаг 2. Определение доступных полей

После изменения запроса убедитесь, что новые поля появились в списке доступных полей на закладке «Настройки» в нижней части конструктора СКД.

Шаг 3. Настройка выбранных полей

Перейдите на вкладку «Настройки» (в СКД), выберите нужный вариант отчета (обычно он один — «Основной») и на закладке Выбранные поля перетащите ваши новые колонки в правую часть окна.

Шаг 4. Сброс настроек в пользовательском режиме

Важный момент: 1С кэширует настройки отчетов для каждого пользователя. Если вы добавили поле в конфигураторе, но не видите его в режиме «1С:Предприятие», зайдите в отчет, нажмите кнопку Еще — Установить стандартные настройки. Это принудительно обновит структуру отчета из метаданных, которые вы только что изменили.

Дополнительные инструменты: Замер производительности

Если вы все же не можете найти, в какой именно общий модуль «уходит» управление, воспользуйтесь Замером производительности:

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

Посмотрите на пример: часто данные могут подготавливаться во временных таблицах прямо перед запуском СКД. Это будет видно в замере как выполнение длинных процедур в модуле менеджера или объекта отчета.

Используя эти методы — настройку отладки фоновых заданий, анализ модуля объекта и работу с макетом СКД — вы сможете найти и изменить логику любого отчета в 1С:Розница 3.0.

← На главную