Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

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

Разработка - Математика и алгоритмы

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

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

Дополнение 1 от 02.03.2020: Пример обработки выложен в отдельной статье: Treemapping. Демонстрационная обработка

В моей практике приходилось пользоваться одной бесплатной и свободной программой, которая называется WinDirStat. Назначение ее — анализ использованного пространства дисковой памяти. Сам анализ выглядит таким вот образом:

 

Очень выручала в случаях, когда SSD небольшой, свободное место заканчивается и нужно определить, как максимально быстро и с минимальными потерями решить проблему. Позже я узнал, что данный способ представления называется Treemap (не надо путать с классом TreeMap из Java), а процесс формирования — Treemapping.

Данный способ мало известен в русскоязычном интернете, даже перевода термина пока нет. Предложу свой вариант — «Карта-схема дерева».

 
В англоязычном ситуация гораздо лучше. Примеры из Википедии:

Treemapping реализован во многих библиотеках визуализации данных (например — Google Charts). Но, к сожалению, не в 1С. Возникло желание восполнить этот пробел и разобраться с алгоритмом формирования.

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

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

Примеры подходящих данных:

  • папки и файлы на диске, показатель — размер;
  • иерархический справочник товаров, показатель — выручка от продаж, складские остатки, себестоимость продаж;
  • иерархический справочник контрагентов, показатели — выручка от продаж, авансы, задолженность;
  • ABC-XYZ анализ по товарам или контрагентам, в качестве групп уже могут выступать не группы иерархии, а классы ABC/XYZ.

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

 
Как вариант, аддитивный показатель — выручка по номенклатуре и группам, дополнительный — процент прибыльности продаж:

Алгоритмов формирования таких карт-схем довольно много, самые простые, естественно, для прямоугольных областей. Самый простой из прямоугольных называется Slice-and-dice (можно перевести «В нарезку», если я не ошибаюсь).

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

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

Другой способ и алгоритм — Squarified treemap («Квадратная карта-схема»). Как понятно из названия, суть способа в том, чтобы сделать все области «как можно более квадратными», т.е. чтобы соотношение высоты к ширине было как можно ближе к единице или, другими словами, отношение большей стороны к меньшей минимально. Результат гораздо более нагляден, но требуется чтобы узлы дерева на каждом уровне были отсортированы по значению показателя, т.е. исходный порядок может нарушиться. Если порядок не важен — то способ довольно неплох. Его и рассмотрим более подробно.

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

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

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

У нас начальная область, у которой ширина в 1.5 раза больше высоты. Размещаемые пункты дерева имеют веса: 6, 6, 4, 3, 2, 2, 1. Сумма весов равна 24.

Шаг 1. Размещаем первую плитку вдоль наименьшей стороны (для минимизации отношения сторон). Высоту плитки считаем 1, ширина равна 1.5*(6/24). Соотношение сторон получается 8/3.

Шаг 2. Добавляем второй элемент, новое соотношение равно 3/2, оно меньше предыдущего, значит — этот вариант лучше.

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

Шаг 4. Добавляем одну плитку с весом 4, соотношение сторон равно 9/4

Шаг 5. Добавляем второй элемент, новое соотношение равно 49/27, оно меньше предыдущего, значит — этот вариант лучше.

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

Шаг 7. Добавляем одну плитку с весом 2, соотношение сторон равно 25/18

Шаг 8. Добавляем второй элемент, новое соотношение равно 144/50, оно больше предыдущего, вариант отбрасываем, вариант с предыдущего шага считаем окончательным.

Шаг 9. Добавляем одну плитку с весом 2, соотношение сторон равно 25/18

Шаг 10. Остается единственное возможное место для последней плитки

 
Вот такой программный код у меня получился:
 #Область ЗамоститьОбласть

