Разбор с профессионалом (Раздел 11, 1-5)

Auto_Mechanic

Представляю Вашему вниманию ответы первых пяти вопросов 11 раздела (механизмы построения отчетности) комплекта вопросов сертифицированного экзамена на знание основных механизмов платформы "1С: Предприятие 8".

Вопрос 11.1 Система компоновки данных позволяет:

1. создавать отчеты без программирования

2. использовать несколько наборов данных

3. использовать несколько объектов "Построитель отчета"

4. верны ответы 1, 2

5. верны ответы 1, 3

6. верны ответы 2, 3

Для  чего нужен механизм система компоновки данных (СКД)? Основное предназначение – это декларативное (без программирования) создание отчетов с помощью встроенных конструкторов и настроек.

Также следует отметить два момента (для общего развитияsmiley ):

  1. При большом желании СКД можно создать и выполнить программно, что является трудоемкой задачей;
  2. Все элементы СКД имеют возможность сериализоваться т.е. СКД может быть представлена в виде файла. Это дает возможность в любом другом внешнем приложении сформировать СКД в виде .xml и десериализовать в 1С т.е. загрузить СКД представленной в файле .xml в 1С.

Для того, чтобы отчет отображал информацию пользователю, необходимо определить откуда будет получаться информация для отчета. Данная информация называется – набор данных. Более подробно данную тему разберем в разделе СКД. Уточним лишь, что существует несколько вариантов наборов данных:

  1. Набор данных – запрос. Здесь все очевидно – обращение к текущей информационной базе при помощи языка запросов.
  2. Набор данных – объект. В качестве объекта может быть выбрана, например, заполненная таблица значений, табличная часть, результат запроса, документ объект, набор записей регистра, но никак не «ПОСТРОИТЕЛЬ ОТЧЕТА». Для чего может понадобиться набор данных — объект? Например, есть функция, которая возвращает заполненную таблицу значений данными из другой информационной базы. Заполненную таблицу значений мы можем успешно обработать, передав на вход системе СКД.
  3. Набор данных – объединение. Здесь все очевидно – это обычное объединение ранее созданных наборов.

Естественно, у нас есть возможность создавать несколько наборов данных, которые могут быть соединены между собой, связь которых настраивается на закладке «Связи наборов данных».


Вопрос 11.2  Текст запроса, который фактически будет исполняться системой компоновки данных определяется в:

1. схеме компоновки данных

2. макете компоновки данных

3. в процессоре компоновки данных

4. на этапе подготовки к созданию схемы компоновки данных

Для того, чтобы ответить на вопрос, необходимо представлять общую схему выполнения отчета с использованием СКД.

Говоря простым языком, схему можно представить следующим образом.

Представим, что есть автомобиль (схема компоновки данных) и настройки (настройки пользователя) по которым автомобиль будет выполнять своё движение: скорость, места остановки, длина пути итд.

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

Самопроизвольно автомобиль, естественно, начать своё движение не может. Автомобилю необходимо дать команду, например, нажав на педаль газа (нажатие на педаль выполняет процессор компоновки данных).

В автомобиле установлен «самописец» (процессор вывода результат), который записывает маршрут.

Схема понятна? Теперь тоже самое, но уже на языке 1С.

Исходные данные: схема компоновки данных, настройки пользователя.

Объект «Компоновщик макета компоновки данных» соединяет схему компоновки данных с настройками пользователя. Результатом соединения является макет компоновки данных. Макет компоновки данных – это указание системе, какие данные нужно выбрать, какой запрос нужно выполнить.

Объект «Процессор компоновки данных» получает информацию из базы данных по макету компоновки данных.

Объект «Процессор вывода» необходим для того, чтобы результат отобразить пользователю, например, вывести в табличный документ.


Вопрос 11.3 В системе компоновки данных можно использовать следующие наборы данных:

1. набор данных — запрос

2. набор данных — объект

3. набор данных — объединение

4. верны ответы 1, 2

5. верны ответы 1, 3

6. верны ответы 1, 2, 3

См. вопрос 11.1 smiley.


