Полезные процедуры по работе с СКД и табличными документами (часть 1)

Публикация № 546665 03.09.16

Приемы и методы разработки - СКД

СКД Объединение ячеек Процедуры Функции

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

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

1. Объединение, скрытие, замена

Пусть требуется получить отчет следующего вида


Этот отчет имеет несколько особенностей:
- Объединенные ячейки в шапке
 - Количество и состав колонок в группе “Бонусы” - динамические. Выводятся только, если заполнено хотя бы для одного сотрудника в отчете. Если, например, никто из попавших в отчет сотрудников не получил надбавку за сверхурочные, то этой колонки в отчете быть не должно. Проектов в группе “за проекты” может быть неограниченное количество.
- Дополнительные требования к порядку полей: колонка “Оклад” должна выводиться первой, “Всего по сотруднику” - последней

В консоли можно получить следующий результат


Далее приведены универсальные процедуры, с помощью которых можно:
1. Объединить ячейки “Бонусы” и “За проекты” в шапке отчета с помощью процедуры ОбъединтьЯчейкиВТабличномДокументе()
2. Скрыть заголовок ресурса “Сумма” с помощью процедуры СкрытьСтрокиВТабличномДокументе()

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

	ВывестиСКДВТабличныйДокумент(СхемаКомпоновкиДанных, ДокументРезультат, КомпоновщикНастроек);

	Маркер = "Бонусы";
	ОбъединитьЯчейкиВТабличномДокументе(ДокументРезультат, Маркер);

	Маркер = "За проекты";
	ОбъединитьЯчейкиВТабличномДокументе(ДокументРезультат, Маркер);

	Маркер = "Сумма";
	СкрытьСтрокиВТабличномДокументе(ДокументРезультат, Маркер);

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

Процедура ОбъединитьЯчейкиВТабличномДокументе(ТабличныйДокумент, МаркерОбъединения) Экспорт
	// Находит ячейки, содержащие в тексте МаркерОбъединения
	// Объединяет ячейки, располагающиеся рядом, содержащие одинаковый текст и маркер объединения 
	
	ОбъединяемыеЯчейки = НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(ТабличныйДокумент, МаркерОбъединения);
	ОбъединяемыеЯчейки.Колонки.Добавить("Диапазон");
	ОбъединяемыеЯчейки.Сортировать("Верх,Лево");
	
	Для Каждого Строка из ОбъединяемыеЯчейки Цикл
		Отбор = Новый Структура("Текст,Верх,Лево", Строка.Текст, Строка.Верх-1, Строка.Лево);
		НайденныеСтроки = ОбъединяемыеЯчейки.НайтиСтроки(Отбор);
		Если НайденныеСтроки.Количество() Тогда
			Строка.Диапазон = НайденныеСтроки[0].Диапазон;
			Строка.Диапазон.Низ = Макс(Строка.Диапазон.Низ, Строка.Верх);
			Продолжить;
		КонецЕсли;
		
		Отбор = Новый Структура("Текст,Верх,Лево", Строка.Текст, Строка.Верх, Строка.Лево-1);
		НайденныеСтроки = ОбъединяемыеЯчейки.НайтиСтроки(Отбор);
		Если НайденныеСтроки.Количество() Тогда
			Строка.Диапазон = НайденныеСтроки[0].Диапазон;
			Строка.Диапазон.Право = Макс(Строка.Диапазон.Право, Строка.Лево);
			Продолжить;
		КонецЕсли;
		
		Строка.Диапазон = Новый Структура("Текст,Верх,Лево,Низ,Право", Строка.Текст, Строка.Верх, Строка.Лево, Строка.Верх, Строка.Лево);
	КонецЦикла;
	
	ОбъединяемыеЯчейки.Свернуть("Диапазон");
	Для Каждого Строка Из ОбъединяемыеЯчейки Цикл
		Диапазон = Строка.Диапазон;
		Область = ТабличныйДокумент.Область(Диапазон.Верх, Диапазон.Лево, Диапазон.Низ, Диапазон.Право);
		Область.Объединить();
	КонецЦикла;
	
КонецПроцедуры

