По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета

Публикация № 1624471 22.03.22

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

Отчет СКД Макет ПроцессорКомпоновки ПроцессорВывода ЭлементРезультата Расшифровка ДанныеРасшифровки ПриКомпоновкеРезультата

Как скрестить формирование отчетных данных с помощью СКД и вывод в табличный документ с помощью Макет.ПолучитьОбласть(...) и ТабДок.Вывести(Секция)? А также сделать этот процесс простым и удобным? Об этом в статье ниже.

 

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

Очень Важный Заказчик (ОВЗ) поставил задачу: сделать отчет по начислениям и удержаниям сотрудников с группировками по организациям и подразделениям в разрезе кварталов.

Отчет должен быть реализован на основе вот такого регистра:

 

 

Что может быть проще? Создаем схему компоновки:

 

        

 

и с чувством выполненного долга показываем результат ОВЗ:

 

 

Но к нашему удивлению...

ОВЗ: Что это за $&^*%$% ?!. У меня раньше стояла 7.7, и там мои программисты за полчаса-час сделали такую форму:

 

 

ОВЗ: нужна такая же.

Мы: но у нас СКД - современный стандарт построения отчетов нового поколения...

ОВЗ: Да? почему же получилась такая $&^*%$% ? 

Мы: Ну как же, смотрите - вот отборы, вот структура, варианты и даже условное оформление!

ОВЗ: $#%!   *&$%!   &*$!

ОВЗ: На %#& мне все это надо?

ОВЗ: Мне надо завтра на стол Генеральному положить отчет, а ваш даже на страницу не помещается!

ОВЗ: Так, сроку вам до вечера. Напомнить, сколько мы вам платим? Все, свободны.

 

Итак, получив такой мотивирующий пинок импульс, команда приступила к работе.

Тимлид: какие у нас есть варианты?

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

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

Разработчик2: Можно результат компоновки выгрузить в ТЗ или в ДЗ, и потом вывести в документ.

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

Оставим эту команду, и посмотрим, какие у нас есть вообще способы кастомизировать отчеты?

 

Способы кастомизации отчетов:

  • Можно посмотреть в сторону макетов полей и группировок СКД. При их использовании может потребоваться ввести новые элементы в структуру отчета или добавить в набор данных дополнительные строки (изменив текст запроса) или дополнительные поля, например для итогов, а также сделать дополнительные настройки для каждого элемента структуры. Примеры.
  • Можно выполнить постобработку полученного табличного документа - в цикле перебрать строки/ячейки, при необходимости их добавить/удалить/объединить/оформить. 
  • Можно на лету менять макеты в объекте МакетКомпоновкиДанных или ЭлементРезультатаКомпоновкиДанных. Очень хорошо такой подход раскрыт в этой статье.
  • Можно применять комбинацию этих способов.

Но есть и другой путь

Как у нас обычно происходит программное формирование отчета?

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

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

	// 1 вариант
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	// 2 вариант
	ПроцессорВывода.НачатьВывод();	
	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	Пока ЭлементРезультата <> Неопределено  Цикл
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
		ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	КонецЦикла; 
	ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры

И вот во втором варианте, внутри цикла вывода элемента результата компоновки, мы можем использовать не стандартный вывод через ПроцессорВывода, а старый добрый вывод в табличный документ на основе макета с именованными секциями.

	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	Пока ЭлементРезультата <> Неопределено  Цикл
		
		Секция = МакетОтчета.ПолучитьОбласть(ИмяСекции);
		Секция.Параметры.Заполнить(ЗначенияПараметров);	
		// 1
		ДокументРезультат.Вывести(Секция);
		// или 2
		ДокументРезультат.Присоединить(Секция);

		ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	КонецЦикла; 

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

Чем нам здесь может помочь ЭлементРезультата?

 

 

