СКД и внешние источники данных. Набор данных — объект

19.10.15

Разработка - СКД

О том, как можно работать с СКД, используя набор данных "Объект" (аналог временных таблиц, только передаваемых не напрямую в запрос, а в СКД)

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Пример отчета СКД с использованием набора данных "объект"
.7z 6,25Kb
37
37
1 SM
Скачать Купить за 1 850 руб.

Привет!
Сегодня хочу описать тему, с которой без «акваланга» не разберешься :) ;)

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

К примеру, очень рекомендую «Разработка сложных отчетов в «1С:Предприятии 8.2″. Система компоновки данных», Автор: Хрусталева Е. Ю. (если конкретнее, то смотрите стр. 224, 267 и 473)

В СКД существует 2 вида источников данных: Запрос, объект и объединение (эта штука не в счет, она не источник данных, а обработчик имеющихся).  См рис 1:


Итак, если с источником (набором) данных типа «Запрос» нам более или менее понятно, как работать, то по поводу набора данных «Объект» есть трудности.

Для начала опишу, что мы хотим получить на выходе:

Отчет, пользователь нажал кнопку «Сформировать» и отобразился список номенклатуры (см. рис. 2):

 Рис.2. Итоговый результат. Рабочий внешний отчет.

Да, я допустил одну неточность, а именно: на снимке нет кнопки «Сформировать«, но есть кнопка «новое действе» (чуть позже объясню, почему так получилось ;)

Да, да! Еще момент: весь этот список выводится из набора данных «Объект»:

 Рис. 3. Использование набора данных объект для вывода списка номенклатуры

Решение:

  1. Создаем внешний отчет;
  2. Добавляем макет СКД, назовем его «ОсновнаяСхемаКомпановкиДанных»;
  3. Добавляем в него набор данных «Объект», назначаем ему имя «СписокНоменклатуры» (должно быть так же, как и в рис. 3);
  4. В настройках отчета особо не экспериментируем, пусть будет все просто (см. рис. 4)
 Рис. 4. Настройки внешнего отчета
 

Ок, половину дела сделали ;)

Теперь сгенерируем основную форму отчета (да, еще момент! Моя конфигурация работает на обычном интерфейсе, но думаю, на управляемых формах вы найдете решение ;) Итак, форма:

 Рис. 5. Основная форма отчета на СКД

 

Здесь и возникает проблема! Если нажать на кнопку «сформировать» (рис. 5.), то мы увидим ошибку!

Рис. 6. Ошибка при формировании внешнего отчета


Решению данной проблемы я и посвятил данную статью!

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

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

 

Вставлял в форме процедуру «Сформировать», но в нее нет заходов, пришлось переопределить действие кнопки «сформировать» перед открытием формы:


Рис. 8. Изменение привязки действия к кнопке «Сформировать»


На рис. 8 помимо изменения действия формы приведен пример запроса, его обработки и передачи сгенерированных данных в СКД. Изучим его белее внимательно:

  1. Генерируем входные данные для СКД;
  2. Инициализируем СКД;
  3. Выводим результат НА ФОРМУ (обратите на это так же внимание!).

Вспомним схему взаимодействия объектов системы компоновки данных:

 

 Рис. 9. Схема взаимодействия объектов системы компановки данных.

 

 

Схема компоновки данных во внешнем отчете дотупна как глобальный объект в методе формы СхемаКомпоновкиДанных. К ней так же можно обратиться по имени, передав его в метод ПолучитьМакет (см. Рис. 8)

Далее, самостоятельно изучите используя представленную схему на рис. 9 и справочную систему, как и зачем взаимодействовать с данными объектами ;)

Основной кусок кода приведен ниже:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Наименование как Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
НоменклатураСписок = Запрос.Выполнить().Выгрузить();
НаборыДанных = Новый Структура("СписокНоменклатуры", НоменклатураСписок);
//СКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
СКД = СхемаКомпоновкиДанных;
 
КомпМакета = новый КомпоновщикМакетаКомпоновкиДанных;
макетКомп = КомпМакета.Выполнить(СКД, СКД.НастройкиПоУмолчанию);
ПроцессорКомпДанных = новый ПроцессорКомпоновкиДанных;
ПроцессорКомпДанных.Инициализировать(макетКомп, НаборыДанных);
 
вывод = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
вывод.УстановитьДокумент(ЭлементыФормы.Результат);
вывод.Вывести(ПроцессорКомпДанных, истина);