Вопрос 11.4 Вывод результата системы компоновки данных производится:

1. путем обхода объекта, содержащего результат исполнения системы компоновки

2. путем вывода последовательно получаемых элементов результата системы компоновки

3. специальным методом объекта (в параметре которого задается поле табличного документа)

Создадим простой отчет. В качестве набора данных укажем объект.

pro_11_4_1

Далее в модуле объекта в событии «ПриКомпоновкеРезультата» напишем следующий код.

pro_11_4_2

Самописец (процессор вывода) есть двух видов:

  1. ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
  2. ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент

У каждого вида самописца есть специальный метод «Вывести» с параметрами:

Вывести(<ПроцессорКомпоновки>, <ВозможностьПрерыванияПользователем>)

Как видим, в параметрах не задается поле табличного документа, поэтому третий вариант не подходит.

Теперь постараюсь объяснить на глупом примере (иначе не знаю, как ещё это сделатьlaugh), почему первый вариант неверный. Помните наш настроенный автомобиль, который едет после нажатия педали газа (процессор компоновки данных)? Так вот, вывод результата (метод «Вывести») происходит с помощью «самописца» во время всего движения автомобиля, а не после того, как он совершит свой путь.

Например, самописец каждый метр делает фотографию (элемент коллекции) и помещает её в альбом с фотографиями (коллекция значений). Так вот, во время движения автомобиля альбом с фотографиями находится только в процессе создания (как логической сущности ещё нет). Только после окончания движения мы получаем альбом с фотографиям (метод «Вывести» возвращает коллекцию значений или табличный документ).

А в первом варианте ответа говорится о том, что вывод происходит путём обхода объекта (коллекции). Коллекции ещё нет, происходит вывод элементов будущей коллекции (результат компоновки данных не существует во время вывода, существуют только её элементы).


Вопрос 11.5 Для того, чтобы в системе компоновки данных какое-либо поле (числовое) можно было выводить в области данных таблицы необходимо

1. поле должно быть отмечено как ресурс

2. поле должно быть отмечено как измерение

3. поле должно быть отмечено как поле содержащее остаток

4. у поля должен быть отмечен флаг "Использовать в итогах"

Очередной абсурдный вопрос. Ещё раз убедился, что нужно разбирать не  все вопросы, а только те, которые несут хоть какой-то смыслwink. А теперь методом исключения постараемся найти правильный ответ.

У любой таблицы можно выделить следующие области:

  1. Область заголовков строк (измерения) – колонки таблицы;
  2. Область данных (содержимое таблицы) – содержимое таблицы;
  3. Область итогов (место вывода итогов).

Думаю, теперь стало понятно о какой области идёт речь.

Для каждого поля СКД можно указывать роли.

pro_11_5_1

Если вкратце, то корректно настроенная роль поля гарантирует корректное получение остатков. Т.е. второй и третий вариант влияют не на возможность вывода, а на корректное получение остатков (кому интересно – могу подробнее расписать). Поэтому, второй и третий вариант сразу отпадает.

Что касается четвертого варианта, то флаг «Использовать в итогах» вообще не существует. Есть только настройка у ресурсов «Рассчитывать по…» смысл которой можно объяснить на следующем примере.

Например, в отчете есть три уровня группировок: склад, номенклатурная группа и номенклатура. Настройка «Рассчитывать по…» говорит системе, на каком уровне группировок необходимо считать итоги. Если в настройке «Рассчитывать по…» указать только номенклатурную группу, то итоги будут подсчитаны только для группировки номенклатурная группа.

Остался только первый вариант — поле должно быть отмечено как ресурс. На что влияет поле, отмеченное как ресурс? В первую очередь на отображение итоговых данных в области итогов. Но в формулировке вопроса говорится про область данных… Чтобы отобразить поле в области данных не обязательно отмечать поле как ресурсindecision.

И все-таки первый вариант ответа больше всех подходит т.к. именно указание ресурса оказывает хоть какое-то влияние на отображение в области таблицы…

Понравилось? Не забудь поддержать сайт!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *