Строим графы средствами 1С (без GraphViz)

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

Разработка - Практика программирования

Граф Орграф Алгоритм GraphViz Визуализация SVG

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

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

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

Как графы строят в конфигурации Управление Холдингом:

 

Как графы строят в БИТ.Финанс:

 

Как видите, самые частые ошибки:

1. Некорректное расположение вершин по вертикали: вершина-источник и вершина-приемник могут находится на одном уровне;

2. Пересечение ребер, там где их можно избежать;

3. Некорректное расположение вершин по горизонтали. В примере БИТа вершина финансист должна быть сильно левее.

Как получается строить графы у нас:

 

Тренироваться будем на примере процессов БИТ.Финанс. Сразу хочу предупредить, что готового кода здесь нет.

Часть первая: теория.

0. Исходный граф

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

1. Проверка на ацикличность. Построение матрицы смежности.

1.1. Алгоритм проверки на ацикличность.

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

Изначально все вершины графа имеют статус "Не посещалась" (белый цвет). Начинаем последовательно идти по вершинам графа и помечаем их статусом "В обработке" (серый цвет). Если у вершины нет необработанных дочерних вершин, то отмечаем ее как "Обработана" (черный цвет). Если в процессе обхода одной ветки попадаем на статус "В обработки" (серый цвет), значит есть цикл. Далее обходим непосещенные вершины пока они не закончатся. ВАЖНО! В черные вершины второй раз не заходим!

Пример: ациклический граф (корректный граф).

Ациклический граф

Пример: циклический граф (некорректный граф).

Циклический граф

На этом этапе мы определили является ли граф ациклическим.

1.2. Матрица смежности

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

Наш граф:

Матрица граф

Матрица для него будет такой:

Матрица смежности

В строках указаны вершины-источники, в колонках вершины-приемники. Видно что вершина 1 и вершина 2 связаны ребром и т.д.

На данном этапе мы получили матричное представление графа.

2. Поуровневое расположение вершин графа.

Поуровневое расположение вершин необходимо для исключения ошибок расположения вершин по вертикали, например, чтобы вершина-приемник не была выше вершины-источника.

Пример расположения:

Граф надо расположить по уровням таким образом, чтобы:

1. Вершины-источники были выше чем вершины-приемники.

2. Ребро должно быть не длиннее одного уровня. Достигается это с помощью добавления фиктивных вершин.

3. Опционально: могут быть условия на предельную ширину/высоту и т.д. В данном материале дополнительные условия не рассматриваем. Ниже будут ссылки с более подробной информацией.

Если изобразить визуально.

Исходный граф:

Исходный

Граф, разбитый по уровням. Слева с фиктивными вершинами, справа - результат:   

По уровням

Алгоритм состоит из двух частей: проход от стоков (вершин без исходящих ребер) и проход от вершин-источников. Зачем проходить два раза? Потому что ширина при разных проходах может различаться. Оптимальнее выбирать наименьшую ширину.

Начнем с прохода от стоков.

2.1. Берем вершины, которые не имеют исходящих ребер (конечные точки). Располагаем на исходном уровне.

2.2. Берем вершины, которые входят в эту вершину с одним ребром (без альтернативных путей).

2.3. Повторяем п.2 n-раз пока не обойдем все вершины.

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

Исходный граф:

Исходный граф

Гифка прохода от стоков:

  По уровням

Проход в обратную сторону по тому же алгоритму, только начинается от вершин-источников.

От истоков

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

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

3. Минимизация количества пересечения ребер.

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

Алгоритм очень простой: 

3.1. Обходим граф (поиск в глубину) и нумеруем вершины, в том числе фиктивные.

3.2. Упорядочиваем на каждом уровне вершины по возрастанию.

Минимизация пересечений

Переходим к заключительному шагу.

4. Размещение вершин графа внутри одного уровня (по оси x-координат).

Нам нужно красиво расположить наши вершины на каждом уровне. Один из самых простых вариантов - выравнивание по центру. Но есть более сложные варианты.

Мой результат для исходного графа

Результат

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

И самое крутое - апплет на java. Можно поиграться с различными вариантами расположения. Ссылка на апплет.

5. Визуализация HTML + SVG.

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

Но мы пошли другим путем. Взяли координаты наших вершин и нарисовали их с помощью HTML + SVG. С помощью SVG можно унылый табличный документ превратить в красоту. Здесь обучалка по основным возможностям SVG. Мне очень понравилось работать с этим форматом, попробуйте и вы:)

Часть вторая: практика.

А практику можно пройти у нас в компании. Мы покажем, как это реализовано у нас, и научим подобным крутым штукам.