Процедура ЗамоститьОбласть(ОбщаяОбластьЗамощения, РазмещаемыеУзлы, ОбщийВес)
	
	РазмещаемыеУзлыНачало = 0;
	
	ВесКРазмещению = ОбщийВес;
	НезамощеннаяОбласть = ОбщаяОбластьЗамощения;
	РазмещаемыйВес = РазмещаемыеУзлы[РазмещаемыеУзлыНачало].Вес;
	
	РасчетРазмещения = РассчитатьРазмещение(НезамощеннаяОбласть, РазмещаемыеУзлы, РазмещаемыеУзлыНачало, РазмещаемыеУзлыНачало, РазмещаемыйВес, ВесКРазмещению);
			
	РазмещаемыеУзлыКонец = 1;
	
	Пока РазмещаемыеУзлыКонец < РазмещаемыеУзлы.Количество() Цикл
		
		РасчетРазмещенияПредыдущий = РасчетРазмещения;
		РазмещаемыйВесПредыдущий = РазмещаемыйВес;
		
		РазмещаемыйВес = РазмещаемыйВес + РазмещаемыеУзлы[РазмещаемыеУзлыКонец].Вес;
		РасчетРазмещения = РассчитатьРазмещение(НезамощеннаяОбласть, РазмещаемыеУзлы, РазмещаемыеУзлыНачало, РазмещаемыеУзлыКонец, РазмещаемыйВес, ВесКРазмещению);
		
		Если РасчетРазмещения.СоотношениеСторон > РасчетРазмещенияПредыдущий.СоотношениеСторон Тогда
			
			ОтобразитьЗамощение(РасчетРазмещенияПредыдущий);
			
			РазмещаемыеУзлыНачало = РазмещаемыеУзлыКонец;
			
			ВесКРазмещению = ВесКРазмещению - РазмещаемыйВесПредыдущий;
			НезамощеннаяОбласть = ИсключитьОбласть(НезамощеннаяОбласть, РасчетРазмещенияПредыдущий.ЗамощаемаяЧасть);
			РазмещаемыйВес = РазмещаемыеУзлы[РазмещаемыеУзлыНачало].Вес;
			
			РасчетРазмещения = РассчитатьРазмещение(НезамощеннаяОбласть, РазмещаемыеУзлы, РазмещаемыеУзлыНачало, РазмещаемыеУзлыНачало, РазмещаемыйВес, ВесКРазмещению);
		КонецЕсли;
		
		РазмещаемыеУзлыКонец = РазмещаемыеУзлыКонец + 1;
		
	КонецЦикла;
	
	Если РазмещаемыеУзлыНачало < РазмещаемыеУзлы.Количество() Тогда
		ОтобразитьЗамощение(РасчетРазмещения);
	КонецЕсли;
	
КонецПроцедуры

#Область РассчитатьРазмещение

Функция РассчитатьРазмещение(ОбластьЗамощения, РазмещаемыеУзлы, РазмещаемыеПунктыНачало, РазмещаемыеПунктыКонец, Знач РазмещаемыйВес, ОбщийВес)
	
	РезультатРасчета = Новый Структура;
	
	ЗамощаемаяЧасть = РассчитатьОбластьЗамощения(ОбластьЗамощения, РазмещаемыйВес / ОбщийВес);
	
	СоотношениеСторон = 0;
	
	ОставшаясяЗамощаемаяЧасть = ЗамощаемаяЧасть;
	
	Плитки = Новый Массив;
	
	Для НомерПункта = РазмещаемыеПунктыНачало По РазмещаемыеПунктыКонец - 1 Цикл
		
		ПунктДерева = РазмещаемыеУзлы[НомерПункта];
	
		Плитка = РассчитатьОбластьЗамощения(ОставшаясяЗамощаемаяЧасть, ПунктДерева.Вес / РазмещаемыйВес);
		ОставшаясяЗамощаемаяЧасть = ИсключитьОбласть(ОставшаясяЗамощаемаяЧасть, Плитка);
		РазмещаемыйВес = РазмещаемыйВес - ПунктДерева.Вес;
		
		ДобавитьПлитку(Плитка, Плитки, СоотношениеСторон, ПунктДерева);
		
	КонецЦикла;
	
	ДобавитьПлитку(ОставшаясяЗамощаемаяЧасть, Плитки, СоотношениеСторон, РазмещаемыеУзлы[РазмещаемыеПунктыКонец]);
	
	РезультатРасчета.Вставить("СоотношениеСторон", СоотношениеСторон); 
	РезультатРасчета.Вставить("ЗамощаемаяЧасть", ЗамощаемаяЧасть); 
	РезультатРасчета.Вставить("Плитки", Плитки); 
	
	Возврат РезультатРасчета;