Макет содержит внутреннее имя макета, выводимого в табличный документ, с его помощью мы можем определить ту часть отчета, которая в данный момент выводится. ПроцентВывода нас пока не интересует, а ТипЭлемента и РасположениеВложенныхЭлементов пригодятся - с их помощью определим, надо ли секцию выводить с новой строки, или же присоединить к текущей. ЗначенияПараметров, как несложно догадаться, содержит коллекцию параметров для вывода элемента отчета:

 

 

В нашем случае "П1" - сумма по конкретному сотруднику за определенный период, "П2" - ИдентификаторРасшифровкиКомпоновкиДанных.

Код при этом может выглядеть примерно так:

Если ЭлементРезультата.Макет = "Макет38" Тогда			
	Секция = МакетОтчета.ПолучитьОбласть("Сотрудник|Период");
	Секция.Параметры.Сумма = ЗначениеПараметра(ЭлементРезультата, "П1");	
	Секция.Параметры.Расшифровка = ЗначениеПараметра(ЭлементРезультата, "П2");	
	ДокументРезультат.Присоединить(Секция);
КонецЕсли; 

где функция ЗначениеПараметра:

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

Чтобы не делать каскад условий для проверки имен макета, можно заранее определить список соответствий имен макетов СКД ("Макет38") и имен секций макета отчета ("Сотрудник|Период"). Заодно там же можно указать и признак вывода с новой строки. А чтобы не прописывать установку отдельных параметров секции макета, можно эти параметры заполнять из заранее созданной структуры (конечно же в этом случае параметры секций макета должны называться "П1", "П2" и т.д.).

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

 

 

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

Значения расшифровки

При работе со значениями параметров макета компоновки данных выясняется одна неожиданная, но вполне объяснимая особенность. Если со значениями примитивных типов все нормально, то данные ссылочных типов хранятся в виде представления:

 

 

 

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

Сотрудник = ЗначениеРасшифровки(ДанныеРасшифровки, ЭлементРезультата, "П2", "Сотрудник");

Функция ЗначениеРасшифровки(ДанныеРасшифровки, ЭлементРезультата, ИмяПараметра, ИмяПараметраРасшифровки)
	Результат = Неопределено;	
	Параметр = ЭлементРезультата.ЗначенияПараметров.Найти(ИмяПараметра);
	Если ТипЗнч(Параметр) = Тип("ЗначениеПараметраМакетаКомпоновкиДанных")  Тогда
		Идентификатор = Параметр.Значение;		
		Если ТипЗнч(Идентификатор) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных")  Тогда
			ЭлементРасшифровки = ДанныеРасшифровки.Элементы.Получить(Идентификатор);
			Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля")  Тогда
				Поля = ЭлементРасшифровки.ПолучитьПоля();
				Значение = Поля.Найти(ИмяПараметраРасшифровки);
				Если ТипЗнч(Значение) = Тип("ЗначениеПоляРасшифровкиКомпоновкиДанных")  Тогда
					Результат = Значение.Значение;
				КонецЕсли; 
			КонецЕсли; 
		КонецЕсли; 
	КонецЕсли; 	
	Возврат Результат;
КонецФункции 

Условное оформление

А как у нас обстоят дела с условным оформлением? Элементы условного оформления, например ЦветФона (при их наличии конечно же), тоже имеются в составе ЭлементРезультата.ЗначенияПараметров, откуда их можно извлечь и применить к оформлению ячейки.

 

 

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

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

 

Ячейка = ПолучитьЯчейкуОбласти(ДокументРезультатДляУО, 3, 2, 1, 1);
Секция.Область().ЦветФона = Ячейка.ЦветФона;

Функция ПолучитьЯчейкуОбласти(Таблица, ВысотаМакета, ШиринаМакета, СтрокаЯчейки, КолонкаЯчейки)
	Результат = Неопределено;
	Если Таблица.ВысотаТаблицы > 0 Тогда
		Область = Таблица.ПолучитьОбласть(Таблица.ВысотаТаблицы - ВысотаМакета + 1,, Таблица.ВысотаТаблицы);
		Результат = Область.Область(СтрокаЯчейки, Область.ШиринаТаблицы - ШиринаМакета + КолонкаЯчейки);					
	КонецЕсли; 
	Возврат Результат;
