СКД не только для отчетов

Публикация № 1122710

Разработка - Практика программирования

СКД программное формирование универсальный подход произвольные условия

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

Отчеты это слишком просто!

Всем разработчикам, имеющим дело с платформой 1С:Предприятие 8.x, наверняка знаком хотя бы в общих чертах механизм системы компоновки данных (СКД). В большинстве ситуаций он используется для создания отчетов. Общую информацию о назначении и возможностях СКД Вы можете узнать здесь.

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

Однако, СКД может быть использована для решения иных задач, не только разработка отчетов. В настоящей статье это и будет продемонстрировано. Материал больше ориентирован на разработчиков, которые только начинают свой путь в мир СКД. Хотя, может и все разработчики найдут здесь что-то интересное.

Пример задачи

В справочнике "Товары" для группы "Группа - 1" и всех входящих в нее элементов необходимо вести историю изменения. Касаться вопроса почему для этого не подошел журнал регистрации не будем. Для решения задачи нужно создать отдельный регистр сведений с измерением "Товар", с типом ссылки на соответствующий справочник, и ресурсом "Ответственный" с типом "СправочникСсылка.Пользователи".

Самый простой путь решения подобной задачи - это создать подписку на событие "ПриЗаписи" справочника и выполнять запись для текущего элемента в описанный ранее регистр сведений. Так, например, выглядела бы добавленная подписка на события и программный код в обработчике подписки.

Процедура ПриЗаписиТовара(Источник, Отказ) Экспорт

	// Запрос на проверку вхождения номенклатуры в группу "Группа - 1"
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Товары.Ссылка
		|ИЗ
		|	Справочник.Товары КАК Товары
		|ГДЕ
		|	Товары.Ссылка В ИЕРАРХИИ (&Ссылка)
		|	И Товары.Ссылка = &ТекущийЭлемент";

	// Устанавливаем условие отбора в запросе по соответствующей группе
	Запрос.УстановитьПараметр("Ссылка",
	// TODO: НИКОГДА! НИКОГДА ТАК НЕ ДЕЛАЙТЕ!
	// Поиск по наименованию - последнее дело при разработке :)
	// Тут нужно либо брать значение из настроек (константы или другие таблицы),
	// либо на крайний случай использовать предопределенные элементы / поиск по GUID
		Справочники.Товары.НайтиПоНаименованию("Группа - 1", Истина));
	// Устанавливаем отбор по ссылке текущего элемента
	Запрос.УстановитьПараметр("ТекущийЭлемент", Источник.Ссылка);
	
	Результат = Запрос.Выполнить();

	// Если результат не пустой, тогда номенклатура входит в группу "Группа - 1"
	Если НЕ Результат.Пустой() Тогда

		ПериодЗаписи = ТекущаяДатаСеанса();
		Набор = РегистрыСведений.ИзмененныеТовары.СоздатьНаборЗаписей();
		Набор.Отбор.Период.Установить(ПериодЗаписи);
		Набор.Отбор.Товар.Установить(Источник.Ссылка);
		
		Запись = Набор.Добавить();
		Запись.Период = ПериодЗаписи;		
		Запись.Товар = Источник.Ссылка;
		Запись.Ответственный = Пользователи.ТекущийПользователь();

		Набор.Записать();

	КонецЕсли;

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

Однако у подобной реализации есть большие минусы:

  1. Мы жестко привязаны к имени группы "Группа - 1". Если пользователь изменит наименование группы, то алгоритм перестанет работать. В листинге есть раздел "TODO" по этому поводу.
  2. Если завтра пользователь захочет включить наблюдение не только для этой группы или наложить дополнительные условия на реквизиты товаров, то нужно будет снова подключать к работе программиста.

Вот тут то и вступает в бой СКД, предлагая более универсальное решение!

С нуля

В регистр сведений "ИзмененныеТовары" добавим макет с типом "СхемаКомпоновкиДанных". В нем нужно лишь написать запрос к справочнику "Товары" и настроить структуру схемы:

Схема готова! С ее помощью при каждой записи товара мы будем проверять удовлетворяет ли записываемый элемент условиям отбора, заданных пользователем. Настройки отбора задает сам пользователь в режиме 1С:Предприятия, которые сохраняются в константе "НастройкиОтборов" с типом "ХранилищеЗначения". 