КонецФункции

Процедура ДобавитьПлитку(Плитка, Плитки, СоотношениеСторон, ПунктДерева)
	
	СоотношениеСторонПлитки = СоотношениеСторонПлитки(Плитка);
	
	Если СоотношениеСторонПлитки > СоотношениеСторон Тогда
		СоотношениеСторон = СоотношениеСторонПлитки;
	КонецЕсли;
		
	Плитка.Вставить("Вес", ПунктДерева.Вес);
	Плитка.Вставить("ИД", ПунктДерева.ПолучитьИдентификатор());
	Плитка.Вставить("ДочерниеСтроки", ПунктДерева.ПолучитьЭлементы());
		
	Плитки.Добавить(Плитка);

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

Функция РассчитатьОбластьЗамощения(ОбластьЗамощения, ДоляОбласти)
	
	Если ОбластьЗамощения.Ширина >= ОбластьЗамощения.Высота Тогда
		ЗамощаемаяЧасть = ПрямоугольнаяОбласть(ОбластьЗамощения.Лево, ОбластьЗамощения.Верх, Окр(ОбластьЗамощения.Ширина * ДоляОбласти,3), 
		ОбластьЗамощения.Высота);
	Иначе
		ЗамощаемаяЧасть = ПрямоугольнаяОбласть(ОбластьЗамощения.Лево, ОбластьЗамощения.Верх, ОбластьЗамощения.Ширина, 
		Окр(ОбластьЗамощения.Высота * ДоляОбласти,3));
	КонецЕсли;
	
	Возврат ЗамощаемаяЧасть;
	
КонецФункции

#КонецОбласти

#КонецОбласти


#Область ВспомогательныеПроцедурыФункции

Функция ПрямоугольнаяОбласть(Лево, Верх, Ширина, Высота)
	
	Возврат Новый Структура("Лево, Верх, Ширина, Высота", Лево, Верх, Ширина, Высота);

КонецФункции

Функция СоотношениеСторонПлитки(Плитка)
	
	Если Плитка.Ширина >= Плитка.Высота Тогда
		Возврат Плитка.Ширина / Плитка.Высота;
	Иначе
		Возврат Плитка.Высота / Плитка.Ширина;
	КонецЕсли;

КонецФункции

Функция ИсключитьОбласть(НачальнаяОбласть, ИсключаемаяОбласть)
	
	Если НачальнаяОбласть.Ширина = ИсключаемаяОбласть.Ширина Тогда
		Возврат ПрямоугольнаяОбласть(НачальнаяОбласть.Лево, 
		НачальнаяОбласть.Верх + ИсключаемаяОбласть.Высота, 
		НачальнаяОбласть.Ширина, 
		НачальнаяОбласть.Высота - ИсключаемаяОбласть.Высота);
	Иначе	
		Возврат ПрямоугольнаяОбласть(НачальнаяОбласть.Лево + ИсключаемаяОбласть.Ширина, 
		НачальнаяОбласть.Верх, 
		НачальнаяОбласть.Ширина - ИсключаемаяОбласть.Ширина, 
		НачальнаяОбласть.Высота);
	КонецЕсли;
КонецФункции

Функция ОтобразитьЗамощение(Расчет)
			
	ЗамощаемаяОбласть = Расчет.ЗамощаемаяЧасть;
	
	Для каждого Плитка Из Расчет.Плитки Цикл
		
		Если Плитка.ДочерниеСтроки.Количество() = 0 Тогда
			
			РисоватьПлитку(Плитка);
			
		Иначе
			
			ЗамоститьОбласть(Плитка, Плитка.ДочерниеСтроки, Плитка.Вес);
			
		КонецЕсли;
		
	КонецЦикла;
КонецФункции