Процедура ЗаменитьТекстВТабличномДокументе(ТабличныйДокумент, ПодстрокаПоиска, ПодстрокаЗамены) Экспорт
	
	НайденныеОбласти = НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(ТабличныйДокумент, ПодстрокаПоиска);
	Для каждого Строка из НайденныеОбласти Цикл
		Строка.Область.Текст = СтрЗаменить(Строка.Область.Текст, ПодстрокаПоиска, ПодстрокаЗамены);
	КонецЦикла;
	
КонецПроцедуры

Процедура СкрытьСтрокиВТабличномДокументе(ТабличныйДокумент, МаркерУдаления) Экспорт
	
	НайденныеОбласти = НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(ТабличныйДокумент, МаркерУдаления);
	НайденныеОбласти.Свернуть("Верх");
	
	Для каждого Строка из НайденныеОбласти Цикл
		Область = ТабличныйДокумент.Область(Строка.Верх, , Строка.Верх, );
		Область.Видимость = Ложь;
	КонецЦикла;
	
КонецПроцедуры

Функция НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(ТабличныйДокумент, ПодстрокаПоиска) Экспорт
	
	НайденныеОбласти = Новый ТаблицаЗначений;
	НайденныеОбласти.Колонки.Добавить("Область");
	НайденныеОбласти.Колонки.Добавить("Текст");
	НайденныеОбласти.Колонки.Добавить("Верх");
	НайденныеОбласти.Колонки.Добавить("Лево");
	
	НайденнаяОбласть = ТабличныйДокумент.НайтиТекст(ПодстрокаПоиска);
	
	Пока НЕ НайденнаяОбласть = Неопределено Цикл
		
		НоваяСтрока = НайденныеОбласти.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяОбласть);
		НоваяСтрока.Область = НайденнаяОбласть;
		
		НайденнаяОбласть = ТабличныйДокумент.НайтиТекст(ПодстрокаПоиска, НайденнаяОбласть);
		
	КонецЦикла;
	
	Возврат НайденныеОбласти;
	
КонецФункции

2. Процедуры по выводу табличного документа

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

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

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

3. Вывод рядом двух независимых таблиц

Данная идея была взята с форума (отличный пример выложил ditp). Моя заслуга лишь в том, чтобы обернуть ее в функцию и незначительно оптимизировать.

Функция ПрисоединитьТабличныйДокументКТабличномуДокументу(ТабличныйДокументОсновной, ТабличныйДокументПрисоединяемый)
	// идея взята с форума: http://forum.infostart.ru/forum86/topic157420/message1610993/#message1610993
	ТабличныйДокументОбъединенный = Новый ТабличныйДокумент;
	
	Область = ТабличныйДокументОсновной.ПолучитьОбласть(1,1, ТабличныйДокументОсновной.ВысотаТаблицы, ТабличныйДокументОсновной.ШиринаТаблицы);
	
	ТабличныйДокументОбъединенный.Вывести(Область);
	ТабличныйДокументОбъединенный.Присоединить(ТабличныйДокументПрисоединяемый);
	
	Возврат ТабличныйДокументОбъединенный;
КонецФункции

4. Установка собственного формата для табличного документа

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

Процедура ЗадатьФорматСтрокВТабличномДокументе(пТабличныйДокумент)
	// задает индивидуальный формат строк для табличного документа, сохраняя ширину колонок при выводе его в другой табличный документ
	
	пТабличныйДокумент.Область(1,,пТабличныйДокумент.ВысотаТаблицы).СоздатьФорматСтрок();
	
КонецПроцедуры

Процедуры тестировались на платформе 8.3 в режиме совместимости с 8.2 и без режима совмместимости, а также на платформе 8.1.

К статье прилагаются внешние отчеты со сводным примером (запускается в любой конфигурации 8.2/8.3 на обычных или управляемых формах, также отчет на 8.1) 

Скачать файлы

Наименование Файл Версия Размер
Примеры к статье (8.3)

.erf 12,93Kb
101
.erf 12,93Kb 101 Скачать
Примеры к статье (8.1)