КонецФункции 

Обработка расшифровки в модуле формы

Что мы еще упустили? Очевидно, что наш отчет настроен под определенную структуру. А пользователь при работе с отчетом вполне может "расшифровать" ячейку и получить непредсказуемый результат. Надо бы лишить его этой возможности.

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

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

Инструмент анализа процесса компоновки

Вроде бы мы рассмотрели все аспекты, кроме одного: а как нам получить соответствие имен макетов СКД  и имен секций нашего макета отчета?

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

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

 

 

Для облегчения этого процесса в обработке предусмотрен вывод списка макетов и их параметров:

 

 

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

 

 

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

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

 

 

Подведем итоги

Рассмотренный способ обладает целым рядом преимуществ:

  • Максимальное соответствие внешнего вида шаблона и полученной формы отчета, WYSIWYG - наше всё! И даже можно устанавливать ширину колонок и она будет такой же в отчете!)).
  • Относительно небольшой объем кода, его простота, концентрация кода в одном месте (в отличие от настроек СКД, разбросанных по разным разделам)
  • Возможность пошаговой отладки.
  • Четкое разделение "зон ответственности" - вот здесь мы получаем некоторый объем данных, а вот здесь - выводим данные в отчет. (Добавление в запрос генерации названий колонок - зло!).
  • Полный контроль за выводом отдельных ячеек отчета - легко реализовать вывод разных секций в зависимости от выводимых данных (например, для контрагентов - юр.лиц выводим одну секцию, для физ.лиц - другую). Некоторые строки можно вообще пропускать (вспомним про знаменитую проблему вывода иерархического справочника).
  • Объединение произвольной группы ячеек, как горизонтальное, так и вертикальное - так же, как в примере отчета в статье. 
  • Возможность проведения расчетов, которые нельзя провести с помощью языка запросов и выражений СКД.
  • Возможность реализации нестандартного условного оформления, например, которое зависит не только от данных строки.
  • Простой и логичный способ получения данных накопления - нарастающий итог, иерархическая нумерация, разница текущего значения с последним из непустых предыдущих.
  • Такой же простой способ вывести картинки строк или другие внедренные в табличный документ объекты, например, диаграммы.
  • Возможность использовать ПроверитьВывод() и ПроверитьПрисоединение(), например для расчета итогов по странице при переменной высоте строк отчета (привет, товарная накладная!).
  • Вывод отчета в несколько "колонок". Пример из жизни: прайс-лист компьютерной фирмы: материнские платы выводятся одной таблицей на всю ширину страницы, память - двумя (по половине ширины страницы), манипуляторы - тремя.
  • Возможность использовать свою расшифровку произвольного вида - хоть ссылки, хоть структуру, хоть текст с подсказкой. Также можно убрать расшифровку из тех ячеек, где она не нужна.
  • Возможность использовать свою систему групп строк и колонок, определять свой список свернутых групп при открытии отчета

Конечно же есть и недостатки (я насчитал аж 3: один весомый и два малозначимых):

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

Методика, описанная в статье, была протестирована на платформе 8.3.18.1363.

На этом все. Как обычно приветствуются замечания / дополнения / комментарии.

К публикации приложены файлы: внешняя обработка - АнализПроцессаКомпоновки.epf  и архив с этой обработкой и выгрузкой информационной базы с рассмотренным в статье примером.

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

Наименование Файл Версия Размер
АнализПроцессаКомпоновки

.epf 16,81Kb
8
.epf 16,81Kb 8 Скачать
Пример