У нас открыты вакансии программистов и аналитиков как на проектную работу, так и в штат. Welcome! Ну или пишите в личку.

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. lunjio 63 23.05.18 23:30 Сейчас в теме
Реклама ) Изначально не вник, подумал это бит.
van_za; Dream_kz; +2 Ответить
3. user621724_Dimav1979 294 24.05.18 07:51 Сейчас в теме
Статья ниочем
for_sale; romankoav; manuel; lunjio; rpgshnik; +5 1 Ответить
5. slozhenikin_com 24.05.18 11:17 Сейчас в теме
(3) Буду рад, если кому-то окажется полезной.
4. kalyaka 582 24.05.18 09:03 Сейчас в теме
В статье содержится идея. Интересно было бы увидеть и практическую реализацию.
Жду от автора продолжения, вот темы:
"Реализация графического вывода в табличный документ с использованием апплета"
"Реализация графического вывода в табличный документ с использованием html+svg"

А также выложенного решения движка расчета графа для заданной матрицы смежности. На входе матрица, на выходе рассчитанные координаты вершин.
6. slozhenikin_com 24.05.18 11:19 Сейчас в теме
(4) Если статья будет достаточно популярной, возьмусь за продолжение)
7. ildarovich 7024 24.05.18 12:01 Сейчас в теме
Приведу ссылку на свое решение, которое здесь почему-то не упомянуто:
"Как нарисовать граф на 1С".
Тогда поддержки SVG еще не было, поэтому стрелки на связях не рисовались.
Сейчас это нетрудно исправить.
Также интересно решение из Анализатор сложных запросов (консоль запросов с графом), где автор потратил немало времени (по его словам) на практическое решение той же, только чуть более конкретной задачи и получил красивый результат.
8. slozhenikin_com 24.05.18 12:56 Сейчас в теме
(7) Я в своей статье раскрыл тему ориентированных графов. Это несколько другая тема и к тому же я ничего у вас не заимствовал, поэтому ничего странного))

Анализатор надо глянуть. Спасибо.
9. ildarovich 7024 24.05.18 13:51 Сейчас в теме
(8) Ну, если хотите спорить, уточню. Конкретно меня зацепили вот эти слова:
Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С.
Поэтому я и привел две ссылки в ответ на слова "практически нет".
А с точки зрения минимизации пересечений ориентированный граф или нет - разницы мало.
10. slozhenikin_com 24.05.18 13:58 Сейчас в теме
(9) Уточняю
Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С.


Не обижайтесь, Сергей. Я не умаляю Ваших заслуг, просто писал именно про орграфы. Если хотите - добавлю ссылки на Вас и коллегу))
11. pm74 169 24.05.18 14:00 Сейчас в теме
(9) еще можно добавить пару слов про графическую схему , с помощью которой тоже можно нарисовать ориентированный граф
а если заморочиться то стрелки можно нарисовать и в табличном документе ))
12. slozhenikin_com 24.05.18 14:03 Сейчас в теме
(11) Я сначала рисовал стрелки в табличном документе, пришлось геометрию вспоминать:)
Потом переделал на SVG и вообще убрал стрелки.
13. vikontart 05.06.18 16:57 Сейчас в теме
Добрый день!
Очень понравилась идея рисования SVG в 1С, но почему-то поле HTML документа на форме отказывается отображать svg картинки, а в если код вставить в макет, то код пропадает. Хотя если загрузить просто html страницу с svg, то она отображается. Не подскажете как это реализовать, хотя бы в общих чертах или с чего начать, уж очень интересно! Заранее спасибо!
14. slozhenikin_com 05.06.18 20:10 Сейчас в теме
(13) Попробуйте добавить в <head>