.erf 15,49Kb
9
.erf 15,49Kb 9 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4595 03.09.16 20:58 Сейчас в теме
Очнь хорошо. Пригодится для использования. Некоторые процедуры у меня тоже есть, с незначительными отличиями в реализации.
2. Makushimo 159 05.09.16 09:59 Сейчас в теме
3. Новиков 292 05.09.16 10:34 Сейчас в теме
4. LexSeIch 209 05.09.16 10:38 Сейчас в теме
Спасибо за статью. Информацию взял на заметку - уверен, что пригодится.
5. kser87 2276 05.09.16 10:42 Сейчас в теме
Почему вместо этого:

Маркер = "Бонусы";
	ОбъединтьЯчейкиВТабличномДокументе(ДокументРезультат, Маркер);


нельзя использовать Группы полей? А вместо скрытия сумм использовать макеты?

И еще наблюдение: на больших объемах данных это:

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Результат);
	
ПроцессорВывода.Вывести(ПроцессорКомпоновки);


Работает значительно медленнее, чем это:

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	ПроцессорВывода.УстановитьОбъект(ДеревоРезультат);
	
	ПроцессорВывода.НачатьВывод();
	
	ЭлементРезультат = ПроцессорКомпоновкиДанных.Следующий();
	
	Пока ЭлементРезультат <> Неопределено Цикл
		
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультат);
		ЭлементРезультат = ПроцессорКомпоновкиДанных.Следующий();
		
	КонецЦикла;
	
	ПроцессорВывода.ЗакончитьВывод();
Показать
dj_serega; zarucheisky; kuzyara; Yashazz; tehas; корум; Поручик; +7 Ответить
7. Yashazz 4411 05.09.16 19:48 Сейчас в теме
(5) kser87, эхма, почему... да потому что не умеют, видимо, иначе, как курочить готовый моксель. Даже Хрусталёва не впрок, ага.
8. json 05.09.16 19:55 Сейчас в теме
(5) kser87, благодарю за критику.
Со второй частью комментария соглашусь. Редко попадаются отчеты, в которых скорость вывода через конструкцию Вывести() не устраивает заказчика. Но когда попадется, обязательно проверю предложенный вами способ.

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

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

Прикрепленные файлы:
6. Yashazz 4411 05.09.16 19:45 Сейчас в теме
Практически всё - нелепый трюизм и лютый баян. Ламерски беспощадная работа с табличным документом, за которую вообще убивать надо. Не умеете работать с настройками СКД - нечего позориться. Ну и заимствования, да.
А восторгов-то... На целую кучу плюсов... Воистину, скоро "Hello world" будет вызывать восторги.
palsergeich; kuzyara; FirePyres; kser87; +4 10 Ответить
10. json 05.09.16 20:06 Сейчас в теме
(6) Yashazz, (7) Yashazz, в данной статье задачи упрощены для более наглядной демонстрации предлагаемых процедур. Поэтому некорректно делать вывод о сложности решаемых задач по сложности примеров, в которых описываются приемы для их решения.
11. json 05.09.16 22:40 Сейчас в теме
(6) Yashazz,
Не умеете работать с настройками СКД - нечего позориться.


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

Предполагается, что Склад, Товар и ВидТовара - это справочники. В них может быть любое количество элементов, количество и состав которых нам заранее неизвестны

Сколько из трех случаев Вы сможете реализовать стандартными средствами СКД?
Прикрепленные файлы:
ВнешнийОтчет1.erf
12. kser87 2276 06.09.16 00:03 Сейчас в теме
(11) смешные примеры) случаи 1 и 2. Вы про горизонтальные группировки не знаете что-ли?

Простой пример (вместо "Выбора" могут быть элементы справочника. Для наглядности так сделал)

Выбор когда Условие 1 тогда
"Мебель"
Когда Условие2 Тогда
"Продукты"
...
n вариантов

Конец как ГоризонтальнаяГруппировка

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

Случай 3 видимо не реализуем настройками СКД. Однако, следующее требование пользователя будет таким: выведите итог по виду товара. И куда вы его впихнете, позвольте узнать? От такого расположения группировок потому и отказались. Наиболее близкий вариант это поставить в параметре "Расположение полей группировок" значение "Отдельно и только в итогах".