Для начала рассмотрим как изменится программный код обработчика подписки на событие "ПриЗаписи" справочника "Товары":

Процедура ПриЗаписиТоваровСобытиеПриЗаписи(Источник, Отказ) Экспорт

	// Таблица результатов проверки
	РезультатПроверки = Новый ТаблицаЗначений;

	Настройки = Константы.НастройкиОтборов.Получить().Получить();
	Если Настройки = Неопределено Тогда
		Возврат;
	КонецЕсли;

	// Устанавливаем отбор по текущему элементу
	ЭлементыОтбора = Настройки.Отбор.Элементы;
	ЭлементОтбора = ЭлементыОтбора.Добавить(Тип("ЭЛементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товар");
	ЭлементОтбора.ПравоЗначение = Источник.Ссылка;

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

	Если РезультатПроверки.Количеств() > 0 Тогда
	
		ПериодЗаписи = ТекущаяДатаСеанса();

		Набор = РегистрыСведений.ИзмененныеТовары.СоздатьНаборЗаписей();
		Набор.Отбор.Период.Установить(ПериодЗаписи);
		Набор.Отбор.Товар.Установить(Источник.Ссылка);
		
		Запись = Набор.Добавить();
		Запись.Период = ПериодЗаписи;		
		Запись.Товар = Источник.Ссылка;
		Запись.Ответственный = Пользователи.ТекущийПользователь();

		Набор.Записать();

	КонецЕсли;

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

Теперь проверку мы осуществляем не запросом, а получением данных через СКД. Условия выборки остались практически такими же, как и в первом предложенном варианте решения. Отбор устанавливается по ссылке на текущий элемент справочника "Товары", а также дополняется отборами, которые установил пользователь. Результат СКД выводится в таблицу значений. Если количество записей в ней больше 0, тогда текущий записываемый элемент справочника "Товары" удовлетворяет всем установленным отборам.

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

Пользовательские отборы хранятся в константе "НастройкиОтборов" в виде хранилища значения. Рассмотрим далее как эти настройки были настроены и установлены.

Особенности работы с компоновщиком настроек

Настройки хранятся в константе, поэтому и редактировать их будем в форме констант. Создадим основную форму констант и в качестве реквизита формы добавим компоновщик настроек компоновки данных.

Чтобы компоновщик работал правильно необходимо:

  1. Инициализировать его для соответствующей схемы компоновки данных.
  2. Загрузить предыдущие настройки, если они были сохранены ранее.
 
 История со времен версии 8.2

В результате, имеем почти готовое решение. Посмотрите на следующий листинг:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	СхемаКомпоновки = РегистрыСведений.ИзмененныеТовары.ПолучитьМакет("ПроверкаСхема");
	АдресСхемы = ПоместитьВоВременноеХранилище(СхемаКомпоновки, ЭтаФорма.УникальныйИдентификатор);

	Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
	Настройки = Константы.НастройкиОтборов.Получить().Получить();
	Если Настройки <> Неопределено Тогда
	
		Компоновщик.ЗагрузитьНастройки(Настройки);

	Иначе

		Компоновщик.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);

	КонецЕсли;

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

Инициализация компоновщика осуществляется при создании формы констант на сервере. В этом же обработчике мы получаем схему компоновки, помещаем ее во временное хранилище и на основе полученного адреса создаем источник доступных настроек компоновки.

Настройки компоновщика берем либо из константы, либо получаем стандартные из схемы компоновки, если ранее они не были сохранены. 

При записи констант в событии формы "ПриЗаписиНаСервере" выполняем сохранение настроек компоновщика в константу:

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	НастройкиХранилище = Новый ХранилищеЗначения(Компоновщик.ПолучитьНастройки());
	Константы.НастройкиОтборов.Установить(НастройкиХранилище);

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

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

Все проще чем кажется.

Вместо заключения

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

Подобный прием используется, например, в настройках обмена данными с сайтом на 1С:Битрикс в типовой конфигурации "Управление торговлей 11".

