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

19.10.15

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

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

Файлы

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

Наименование Скачано Купить файл
Пример отчета СКД с использованием набора данных "объект"
.7z 6,25Kb
44 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

К примеру, очень рекомендую «Разработка сложных отчетов в «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С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    244757    1341    419    

1122

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    4723    263    shapa_pro    25    

65

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    15263    ovetgana    112    

105

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    8968    krasnoshchekovpavel    5    

66

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8182    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15387    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13002    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

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

20.08.2024    9413    AlexeyPROSTO_1C    1    

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

Событие "ПриКомпоновкеРезультата" модуля объекта отчета
В остальном ничего нового, всё есть в Хрусталёвой.
sorter1; 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; +23 Ответить
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 1468 21.10.15 12:32 Сейчас в теме
Вы серьезно?
native-api; rGromov; SadrA; kser87; HystriX; Daynestro07; Stepan_1c; mpeg1989; +8 Ответить
5. v3132 35 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 Ответить
Для отправки сообщения требуется регистрация/авторизация