Вообще когда вы корячите макеты СКД помните, что вы с вероятностью 99% что-нибудь сломаете. То есть не будут работать расшифровки, группировки и т.д. и т.п.

В вашем случае 1 недостаток сразу видно. В примере 1 можно вынести подразделение и сотрудника в отдельную группировку. Таблицу сделайте подчиненной сотруднику и в качестве группировки сделайте например Вид расчета. В таком случае, при количестве сотрудников от 1000 ваш отчет просто "умрет" на отрисовке макета. Будет формироваться минут 30, а вэб-морда тупо вылетит.

Да и вообще все примеры хорошо сработают лишь на небольших объемах данных. Нужно использовать механизмы СКД. Для замены текста точно УО нужно.
13. json 06.09.16 00:09 Сейчас в теме
(12) kser87, из описания неточно понятно, что именно вы имеете ввиду. К посту 11 приложен внешний отчет. Попробуйте реализовать вашу идею в этом отчете и выложить. Чтобы можно было увидеть, что вы смогли получить требуемый результат без костылей. Можно переставлять так, как считаете правильным. Главное получить ожидаемый результат в виде готового табличного документа.

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

Вообще когда вы корячите макеты СКД помните, что вы с вероятностью 99% что-нибудь сломаете. То есть не будут работать расшифровки, группировки и т.д. и т.п.

Вероятность вы взяли из головы. Расшифровки в шапке - дело редкое.

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

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


В таком случае, при количестве сотрудников от 1000 ваш отчет просто "умрет" на отрисовке макета. Будет формироваться минут 30, а вэб-морда тупо вылетит.

Снова ваше предположение. Вы не можете знать при каком количестве сотрудников она вылетит, т.к. вы не провели эксперимент. Почему вы решили, что 30 минут а не 30 часов? Какое значение имеет количество сотрудников [строк отчета], если обработка производится только в шапке отчета? Почему нельзя формировать табличный документ на сервере?

По поводу вывода в отчет большого количества данных - я спорить не буду. Вопрос в другом: как часто необходимо выводить в отчет большое количество данных? Как часто в этом случае нужно делать сложные группировки? Действительно ли нельзя оптимизировать мою схему при работе с большим количеством данных?
В моей практике таких отчетов наберется максимум 5%. И какая-то малая доля из них будет со сложными группировками. Поэтому ваш аргумент по поводу больших данных не отменяет применимости методов, описанных в данной статье.

Также хочу уточнить, т.к. может быть это не понятно из статьи. Данная публикация описывает приемы решения задач, которые нельзя сделать настройками СКД. В посте 11 я выложил такие задачи. Поэтому я ожидаю увидеть работающий пример, который доказывает, что описанные случаи все таки решаются настройками. Но пока я вижу, что Ваши высказывания, а также высказывания уважаемого Yashazz содержат больше предположений и эмоций, чем фактов
manu; fomix; eeeio; PowerBoy; dj_serega; headMade; uri1978; yku; Трактор; +9 Ответить
9. Yashazz 4411 05.09.16 19:57 Сейчас в теме
А автор знает про разные макеты для разных фрагментов данных СКД?
14. rus128 2 07.09.16 10:27 Сейчас в теме
Все хорошо, но огорчает опечатка в исходнике - название процедуры ОбъединтьЯчейкиВТабличномДокументе().
Или так было задумано? :-)
15. json 07.09.16 10:41 Сейчас в теме
(14) rus128, спасибо за замечание.
Поправил в тексте статьи и в прилагаемом примере
16. stol6 49 07.09.16 10:58 Сейчас в теме
На какой версии платформы это все дело тестировалось?
17. json 07.09.16 12:04 Сейчас в теме
(16) stol6, хороший вопрос.
Добавил эту информацию в конец статьи.
Одно замечание: описанные процедуры работают на платформе 8.1 без изменения, но т.к. в ней отсутствует обработчик ПриКомпоновкеРезультата(), а также есть еще пара нюансов, то незначительно изменил сводный пример для этой платформы
18. sudmorsh 57 07.09.16 17:42 Сейчас в теме
Спасибо за статью.Уверен, что пригодится.
19. Eriksson 09.09.16 22:12 Сейчас в теме
Как раз задумался о том, как бы реализовать на практике через СКД, пригодится! Спасибо!
20. lomanos 41 17.02.17 04:22 Сейчас в теме
21. mafia 46 27.09.17 23:51 Сейчас в теме
Гениально. Однозначно +5
22. 1C82 46 26.12.17 01:52 Сейчас в теме
23. web_profiler 15.02.19 11:09 Сейчас в теме
Помогите плиз. Третий час туплю
СКД два набора данных - запросы, второй вывожу как колонки дат и их суммы. Связь наборов по контрагенту и датам.
Хочу окультурить вывод дат и сверху над датами (как бы в шапке) написать "Даты ожидаемых платежей".
Че делать - уже всю голову сломал, и группы где угодно создавал (выводит название этой группы над КАЖДОЙ датой) и че только не делал.
Не получается окультурить отчет, помогите плиз
http://i.piccy.info/i9/5b3378e75c26f7bdd38e4e2af709e936/1550217474/11481/12­97933/khelp11.png