.zip 517,01Kb
12
.zip 517,01Kb 12 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 22.03.22 17:57 Сейчас в теме
Но ведь многие отчеты ЗУП так и работают: Расчетный листок, 54 и т.д.
2. Alxby 938 23.03.22 11:26 Сейчас в теме
(1)Признаться, я с ЗУПом работал еще до "эпохи СКД", так что вполне возможно. Хотя мне кажется, что там несколько другой подход.
3. RustIG 1652 31.03.22 12:31 Сейчас в теме
(0) отличная статья! Спасибо!
Что мы еще упустили? Очевидно, что наш отчет настроен под определенную структуру. А пользователь при работе с отчетом вполне может "расшифровать" ячейку и получить непредсказуемый результат. Надо бы лишить его этой возможности.

Для анализа и работы с отчетом - пользователю делаете стандартный СКД-шный отчет без выкрутасов.
Для печати красивого отчета на стол генерального используете жесткую структуру без расшифровок.
Вуаля!
5. Alxby 938 31.03.22 15:59 Сейчас в теме
(3)Именно так!
Появление СКД отнюдь не делает другие методы устаревшими. Даже ПостроительЗапроса и ПостроительОтчета имеет свою область применения. А кто сейчас помнит про СводнаяТаблица и СводнаяДиаграмма?
tormozit; +1 Ответить
4. RustIG 1652 31.03.22 12:34 Сейчас в теме
(0)
Самый главный недостаток - "заточенность" под конкретную структуру отчета. Хотя недостатком это является весьма условно - есть много отчетов, для которых менять структуру пользователям просто не нужно.

Пора уже перестать чувствовать себя виноватым в том, что не все отчеты строятся на СКД, и всякий раз оправдываться, что есть недостаток ....
Сделали бы через вывод в ТабДок с заданным макетом - без всяких привязок ячеек и параметров для использования расшифровок...
1с-ники порой усложняют на пустом месте....
mevgenym; ixijixi; +2 Ответить
6. Alxby 938 31.03.22 16:03 Сейчас в теме
(4)
Сделали бы через вывод в ТабДок с заданным макетом - без всяких привязок ячеек и параметров для использования расшифровок...
1с-ники порой усложняют на пустом месте....

Вот здесь не согласен. СКД-шная система расшифровок довольно удобна. Я специально в примере отчета в статье рассмотрел оба варианта - со стандартной расшифровкой СКД и произвольной расшифровкой. Лучше предоставить разработчику возможность выбора в зависимости от задачи.
7. tormozit 6797 01.03.23 08:56 Сейчас в теме
Для удобного исследования макета компоновки в ИР есть это https://www.hostedredmine.com/issues/957660
8. Alxby 938 01.03.23 09:00 Сейчас в теме
Оставьте свое сообщение

См. также

Выборочная свертка группировок для СКД

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

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

1 стартмани

16.01.2023    1174    schthaxe    3    

26

[После] Новогодние задачи 2023

Математика и алгоритмы О жизни Бесплатно (free)

Не желаете ли очередную порцию интересных задач?

03.01.2023    1153    Alxby    18    

4

Если хочется низко-низкоуровневого программирования с битами и байтами

Математика и алгоритмы Платформа 1С v8.3 Абонемент ($m)

Все знают, что подавляющее большинство современных компьютеров работает в двоичном коде, т.е. оперирует всего двумя значениями - битами - "0" и "1". Потом из них складываются байты, слова, кило-, мега- и гигабайты etc. Но что происходит внутри процессора, как именно обрабатываются двоичные числа, например выполняются арифметические операции? Об этом — в публикации. Статья, я думаю, будет особенно интересна тем читателям, у которых во время обучения не было соответствующих курсов.

1 стартмани

01.12.2022    736    Alxby    16    

9

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

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

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

1 стартмани

20.09.2022    2883    Alxby    9    

45

Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД

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

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

1 стартмани

20.04.2022    4334    eugene-p    8    

27

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Доработка типового отчета на СКД с помощью расширения

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

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

1 стартмани

09.01.2022    7737    Spacer    9    

26

Как я с отчетом СКД боролся (произвольный макет)!

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