Да! Вот еще приятный момент!!!

В данном примере, как видите (см. рис. 2), вывод осуществляется в форму, а не в табл. документ! И это очень хорошо, ведь мы можем работать с формой (программно перехватывать события элемента формы, делать всякие фишки с drag and drop и прочее ;)

В табличном документе мы можем просто вывести обработанные данные на экран и передать управление документом пользователю и мы не можем никак влиять на дальнейший процесс редактирования данного контента!

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

«Поле табличного документа представляет собой табличный документ, размещенный в форме. Наряду с многообразием оформительских возможностей табличного документа это позволяет организовывать обработку событий, возникающих при выборе ячеек, картинок, а также других элементов управления, размещенных в поле табличного документа.»
 
Ладно, как говорится, успехов в бою ;)
 
* ссылка на мой личный ресурс (статью взял с него): https://eanikiforov.ru/ 

СКД система компановки данных набор данных Объект отчеты

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    141507    777    391    

804

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    5404    implecs_team    6    

44

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    5676    43    obmailok    21    

78

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2635    2    Yashazz    0    

33

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    9547    21    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    6329    PROSTO-1C    13    

67
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. demon_infernal 41 19.10.15 06:55 Сейчас в теме
Перехватить событие кнопки "Сформировать" не получилось

Событие "ПриКомпоновкеРезультата" модуля объекта отчета
В остальном ничего нового, всё есть в Хрусталёвой.
native-api; user1147184; SagittariusA; SadrA; Zixxx; Anchoret; jmi; bav_itritm; user658699_heinrich2906; SantiouS; Daynestro07; HAMMER_59; join2us; bovka; Diego_Iv; nixel; 7OH; shalimski; TMV; ojiojiowka; medm; sommid; +22 Ответить
4. HystriX 25.07.19 22:09 Сейчас в теме
(1) Да еще и стиль изложения для детского сада.
native-api; behemoth96; +2 Ответить
2. Tishu 3 21.10.15 10:47 Сейчас в теме
Пользуйтесь шаблоном универсального отчета , в нем есть возможность использовать внешние наборы данных в СКД и многое другое. Универсальный шаблон имеет некоторые ограничения, влияющие на представление настроек пользователя (простая или расширенная). Поэтому можно создать сложный запрос, а результат передать в объект СКД. Универсальный шаблон преступно мало используется, а пользователи к нему привыкают быстро.
EMelihoff; +1 Ответить
6. bamblbi 04.09.19 12:59 Сейчас в теме
(2)А не подскажите куда копать? Как в универсальном отчете сформировать при компановке внешний набор данных? (УТ 11)
7. bamblbi 04.09.19 15:30 Сейчас в теме
(6)Вопрос исчерпан. Вместо обычного "приКомпановкиДанных" использую "ПроцессорКомпановкиДанных". Остальной в шаблоне универсального отчета оставляю как есть.
8. evg_m 9 18.05.20 01:28 Сейчас в теме
(7) а можно по подробнее где и что использовать чтобы было как в универсальном?
9. bamblbi 19.05.20 12:51 Сейчас в теме
(8)Мб не совсем понял. Я сохраняю универсальный отчет в файл переименовываю его, добавляю в СКД запрос и настройки. Потом правлю отчет как мне нужно.
10. evg_m 9 20.05.20 00:41 Сейчас в теме
(9) Интересно вот это: Вместо обычного "приКомпановкиДанных" использую "ПроцессорКомпановкиДанных"
3. nixel 1423 21.10.15 12:32 Сейчас в теме
Вы серьезно?
native-api; rGromov; SadrA; kser87; HystriX; Daynestro07; Stepan_1c; mpeg1989; +8 Ответить
5. v3132 33 25.08.19 10:45 Сейчас в теме
Автору спасибо за материал
user616816_Romeo8044; Ktyfa; +2 Ответить
11. BigBoss 2 08.01.21 10:36 Сейчас в теме
Спасибо за материал!
user616816_Romeo8044; +1 Ответить
12. SadrA 22.03.21 11:27 Сейчас в теме
Заголовок вводит в заблуждение. Автор, почувствуй разницу между "внешние источники данных" и "внешние наборы данных".
native-api; user616816_Romeo8044; kvvprog1s; Andreyyy; justhere; +5 Ответить
13. user1570472 02.07.21 14:01 Сейчас в теме
Спасибо за статью.
user616816_Romeo8044; +1 Ответить
Оставьте свое сообщение