Процедура РисоватьПлитку(Плитка)
			
	ОтображениеПлитки = КартаСхемаДерева.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
	ОтображениеПлитки.Ширина = Плитка.Ширина-0.8;
	ОтображениеПлитки.Высота = Плитка.Высота-0.8;
	ОтображениеПлитки.Лево = Плитка.Лево+0.4;
	ОтображениеПлитки.Верх = Плитка.Верх+0.4;
	ОтображениеПлитки.Текст = Плитка.Вес;
	ОтображениеПлитки.Расшифровка = Плитка.ИД;

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

#КонецОбласти

Проба пера — карта-схема публикаций Инфостарта по категориям:

Конечно, это только прототип. На данный момент вижу такие проблемы, которые планирую решить и осветить в следующей статье:

  1. Автоматическое раскрашивание областей.
  2. Выделение областей-родителей.
  3. Что-то сделать с заголовками, которые не помещаются в область.

Дополнение 1 от 02.03.2020: Пример обработки выложен в отдельной статье: Treemapping. Демонстрационная обработка

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 52 18.02.20 15:21 Сейчас в теме
Древосхема
Древосхематизация

или

Древокарта
Древокартография

---

Надо сокращать, "Карта-схема дерева" очень длинно и этим отринут пользоваться.
randomus; +1 Ответить
6. randomus 192 19.02.20 08:42 Сейчас в теме
(1) Неплохо. Но пока склонен придерживаться своего варианта )
2. Steelvan 52 18.02.20 18:52 Сейчас в теме
Древораскладка
Древораскладывание
3. Yashazz 3638 18.02.20 19:55 Сейчас в теме
У меня руки не дошли такое смастерить. Спасибо огромное, пригодится много где.
Но название и правда кривовато, это ведь даже не совсем дерево, скорее именно плитка.
Я бы назвал "мощёнка". Потому что мощно)
arqnet2011; randomus; Bassgood; +3 Ответить
8. randomus 192 19.02.20 08:55 Сейчас в теме
(3)Тоже неплохо ) Но все же - дерево. Хотя и не всегда. В узлах - мощёнка, в целом - дерево )

Мощено древо )))
4. CheBurator 3440 19.02.20 02:51 Сейчас в теме
5. DrAku1a 1419 19.02.20 05:04 Сейчас в теме
"Иерархическая диаграмма" - ИМХО, смотрится проще и нагляднее. В качестве анализа каталогов и файлов - реализована в программе "Scanner"
tormozit; EMelihoff; acanta; randomus; +4 Ответить
7. randomus 192 19.02.20 08:45 Сейчас в теме
(5) На вкус и цвет. На мой взгляд, Treemap нагляднее. И аккуратнее как-то )
Но спасибо за информацию.
DrAku1a; CyberCerber; +2 Ответить
15. check2 133 20.02.20 00:13 Сейчас в теме
(5) Шикарная программа, сам ею пользуюсь, только нужно учитывать, что механизмов для её реализации в 1С нет от слова совсем.
16. DrAku1a 1419 20.02.20 04:04 Сейчас в теме
(15)Реализовывал с использованием поля HTML и Raphael.js. Надеюсь в будущем увидеть подобное в составе базовых механизмов платформы 1С:Предприятие.
tormozit; arakelyan; KUAvanesov; leonidkorolev; check2; acanta; +6 Ответить
17. check2 133 20.02.20 07:29 Сейчас в теме
(16) Красиво. Было бы неплохо статью об этом написать, но ведь Вы же понимаете, что для этого должна ещё стоять и java. А я имел ввиду, что само 1С:Предприятие из коробки таких средств не имеет.
20. DrAku1a 1419 26.10.20 04:57 Сейчас в теме
19. tormozit 6237 22.10.20 12:02 Сейчас в теме
(16) Классно. Тоже очень хочу такую диаграмму в штатном механизме платформы. Но и твою реализацию бы посмотрел.
9. terrorion 80 19.02.20 09:00 Сейчас в теме
Вещь. А можно какую-нибудь демку выложить?
10. randomus 192 19.02.20 09:21 Сейчас в теме
(9) Работаю над этим. В принципе, весь основной код опубликован в статье. Можно свободно копипастить, пробовать, модифицировать.
11. Sintson 381 19.02.20 09:22 Сейчас в теме
Ооочень круто!
Автор, ты молоток! Утащил в свои закрома.
12. CyberCerber 756 19.02.20 10:27 Сейчас в теме
Уже лет 15 пользуюсь программой Spacemonger: https://www.snapfiles.com/screenfiles/spacemonger.gif
Функционал аналогичен WinDirStat, очень удобно при оценке места и чистке диска.
Но никогда не думал, что эту визуализацию можно применить для построения отчетов, отличная идея!
randomus; +1 Ответить
13. Yashazz 3638 19.02.20 12:11 Сейчас в теме
Насчёт заголовков, которые не помещаются - шрифт можно уменьшать.
14. AlX0id 19.02.20 13:19 Сейчас в теме
В принципе, многие анализаторы диска подобную функциональность реализуют в той или иной форме.. Так что напрасно про редкую применяемость )
А так плюс, чо )
18. iCortezik 7 02.03.20 08:37 Сейчас в теме
Что-то сделать с заголовками, которые не помещаются в область.