Здравствуйте. Необходимо сделать было отчет, который при кнопке сформировать заполняется автоматически! При этом форма определенная (использовал произвольный макет), сделал на основании отчета "Расчетсреднегодовой...", где источником данных является внешний набор (набор данных - объект), а мне по мимо этого нужно было еще кучу всего! Статью в первую очередь пишу для себя (чтобы не забыть), но может еще кому пригодится! (БГУ 2.0.82.11, платформа 8.3.18.1483).

1 стартмани

08.12.2021    1065    VID1234    2    

0

Динамическая расшифровка СКД (на примере отчета)

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

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

1 стартмани

08.12.2020    3299    mr_sav    3    

22

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

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

Довольно часто на различных тематических форумах задается вопрос, можно ли использовать в отчете/обработке несколько схем компоновки данных, подменяя одну другой по мере надобности? При этом желательно, чтобы и пользовательские настройки при смене схемы менялись соответственно.

1 стартмани

07.12.2020    10613    user1502278    23    

54

Программная корректировка при выводе отчета СКД

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

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

1 стартмани

08.10.2020    23016    dabu-dabu    18    

226

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Строка по шаблону с помощью СКД

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

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

1 стартмани

28.08.2020    1577    Keyman    2    

3

СКД: штрихкоды в несколько колонок

СКД Система компоновки данных 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

СКД. Ресурсы в несколько колонок, на примере РС Штрихкоды номенклатуры.

1 стартмани

02.03.2020    3681    shetill    3    

12

Многоуровневая нумерация в отчете СКД (программный вывод)

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

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

1 стартмани

01.07.2019    8518    lmnlmn    7    

43

Простые примеры сложных отчетов на СКД

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

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

1 стартмани

12.06.2019    43340    Hatson    32    

336

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Вывод вариантов СКД в таблицы на управляемой форме

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

Задача стояла такая: есть 2 различных запроса, результаты которых выгружаются на форму обработки в таблицы значений (далее ТЗ) и программно "соприкасаются" между собой определенным образом (как именно- в рамках данной статьи неважно). Нюанс в том, что запросы должны иметь свой компоновщик настроек и могут интерактивно на форме изменяться пользователем. На оригинальность публикации не претендую - изначально в рамках поставленной задачи пытался найти что-то подобное (уже готовый шаблон) на инфостарте, возможно "плохо искал" ;)

05.04.2019    15232    artkor    1    

29

Пример использования СКД и данных расшифровки на мобильной платформе

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

СКД в мобильном приложении и меню действий на основе данных расшифровки (отчет, совместимый с мобильной платформой 8.3.13.45).

1 стартмани

12.03.2019    6884    majoram    0    

11

Сквозной рейтинг по иерархии в отчете на СКД

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

Сквозная нумерация (рейтинг) по группам и элементам справочника в отчете СКД согласно убыванию количества/суммы и т.д.

1 стартмани

07.02.2019    6355    MaxxiMiliSan    2    

7

Особенность встроенной функции Представление() в СКД [поход на грабли]

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

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

1 стартмани

15.01.2019    15297    Dementor    6    

15

СКД. Сортировка

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

Показана реализация сортировки по двойному щелчку на заголовке колонки отчета и отображение направления сортировки в заголовках колонок.

1 стартмани

03.12.2018    13007    slimper    21    

33

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Группировка измерений в заголовках СКД

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

Методика создания общей шапки над измерениями в таблице созданной при помощи СКД. Без всякого кода. Только штатными средствами.

1 стартмани

07.11.2018    26888    dusha0020    12    

82

Вывод товаров в СКД как на весах в Ашане

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

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

2 стартмани

23.05.2018    14660    Kutuzov    14    

59

Как выполнить отчет на СКД через COM и получить данные отчета?

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

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    47580    wowik    3    

106

Работа с расшифровкой отчета на СКД

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

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

1 стартмани

27.02.2018    36151    Isonic    14    

53