Кроме того, СКД используется и в таких механизмах платформы как динамически список. Вы же уже замечали схожесть настроек в отчетах и настройках списков? :)

В 1С:Документооборот по такому же принципу работают произвольные условия в бизнес-процессах, причем весьма эффективно (опять же зависит от того, кто эти условия настраивает). Настройки сегментов для партнеров также использует примерной такой же принцип.

Также очень часто можно увидеть обработки, в шапке которых имеются настройки СКД для установки отборов, а в основной области добавлена таблица значений. Последняя заполняется данными, с учетом этих отборов. Наверное, самая популярная обработка с таким механизмом работы - это "Универсальные подбор и обработка объектов" от Сергея Ожерельева.

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

В этом случае вроде бы ничего страшного. Но есть пару НО:

  1. Что, если таких проверочных условий и получения данных с помощью СКД будет не одно, а 100! Время уже значительно вырастет.
  2. А если пользователь поставит сложный отбор с несколькими "ИЛИ", "Содержит", "В группе", "Не равно" и т.д. Запрос может очень сильно измениться, а его время катастрофически увеличиться.

Таким образом, использование системы компоновки данных позволяет решать задачи не только по созданию различного рода отчетов, но и любые практические задачи, связанные с получением данных. Но нужно быть осторожным, ведь универсальность настроек создает риски для стабильности работы информационной системы.

Подходите к задачам рационально!

Другие ссылки

Особо отметить статьи по СКД от Дмитрия Иванова. Всем рекомендую:

139

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. leosoft 142 18.09.19 23:21 Сейчас в теме
Спасибо, очень полезная информация! Пишите еще :)
maxopik2; +1 Ответить
2. Жолтокнижниг 248 19.09.19 00:27 Сейчас в теме
(0) Идея описанная в статье правильная.

Но пример так себе
1. Использование СКД при часто выполняемых операция - просадка производительности
2. Предоставление пользователю очень гибкого инструмента - потеря контроля, неожиданное поведение и опять же вероятная просадка производительности.
ДимокШ; alexeyvs77; bulpi; zqzq; Irwin; YPermitin; +6 Ответить
6. VmvLer 19.09.19 09:26 Сейчас в теме
(2) согласен и с 1 и с 2.
YPermitin; +1 Ответить
8. YPermitin 5133 19.09.19 10:12 Сейчас в теме
(6) со всем согласен. Об этом даже в статье отметил. Подходить нужно разумно.
3. rpgshnik 1688 19.09.19 03:03 Сейчас в теме
Ещё можно концепты печатных форм мутить :) мне лично быстрее печатную форму накидать в СКД чем макет выравнивать, да она формироваться может подольше, но когда идёт внедрение удобно пока их оставить в таком состояние и позже сделать нормальную форму, которая к тому времени уже при терпит ряд множество. Именно для этих целей сделал макет - https://infostart.ru/public/1021869/ :)
molodoi1sneg; AllexSoft; FesenkoA; YPermitin; acanta; +5 Ответить
4. feva 294 19.09.19 07:43 Сейчас в теме
Идея не свежа, но материал представлен хорошо!
YPermitin; +1 Ответить
5. Darklight 19 19.09.19 09:06 Сейчас в теме
Конечно же СКД можно применять не только для отчетов и прочих интерфейсных выводов - вот только очень неудобно - в силу плохой проработки у СКД программного API и очень ограниченных возможностей "повторного использования кода". Ну, и тяжёлый движок плохо подходит там, где нужна высокая производительность - хотя тут есть разные способы выкрутиться - но все они через одно место.

Ранее для целей быстрой настройки запросов были такие объекты как "ПостроительОтчетов" и "ПостроительЗапросов". И сейчас они тоже никуда не делись. И интерактивные возможности у них есть - обычно их функционала вполне хватает для задач выборки данных, требующих гибкой настройки (в т.ч. интерактивной), когда не нужно настраивать хитрый макет вывода результатат, и временные таблицы они могут поддерживать, и источгики данных в них проще передавать, и на выходе можно получать обычный объект "Запрос", который потом ещё и кешировать можно. И с "повторным использованием кода" тут дела лучше обстоят (хотя тоже далеко не идеально). И программный API тут проще и удобнее.

