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

26.09.16

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

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

Скачать исходный код

Наименование Файл Версия Размер
Примеры к статье (8.3)
.erf 12,93Kb
114
.erf 12,93Kb 114 Скачать
Примеры к статье (8.1)
.erf 15,49Kb
10
.erf 15,49Kb 10 Скачать

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

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) 

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

См. также

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

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

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

10000 руб.

02.09.2020    130514    704    390    

755

Как посмотреть итоговый запрос в отчете СКД

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

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

15.05.2024    3421    implecs_team    6    

36

Генератор схемы компоновки данных (СКД), написание кода схемы программно

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

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

3 стартмани

05.02.2024    4826    36    obmailok    19    

74

Набор-объект для СКД по тексту или запросу

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

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

1 стартмани

31.01.2024    2310    2    Yashazz    0    

32

СКД на JavaScript в 1С

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

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

2 стартмани

11.12.2023    8846    20    John_d    25    

124

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

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

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

05.12.2023    5437    PROSTO-1C    13    

65

Модель СКД

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

DSL для работы с СКД.

1 стартмани

15.11.2023    6369    15    kalyaka    5    

89

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

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

18.09.2023    8294    accounting_cons    7    

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

Да и вообще все примеры хорошо сработают лишь на небольших объемах данных. Нужно использовать механизмы СКД. Для замены текста точно УО нужно.
13. json 3317 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 4735 05.09.16 19:57 Сейчас в теме
А автор знает про разные макеты для разных фрагментов данных СКД?
14. rus128 2 07.09.16 10:27 Сейчас в теме
Все хорошо, но огорчает опечатка в исходнике - название процедуры ОбъединтьЯчейкиВТабличномДокументе().
Или так было задумано? :-)
15. json 3317 07.09.16 10:41 Сейчас в теме
(14) rus128, спасибо за замечание.
Поправил в тексте статьи и в прилагаемом примере
16. stol6 49 07.09.16 10:58 Сейчас в теме
На какой версии платформы это все дело тестировалось?
17. json 3317 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 161 12.04.21 12:25 Сейчас в теме
Спасибо!!! Очень помогло.
25. Detache 21.07.21 14:38 Сейчас в теме
Спасибо, сократил время на переделку отчета с обычным макетом в СКД для рассылки отчетов.
Оставьте свое сообщение