Тут только наведением смотреть запись
Оставьте свое сообщение

См. также

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

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

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

10.11.2018    37474    ids79    40    

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

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

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

30.11.2020    2715    SizovE    3    

[mobile] Переносим HTML интерфейс на 1С

Работа с интерфейсом Мобильная разработка v8 v8::Mobile 1cv8.cf Бесплатно (free)

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020    5789    leobrn    65    

Рендеринг элементов управляемого интерфейса

Работа с интерфейсом v8 v8::УФ Россия Бесплатно (free)

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

22.09.2020    3254    kalyaka    5    

Недокументированное использование стандартных обработок из меню "Все функции". Промо

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

Рассмотрены возможности произвольного использования стандартных функций, вызываемых из меню платформы "Все функции" - "Стандартные" (Активные пользователи, Журнал регистрации, Поиск ссылок на объект, Проведение документов ...).

19.06.2015    114938    ekaruk    130    

Переопределение представления ссылочного значения

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

Переопределение представления ссылочного значения

17.09.2020    3289    sam441    15    

Перенос инструкций из word во встроенную справку 1С с сохранением картинок и форматирования

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

Делюсь простым и удобным способом переноса справки/инструкций из ворда (и не только) во встроенную справку 1С с сохранением картинок и форматирования.

22.04.2020    4896    77dream77    21    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

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

24.03.2014    45649    ildarovich    116    

Treemapping. Демонстрационная обработка

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Пример реализации диаграммы вида Treemap на 1С

1 стартмани

27.02.2020    3643    11    randomus    4    

СКД. Шаг 3. Используем макеты для оформления отчета

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

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

13.01.2020    21020    aximo    14    

[СКД] Вывод картинки в результат любого отчета на СКД

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

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    10244    John_d    16    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    68742    tormozit    27    

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений)

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

12.11.2019    12692    John_d    24    

ELK. Время изумительных историй!

Журнал регистрации Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Всем привет! Сегодня хочу рассказать вам несколько полезных историй про то как нам помог Elastic search в связке с Kibana. Про сам Elastic рассказывать не буду, уже все давным давно описали и до меня. Все обычно говорят что это полезно, это классно. В то же время, очень мало кто рассказывает про практические ситуации: когда и как помог Elastic. Итак, начнем.

31.10.2019    9196    slozhenikin_com    27    

Создание асинхронных виджетов

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    13504    YPermitin    19    

Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя Промо

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Простой и оригинальный способ сохранять ЦВЕТОВУЮ СХЕМУ и ОФОРМЛЕНИЕ пользователей. Как сохранить ЦВЕТ

22.06.2015    24659    Tatitutu    12    

Формы. Трудности программной работы

Работа с интерфейсом v8 v8::УФ 1cv8.cf Бесплатно (free)

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

06.10.2019    12348    YPermitin    31    

Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

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

02.10.2019    13661    VachKirp    10    

Добавляем виджет "Задачи от меня" в Документооборот 2.1

Практика программирования Работа с интерфейсом v8 v8::Бизнес-процессы ДО Россия Бесплатно (free)