Единственное - чего очень не хватает - это поддержки составных группировок (из нескольких полей) - вот это действительно большой недостаток. Ну и отборы тоже несколько менее гибкие (нет групп условий и условий "НЕ" и "ИЛИ"; нет вида сравнения "Заполнено"/Незаполнено очень удобного для полей составных типов).

Ну а вообще, моё мнение - СКД - может и мощный инструмент, но очень с плохим API, сложной настройкой, непригодностью для прямого использования пользователями и плохой поддержкой "повторного использования кода" - слово "компоновка" тут явно применено с большой натяжкой.

А для программного использования - лично я считаю, что нужно вообще принципиально иную схему выборки данных развивать - я её называю "Реквест концепт", может как-нибудь изложу в статье. Основная суть - это 4 этапа подготовки и 6 этапов обработки:
1. Описание комплексных источников данных - первичных таблиц для выборки (когда они отличны от таблиц метаданных)
2. Сбор реквестов - требований выборки - что, от куда и в каком виде нужно получить
3. Сбор блокировок - описаний условий наложения блокировок
4. Регистрация получаителей (обработчиков) - алгоритмов, которые будут построчно обрабатывать связанные с ними выборки из комбинации реквестов - требоания обработчиков (тут же указывается и конечный формат получения данных)

4. Комбинирование источников и реквестов (таблиц, условий и полей) - с формированием оптимальных запросов выборки данных и выборка данных (при этом, по возможности, все данные стараются выбираться в СУБД и храниться там во временных таблицах).
6. Осуществление выборки данных (в т.ч., по возможности, параллельной)
5. Наложение блокировок (могут быть отложены и выполнены после частичной выборки - когда зависят от данных выборки)
7. Инициализация обработчиков получателей
8. Построчная передача результатов выборок зарегистрированным получателям (в соответствии с их требованиями)
9. Финализация получателей

На первых 3-ъх этапах ещё могут быть заданы взаимные зависимости - когда одни источники/реквесты/получатели будут зависить от отработки других - и не могут быть получены независимо - приоритезация последовательности выполнения
YPermitin; +1 Ответить
7. karpik666 2717 19.09.19 09:30 Сейчас в теме
Как туториал по скд, может быть, однако реализация задачи ужасна, что мешает завести флажок в группе номенклатуры «вести историю изменения», и проверять родителя по нему и убрать вообще запрос «в иерархии»?
9. YPermitin 5133 19.09.19 10:14 Сейчас в теме
(7) за пример не бить, он примитивный. Все самое интересное в типовых. Объем публикации ограничен)
davdykin; +1 Ответить
10. Поручик 4330 19.09.19 13:34 Сейчас в теме
В нашей конфигурации программная генерация и выполнение СКД сплошь и рядом.
YPermitin; +1 Ответить
11. lmnlmn 53 19.09.19 14:21 Сейчас в теме
Освоив программную работу с СКД стал активно ее использовать вместо запросов для выборок данных. Вплоть до того что получаю через СКД данные в таблицу значений, обрабатываю и подсовываю в другую СКД для компоновки отчета. Надо бы обертки какие-то написать под типовые задачи типа установки параметров и отбров, но руки не доходят.
YPermitin; +1 Ответить
12. ids79 4098 19.09.19 19:00 Сейчас в теме
Спасибо, Юрий. Интересная тема. Можно также реализовать проверку реквизитов при записи документов используя СКД, да кучу всего.

На счет проблемы, которую Вы описываете в 8.2. В 8.3, на сколько я знаю, она тоже осталась. По моему даже где-то на ИТС написано, что использовать схему компоновки для инициализации настроек можно только при работе с обычной формой. Для управляемой формы - только через хранилище.