<met a http-equiv="X-UA-Compatible" content="IE=9">
15. vikontart 06.06.18 13:41 Сейчас в теме
(14) Пробую, не получается((
Может быть дело в том, что я использую тонкий клиент?
Буду очень признателен если приложите минимальный пример работающего макета)
16. slozhenikin_com 08.06.18 11:29 Сейчас в теме
(15) Вот пример. Не знаю загрузится или нет.

<html>
<head>   
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta charset="UTF-8">
<style type="text/css">
	body {
		overflow:    auto;
		margin-top:  2px;
		margin-left: 2px;
		margin-right: 2px;
		font-family: Arial; 
		font-size:   10pt;}
	table {
		width:       100%;
		font-family: Arial; 
		font-size:   10pt;
		border: 0px solid;}
	td {vertical-align: top;}
 	a:link {
		color: #006699; text-decoration: none;}
	a:visited {
		color: #006699; text-decoration: none;}
	a:hover {
		color: #006699; text-decoration: underline;}
	p {
		margin-top: 7px;}
	img {border: 0px;}
</style>
<body>
<svg width="500pt" height="1000pt" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g>
<line x1="291.9" x2="291.9" y1="131.25" y2="157.5" stroke="gray" stroke-width="2"/>
</g>
<g>
<line x1="291.9" x2="291.9" y1="210" y2="236.25" stroke="gray" stroke-width="2"/>
</g>
<g>
<rect x="239.4" y="78.75" rx="20" ry="20" width="105" height="52.5"
stroke="black" fill="#ffffff"  fill-opacity="0.5" stroke-width="3"/>
<text text-anchor="middle" x="291.9" y="108" font-family="Verdana" font-size="10.00" font-variant="bold">Старт</text>
</g>
<g>
<rect x="239.4" y="157.5" rx="5" ry="5" width="105" height="52.5"
stroke="black" fill="#DEF3FF"  stroke-width="3"/>
<text text-anchor="middle" x="291.9" y="178" font-family="Verdana" font-size="10.00" font-variant="bold">Рук. департамента</text>
<text text-anchor="middle" 
 x="291.9" y="195.5" font-family="Verdana" font-size="10.00" font-variant="bold">ФИО</text>
</g>
<g>
<rect x="239.4" y="236.25" rx="20" ry="20" width="105" height="52.5"
stroke="black" fill="#DEF3FF"  fill-opacity="0.5" stroke-width="3"/>
<text text-anchor="middle" x="291.9" y="256.75" font-family="Verdana" font-size="10.00" font-variant="bold">Персональная</text>
<text text-anchor="middle" 
 x="291.9" y="274.25" font-family="Verdana" font-size="10.00" font-variant="bold">ФИО</text>
</g>
</svg>
</body>
</html>
Показать
manuel; Бубузяка; +2 Ответить
17. slozhenikin_com 08.06.18 11:30 Сейчас в теме
(16) можно убрать часть <style>...</style>
18. vikontart 08.06.18 17:37 Сейчас в теме
(16) Спасибо большое! Теперь заработало.
19. for_sale 855 01.07.19 16:27 Сейчас в теме
Сразу хочу предупредить, что готового кода здесь нет.


Эта фраза перебрасывает статью куда-то в область категории "Смотрите, как я умею!". Примеры кода помогли бы ей обрести более полезный вид.
20. slozhenikin_com 271 01.07.19 16:46 Сейчас в теме
(19)
Эта фраза перебрасывает статью куда-то в область категории "Смотрите, как я умею!". Примеры кода помогли бы ей обрести более полезный вид.


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

Когда-нибудь выложу код, но сейчас не готов.
21. Rustig 1490 02.11.19 06:39 Сейчас в теме
(0) спасибо за обзор!
не все ссылки работают....
в последней статье про ЭластикАлерт - ссылка также не работает...
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

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

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

22.04.2020    4707    23    Infostart    2    

Программная работа с настройками СКД

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

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

27.01.2020    19353    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

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

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

15.01.2020    18668    0    John_d    22    

Последовательности событий. Шпаргалка

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    13563    0    kuzyara    33    

Использование программных перечислений, ч.1: строковые константы Промо

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

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

10.12.2016    35546    0    unichkin    45    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    14685    0    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    6878    0    Sibars    19    

Таблица значений. Нюансы

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

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    28341    0    Yashazz    45    

Вспомогательные инструкции в коде 1С Промо

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

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

15.10.2018    28018    0    tormozit    100    

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

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

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

06.09.2019    39966    0    rpgshnik    62    

Агрегатные функции СКД, о которых мало кто знает

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

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    42142    0    ids79    54    

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

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

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

05.09.2019    24539    0    YPermitin    24    

Оформление и рефакторинг сложных логических выражений Промо

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

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

20.09.2012    75484    0    tormozit    129    

Три костыля. Сказ про фокусы в коде

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

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

03.09.2019    23222    0    YPermitin    80    

Отслеживание выполнения фонового задания

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

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    28423    0    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

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

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    65783    0    ids79    40    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

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

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

11.07.2007    46397    0    tormozit    38    

Фоновое выполнение кода в 1С - это просто

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

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

02.08.2019    29461    0    avalakh    22    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    19908    0    json    12    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

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

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    49243    0    ids79    11    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

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

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    42407    0    tormozit    74    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    31628    0    ids79    27    

Регистры сведений. За кулисами

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

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    23882    0    YPermitin    13    

"Меньше копипаста!", или как Вася универсальную процедуру писал

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

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    17804    0    SeiOkami    50    

Выгрузка документа по условию Промо

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

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

25.04.2019    15447    0    m-rv    2    

Работа с настройками системы компоновки данных

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

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

02.07.2019    38673    0    ids79    10    

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

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

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

25.06.2019    46192    0    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

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

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    22897    0    dmurk    144    

Как прикрутить ГУИД к регистру сведений Промо

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

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

16.04.2019    19217    0    m-rv    17    

Регистры накопления. Структура хранения в базе данных

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

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    38565    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

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

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    26715    0    Eret1k    23    

О расширениях замолвите слово...

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

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    32198    0    ellavs    126    

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

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

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    28889    0    m-rv    21    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

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

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    25344    0    ellavs    88    

Трюки с внешними источниками данных

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

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    28985    0    YPermitin    53    

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

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

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    33914    0    Смешной 1С    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

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

05.12.2017    26915    0    itriot11    34    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

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

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    20186    0    Vladimir Litvinenko    27    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

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

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34765    0    ids79    9    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    73520    0    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

26.12.2018    24859    0    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

14.12.2018    37955    0    ids79    72    

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

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

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

10.11.2018    32516    0    ids79    40    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    34373    0    ids79    40    

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

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

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

13.11.2018    41565    0    Unk92    21    

Тестер: частые вопросы Промо

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

Ошибкам бой - тесты норма жизни!

25.07.2018    27581    0    grumagargler    26