http://i.piccy.info/i9/3b1297de8ba10b23160a9e99bdddcef2/1550217609/34019/12­97933/khelp12.png
24. Matveev_VS 149 12.04.21 12:25 Сейчас в теме
Спасибо!!! Очень помогло.
25. Detache 21.07.21 14:38 Сейчас в теме
Спасибо, сократил время на переделку отчета с обычным макетом в СКД для рассылки отчетов.
Оставьте свое сообщение

См. также

Шаблон отчета на СКД (обычные формы) Промо

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

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

2 стартмани

14.02.2022    4261    13    Eugen-S    3    

СКД: вывод времени в формате день, час, минута, секунда

СКД Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Готовый пример вывода времени в формате хх д хх ч хх м хх средствами СКД.

1 стартмани

01.12.2022    495    0    lagutiniv    2    

Еще один вариант отчета Статистика по документам

Статистика базы данных СКД Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

14.10.2022    905    1    scientes    0    

Добавление нумерации колонок СКД одной процедурой

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

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

1 стартмани

16.06.2022    1702    0    user700035_6550355    3    

СКД. Использование встроенного макета, разделителя страниц Промо

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

31.03.2017    21870    26    Vin_Tik    0    

Таблица умножения, деления на СКД, управляемые формы (пример тестового задания)

Подготовка к аттестации СКД Платформа 1С v8.3 Абонемент ($m)

Пример тестового задания и его реализации. Протестировано на версии платформы 8.3.18.1289.

1 стартмани

30.05.2022    2467    7    Johnson1987    13    

Вывод изображений штрихкодов на СКД

СКД Система компоновки данных 8.3.14 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

27.04.2022    1829    7    SergeyPZU    5    

Отборы СКД на форме УФ

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

Создание отборов из СКД для таблиц значений.

1 стартмани

22.04.2022    3445    4    Chinga050    4    

Редактирование данных прямо в отчете СКД (как в Excel). Теперь с пересчетом итогов! Промо

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Вам не подходит обычная форма ввода данных Клиент хочет прямо в отчете изменять цифры Тогда этот шаблон поможет вам быстро добавить в ваш отчет СКД механизм редактирования данных

2 стартмани

21.11.2012    51500    672    Visitizer    52    

Редактирование данных в ячейках СКД (простая реализация)

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

На примере справочника "Номенклатура" рассмотрим, как в отчёте можно редактировать его реквизиты, и изменения мгновенно будут записываться в элемент справочника.

1 стартмани

11.03.2022    5540    6    Flashill    19    

Срез последних N записей, пример на СКД

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

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

1 стартмани

09.03.2022    2891    3    user-z99999    9    

Расчет нарастающего итога, дельты и другие варианты в СКД

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

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

1 стартмани

07.02.2022    2857    4    user-z99999    0    

