Добавлен: 31.03.2023
Просмотров: 934
Скачиваний: 13
Важный технический момент связан с выполнением запросов в системе 1С: Предприятие. Для формирования отчетов в программном продукте 1С: Предприятие 8.3 ключевое место занимает система компоновки данных. Важно отметить, что в системе 1С: Предприятие 8.3 тексты на языке запросов можно формировать с помощью конструктора запросов. В этом случае от вас при составлении запроса требуются только визуальные действия.
Для работы с запросами создадим еще одну подсистему, «Аналитика», в которой будем выводить создаваемые отчеты, построенные на основании запросов. Следующий шаг заключается в создании нового объекта конфигурации - объекта, который строится на основании отчета и относится к базовым объектам конфигурации. Для этого в окне «Конфигурация» необходимо щелкнуть правой кнопкой мыши на разделе «Отчеты». В окне редактирования объекта конфигурации на вкладке «Основные» введем имя разрабатываемого отчета — «Отчет2_1» (также как и с другими объектами, например, документами).
Далее на этой вкладке воспользуемся кнопкой Открыть схему компоновки данных. В результате перед нами откроется окно конструктора макета, в котором мы ничего менять не будем (рис. 86).
Рис. 86. Окно конструктора макета
После щелчка на кнопке «Готово» на экране появится окно конструктора схемы компоновки данных с многочисленными вкладками, среди которых сейчас нас интересует вкладка «Наборы данных» (рис. 87).
Рис. 87. Окно конструктора схемы компоновки данных
Здесь с помощью кнопки «Добавить набор данных» (можно также воспользоваться контекстным меню, открывающемся по щелчку правой кнопкой мыши на значке Наборы данных) выберем вариант Добавить набор данных — запрос. В результате окно на экране изменится — в его нижней части появится поле для запроса (рис. 88).
Рис. 88. Добавление набора данных в схему компоновки данных
Внесем в это поле текст запроса в соответствии с рис. 89.
Рис. 89. Текст запроса в окне конструктора схемы компоновки данных
После проделанных действий перейдем на вкладку «Настройки» (рис. 90).
Рис. 90. Вкладка «Настройки» схемы компоновки данных
Требуется перенести в раздел «Выбранные поля» все три интересующие нас поля, участвующие в запросе. Так же, необходимо щелчком правой кнопки на слове «Отчет» вызвать контекстное меню. В результате на экране появится окно для задания группировки в отчете (рис. 91).
Рис. 91. Окно для выбора группировки в отчете
В данном случае нам никакого поля указывать не требуется, поэтому просто щелкнем на кнопке «OK». После этого вместо сгруппированных записей в отчете мы увидим вариант «Детальные записи», а в целом вкладка «Настройки» будет выглядеть так, как показано на рис. 92.
Рис. 92. Формирование полей для схемы компоновки данных
В режиме 1С: Предприятие в подсистеме Аналитика воспользоваться только что созданным отчетом (рис. 93).
Рис. 93. Отчет2_1 в режиме 1С:Предприятие
Сортировка в запросах
Для сортировки можно изменить текст запроса c целью расположить отобранные элементы в порядке убывания номеров телефонов (см. рис. 89). Для этого текст запроса должен выглядеть в соответствии с листингом 2.2.
Листинг 2.2. Запрос с упорядочиванием данных по номерам телефонов
ВЫБРАТЬ Сотрудник,Телефон,
Ссылка.Наименование КАК Организация
ИЗ Справочник.Фирмы.КонтактныеЛица
УПОРЯДОЧИТЬ ПО Телефон УБЫВ // отобранная информация должна быть отсортирована в
порядке убывания значений
Теперь создадим новый отчет с использованием схемы компоновки. В соответствии с листингом 2.2 в поле для запроса введем новую конструкцию.
Вкладку «Настройки» следует оформить так же, как на рис. 92. На этом работа по созданию отчета в конфигураторе завершается, остается лишь перейти в режим 1С:Предприятие, чтобы увидеть результат выполнения данного запроса (рис. 94).
Рис. 94. Результат выполнения запроса с упорядочиванием по номерам телефонов
Также компановка иногда нужна по возрастанию: УПОРЯДОЧИТЬ ПО Телефон ВОЗР
В листинге 2.3 приведен запрос с последовательным упорядочиванием сначала по названиям организаций, а затем по именам сотрудников. Результат выполнения запроса для имеющейся информации в базе данных представлен на рис. 95.
Листинг 2.3. Запрос с упорядочиванием по двум полям
ВЫБРАТЬ Сотрудник,Телефон,
Ссылка.Наименование КАК Организация
ИЗ Справочник.Фирмы.КонтактныеЛица
УПОРЯДОЧИТЬ ПО Организация ВОЗР, Сотрудник ВОЗР
Рис. 95. Результат выполнения запроса с упорядочиванием по организациям и сотрудникам
Рассмотрим еще один пример построения запроса, который будет касаться регистра накопления КоличествоТоваров. Будем считать, что нам необходимо получить информацию о движении товаров по нашим филиалам в следующем формате:
- Товар
- Филиал
- Регистратор
- Количество
В регистре накопления реквизит под названием регистратор представляет собой ссылку на документ, которому подчинена рассматриваемая запись регистра. Необходимо упорядочить сначала по названиям филиалов (в возрастающем порядке), а уже внутри филиалов — по количеству товаров (в убывающем порядке). Текст запроса для реализации такого отбора данных приведен в листинге 2.4.
Листинг 2.4. Запрос для извлечения информации из регистра накопления
ВЫБРАТЬ
КоличествоТоваров.Товар КАК Товар,
КоличествоТоваров.Филиал.Наименование КАК Филиал,
КоличествоТоваров.Регистратор КАК Регистратор,
КоличествоТоваров.Количество КАК Количество
ИЗ
РегистрНакопления.КоличествоТоваров КАК КоличествоТоваров
УПОРЯДОЧИТЬ ПО
Филиал, Количество УБЫВ
Воспользуемся новым отчетом («Отчет2_3»), при разработке которого создадим схему компоновки данных. Не будем останавливаться на уже описанных ранее технических шагах и отметим только, какие параметры необходимо установить на вкладке Настройки (рис. 96).
Рис. 96. Установки на вкладке Настройки для запроса, представленного в листинге 2.4
Теперь осталось перейти в режим 1С:Предприятие и сформировать разработанный отчет Отчет2_3 (рис. 97).
Рис. 97. Извлечение информации о движении товаров
Отбор фрагмента данных
Часто для принятия решения не требуется просматривать все данные, а достаточно взглянуть на лучшие или, наоборот, худшие показатели среди отобранных сведений (листинг 2.5 и 2.6).
Листинг 2.5. Запрос для выбора трех минимальных сумм при поступлении товаров
ВЫБРАТЬ
ПЕРВЫЕ 3 Товар,Сумма, //просмотр трёх наименьших значений
Ссылка.Фирма КАК ФирмаПоставщик
ИЗ Документ.ПоступлениеТоваров.ПереченьТоваров
УПОРЯДОЧИТЬ ПО Сумма ВОЗР
Результат работы в режиме 1С:Предприятие отражен на рис. 98, где информация показана с учетом имеющихся данных в информационной базе.
Рис. 98. Извлечение информации с помощью запроса, представленного в листинге 2.5
Листинг 2.6. Запрос для извлечения начального фрагмента списка сотрудников
ВЫБРАТЬ ПЕРВЫЕ 3 Товар,Сумма,
Ссылка.Фирма КАК ФирмаПоставщик
ИЗ Документ.ПоступлениеТоваров.ПереченьТоваров
УПОРЯДОЧИТЬ ПО Сумма УБЫВ
Аналогичный прием можно использовать и для получения только верхней части списка сотрудников (упорядоченную по алфавиту) (листинге 2.7.)
Листинг 2.7. Запрос для извлечения начального фрагмента списка сотрудников
ВЫБРАТЬ Первые 3 Сотрудник,Телефон,
Ссылка.Наименование КАК Организация
ИЗ Справочник.Фирмы.КонтактныеЛица
УПОРЯДОЧИТЬ ПО Сотрудник
Отбор уникальных значений
Теперь наша задача заключается в формировании перечня товаров, которые поступали от каждого поставщика по документам ПоступлениеТоваров, причем в этот список каждое конкретное название товара в комбинации с указанием фирмы-поставщика должно попасть не более одного раза. В языке запросов существует ключевое слово РАЗЛИЧНЫЕ, которое позволяет отобрать только различающиеся строки (повторений не будет).
Возвратимся к нашему примеру и организуем выборку товаров из документов ПоступлениеТоваров вместе с названиями фирм без повторений данных комбинаций. Текст запроса, в котором реализуется подобный отбор, приведен в листинге 2.8.
Листинг 2.8. Отбор уникальных комбинаций поставщик-товар
ВЫБРАТЬ РАЗЛИЧНЫЕ Товар.Наименование КАК Товар,
Ссылка.Фирма.Наименование КАК ФирмаПоставщик
ИЗ Документ.ПоступлениеТоваров.ПереченьТоваров КАК Перечень
УПОРЯДОЧИТЬ ПО Товар ВОЗР
Разработаем новый отчет — «Отчет2_5». На рис. 99 показано ключевое окно схемы компоновки данных, а результат заполнения отчета в режиме 1С: Предприятие приведен на рис. 100.
Рис. 99. Настройки в схеме компоновки данных
Рис. 100. Отчет уникальных комбинаций поставщик-товар
Логические операторы
В предыдущих примерах нам еще не встречалось ключевое слово языка запросов ГДЕ. Оно позволяет задать условие отбора данных из исходных таблиц — источников запроса. В результате в запросе оказываются отобранными только те записи, для которых выполняется заданное условие. В конструкции ГДЕ можно использовать логические операторы (И, ИЛИ, НЕ), которые позволяют формировать достаточно сложные логические выражения.
Применим эту возможность к задаче получения списка поступлений товаров, которые встречались в документах ПоступлениеТоваров в количестве, большем пяти единиц, при условии их суммарной стоимости более 75 000 рублей. Текст запроса, в котором происходит отбор при одновременном выполнении этих двух условий, приведен в листинге 2.9.
Листинг 2.9. Запрос с включением двух условий и ключевого слова И
ВЫБРАТЬ Товар, Количество,Сумма,
Перечень.Ссылка.Филиал КАК Филиал
ИЗ Документ.ПоступлениеТоваров.ПереченьТоваров КАК Перечень
ГДЕ Количество > 5 И Сумма > 75000
Для реализации этого запроса создадим новый отчет («Отчет2_6»). На рис. 101 показано окно схемы компоновки данных с необходимыми настройками.
Рис. 101. Окно схемы компоновки данных
Результат заполнения отчета в системе 1С:Предприятие приведен на рис. 102.
Рис. 102. Результат отбора товаров для запроса по двум условиям
Приведем теперь пример запроса, в котором комбинируются конструкции ИЛИ и И. Нас интересуют все товары, которые поступали по цене не менее 30 000 рублей в любом количестве или более 25 000 рублей в количестве, большем двух (листинг 2.10). Окно схемы компоновки данных представлено на рис. 103.
Листинг 2.10. Запрос с ключевыми словами И и ИЛИ
ВЫБРАТЬ Товар, Количество,Цена,
Перечень.Ссылка.Дата КАК ДатаДокумента
ИЗ Документ.ПоступлениеТоваров.ПереченьТоваров КАК Перечень
ГДЕ ( Количество > 2 И Цена > 25000) ИЛИ Цена >= 30000
Рис. 103. Окно схемы компоновки данных
Результат заполнения отчета в режиме 1С:Предприятие показан на рис. 104.
Рис. 104. Результат выполнения запроса, приведенного в листинге 2.10
Агрегатные функции в запросах
Часто на практике требуется также получать разнообразную сводную информацию. В частности, по информации из документов ПоступленияТоваров управленческому персоналу могут быть полезны ответы на следующие вопросы:
- Какова сумма поступлений в разрезе товаров?
- Каково среднее количество поступлений каждого товара?
- Какова наибольшая сумма поступления по каждому товару?
Для реализации подобных запросов следует воспользоваться агрегатными функциями и группировками.