Содержание:
1. 1С: Автозаполнение состава настроек отчета
2. Использование расширения языка запросов для СКД 1С 8.3 для управления составом настроек
4. Имена параметров и псевдонимы полей. Поле Номенклатура и Субконто 1
5. Исключение соединений с таблицами в 1С СКД
1. 1С: Автозаполнение состава настроек отчета
Чаще всего в качестве источника данных для отчета используется запрос к базе данных 1С. При разработке нового отчета с источником данных запрос по умолчанию устанавливается флаг Автозаполнение. Установка этого флага означает, что Система компоновки данных 1С 8.3 автоматически сформирует состав настроек отчета.
В список полей доступных для пользователя попадут все поля, указанные после ключевого слова ВЫБРАТЬ итогового запроса. Кроме того, система заботливо добавит, например, поля виртуальных таблиц регистров бухгалтерии. Как видно на рисунке, кроме полей, указанных в запросе, в списке появились также Субконто1, Счет.
2. Использование расширения языка запросов для СКД 1С 8.3 для управления составом настроек
Если мы снимем флаг 1С Автозаполнение, то для запроса на рисунке список полей окажется пустым.
Чтобы добавить нужные поля в список, воспользуемся расширением языка запросов для системы компоновки данных. Перейдем в конструктор запроса и откроем вкладку компоновка данных.
В тексте запроса появится список полей выборки, заключенный в фигурные скобки. Состав полей настроек будет заполнен:
Обратите внимание, что для всех полей недоступна возможность отбора. Чтобы дать возможность пользователю задавать отбор, в отчете нужно заполнить список полей на вкладке «Условия»:
Чтобы наименования полей отбора совпадали с наименованиями полей выборки, необходимо указать соответствующие псевдонимы. В результате в запросе появится конструкция в фигурных скобках с ключевым словом ГДЕ:
3. Имена параметров
Рассмотрим особенность работы конструктора системы компоновки данных с параметрами виртуальных таблиц при включении флага «Автозаполнение». Обратите внимание, что в приведенном выше запросе мы не задали имя параметра даты выборки остатков:
Но если мы откроем закладку «Параметры» конструктора схемы компоновки, то увидим среди параметров Период. Если же мы зададим имя параметра отличное от типового «Период», например, «Дата», то на вкладке параметры обнаружим два параметра: Период и Дата. Вопрос: с каким параметром выполнится запрос к системе? Ответ: с параметром Период.
Рассмотрим пример, когда необходимо переопределить имя типового параметра. Задача: добавить в отчет цены номенклатуры на начало года и на дату отчета. Изменим запрос отчета соответствующим образом:
Очевидно, что для таблицы ЦеныНаНачалоГода необходимо переопределить имя типового параметра. Зададим имя параметра период - НачалоГода для виртуальной таблицы ЦеныНаНачалоГода. На вкладке Параметры конструктора схемы компоновки добавим выражение для вычисления даты начала текущего года. Если сформировать отчет, то обнаружится, что поле ЦенаНаНачалоГода содержит некорректные данные: цену товаров на дату отчета. Т.к. система игнорирует значение параметра НачалоГода и выполняет запрос используя значение параметра Период.
В данной ситуации нам поможет расширение языка запросов системы компоновки данных. Откроем параметры таблицы ЦеныНаНачалоГода на вкладке компоновка данных конструктора запросов и зададим имя параметра «НачалоГода»:
Теперь наш запрос отработает корректно: данные по таблицам УправленческийОстатки и ЦеныНаДатуОтчета будут выбраны на дату, указанную пользователем в настройках, а данные по таблице ЦеныНаНачалоГода будут получены на начало года.
4. Псевдонимы полей. Поле Номенклатура и Субконто 1
Еще один момент, на который нужно обратить внимание в приведенном выше запросе, это - отбор по товарам. В наших таблицах одинаковые по сути сущности обозначены разными именами. В таблице регистра бухгалтерии товар, это - поле Субконто 1, а в таблицах цен – поле Номенклатура. Для оптимизации запроса необходимо добавить отборы по товарам в параметры виртуальных таблиц, и необходимо сделать так, чтобы пользователю не пришлось указывать отбор дважды (для поля Номенклатура и для поля Субконто 1). И в этом случае нам поможет расширение языка запросов компоновки данных. Прейдем на закладку Таблицы (Компоновка данных) конструктора запросов, откроем параметры виртуальных таблиц, и зададим возможность отбора по полям Субконто1 и Номенклатура, и укажем одинаковый псевдоним Товар для этих полей:
В результате при добавлении отбора по полю Товар, он будет применен к выборке данных всех виртуальных таблиц.
Обратите внимание на символы .* после имени поля. Если после поля указаны эти символы, то отбор также можно будет задавать по реквизитам справочника Номенклатура.
5. Исключение из запроса соединений с таблицами в 1С СКД
Рассмотрим возможности использования расширения языка запросов исключения соединений с таблицами в 1С СКД. Приведем следующий пример: пользователь исключает из отчета данные поля ЦенаНаДатуОтчета и ЦенаНаНачалоГода. Очевидно, что в таком случае нет необходимости включать в запрос таблицы регистра сведений ЦеныНоменклатуры. Воспользуемся обработкой Консоль системы компоновки данных, чтобы посмотреть итоговый запрос к базе данных. Мы увидим, что хотя среди полей выборки нет полей таблицы ЦеныНоменклатуры, однако соединение с этими таблицами присутствуют.
На закладке Компоновка данных/Таблицы конструктора запросов системы компоновки данных снимем флаг Обязательная у таблиц ЦеныНаДатуОтчета и ЦеныНаНачалоГода, а также укажем различные значения в полях Номер группы.
В тексте запроса соединения с этими таблицами теперь будут заключены в фигурные скобки. Каждое соединение отдельно. Если номер группы будет совпадать, то оба соединения будут объединены в одну группу (одни фигурные скобки).
Теперь текст запроса сформированный системой компоновки примет следующий вид:
А итоговый запрос в системе компоновки будет содержать соединения только с теми таблицами, поля которой присутствуют в выборке.
Специалист компании ООО «Кодерлайн»
Алена Крюкова.