Отдельное спасибо за ссылки на мои статьи )).
YPermitin; +1 Ответить
13. Prince_1 4 20.09.19 11:01 Сейчас в теме
Интересная статья!
YPermitin; +1 Ответить
14. Nefilimus 59 20.09.19 15:31 Сейчас в теме
Спасибо за интересную статью. Зачерпал некоторую новую информацию =) Спасибо
YPermitin; +1 Ответить
15. igo1 221 20.09.19 20:22 Сейчас в теме
Доброго
тоже хотел написать статью с таким же смыслом, применил СКД для работы с билингом, 1 отчет, а проверки по все БД.
-проверка сумм
-вывод в отче
-проверка количества
-проверка сроков
-проверка расходов .....
YPermitin; +1 Ответить
17. YPermitin 5133 20.09.19 20:56 Сейчас в теме
(15) я думаю, что в любом случае можно статью написать.
ИС от этого только выйграет.
16. triviumfan 10 20.09.19 20:34 Сейчас в теме
Очередной баян, жаль нету баянометра. А сколько благодарностей ...я в шоке.
Yashazz; Alexx48; YPermitin; +3 Ответить
18. YPermitin 5133 20.09.19 20:56 Сейчас в теме
19. bulpi 157 20.09.19 22:57 Сейчас в теме
Как и все, что связано с СКД, очень сложно. Гора родит мышь - без использования СКД все получается гораздо проще.
YPermitin; +1 Ответить
20. DedMoroz1983 23.09.19 09:18 Сейчас в теме
Это вариант, будем пробовать.
YPermitin; +1 Ответить
21. Alexx48 23.09.19 09:46 Сейчас в теме
Почему бы в константу просто не добавить группу "Группа - 1" и не городить с СКД?
YPermitin; +1 Ответить
23. YPermitin 5133 23.09.19 17:53 Сейчас в теме
(21) посыл был в том, что условия могут меняться. А в простых случаях конечно можно и константой.
22. Yashazz 2855 23.09.19 17:50 Сейчас в теме
Идея, конечно, чудовищный баян и давно очевидна, но статья хороша - проста и понятна, для новичков, наверное, самое то. Времена сейчас такие на ИС - множество неофитов радостно плюсует очевидности и баяны, т.к. для них это всё откровение свыше)

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

Инициализация СКД действительно провальный момент с точки зрения производительности, хоть как её делай. Приходится кэшировать.
YPermitin; +1 Ответить
24. YPermitin 5133 23.09.19 18:10 Сейчас в теме
(22) думаю, что нужно порадоваться за тех, кто узнал что-то новое в статье :) Все мы когда-то были новичками, главное об этом не забывать.

Можно, конечно, писать все время хардкорные статьи про производительность, индексы, кластеризацию, интеграцию с .NET, компоненты на C++, как прикрутить Assembler к 1С и т.д. Но иногда и это надоедает :)
25. Yashazz 2855 23.09.19 18:12 Сейчас в теме
Когда я был новичком, не было ни ИС, ни подобных статей. И нам никто не помогал продираться через эти дебри. А теперь появляются "пионэры", которые пару таких статей прочитали, свет в глазах воссиял, и айда называть себя "программистами 1С" да требовать шестизначную зарплату... С одной стороны, это плохо, ибо роняет планку профессии ниже плинтуса, а с другой - хорошо, ибо за такими горе-спецами требуется починка и можно взять здорово дороже)
YPermitin; +1 Ответить
26. YPermitin 5133 23.09.19 18:36 Сейчас в теме
(25)
Когда я был новичком


Да, условия старта сейчас совсем другие. Но это не умиляет успехов разработчиков. которые сейчас начинают.
А горе-специалисты были всегда, вне зависимости от качества туториалов.

Зато во времена без инструкций всегда был простор для экспериментов :) Хотя, если сейчас захотеть, то тоже можно.
AllexSoft; +1 Ответить
27. Yashazz 2855 23.09.19 18:39 Сейчас в теме
(26)
если сейчас захотеть, то тоже можно

