Как устроены банковские выписки и реестр документов в «1С:Бухгалтерия 3.0» и как связать их с СКД?

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

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

Где искать банковские выписки в Конфигураторе 1С?

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

  1. Откроем Конфигуратор и найдем ветку Подсистемы.
  2. Кликнем правой кнопкой мыши по интересующей нас подсистеме (например, БанкИКасса) и выберем пункт Открыть командный интерфейс.
  3. В открывшемся окне мы увидим, какие именно объекты конфигурации отвечают за вывод команд в пользовательский интерфейс.

Проанализировав командный интерфейс, мы выясним, что команда «Банковские выписки» ведет к журналу документов. Журнал, который объединяет поступления и списания по расчетным счетам, называется Деньги. Сама форма, которую видит пользователь на экране, называется БанковскиеВыписки и находится по пути: Журналы документов -> Деньги -> Формы -> БанковскиеВыписки.

Как устроен динамический список выписок и где найти его запрос?

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

Многие начинающие разработчики ищут макет СКД непосредственно внутри формы или журнала документов. Однако динамический список работает иначе. Рассмотрим, как увидеть его структуру и изменить SQL-подобный запрос:

  1. В правом верхнем углу редактора формы перейдем на вкладку Реквизиты.
  2. Найдем реквизит Список (он выделен жирным шрифтом, так как является основным реквизитом формы).
  3. Откроем палитру свойств этого реквизита.
  4. Найдем свойство Настройка списка и нажмем гиперссылку Открыть (или кнопку с лупой).

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

Как устроен и где формируется «Реестр документов»?

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

Основным объектом для формирования отчета является Отчет.РеестрДокументов. Внутри него заложена эталонная схема компоновки данных — СхемаКомпоновкиДанныхЭталон.

Когда пользователь нажимает кнопку печати реестра, происходят следующие действия:

  1. Программа анализирует текущее состояние динамического списка на форме (установленные отборы по организации, периоду, контрагентам, а также сортировку и текстовый поиск).
  2. Эти настройки передаются в параметры формы отчета РеестрДокументов.
  3. В модуле отчета вызывается процедура ИнициализироватьОтчет(ОсновнаяТаблица, ТекстЗапроса). Она программно перестраивает запрос эталонной СКД под структуру конкретного журнала (в данном случае ЖурналДокументов.Деньги) и накладывает все пользовательские фильтры.
  4. Результат выводится на экран в виде готового табличного документа.

Как правильно связать Динамический список с СКД (современный подход)

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

Давайте посмотрим на современный инструмент платформы «1С:Предприятие 8.3». Мы можем получить готовую схему компоновки и текущие настройки списка программно с помощью специальных методов:

Проанализируем пример программного кода, который позволяет выгрузить данные из динамического списка Список в табличный документ на сервере:


// Код выполняется в серверном контексте формы
Сchema = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Settings = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

// Инициализируем компоновщик макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Сchema, Settings, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

// Запускаем процессор компоновки данных
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

// Выводим результат в табличный документ
ТабличныйДокумент = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

Этот изящный способ позволяет избежать ручного дублирования запросов. В сформированный ТабличныйДокумент попадут ровно те строки и колонки, которые пользователь видит на экране своего монитора в данный момент.

← На главную