В начало

Объединение внешних наборов данных

 

Небольшой пример использования объединения внешних набора данных на отчете «Продажа акций». Использовать будем объединение внешних наборов данных из документов: «ПокупкаАкций» и «ПродажаАкций».

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

 

Рис. Документы «Покупка акций» и «Продажа акций»

Также имеется справочник «СписокАкций», в котором записаны имеющиеся акции, по которым производятся операции покупки-продажи.

Запускаем режим конфигуратора, создаем новый отчет «ПродажаАкций» в дереве метаданных, открываем его и переходим на закладку «Основыные» и создаем схему компоновки данных.

Открывается СКД на первой закладке «Наборы данных».

Создаем набор данных типа «Объединение», в котором создаем два набора данных типа «Объект», т.к. будем создавать внешние наборы данных. Создаем первый внешний набор данных, называем его «Покупка», имя задаем «ндПокупка». В данном наборе данных создаем поля: Акция, ЦенаПокупки, Куплено. Устанавливаем типчики для полей ЦенаПокупки и Куплено, как «Число». Поскольку некоторые акции продаются с дробными частями копеек, что устанавливаем число [15;4].

Рис. Набор данных «Покупка»

            Далее аналогично создаем внешний набор данных «Продажа», с именем «ндПродажа».

Рис. Набор данных «Продажа»

            После этого переходим на вкладку «Вычисляемые поля», где создаем вычисляемые поля «Профит» и «Остаток».

Рис. СКД, закладка «Вычисляемые поля»

            И затем сразу переходим на закладку «Ресурсы», чтобы добавить необходимые ресурсы и прописать нужные формулы.

Рис. Закладка «Ресурсы» в СКД

            На закладке «Настройки» добавляем необходимые группировочки, а в нижней части окна, на закладке «Выбранные поля» немного подшаманим и сделаем дополнительные группы «КУПЛЕНО» и «ПРОДАНО».

Рис. Вкладка «Настройки» в СКД

            Теперь можно закрыть СКД и вернуться в отчет.

Создаем форму отчета, если ее нет.

На форме отчета удаляем стандартную кнопку «Сформировать» и добавляем свою такую же.

Рис. Добавление своей кнопки «Сформировать» на форме отчета

            Далее добавляем действие при нажатии на эНту кнопку «Сформировать». Ниже показано содержимое процедуры «ДействияФормыСформировать()».

Листинг. Процедуры в модуле формы отчета

Процедура ДействияФормыСформировать(Кнопка)

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |           ПокупкаАкцийСписокАкций.Наименование КАК Акция,

                        |           ПокупкаАкцийСписокАкций.Цена КАК ЦенаПокупки,

                        |           ПокупкаАкцийСписокАкций.Количество КАК Куплено

                        |ИЗ

                        |           Документ.ПокупкаАкций.СписокАкций КАК ПокупкаАкцийСписокАкций";

           

            Результат = Запрос.Выполнить();

            ВыгрузкаПокупки = Результат.Выгрузить();

 

            /////////////////////////////////////////////////////////

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |           ПродажаАкцийСписокАкций.Наименование КАК Акция,

                        |           ПродажаАкцийСписокАкций.Цена КАК ЦенаПродажи,

                        |           ПродажаАкцийСписокАкций.Количество КАК Продано

                        |ИЗ

                        |           Документ.ПродажаАкций.СписокАкций КАК ПродажаАкцийСписокАкций";

           

            Результат = Запрос.Выполнить();

            ВыгрузкаПродажи = Результат.Выгрузить();

           

            /////////////////////////////////////////////////////////

    ВНД = Новый Структура;

            ВНД.Вставить("ндПокупка", ВыгрузкаПокупки);

            ВНД.Вставить("ндПродажа", ВыгрузкаПродажи);

           

            СКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

            Настройки = СКД.НастройкиПоУмолчанию;

           

            КМ = Новый КомпоновщикМакетаКомпоновкиДанных;

            ДР = Новый ДанныеРасшифровкиКомпоновкиДанных;

            МК = КМ.Выполнить(СКД, Настройки, ДР);

           

            ПКД = Новый ПроцессорКомпоновкиДанных;

            ПКД.Инициализировать(МК, ВНД, ДР);

           

            ЭлементыФормы.Результат.Очистить();

            ДР = ЭлементыФормы.Результат;

           

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

            ПВ.УстановитьДокумент(ДР);

            ПВ.Вывести(ПКД);

КонецПроцедуры

 

            В процедуре мы создаем два независимых запроса к документам: «ПокупкаАкций» и «ПродажаАкций». Помещаем результат запроса в выгрузку. Далее шаманим с макетом, настройками и процессорами, чтобы программно вывести отчет.

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

            Ниже приведен примерный отчет на скорую руку «Продажа акций». Отчет показывает название акции в первой колонке, потом в разделе «КУПЛЕНО» показана цена и количество купленных акций, а в разделе «ПРОДАНО», аналогично цена продажи и количество проданных акций. Также есть колонка «Остаток», отображающая число оставшихся акций и колонка «Профит», в которой выводится прибыль/убыток от сделки.

Рис. Отчет «Продажа акций»

            Таким образом, на примере отчета «Продажа акций» приведен пример использования внешних наборов данных.