1с8.2-8.3.Вывод на экран данных запроса с переданными Параметрами из Документа! 8 различных вариантов:от Сообщений, Таблицы и Отчетов до СКД без объекта-отчета

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

Самый важный аспект 1С - это быстро получить данные из базы. Например, по результату набранного в КонсолиЗапросов запроса вывести этот результат на экран. А еще лучше, когда мы вызываем выборку данных из конкретного документа и, конечно, желаем, чтобы параметры по этому документу тоже были переданы в выборку. Здесь мы будем выводить данные на экран по нажатию кнопки в документе, обязательно с получением в параметрах значений из документа. Рассмотрим 8 вариантов вывода подобной информации на экран: 1.Вывод результатов запроса командой Сообщить() из ТаблицыЗначений; 2.Вывод результатов запроса - просто в табличный документ; 3.Вывод результатов запроса с помощью ДвумерногоМассива; 4.Вывод результатов запроса с помощью МассиваСтруктур (с двумя вариантами); 5.Вывод обычным объект-Отчетом без СКД; 6.Вывод объект-Отчетом-СКД+УстановкаПараметров; 7.Вывод объект-Отчетом-СКД+ВнешняяВременнаяТаблица; 8.Вывод программно СКД без объекта-Отчета с Параметром=ВнешняяВременнаяТаблица.

1 стартмани

14.01.2018    32896    jan-pechka    5    

10

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Расшифровка СКД. Управляемые формы

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

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

1 стартмани

21.11.2017    35192    opx    4    

100

Особенность работы отбора по характеристикам (свойствам) в СКД

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

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

1 стартмани

18.08.2017    17407    kkv90    9    

49

Вывод результата СКД в таблицу значений

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

Вывод результата СКД в таблицу значений по Отбору Компоновки Данных

1 стартмани

04.08.2017    78889    yalex9    26    

85

Макеты СКД

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

Рассмотрены некоторые типовые задачи, которые решаются с помощью предопределенных макетов, а также перечислены несколько случаев, для которых макеты не подходят

1 стартмани

25.07.2017    130424    json    31    

375

Методика расчета отклонений данных между любыми двумя датами в отчете на СКД

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

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

1 стартмани

13.05.2017    14971    tata_1211    8    

35

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

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

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

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

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

1 стартмани

12.01.2017    40366    dbachinsky    34    

315

СКД. Дополнительная строка итогов.

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

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

1 стартмани

23.05.2014    39328    droplet    16    

66

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

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

Данная статья появилась благодаря периодически появляющимся вопросам на сайте http://1cskd.ru/. Задачи, которые задают авторы вопросов совсем не тривиальные, но их можно решить с помощью СКД.

5 стартмани

09.04.2014    178206    SITR-utyos    51    

723

Сложные отчеты для управляемых форм с использованием СКД: просто. На примере отчета ABC анализ номенклатуры, клиентов для УТ11

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

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

1 стартмани

12.08.2013    63913    mxm2    21    

69

Хитрости системы компоновки данных на примере решения тестового задания проекта "Доминикана"

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

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

1 стартмани

12.06.2013    47479    InformSES    39    

105

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Использование отборов в СКД

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

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

1 стартмани

26.05.2013    57673    echo77    14    

48

Уровни группировок в отчете СКД в управляемых формах

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

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

1 стартмани

08.05.2013    24969    Pralva    16    

42

Кнопки сворачивания и разворачивания группировок в отчете СКД в управляемых формах

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

Сверуть и развернуть группировки можно через контекстное меню, горячими клавишами, а можно разместить соответствующие кнопки на форме отчета. Как оказалось, для этого не нужно ни строчки кода.

1 стартмани

10.04.2013    54974    mxm2    9    

51

Несколько слов о вложенных схемах компоновки данных

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

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

1 стартмани

12.02.2013    52676    akomar    23    

96

Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД установкой пользовательских настроек (в управляемых формах, методика + пример для УТ11)

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

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

1 стартмани

12.09.2012    97046    mxm2    51    

174