Естественно, только вот вопрос времени. Когда всё разжёвано и в рот положено - время сэкономлено, а когда мы осваивали ХДТО безо всяких примеров и руководств - времени ушло масса, и мне его никто не вернёт...
acanta; AllexSoft; YPermitin; +3 Ответить
28. YPermitin 5133 23.09.19 18:45 Сейчас в теме
(27) согласен. Но и времени за статьи мне никто не вернет. Это просто хобби! Как и все программирование.
30. Fruit83 28 27.09.19 16:56 Сейчас в теме
(27) Да, этот факт оправдывает ваше старческое брюзжание :)
29. AllexSoft 24.09.19 13:47 Сейчас в теме
Из нестандартного делал такую задачу на СКД, нужно было написать механизм обмена с внешней базой (по COM), причем таким образом что бы пользователь сам делал сопоставление объектов с произвольными условиями. Если конкретнее то из БП некоторые данные (например по амортизации) загружаются в управленку где бюджетирование, и должна быть группировка по группам статей с условиями и статьи затрат в БП и УУ не совпадают, то есть нужны правила сопоставления. Вот условия сопоставления статей были написаны на СКД, на пользовательских полях (их можно вычислять с произвольным условием) - одно пользовательское поле = одна группа статей.
Nefilimus; YPermitin; +2 Ответить
31. YPermitin 5133 27.09.19 16:57 Сейчас в теме
Оставьте свое сообщение

См. также

Немного про СКД. Характеристики и проверка пустого отчета 70

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пример использования характеристик в СКД и программная работа с ними. А также описание проверки результата отчета на заполненность.

10.10.2019    2276    YPermitin    7       

Полезняшки по СКД и построителям. Просто код 39

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Универсальные функции

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    2375    Yashazz    39       

Две схемы СКД в одном отчете с пользовательскими параметрами 15

Статья Программист Нет файла v8::СКД Россия Бесплатно (free) Практика программирования

Простая реализация разных по типу отчетов в одном. Применение нескольких схем компоновки с корректной передачей пользовательских параметров.

10.10.2019    1288    evgeni-red    6       

Три способа создания одного отчета на СКД 75

Статья Программист Нет файла v8 v8::СКД ERP2 УТ11 КА2 Бесплатно (free) Практика программирования

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

08.10.2019    3499    ids79    19       

СКД. Отчеты с картинками 176

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Работа с интерфейсом

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    4565    YPermitin    24       

Агрегатные функции СКД, о которых мало кто знает 318

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    9974    ids79    42       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 241

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    10357    ids79    24       

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 126

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

26.07.2019    9258    ids79    6       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 135

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования Разработка

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    8686    ids79    24       

Пользовательские настройки системы компоновки данных 85

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Работа с интерфейсом

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

09.07.2019    6200    ids79    0       

"Меньше копипаста!", или как Вася универсальную процедуру писал 170

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

04.07.2019    6211    SeiOkami    48       

Работа с настройками системы компоновки данных 98

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    9525    ids79    8       

Создание отчетов с помощью СКД - основные понятия и элементы 192

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    17399    ids79    16       

Не провоцируйте СКД, или пример "как не надо" 50

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Пример того, что не нужно использовать в запросах, чтобы не провоцировать СКД.

10.06.2019    7262    SeiOkami    90       

Еще один способ нестандартной расшифровки отчета. Без использования обработчиков формы. Для ленивых 90

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Лень+ СКД. Еще один нестандартный способ расшифровки отчета. Без использования обработчиков формы. Только макет компоновки и модуль отчета. Весь исходный текст в статье.

16.05.2019    5616    tusv    55       

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП 91

Статья Программист Нет файла v8 v8::УФ v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования Работа с интерфейсом Разработка

В данной статье рассмотрим механизм работы с расшифровкой отчета, созданного при помощи системы компоновки данных, в управляемом приложении. Показывать буду на примере реальной задачи. Условие: использовать имеющиеся в конфигурации механизмы БСП, с минимальными и "правильными" изменениями. Расшифровка должны быть двух видов на каждом поле: 1. Открывать ссылочный объект 2. Открывать новую форму с детализацией табличной части документа. Собственно ради второго пункта и писалась статья, в основном для себя, чтобы не забыть.

14.05.2019    7361    Viktor_Ermakov    6       

Разворачивание таблицы свойств и значений по колонкам через СКД 18

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

СКД! Юниоры 1С начинают паниковать, когда слышат эту аббревиатуру. Хороший пример, упрощающий жизнь начинающему разработчику, представлен ниже.

12.05.2019    3562    Eret1k    0       

Выгрузка документа по условию 5

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    4812    m-rv    2       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    7344    m-rv    16       