Авторегистрация обработок заполнения табличных частей и внешних печатных форм в информационной базе + Видео-пример использования шаблона - создание внешней печатной формы самостоятельно + Универсальный отчет СКД (набор отчетов в одном с группировками уров Промо

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

Если Вы станете использовать в Ваших разработках нижеприведенную методику, тогда Вам больше никогда не придется тратить свое время на объяснение пользователю, КАК ему зарегистрировать Вашу разработку в базе (пользователю достаточно только открыть её или перетащить драг-энд-дропом в 1С:Предприятие). И вообще, на мой взгляд данная методика является примером хорошего тона отношений разработчик-клиент

1 стартмани

03.03.2010    37734    443    Borisych    25    

Отчет "Документы "Реализации" на каждый день" когда была реализация

СКД Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

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

1 стартмани

27.08.2021    2457    0    Shvapsss    2    

Программное формирование отчетов в БП 3.0 на примере оборотно-сальдовой ведомости по счету

Адаптация типовых решений СКД Платформа 1С v8.3 Бухгалтерский учет Система компоновки данных 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Порой возникает задача получить программно результат отчета на основе СКД в виде табличного документа. В данной статье будет описан один из вариантов реализации данной задачи.

1 стартмани

14.07.2021    6480    28    arman1997    1    

Отчет по расписаниям (пример)

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

Пример построения отчета по нескольким расписаниям.

1 стартмани

18.05.2021    6564    0    echo77    4    

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

СКД Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

16.09.2011    73205    741    WaterSmith    80    

Отчет с настройкой роли поля СКД со свойством период

СКД Платформа 1С v8.3 Система компоновки данных Платформа 1C v8.2 Конфигурации 1cv8 Управленческий учет Абонемент ($m)

Отчёт демонстрирует правильную настройку роли СКД со свойством «Период», по которой рассчитывается остаток. Этот отчет тестировался на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Может работать на любой конфигурации, если имеется регистр накопления «ТоварыНаСкладах».

2 стартмани

01.04.2021    5149    4    softmaker    0    

Примеры использования функций СКД Массив (Array) и СоединитьСтроки (JoinStrings) в отчётах 1С 8

СКД Система компоновки данных Платформа 1C v8.2 Конфигурации 1cv8 Казахстан Бухгалтерский учет Абонемент ($m)

Здесь приведено два отчёта, в которых использованы функции СКД Массив (Array) и СоединитьСтроки (JoinStrings). Отчет по ГТД и отчет по продаже номенклатуры, оба тестировались на конфигурации Управление торговым предприятием (УТП) для Казахстана, редакции 2.0.19.2. Также добавлена электронная книга, в которой собраны знания по основам СКД, которые я получил, во время работы и изучения системы компоновки данных.

5 стартмани

15.03.2021    11600    38    softmaker    0    

Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим

СКД Управляемые формы Система компоновки данных 8.3.14 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

08.02.2021    7474    4    denmon88    1    

Повторение шапки отчета в начале каждого листа при печати (СКД) + вывод колонтитулов. Промо

СКД Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

21.08.2012    65125    351    nalivai-chai    30    

Простой пример отчета на СКД. Программное формирование, расшифровка, работа с параметрами и отборами

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

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

1 стартмани

15.10.2020    10030    12    Stivens    10    

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

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

05.07.2020    10964    8    Алексей Воробьев    16    

Шаблон СКД (Универсальный отчет) Промо

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

Может кому понадобится. Нигде не нашел. Шаблон СКД (Универсальный отчет).

1 стартмани

11.05.2012    16367    274    tivanitsky    8    

Задачка: Список всех документов за заданный период, используя СКД

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

Вывести все документы за заданный период, используя СКД.

2 стартмани

11.03.2020    9002    22    MaxxiMiliSan    11    

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

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

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

1 стартмани

04.02.2020    7202    1    KawaNoNeko    2    

Проверка несуществующих полей в настройках СКД

СКД Платформа 1С v8.3 Система компоновки данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Обработка находит все поля настроек СКД, которые утратили свою актуальность Подходит для УТ 11, ERP, КА 2.

1 стартмани

20.06.2019    9187    4    MuI_I_Ika    2    

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

СКД Платформа 1С v8.3 Система компоновки данных 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 1С:Управление торговлей 10 1С:Бухгалтерия 1.6 Абонемент ($m)

Модуль, обеспечивающий хранение настроек отчетов на СКД в типовом регистре "Сохраненные настройки", присутствующем в конфигурациях УПП 1.2, 1.3, УТ 10.3, БП 2.0 и т.д.

1 стартмани

12.01.2019    10786    3    lunjio    0    

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

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

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

1 стартмани

12.11.2018    47581    11    evgen7938    4    

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

СКД Платформа 1С v8.3 Управляемые формы Система компоновки данных Абонемент ($m)

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

1 стартмани

12.08.2018    10475    30    MaxStrelok    0    

Полезные примеры составления схемы компоновки данных #2

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

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    50150    12    SITR-utyos    13    

Альтернатива ОтборуСтрок() с возможностями условий отборов СКД

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

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

1 стартмани

04.02.2018    11106    12    mszsuz    5    

Расшифровка табличного документа без расширения отчета

СКД Управляемые формы Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

Быстрая расшифровка в табличном документе вне формы отчета

1 стартмани

29.05.2017    14102    8    smirnov.es    2    

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

Внешние источники данных СКД Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

14.02.2017    31136    47    pbazeliuk    33    

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

СКД Управляемые формы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

14.12.2016    15550    2    igel9780    2    

Полезные процедуры по работе с СКД и табличными документами (часть 2)

СКД Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

Еще несколько универсальных процедур

1 стартмани

27.09.2016    40310    38    json    19    

Расшифровки при программном формировании отчета на СКД

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

Что делать, если не работают расшифровки при программном формировании отчета на СКД? Ответ ниже.

1 стартмани

11.08.2016    37584    25    kotlovD    14    

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

СКД Управляемые формы Система компоновки данных Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

05.08.2016    48736    28    klinval    41    

Сформировать дерево спецификаций быстро

СКД Платформа 1С v8.3 Система компоновки данных 1С:Управление производственным предприятием Абонемент ($m)

Обработка строит дерево состава изделия (структура изделия) с помощью СКД.

5 стартмани

30.07.2016    20490    46    SITR-utyos    8    

Разработка отчета СКД с использованием заглушек наборов данных

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

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

1 стартмани

25.06.2016    21692    10    json    15    

Штамп времени в отчете, написанном с использованием СКД

СКД Платформа 1С v8.3 Абонемент ($m)

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

2 стартмани

25.05.2016    14424    0    wowik    7    

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

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

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

1 стартмани

19.10.2015    77923    35    qapex    13    

Регламентное выполнение внешних обработок с параметрами (при помощи СКД) без изменения конфигурации (на примере УТ 11)

СКД Оперативный учет Система компоновки данных 1С:Управление торговлей 11 Абонемент ($m)

Что, если нужно по расписанию делать что-то, зависящее от кучи параметров? Например, формировать индивидуальные прайсы и отправлять их (или сохранять на ftp), предварительно записав в excel. Технология будет полезна тем, кто уже имеет готовую сложную обработку, которую нужно заставить выполняться по расписанию.

1 стартмани

08.10.2015    24794    10    Ibrogim    19    

1С 8. Часть 2 - Управляемые формы. СКД: смена типа «набор данных – запрос» на «набор данных – объект» с сохранением полей

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

Продолжение публикации "1С 8. СКД: смена типа «набор данных – запрос» на «набор данных – объект» с сохранением полей" http://infostart.ru/public/405762/ . Теперь напишем обработку под управляемые формы. Мы узнаем как в управляемой форме (под тонкий-клиент и web-клиент) реализовать: Открытие диалога выбора файла с выделением в асинхронную процедуру; Открытие диалога сохранения файла с выделением в асинхронную процедуру; Передача файла с клиента на сервер; Заполнение дерева значений (оперирование с ДанныеФормыДерево, ДанныеФормыКоллекцияЭлементовДерева, ДанныеФормыЭлементДерева); Передача файла с сервера на клиент.

1 стартмани

08.10.2015    17199    4    Luchik    3