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

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

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

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

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

В моей практике приходилось пользоваться одной бесплатной и свободной программой, которая называется 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. Steelvan 18.02.20 15:21 Сейчас в теме
Древосхема
Древосхематизация

или

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

---

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

Мощено древо )))
4. CheBurator 3408 19.02.20 02:51 Сейчас в теме
5. DrAku1a 1311 19.02.20 05:04 Сейчас в теме
"Иерархическая диаграмма" - ИМХО, смотрится проще и нагляднее. В качестве анализа каталогов и файлов - реализована в программе "Scanner"
EMelihoff; acanta; randomus; +3 Ответить
7. randomus 61 19.02.20 08:45 Сейчас в теме
(5) На вкус и цвет. На мой взгляд, Treemap нагляднее. И аккуратнее как-то )
Но спасибо за информацию.
DrAku1a; CyberCerber; +2 Ответить
15. check2 79 20.02.20 00:13 Сейчас в теме
(5) Шикарная программа, сам ею пользуюсь, только нужно учитывать, что механизмов для её реализации в 1С нет от слова совсем.
16. DrAku1a 1311 20.02.20 04:04 Сейчас в теме
(15)Реализовывал с использованием поля HTML и Raphael.js. Надеюсь в будущем увидеть подобное в составе базовых механизмов платформы 1С:Предприятие.
leonidkorolev; check2; acanta; +3 Ответить
17. check2 79 20.02.20 07:29 Сейчас в теме
(16) Красиво. Было бы неплохо статью об этом написать, но ведь Вы же понимаете, что для этого должна ещё стоять и java. А я имел ввиду, что само 1С:Предприятие из коробки таких средств не имеет.
9. terrorion 52 19.02.20 09:00 Сейчас в теме
Вещь. А можно какую-нибудь демку выложить?
10. randomus 61 19.02.20 09:21 Сейчас в теме
(9) Работаю над этим. В принципе, весь основной код опубликован в статье. Можно свободно копипастить, пробовать, модифицировать.
11. Sintson 359 19.02.20 09:22 Сейчас в теме
Ооочень круто!
Автор, ты молоток! Утащил в свои закрома.
12. CyberCerber 344 19.02.20 10:27 Сейчас в теме
Уже лет 15 пользуюсь программой Spacemonger: https://www.snapfiles.com/screenfiles/spacemonger.gif
Функционал аналогичен WinDirStat, очень удобно при оценке места и чистке диска.
Но никогда не думал, что эту визуализацию можно применить для построения отчетов, отличная идея!
randomus; +1 Ответить
13. Yashazz 3035 19.02.20 12:11 Сейчас в теме
Насчёт заголовков, которые не помещаются - шрифт можно уменьшать.
14. AlX0id 19.02.20 13:19 Сейчас в теме
В принципе, многие анализаторы диска подобную функциональность реализуют в той или иной форме.. Так что напрасно про редкую применяемость )
А так плюс, чо )
Оставьте свое сообщение

См. также

Динамический список. Апгрейд справочника "Номенклатура" типовой конфигурации с помощью расширения

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

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

26.01.2020    3044    aximo    10       

Подборка программ для взаимодействия с ЕГАИС Промо

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

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

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

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

13.01.2020    4377    aximo    13       

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

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

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

09.12.2019    5228    1    John_d    16       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

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

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

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

12.11.2019    6798    John_d    23       

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

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

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

16.10.2019    7054    YPermitin    15       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

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

4900 рублей

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

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

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

06.10.2019    7037    YPermitin    21       

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

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

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

02.10.2019    8390    VachKirp    10       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

05.09.2019    12933    YPermitin    22       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

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

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

02.09.2019    7033    SeiOkami    35       

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

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

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

26.08.2019    6661    rpgshnik    36       

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

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

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

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

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

22.08.2019    8239    ildarovich    19       

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

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

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

22.08.2019    7567    ids79    7       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

14.08.2019    5875    nagaitseff    15       

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

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

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

07.08.2019    7056    IvanAT1981    14       

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

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

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

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

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

25.07.2019    23850    4    AlbinaAAA    24       

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

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

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

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

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

22.07.2019    11643    Stepa86    33       

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

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

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

16.07.2019    13331    YPermitin    34       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

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

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

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

09.07.2019    13306    ids79    2       

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

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

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

25.06.2019    31801    ids79    17       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

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

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

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

24.06.2019    10915    RonX01    65       

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

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

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

04.06.2019    26180    YPermitin    51       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

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

5500 рублей

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

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

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

28.05.2019    5188    Oleg_nsk    96       

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

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

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

20.05.2019    16388    YPermitin    7