"Склеивание" отчетов на СКД 23

Статья Программист Нет файла v8::СКД Бесплатно (free) Практика программирования Разработка

Методика программного объединения данных нескольких отчетов в итоговый сводный. По ссылке опубликован пример на реальных данных и код отчета: https://infostart.ru/public/1017891/

10.03.2019    4536    bivmail    2       

Добавление отчетов в типовые конфигурации 1С 201

Статья Программист Нет файла v8::УФ v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем)

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

07.03.2019    23150    ids79    32       

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

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Разработка

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

17.02.2019    4132    srub    10       

Информирование пользователя. Работа с объектом «СообщениеПользователю» 249

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Практика программирования Разработка

Различные варианты и нюансы использования объекта СообщениеПользователю и другие способы информирования пользователя: без привязки к какой-либо форме и с выводом сообщения в отдельном окне.

15.02.2019    16918    ids79    34       

Вывод результата компоновки в таблицу и дерево значений 29

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

14.02.2019    4010    kasper076    5       

Схемы показателей. Объединение наборов СКД. Программное формирование отчета 12

Отчеты и формы Программист Архив с данными v8 v8::СКД 1cv8.cf Абонемент ($m) Инструментарий разработчика

Программное формирование отчета на СКД, наборы которых выбираются из справочника.

2 стартмани

11.02.2019    3340    4    MaxxiMiliSan    0       

Ещё раз о суммировании группировок в СКД 59

Статья Программист Нет файла v8 v8::СКД 1cv8.cf УУ Производство готовой продукции (работ, услуг) Бесплатно (free) Практика программирования Разработка

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

11.02.2019    6674    Dioneo    17       

Еще раз о расшифровке для СКД 22

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования

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

27.12.2018    4982    scientes    2       

Заголовок с параметром в отчете СКД 30

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования

Статья, как сделать заголовок с параметром в отчете СКД.

19.12.2018    5424    user913680    16       

Новый подход к обмену данными EnterpriseData 203

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    21390    ids79    72       

Установка собственных значений полей при программном выводе отчета СКД по имени поля (по принципу "как в макете") 15

Статья Программист Нет файла v8::СКД Бесплатно (free) Практика программирования

При программном выводе отчета на СКД возникает задача заполнить поля своими значениями. Но при поэлементном выводе отчета параметры "обезличены" как П1, П2, П3, ... Как узнать в какое "П" содержит нужное поле и куда устанавливать значение? Статья поможет программистам начинающим освоение СКД и перешедшим на СКД с "макета" ответить на эти вопросы на примере готового решения.

23.11.2018    4955    lmnlmn    0       

Дополнительные реквизиты в типовом отчете и их отсутствие 18

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пара Лайфхаков, случайно найденных, когда было лень запускать конфигуратор. Отбор при отсутствии дополнительного реквизита.

18.11.2018    4707    dyuha    0       

Программное заполнение пользовательских параметров и отборов СКД 135

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

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

13.11.2018    19588    Unk92    18       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 126

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    20812    ids79    40       

Перевод конфигурации на 8.3.13 17

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Россия Бесплатно (free) Практика программирования

Опыт решения проблем. 1. Проблема с СКД преобразованием запроса при отключении режима совместимости:

06.11.2018    5511    serferian    26       

Вспомогательные инструкции в коде 1С 104

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    20430    tormozit    100       

Приемы работы с СКД: делаем за 5 минут то, на что у других уйдет час 376

Статья Программист Нет файла v8::СКД Бесплатно (free) Практика программирования

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

03.09.2018    30994    SergeyN    26       

Как легко в СКД сделать переключатель: рубли, тыс. руб., млн. руб. 72

Статья Программист Нет файла v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

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

07.08.2018    8334    SayDimas    15       

Повышаем эффективность разработки правил обмена 123

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    19295    olegtymko    47       

Как сделать запрос на изменение данных 75

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Практика программирования

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    21163    m-rv    21       

О важности псевдонимов полей во временных таблицах и отборах на СКД для производительности 26

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования

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

29.05.2018    5823    tata_1211    17       

Строим графы средствами 1С (без GraphViz) 42

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    16946    slozhenikin_com    19