Содержание:
2. Ежемесячный оборот по периодам и остатки по датам
3. Периодичные величины (остатки, валютные курсы) за конкретные даты в сложных отчетах
4. Произвольные столбцы в сложном отчёте
В данной статье будет описано, как создавать и оформлять сложные отчёты в 1С, а именно: как проводить соединение по наборам, как оформлять ежемесячные обороты и создавать остатки по датам, как работать с периодичными величинами и как работать с произвольными колонками.
Сложный отчёт – это особый отчёт, предметом которого являются данные по нескольким областям. То есть в нём содержится много регистров и запрос у такого отчёта более сложный.
1. Связи наборов данных
Рассмотрим, как можно создать связи наборов данных, которые будут использоваться в сложном отчёте. Пусть у нас имеются две следующие таблицы:
Рис. 1 Таблица с данными о количестве товара
Рис. 2 Таблица с данными о свойствах товара
В данных таблицах необходимо провести соответствие по товару, после чего – вывести результат.
Можно провести соединение в запросе, тогда результатом будет следующая таблица:
Рис. 3 Результат соединения в запросе
А в группах по итогам будет такая таблица:
Рис. 4 Группы по итогам соединения в запросе
Однако мы видим, что итоги выведены неправильно, так как видов товара только три.
Сделаем следующее: настроим соответствие каждой из первоначальных таблиц с набором данных и проведём их соединение при помощи СКД (система компоновки данных), как показано в таблице ниже:
Рис. 5 Соединение при помощи системы компоновки данных
Видим, что результат получили верный. То есть получаем, что одной из особенностей системы компоновки данных является то, что во время соединения наборов в виде «Один ко многим» итоги не будут искажены. Соединение подобных таблиц для сложных отчётов при помощи СКД – наилучший вариант.
2. Ежемесячный оборот по периодам и остатки по датам
Обычно в сложных отчётах, используется подобная стандартная таблица, которая представляет собой сальдо по датам, а также разворот по периоду за необходимый период. Пример подобной таблицы представлен ниже:
Рис. 6 Сальдо по датам
Чтобы воспроизвести подобное сальдо по датам, нужно провести следующие манипуляции:
1. Создать два вида наборов данных – для оборотов и для остатков, как можно увидеть на скриншоте ниже:
Рис. 7 Два вида набора данных
2. Далее необходимо соединить эти виды наборов данных, как показано ниже:
Рис. 8 Создание связи наборов данных
3. Следующим шагом будет использование вычисляемого поля, дабы вывести необходимое сальдо по датам, как демонстрируется ниже:
Рис. 9 Вычисляемое поле для выведения сальдо по датам
4. Следующий шаг – это настройка нужных ресурсов, то есть тех полей, по которым и будет происходить расчёт итогов:
Рис. 10 Настройка ресурсов для сальдо по датам
5. Далее необходимо настроить вывод этих данных:
Рис. 11 Настройка вывода данных для сальдо по датам
6. Далее воспользуемся специальным приёмом, а именно: удалим автоматическое поле – останется то, которое нужно для проведения группировки, как показано на скриншотах ниже:
Рис. 12 Выбор поля остаток на дату для сальдо по датам
Рис. 13 Удаление поля для сальдо по датам
7. Внутри служебной колонки нужно выключить общие итоги в СКД, так как они нам не нужны:
Рис. 14 Выключение общих итогов в СКД
Необходимая таблица с ежемесячными оборотами готова. При необходимости можно менять настройку, которая представлена ниже:
Рис. 15 Настройка таблицы с ежемесячными оборотами
3. Периодичные величины (остатки, валютные курсы) за конкретные даты в сложных отчетах
Иногда случается, что основная часть сложного отчёта готова, но необходимо поверх добавить ещё что-то, например, курсы валют. Для этого нужно использовать главный набор, к которому и будут добавляться различные курсы валют. Воспользуемся календарём (см. скриншот ниже), при этом вторым набором будут сами валютные курсы.
Рис. 16 Добавление календаря в сложный отчет
Рис. 17 Добавление курса валют в сложный отчет
Важно обратить внимание на поле «ПериодВалюты», которое представляет собой параметр из виртуальной таблицы. Данное поле необходимо, чтобы произвести соединение по наборам, как показано ниже:
Рис. 18 Параметр виртуальной таблицы ПериодВалюты
Нужное поле находится в столбце «Выражение приемник», а внутри столбца «Параметр» нужно выбрать «&ПериодВалюты». Стоит отметить, что данные параметры могут иметь различные названия, но для упрощения примера они были названы одинаково. Далее через компоновщик данных будет передаваться величина из «ДатаКалендаря» для параметра «&ПериодВалюты». Так можно увидеть, что запрос со вторым набором данных будет цикличным.
4. Произвольные столбцы в сложном отчёте
Бывают ситуации, когда необходимо произвести в системе 1С разработку сложного отчёта по подобию некоторой таблицы, например, такого вида:
Рис. 19 Сложный отчет в виде таблицы
Стоит отметить, что условия для каждого из значений в таблицы могут быть весьма непростыми. Тогда нам необходимо следовать специальному алгоритму, дабы сделать сложный отчёт корректно:
1. Первым шагом нужно прописать запрос, который создаст все столбцы, в нашем примере он будет выглядеть так:
Рис. 20 Запрос для создания столбцов в сложном отчете
2. Результатом такого запроса будет список со всеми номенклатурами;
3. В запросе, который представлен ниже, мы получим всевозможные данные. Также стоит отметить, что в этом запросе поле «Раздел» необходимо для сопоставления подзапроса с колонкой. Чтобы избежать того, что в источнике не будет выбрано строк и в ответ получим частичный перечень колонок, необходимо в последнем подзапросе добавить декартово произведение таблиц «ПереченьНоменклатуры» и «Разделы».
Рис. 21 Добавление декартового произведения таблиц
4. Дальше попробуем в СКД вывести таблицу сложным отчётом. Для этого нужно задействовать колонку с числами для проведения сортировок по колонкам, как показано на скриншоте с примером ниже:
Рис. 22 Сортировка по колонкам в сложном отчете
5. Далее остаётся лишь провести настройки для выведения данных в виде таблицы:
Рис. 23 Вывести таблицу СКД
Специалист компании «Кодерлайн»
Айдар Фархутдинов