Небольшая доработка Документооборота 2.1 для возможности добавления виджета "Задачи от меня" в обработку Текущие дела.

25.09.2019    8316    Sergey_Borisovi4    3    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    308290    Evil Beaver    176    

[Шпаргалка] Программное создание элементов формы

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

Программное создание практически всех популярных элементов формы.

06.09.2019    67915    rpgshnik    68    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    33381    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

02.09.2019    10315    SeiOkami    35    

Видеодемонстрация применения Теста-центра для нагрузочного тестирования конфигураций Промо

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

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

16.09.2012    35921    Aleksey.Bochkov    29    

[Механизм интерфейса] Часы

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

Добавляем цифровые часы на форму, как бонус рассмотрим вариант и с аналоговыми.

26.08.2019    10406    rpgshnik    36    

Иерархия без "В ИЕРАРХИИ"

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

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    13358    ildarovich    22    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    16502    ids79    8    

Хранение и редактирование дополнительных параметров в регламентированном отчете. Для начинающих. Промо

Работа с интерфейсом v8 БП2.0 УПП1 БУ Бесплатно (free)

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

22.01.2014    20801    KapasMordorov    4    

Произвольная начальная страница через расширение (программно)

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Установка своей формы произвольному пользователю на начальную страницу.

14.08.2019    14897    nagaitseff    15    

Подходы, методы и инструменты UX/UI для разработки эффективных интерфейсов на 1С

Работа с интерфейсом Инструментарий разработчика v8 Бесплатно (free)

Интерфейсам в 1С обычно уделяют мало внимания. Это в итоге снижает востребованность платформы, делает ее неконкурентной, лишает большой доли рынка. Как не потерять старых клиентов и привлекать новых с помощью интерфейсов, а главное – как сделать «правильный» интерфейс, рассказал участникам конференции Infostart Event 2018 Education управляющий партнер и основатель консалтинговой группы WiseAdvice Иван Тягунов.

07.08.2019    12147    IvanAT1981    17    

БСП: Дополнительные отчеты и обработки - одна обработка, несколько форм

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

Как в одной дополнительной обработке разместить несколько форм с типом команды "ОткрытиеФормы"?

29.07.2019    11619    dsdred    9    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    111997    bpc222    327    

Обработчики событий при записи объектов. Зачем и что за чем?

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

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

25.07.2019    73943    AlbinaAAA    31    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    17829    Stepa86    33    

Что делает "В ИЕРАРХИИ" в запросе?

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

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    33393    YPermitin    34    

Решение транспортной задачи запросом Промо

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

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    35613    bforce    22    

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

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

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

09.07.2019    33638    ids79    3    

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

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

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

25.06.2019    60675    ids79    26    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

24.06.2019    14993    RonX01    65    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

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

Рано или поздно становится скучно решать типичные задачи, для которых придумана 1С. Голова пухнет от бухгалтерских терминов и очередных "хотелок" пользователей. Именно в такие моменты хочется гордо поднять голову, воскликнуть "Но я же программист!" и заняться чем-то интересным. В цикле статей я постараюсь доступно описать, как устроены парсеры в целом и на примере парсера языка запросов 1С. Требования к навыкам читающего: основы языка 1С, основы алгоритмизации.

1 стартмани

04.12.2013    30988    juntatalor    49    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    46962    YPermitin    52    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    8561    Oleg_nsk    97    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    50559    bpc222    53    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    33690    YPermitin    8    

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

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

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

14.05.2019    22398    Viktor_Ermakov    8    

Свой макет оформления отчета

Работа с интерфейсом v8 v8::СКД Россия Бесплатно (free)

Пример создания и оформления и применения своего (пользовательского ) макета оформления для СКД.

24.04.2019    15734    olegpkc    5    

Программное генерирование кнопочек для удобного управления уровнями группировки в отчетах (версия 2a). Промо

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

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

09.04.2011    46696    mtv:)    74    

Динамический вывод таблицы значений на форму

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Вывести на форму таблицу значений, а потом на её место другую, третью, четвёртую? Не вопрос.

11.01.2019    14267    Vlad1917    30    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    13997    _ASZ_    33