Как нарисовать граф на 1С

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

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

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

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

Таблица ребер "Ребра" содержит три колонки: имя одной вершины ребра (Имя1), имя противоположной вершины ребра (Имя2) и значение упругости пружинки, которой моделируется ребро (Упругость).

 
Имя1 Имя2 Упругость
Вершина1 Вершина2 Упругость1
... ... ...
ВершинаА ВершинаБ УпругостьАБ


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

Таблица вершин содержит две колонки: имя вершины (Имя) и значение электрического заряда вершины (Заряд). 

 
Имя Заряд
Вершина1 Заряд1
... ...
ВершинаА ЗарядА


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

Текущее состояние системы определяется таблицей состояния, содержащей текущие координаты вершин и состоящей из колонок: имя вершины (Имя), текущая координата по горизонтали (Х) и координата по вертикали (У). Таблицу вершин и таблицу состояния для простоты можно объединить, записывая заряд и текущие координаты в одну таблицу "Вершины".

 
Имя Заряд Х У
Вершина1 Заряд1 Х1 У1
... ... ... ...
ВершинаА ЗарядА ХА УА


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

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

(А.Х – Б.Х) / РасстояниеАБ * А.Заряд * Б.Заряд / ((А.Х – Б.Х) * (А.Х – Б.Х) + (А.У – Б.У) * (А.У – Б.У))

а по вертикали сила отталкивания

(А.У – Б.У) / РасстояниеАБ * А.Заряд * Б.Заряд / ((А.Х – Б.Х) * (А.Х – Б.Х) + (А.У – Б.У) * (А.У – Б.У))

где

РасстояниеАБ = SQRT((А.Х – Б.Х) * (А.Х – Б.Х) + (А.У – Б.У) * (А.У – Б.У))

Элементы вида (А.Х – Б.Х) / РасстояниеАБ - это проекции вектора направления силы, имеющего единичную длину. Такой вектор влияет на направление, но не меняет величину силы.

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

((Б.Х – А.Х) / РасстояниеАБ) * УпругостьАБ * РасстояниеАБ,

А по вертикали формулой

((Б.У – А.У) / РасстояниеАБ) * УпругостьАБ * РасстояниеАБ.

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

(А.Х – Б.Х)(А.Заряд * Б.Заряд / РасстояниеАБ / ((А.Х – Б.Х) * (А.Х – Б.Х) + (А.У – Б.У) * (А.У – Б.У)) – УпругостьАБ)

и вертикальной силы

(А.У – Б.У)(А.Заряд * Б.Заряд / РасстояниеАБ / ((А.Х – Б.Х) * (А.Х – Б.Х) + (А.У – Б.У) * (А.У – Б.У)) – УпругостьАБ)

Перемещение по Х и У можно получить, умножив сумму сил, действующих со стороны всех вершин, на величину шага по времени «Шаг». Таким образом, если известны текущие координаты вершин, применив указанные формулы, можно получить следующие координаты и так далее, пока система не перейдет в устойчивое состояние, где величина суммы сил, действующих на каждую вершину, будет близка к нулю.

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

ВЫБРАТЬ Ребра.Имя1Ребра.Имя2Ребра.Упругость
ПОМЕСТИТЬ Ребра ИЗ &Ребра КАК Ребра
;
ВЫБРАТЬ Ребра.Имя1Ребра.Имя2Ребра.Упругость
ПОМЕСТИТЬ Дуги
ИЗ Ребра КАК Ребра
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ Ребра.Имя2Ребра.Имя1Ребра.Упругость
ИЗ Ребра КАК Ребра
ИНДЕКСИРОВАТЬ ПО Ребра.Имя1Ребра.Имя2
;
ВЫБРАТЬ Вершины.ИмяВершины.ЗарядВершины.ХВершины.У
ПОМЕСТИТЬ Вершины
ИЗ &Вершины КАК Вершины
;
ВЫБРАТЬ
    А.Имя,
    МАКСИМУМ(А.Заряд) КАК Заряд,
    МАКСИМУМ(А.Х) + &Шаг * СУММА((А.Х - Б.Х) * (А.Заряд * Б.Заряд / ((А.Х - Б.Х) * (А.Х - Б.Х) + (А.У - Б.У) * (А.У - Б.У)) - ЕСТЬNULL(Дуги.Упругость, 0))) КАК Х,
    МАКСИМУМ(А.У) + &Шаг * СУММА((А.У - Б.У) * (А.Заряд * Б.Заряд / ((А.Х - Б.Х) * (А.Х - Б.Х) + (А.У - Б.У) * (А.У - Б.У)) - ЕСТЬNULL(Дуги.Упругость, 0))) КАК У
ИЗ
    Вершины КАК А
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Вершины КАК Б
        ПО А.Имя <> Б.Имя
        ЛЕВОЕ СОЕДИНЕНИЕ Дуги КАК Дуги
        ПО А.Имя = Дуги.Имя1
            И (Б.Имя = Дуги.Имя2)
СГРУППИРОВАТЬ ПО
    А.Имя

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

Внимательные читатели заметят, что в формулах пропущен делитель «РасстояниеАБ». Это сделано из-за того, что в языке запросов 1С нет функции расчета квадратного корня SQRT. То есть в данном запросе фактически считается, что сила отталкивания обратно пропорциональна не квадрату расстояния между вершинами, а просто расстоянию. Таким образом, силе отталкивания придается избыточное дальнодействие. Ничего страшного в этом нет, так как для задачи рисования графов это не столь существенно. Однако в запросе, реально используемом в обработке, эта трудность преодолена. Это сделано за счет расчета квадратного корня по итерационной формуле Герона

РасстояниеАБ’ = (РасстояниеАБ + КвадратРасстоянияАБ / РасстоянияАБ) / 2,

где предыдущее значение расстояния берется из предшествующей итерации запроса, а начальное равно единице. Такое решение совсем не на много замедлило процесс вычислений. Указанный режим включается в обработке галочкой «ЗаконКулона». Также в реальном запросе проведена дополнительная оптимизация: исключена повторная загрузка дуг и индексация  дуг в каждой итерации, а сумма квадратов расстояний для каждой пары вершин считается не четыре раза, как в исходном запросе, а один. При желании, чтобы исключить квадратичную зависимость времени выполнения запроса от числа вершин, можно разбивать плоскость на клетки (или соты) и считать отталкивание только для вершин соседних клеток. Однако пока такой оптимизации не проводилось и непонятно, насколько это необходимо – для рисования графов из 100 – 200 вершин быстродействия достаточно.

Как и в других задачах численного решения систем нелинейных дифференциальных уравнений важным является вопрос выбора шага по времени. БОльшая величина шага приводит к увеличению скорости решения, но до определенных пределов, когда динамическая система теряет устойчивость. Во всех следующих примерах при зарядах и упругости 1 шаг брался равным 0,2, кроме графов групп номенклатуры и контрагентов, где шаг пришлось уменьшить до 0,05. В целом действует понятное правило – чем больше упругость, тем меньше шаг.

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

К статье приложена обработка «ГрафОграф» (ударение на букве «о»). С ее помощью можно задать структуру графа и пронаблюдать динамику построения его рисунка (если включен флажок «Показывать процесс»). Обработка позволяет менять шаг решения - он должен быть положительным, но не слишком большим. Можно менять порог перемещения для остановки – этот параметр может быть равен нулю, но тогда придется прерывать процесс моделирования вручную (Ctrl-Break). Можно задавать требуемый размер графа в миллиметрах – граф автоматически масштабируется, стараясь занять заданный прямоугольник. Можно увеличивать или уменьшать граф, а также (на вкладке вершины), поворачивать его по часовой стрелке или против часовой стрелки или зеркально отображать (относительно диагонали). Можно задавать цвет ребер и цвет вершин (всех одновременно – различный цвет для каждой вершины и ребра задавать пока не было необходимости). Кроме того, задав первому ребру упругость, с помощью кнопки «Сравнять», можно  сделать упругость всех ребер такой же, как у первого ребра. Аналогичное действие запрограммировано для заряда вершин. Вот как выглядит панель управление обработкой:

Панель управления обработкой

 

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

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

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

1. Сетка (соседние вершины соединены в ячейки прямоугольной сетки)

Сетка 

2. Ожерелье (вершины связаны в кольцо)

Бусы 

3. Клубок (все вершины непосредственно связаны)

Клубок 

чтобы получить эту красивую картинку, потребовалось обнулить упругости ребер в середине кольца. Иначе вид был бы совсем другим:

Клубок 

4. Бинарное дерево

Бинарное дерево 

5. 5-арное дерево

5-арное дерево
6. Звезда (все вершины соединены с одной центральной вершиной)

Звезда

здесь хорошо виден врожденный недостаток метода - прямое ребро 1-13 не обходит вершину 5, а пересекает ее.


7. Метро Москва

Московское метро (общий вид)

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

Метро Москвы (увеличенный фрагмент)

8. Метро Питер

Метро Питер

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

9. Граф счетов бухгалтерского учета

(этот пример перенесен в следующую статью)

10. Граф групп справочника «Номенклатура» (такой справочник должен существовать в конфигурации, где запускается обработка)

Группы справочника номенклатуры демо-базы БП

11. Граф групп справочника «Контрагенты» (этот справочник также должен существовать в конфигурации, где запускается обработка)

Граф групп справочника контрагентов мз демо-базы БП


По поводу схем метро можно добавить, что при их построении пришлось пойти на определенную хитрость. Дело в том, что из-за начального случайного расположения станций длинные радиальные ветки за кольцевой линией (для Москвы) с большой вероятностью перехлестываются и далее уже не выправляются. Можно было бы (а) строить граф наращиванием станций (как строилось метро), (б) соединять средние станции вылетных веток большим виртуальным кольцом со слабыми «выправляющими» связями, (в) закреплять конечные станции или (г) при начальном рассеивании станций учесть округ станции. Был выбран последний метод. Также стоит отметить, что число (187 с учетом одноименных) станций московского метро уже близко к пределу возможностей метода. В строке состояния при работе метода отмечается число кадров в секунду, которые успевает построить обработка. На примере метро обработка (файловая база, ноутбук, отключен показ процесса и закон Кулона) показывала примерно 2,4 fps. Структура метро записана в макетах обработки, при желании можно добавить изображение и любого другого метро.

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

Кажется, этих примеров должно быть достаточно для доказательства работоспособности и практической применимости метода. Но представление отношений в виде графов настолько универсально, что, без сомнения, найдется еще немало других показательных примеров. В частности, можно было еще построить какое-либо генеалогическое дерево, структуру комментариев к выбранной статье на Инфостарте, связи пользователей «1С: Документооборот» и так далее и тому подобное. Добавив несколько строк кода, можно изображать на дугах стрелки и, таким образом, рисовать ориентированные графы.

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

ВЫВОДЫ

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

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

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

Наименование Файл Версия Размер
Обработка ГрафОграф рисования графов
.erf 31,74Kb
08.08.13
522
.erf 1.0 31,74Kb 522 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. sick_russian 09.08.13 04:44 Сейчас в теме
Шикарно) буду играться, спасибо)
2. yuraos 962 09.08.13 06:36 Сейчас в теме
Где учился коллега -
на математическом или физическом?
Я окончил ФФ НГУ.
в любом случая респект и уважение!
3. KroVladS 32 09.08.13 09:29 Сейчас в теме
где применить пока ещё не понял.
Но описание шикарное.
4. wunderland 201 09.08.13 10:35 Сейчас в теме
Снимаю шляпу!!! Коротко и ясно объяснять сложные вещи - это дар Божий.
5. YPermitin 8348 09.08.13 11:56 Сейчас в теме
Супер! Очень интересно сделано.
6. petrov_al 10 09.08.13 12:04 Сейчас в теме
Это конечно все интересно, но вот в какой предметной области 1С это можно использовать.
8. ildarovich 6994 09.08.13 12:43 Сейчас в теме
(6) Ну, во-первых, в статье уже говорится о различных вариантах практического применения метода. Например, о возможности построения в виде графа отношений пользователей программы 1С. В качестве связей может быть условия (а) редактирования одного документа, (б) пересылки сообщений друг-другу, (в) направление задач от одного пользователя другому. Схема, представленная в виде графа, может многое прояснять. Также в виде графа удобно представить структуру модулей программы (число строк модуля - размер, ссылок - степень связности), структуру одного модуля, связи объектов информационной базы, связи таблиц СУБД. Это пригодится при анализе конфигураций. В виде графа можно наглядно представить структуру локальной вычислительной сети. Практически везде можно использовать более компактное представление в виде графа иерархии подразделений, номенклатуры, контрагентов. Структура подчиненности документов - также граф. В следующей статье уже обещан пример представления в виде графа остатков и движений по счетам бухгалтерского учета. Кроме того, в виде графа можно наглядно представлять движение и распределение затрат при закрытии месяца. Регистр учета затрат РАУЗ - это фактически готовый граф с вершинами - комбинациями аналитик и дугами - движениями. Последовательности технологических операций (карты маршрутов) - это графы. Везде, где в общении с пользователем сейчас рисуются (возможно, вручную) квадратики или кружочки и линии между ними, фактически используется граф и возможность его автоматического рисования будет наверняка полезной.
creatermc; LordKim; gusen_it; Bassgood; +4 Ответить
62. buy_sale 220 14.05.14 16:04 Сейчас в теме
(8) в большинстве наших организаций структура отношений между пользователями напоминает клубок.8-)
alexeyvs77; xioxao; +2 Ответить
68. Makushimo 155 17.10.14 08:44 Сейчас в теме
(8) ildarovich
Как, например, в виде графа отобразить схему товародвижения между складами?
На дугах - количество перемещенного товара
Скажем, по одной номенклатуре.
Эта обработка так может?
73. Denium79 14 08.12.14 21:50 Сейчас в теме
(8)
Есть очень важное практическое применение Вашего способа, построение графического дерева спецификаций в виде дерева.
Данный метод сильно мог бы помочь в анализе узких мест, быстром определении типа производства и т.п.
Нет ли у Вас практического примера такой реализации?
74. ildarovich 6994 08.12.14 22:37 Сейчас в теме
(73) Denium79, нет, деревья спецификаций я не строил, но сделать не трудно.
Какая у вас редакция? Есть ли изменения в метаданных в части спецификаций? Какие в основном спецификации?
- Если ответите на эти вопросы, могу добавить в обработку из статьи построение дерева спецификации.

Но вот чтобы дерево росло вниз (нужно будет физику чуть поменять - закрепить вершину и "течение" добавить) - на это пока времени нет, хотя это обсуждаемо.

Но, наверное, сначала вам нужно будет взглянуть на результат того, что получится по исходной модели.
75. Denium79 14 09.12.14 06:30 Сейчас в теме
(74)
Большое спасибо за ответ! Преклоняюсь перед Вашим интеллектом и тем как Вы чувствуете язык запросов.
Теперь по теме: у меня УПП 1.3, спецификации только сборочные, изменений в части спецификаций нет.
Уровни вложенности до 9, в среднем 8-10 позиций в спецификации (от 1 до 20).
76. ildarovich 6994 15.12.14 14:58 Сейчас в теме
(75) Denium79, я добавил пример с построением графа спецификации к обработке.
К сожалению, обработку сейчас к статье добавить не могу, так как потребуется менять тип публикации (изменились правила этого сайта). Поэтому временно прикрепляю новый вариант к этому сообщению. Чтобы попробовать, нужно зайти на закладку демо-примеров обработки, нажать на кнопку "спецификации" и выбрать номенклатуру, спецификацию которой нужно раскрыть.

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

Сообщите, что получается у вас, насколько результат отвечает вашим ожиданиям.
77. Denium79 14 24.12.14 13:33 Сейчас в теме
(76) большое спасибо за участие. Я попробовал, сформировать по небольшом узлу. Получилось очень наглядно, буду дальше эксперементировать. Пока что по более менее крупной спецификации сформировать не получается, возможно дело в наименовании (скобки в наименовании). Можно ли каким то образом сформировать граф в виде дерева? Сверху вниз например?
9. ildarovich 6994 09.08.13 13:07 Сейчас в теме
(6) И еще...
В ответ могу спросить: для чего в 1С используются диаграммы и нужны ли они? - Наверное, Вы скажете, что диаграммы нужны для наглядного представления зависимостей. - Тогда рассматривайте данный метод как разновидность диаграммы, которой еще нет в платформе. Только эта диаграмма (нарисованный приведенным способом граф) нужна для наглядного представления не числовых, а реляционных зависимостей.
Kotta; smaximaa; fzt; +3 Ответить
42. Polav 31 21.08.13 13:00 Сейчас в теме
(6)(8) Кроме того, можно вспомнить о том, что все новое - это хорошо забытое старое. Наберите в поисковике "Граф затрат" - там много информации об использовании графов для учета затрат
7. OVladius 32 09.08.13 12:20 Сейчас в теме
10. a.b.vorobjev 09.08.13 13:46 Сейчас в теме
Не пробовали натравливать на метаданные конфигураций 1С?
12. ildarovich 6994 09.08.13 14:19 Сейчас в теме
32. aids-ice 12.08.13 10:20 Сейчас в теме
(12) Надо пробовать, вот это будет действительно интересно.
33. ildarovich 6994 12.08.13 12:03 Сейчас в теме
(32) Буду заниматься этим, но не ожидаю слишком многого.
Во-первых, число вершин в графе метаданных слишком велико: в БП2 только справочников+документов+регистров сведений+ накопления = 360. Пока решил пробовать на Рознице. Там объектов поменьше /160/. То есть нужно все же будет проводить дополнительную оптимизацию метода за счет разбиения вершин на зоны. Во-вторых, здесь уже была такая работа, где граф строился во внешней программе. Там говорилось, что если не фильтровать объекты, то граф слишком запутан и не обладает наглядностью, несмотря на присущую данной модели способность пространственной кластеризации. В третьих, пока не придумал быстрого способа подсчета реально-используемых ссылок для составных типов данных, а хотелось бы наряду с размерами вершин (по количеству объектов) показать и реальную степень связанности.
Без этого пока получается примерно такая картина... Вроде бы хаос, однако кое-какую структуру уже заметить можно... А еще одна картинка - если оставить только справочники и учесть их размер... Справа виден диск справочника "Номенклатура". Думаю: - А не забыл ли я в статье еще одну научную дисциплину - астрономию?
Прикрепленные файлы:
11. tolyan_ekb 176 09.08.13 14:12 Сейчас в теме
Подскажите. Поиск по графу уже рассматривался в статьях?
13. Ёпрст 1036 09.08.13 14:26 Сейчас в теме
14. Ёпрст 1036 09.08.13 14:39 Сейчас в теме
Долго рисует.
Или это бесконечный процесс и нужно всегда его прерывать самому ?..
есть ли режим, чтоб сразу нарисовал результат, без "процесса" ?
15. Ёпрст 1036 09.08.13 14:40 Сейчас в теме
16. ildarovich 6994 09.08.13 14:53 Сейчас в теме
(15) Там еще есть параметр "порог" - он определяет периметр дрожания вершин, после попадания в который процесс останавливается. Стандартно он 0.01 мм, но можно его увеличить, чтобы процесс заканчивался быстрее. Правда, чем больше порог, тем менее идеальными будут фигуры.
17. Ёпрст 1036 09.08.13 15:34 Сейчас в теме
(16) структуру подчиненности доков, еще не рисовал ей ?
:)

у меня на справочнике..всегда стопорить приходится. Слишком долго.
18. Ёпрст 1036 09.08.13 15:35 Сейчас в теме
и это, надо бы сплиттер в форму воткнуть - а то не все настройки видны на форме, типа уменьшить размер и т.д.
19. Ёпрст 1036 09.08.13 15:36 Сейчас в теме
поставил порог в 1, получил болт:

Вершины.Загрузить(Запрос.Выполнить().Выгрузить());
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft OLE DB Provider for SQL Server: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1
20. ildarovich 6994 09.08.13 15:51 Сейчас в теме
(19) Это означает, что система неустойчива - нужно уменьшать шаг, либо жесткость пружин. Если показ включен, то неустойчивость видна глазами - вершины прыгают туда-сюда с увеличивающейся амплитудой. А что за пример обрабатывается?
(17) Структуру доков не рисовал пока - хотелось сделать обработку и универсальной и простой, рассмотреть как можно более разнообразные случаи. Основное здесь все же статья и запрос, обработка пока "учебная".
А так каждый пример должен был бы иметь свой набор параметров. Получалась целая "консоль запросов".
(17) Увеличение порога не помогает?
(18) Понял, сделаю.
21. Ёпрст 1036 09.08.13 16:09 Сейчас в теме
(20) да любой, даже "сетка" не формируется
24. ildarovich 6994 09.08.13 16:48 Сейчас в теме
(21) Нужно уменьшить именно "Шаг" (или Упругость, но у всех ребер). Рисуется и 100 и 200 вершин в сетке. Попробуйте Шаг = 0.05.
22. Ёпрст 1036 09.08.13 16:12 Сейчас в теме
уменьшением количества вершин до 20, спасает
:)
быстро выводит.
23. graphbuh 222 09.08.13 16:39 Сейчас в теме
Здорово! как хочется иметь что-то свое, родное, на 1С.
Потому что все эти суперкомпоненты по рисованию не все политики компании переваривают.
В идеале нужно стремиться к возможности получить обработку события при клике на вершину / ребро.
25. Andreynikus 1328 11.08.13 00:04 Сейчас в теме
Автор ты крут!
Мое уважение.
virtyoz; M.Shalimov; myoker; RomanRomans; fzt; Irwin; wunderland; fma.coder; Зеленоград; creatermc; link_l; kare; ffgnebel; Maddy18; TravkinSV; serg1974; olesha; dsv_nsk; kea_astrofitum; THEBESTolo4b; support; 1cmailru; Altez; Новиков; +24 Ответить
26. frying 20 11.08.13 22:27 Сейчас в теме
ildarovich, ещё к Вашим выводам добавлю. Изображение графа может сильно зависеть от начального положения вершин. Играясь обработкой получил решение вместо "бус" и "клубка" "восьмерку".
Прикрепленные файлы:
27. ildarovich 6994 11.08.13 22:55 Сейчас в теме
(26) Согласен. Это нелинейная система и у нее есть локальные оптимумы. Но вот точно такая восьмерка как у Вас у меня все же, если подождать, обычно выправлялась. Особенно, если отключен закон Кулона. Можно поставить порог поменьше или вообще 0, чтобы раньше времени не было остановки.
Встречный вопрос: а почему у Вас вместо вершин-кругов - эллипсы? У меня размер вершин по вертикали и горизонтали одинаков и должны рисоваться именно круги. Вот код:
Рисунок.Высота = Где[Э].Заряд * Масштаб;
Рисунок.Ширина = Рисунок.Высота
Что-то уже меняли в коде? Какая платформа?
28. frying 20 11.08.13 23:13 Сейчас в теме
У меня всего два раза так получилось, раз из 20-ти. Мне тоже кажется странной, два решения очевидны - "кольцо" или "клубок" и симметричная восьмерка, а вот такая как-то не укладывается. Хотя система уравнений вида 1/x2 - x = с может иметь до трех решений, но с равно 0, поэтому вроде одно должно быть в действительной области. Обработку не менял.

На примере "бус" из 6 вершин.
10,15
15,10
20,20
25,15
20,10
15,20
Не исправляется.

1С:Предприятие 8.3 (8.3.3.687)

Нашел такой код в обработке:

Если Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Прямая Тогда
			
			Рисунок.Верх = Где[Э.Имя1].У * Масштаб;
			Рисунок.Лево = Где[Э.Имя1].Х * Масштаб;
			Рисунок.Высота = (Где[Э.Имя2].У - Где[Э.Имя1].У) * Масштаб;
			Рисунок.Ширина = (Где[Э.Имя2].Х - Где[Э.Имя1].Х) * Масштаб
			
		ИначеЕсли Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Эллипс Тогда
			
			Рисунок.Верх = (Где[Э].У - Где[Э].Заряд / 2) * Масштаб;
			Рисунок.Лево = (Где[Э].Х - Где[Э].Заряд / 2) * Масштаб;
			Рисунок.Высота = Где[Э].Заряд * Масштаб;
			Рисунок.Ширина = Рисунок.Высота
			
		ИначеЕсли Рисунок.ТипРисунка = ТипРисункаТабличногоДокумента.Текст Тогда
			
			Рисунок.Верх = (Где[Э].У - Где[Э].Заряд / 4) * Масштаб;
			Рисунок.Лево = (Где[Э].Х - Где[Э].Заряд / 4) * Масштаб
			
		КонецЕсли
Показать
29. frying 20 11.08.13 23:24 Сейчас в теме
Понял, c не ноль, а начальное приближение, поэтому решение не единственное.
30. ildarovich 6994 11.08.13 23:36 Сейчас в теме
(29) Для борьбы с такими явлениями можно (а) добавить инерцию, (б) подталкивать застрявшие вершины, корректируя их координаты вручную, (в) в конце еще раз но уже слегка "встряхивать" вершины - задавать небольшое случайное отклонение от достигнутых положений. Мне больше нравится способ (в). Он похож на метод "моделированного отжига" в задачах поиска оптимальных решений для многомерных нелинейных критериев оптимальности.
Под 8.3.3 еще не тестировал - завтра попробую. Возможно, там есть какое-то новое свойство у табличного поля, позволяющее его так растягивать. Мне такой вид (вершины-эллипсы) не нравится.
И еще увидел упущение - использовал на кнопках картинки не стандартные, а из конфигурации БП - они у Вас не отображаются - завтра буду поправлять.
31. frying 20 12.08.13 00:12 Сейчас в теме
(30), у меня есть ещё предложение (г). Попробовать заменить закон Кулона тоже на Гука, считать, что между всеми вершинами, есть пружина, не нулевой длины (чтобы получить в начальный момент её сжатие), например, равно диагонали области, в которую должен поместиться граф. Тогда получатся линейные уравнения. Насколько это будет красиво выглядеть не знаю, просто как идея.
34. ivanov660 2091 12.08.13 22:26 Сейчас в теме
Да, последние картинки выглядят необычно, но только ничего не понятно. Логичнее всего использовать иерархию в отображении.
35. Rustig 1416 13.08.13 22:13 Сейчас в теме
(0) спасибо за разработку.
у меня вопрос: чтобы нарисовать "от руки" граф в конечном состоянии, надо определить конечные координаты вершин. то есть задача кратко - определить координаты вершин.
конечные координаты вершин рассчитываются исходя из уравнений. При этом чем ближе "к природе" уравнения (то есть логично вытекают из физических - заряды электронов, или геометрических законов - схема метро), тем красивее конечная картинка.
проблема определения координат имеется в самом начале - когда мы должны обозначить начальные положения вершин.
то есть задача - определить координаты вершин - не решена.
известно, что в задачах приближения, одной из задач остается определить начальное приближение искомых переменных. у меня вопрос: имеет ли место в вашей разработке такая проблема - проблема определения начальных координат? и какой инструмент вы используете для задания начальных координат вершин?
37. ildarovich 6994 13.08.13 23:25 Сейчас в теме
(35) Начальное приближение задается случайным образом - с помощью генератора случайных чисел вершины равномерно рассеиваются по прямоугольнику, заданному размером рисунка.
Процедура Рассеивание() Экспорт
	ГСЧ = Новый ГенераторСлучайныхЧисел();
	Для Каждого Вершина Из Вершины Цикл
		Вершина.Х = ГСЧ.СлучайноеЧисло(0, Ширина / (0.001 + Масштаб));
		Вершина.У = ГСЧ.СлучайноеЧисло(0, Высота / (0.001 + Масштаб));
	КонецЦикла
КонецПроцедуры
И тут есть определенная проблема (даже две, вторая - первоначальный масштаб) - для реального графа получаются различные рисунки при разных запусках обработки. Как узнать, какой рисунок лучше? Возможно, нужно посчитать потенциальную энергию системы и найти из разных вариантов тот, у которого энергия меньше. Я этого пока не делал. Сейчас планирую программировать "встряску", чтобы выводить систему из локальных минимумов.
(36) Сама идея довольно давняя - скучал на каком-то заседании, думая об недописанном отчете с рисунками графов. Новая только реализация на языке запросов 1С, который, как выяснилось, хорошо приспособлен для операций с разреженными матрицами. Кстати, в первой реализации метода на языке системы MatLab было всего 15 строк вместе с выводом!
36. Rustig 1416 13.08.13 22:19 Сейчас в теме
(0) очень красиво :) как вы до такого додумались?
38. DoctorRoza 14.08.13 09:13 Сейчас в теме
39. Crush 14.08.13 09:49 Сейчас в теме
Отлично! Не раз закрадывалась мысль представлять зависимости в виде графов, но вспоминать эту часть дискретки было лень. Спасибо!
40. mary61 38 16.08.13 08:37 Сейчас в теме
Круто, просто и доступно. Возьму на заметку
41. Збянтэжаны Саўка 244 20.08.13 09:56 Сейчас в теме
круто, жду с нетерпением обещанной статьи о плане счетов
43. makcyta.89 28.08.13 15:18 Сейчас в теме
Не расскажешь как в 1с построить схему связей между таблицами данных
44. Evil Beaver 6705 29.08.13 12:34 Сейчас в теме
Потрясающе! Анимированные графы на 1С - в голове не укладывается!
45. sashocq 191 04.09.13 16:27 Сейчас в теме
Это — супер круто! Обязательно возьму себе на заметку.
46. Новиков 291 11.09.13 12:13 Сейчас в теме
47. galich 150 04.10.13 10:25 Сейчас в теме
Использовал для вывода подобных диаграмм бесплатную компоненту GraphViz от AT&T.
48. sidka89 24.10.13 11:50 Сейчас в теме
оч круто, надо тоже попробовать!)
50. FractonKireyev 05.02.14 14:06 Сейчас в теме
Круто!
На первый взгляд - отличный помощник в моделировании бизнес-процессов на предприятиях со сложной организационной структурой (в тот момент, когда надо разобраться кто-кому-что-зачем-когда-...).
51. Ele1234567 23.02.14 23:49 Сейчас в теме
52. yalo 19.03.14 16:01 Сейчас в теме
53. alexkon 92 21.03.14 15:16 Сейчас в теме
54. Polav 31 25.03.14 13:34 Сейчас в теме
Вышла книга: Графы затрат. Моделирование в микроэкономике - о применении теории графов для расчета себестоимости
55. ildarovich 6994 25.03.14 13:54 Сейчас в теме
(54) Polav, большое спасибо за ссылку! Искренне поздравляю с успешным завершением большого серьезного труда. Обязательно постараюсь приобрести Вашу книгу.
56. Polav 31 25.03.14 15:18 Сейчас в теме
(55) И Вам спасибо, что тему использования графов подняли. А то совсем грустно стало с идеями в автоматизации учета.
57. ildarovich 6994 10.04.14 14:34 Сейчас в теме
(56) Polav, получил сегодня, наконец, Вашу книгу, уже бегло просмотрел. Сказать, что это большой труд - ничего не сказать. Труд просто огромный! - Большое спасибо!
Но вот что заинтересовало: довольно мало работ в списке литературы. Получается, никто в мире этим (подведением математической базы под задачи учета затрат) больше не занимается? - Должны же существовать какие-то научные школы и у нас и за рубежом, направления исследований в этой области. В институте мы проходили модели системной динамики, которые показались мне чем-то похожими на Ваш подход. А Вы с кем-либо контактируете в "научных" кругах? Или ведете исследования в инициативном порядке сами по себе?
58. Polav 31 10.04.14 17:24 Сейчас в теме
(57) Спасибо за положительную оценку " огромного труда".
Список литературы действительно короткий. В нем практически только "фундаментальная" литература, где можно увидеть какие-то интересные идеи.

Можно также посмотреть сайт graphcost.com - тематический портал по теме Графы затрат и Автоматизированная форма учета на основе ООП, уже работает в тестовом режиме
59. Forrest_Gump 25.04.14 13:16 Сейчас в теме
60. ZanZiBar 14.05.14 11:07 Сейчас в теме
Спасибо автору)) И вопрос.

Возможно ли автоматическое задание вершин графа? Что бы была возможность увидеть структуру конфигурации Подобно http://www.mista.ru/dot/amv8.htm Только там необходимо использовать либо дополнительно стороннюю программу, либо подключать внешнюю библиотеку(что весьма проблемно, как показала практика...). Буду благодарен за ответ
61. ildarovich 6994 14.05.14 13:00 Сейчас в теме
(60) ZanZiBar, конечно, возможно. Можно к этой же обработке добавить кнопку "Структура конфигурации" (например, над кнопкой "Номенклатура"). К этой кнопке нужно будет привязать функцию заполнения ребер связей модулей конфигурации. Вот только откуда брать информацию о связи модулей? Я вообще-то хотел такой пример сделать тоже, но тогда не нашел нормальной готовой обработки, которая бы анализировала тексты модулей и строила их связи.
63. ZanZiBar 14.05.14 21:07 Сейчас в теме
(61) У меня есть файлик обработки который выводит связи в языке DOT. Может поможет?
Прикрепленные файлы:
СтруктураКонфигурации.epf
64. ZanZiBar 14.05.14 21:24 Сейчас в теме
(63)+ По крайней мере информацию о связях выводит))) И с помощью сторонней программы (Graphviz) можно построить граф. Но есть нюанс. В минусах зависимость от сторонней программы. Да и строит она если честно... не "айс". Вершины графа залазят друг на друга просто до ужаса. А настройки не позволяют настроить "упругость" связей.
Прикрепленные файлы:
65. ildarovich 6994 15.05.14 22:27 Сейчас в теме
(63) ZanZiBar, обработку посмотрел. Понял, что вас интересовала именно структура объектов метаданных (а не структура модулей конфигурации, как я подумал вначале). Тогда посмотрите комментарий (33). Там есть рисунок. То есть я уже проводил эксперимент для справочников "Розницы". В целом выглядит недостаточно наглядно, несмотря на то, что упругость можно регулировать. В, общем, хотя я и питал определенные надежды, что граф конфигурации, построенный таким образом, выявит какую-то нужную структуру, эксперимент меня разочаровал. Да и число вершин - объектов конфигурации достаточно велико. Область применимости метода (без оптимизации) - десятки вершин, а не сотни. А заниматься сейчас оптимизацией без надежды в конце концов получить красивую картинку как-то не очень хочется.
66. sikuda 620 26.05.14 16:25 Сейчас в теме
Автору большая благодарность за проделанную работу.
Но есть три существенных замечания
1. Благодаря итерационной формуле Герона вычисления квадратного корня у Вас получилось затухание(по физике пружинки с зарядами будут колебаться вечно).
2. Для решения такой системы линейных уравнений есть не только простейший метод Эйлера(используемый Вами внутри 1С запроса), но и другие методы http://www.toehelp.ru/theory/informat/lecture14.html
http://www.uchites.ru/files/nummethod_book_chapter4-1.pdf

Собственно примеры с методом Рунге-Кутта четвертого порядка(спасибо преподавалелям института, что вдолбили)
построение через Canvas - http://jsfiddle.net/sikuda/Gab44/
построение через библиотеку Raphael(можно всунуть в 1С) - http://jsfiddle.net/sikuda/ruLeL/

3. И как видно в приведенных примерах быстродействие 1С проигрывает, причем существенно.
Собственно что у Вас, что для Raphael скорость будет определяться отрисовкой.

То есть вывод 1С не лучший инструмент, который можно использовать для таких задач.
67. Polav 31 04.09.14 12:44 Сейчас в теме
Несколько слов о применении теории графов в методологии учета - в тестовом режиме заработал сайт Графы затрат (graphcost.com).
В частности, в статьях на сайте:

- Процессы в Графах затрат
- Кластеры в Графах затрат

можно посмотреть видеоролики, иллюстрирующие применение интерактивной подсистемы визуализации потоков затрат, представляющей потоки затрат в виде ориентированного графа
69. ildarovich 6994 17.10.14 09:09 Сейчас в теме
В принципе, может. Сейчас на дугах ничего не пишется, но код открыт, там легко рассчитать среднюю точку и вывести туда текст с количеством.
Ну и исходными данными является таблица "Ребра", которая в вашем случае будет содержать три колонки: наименование склада источника (Имя1), наименование склада получателя (Имя2), количество перемещенной номенклатуры (Упругость).
Кнопку на форму положить и процедуру обработки ее нажатия заполнить по аналогии с уже сделанными процедурами - всего и делов-то.
70. Makushimo 155 17.10.14 10:23 Сейчас в теме
(69)
Как именно нужно настроить обработку, чтобы получить отображение в виде дерева такие перемещения:
А - Б = 10
Б - В = 15
В - Г = 25
Г - А = 50

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

И как обработка нарисует граф со встречными потоками? :
А - Б = 10
Б - А = 15
71. ildarovich 6994 17.10.14 10:43 Сейчас в теме
(70) Makushimo, попробуйте все "упругости" поделить на 100 (например). У вас сейчас силы притягивания гораздо больше сил отталкивания и склады сливаются. Встречные движения можно показать либо выражением +10 - 15. Либо разнести тексты по длине дуги (1/3) и (2/3) длины дуги, либо цветом, соответствующим цвету склада, с которого товар уходит. В общем, вариантов масса.
72. Makushimo 155 17.10.14 11:04 Сейчас в теме
(71)
не, не работает
наверное, руки не оттуда растут
78. headMade 142 20.05.15 09:28 Сейчас в теме
подскажите случайно не вы где-то на форуме infostart выкладывали список литературы на тему "Математические методы (модели) расчета себестоимости".
А то я где-то видел в обсуждении какой-то статьи, но сейчас к сожалению найти не могу.
79. ildarovich 6994 20.05.15 10:44 Сейчас в теме
(78) headMade, нет, не делал этого
80. adva 43 08.06.15 08:43 Сейчас в теме
ildarovich, не силён в теории графов, подскажи пожалуйста, в статье имеется граф, подходящий для языка Дракон ( https://ru.wikipedia.org/wiki/%C4%D0%C0%CA%CE%CD )?

И пример оттуда же:



По сути это блок-схема, но строго заданы направления рисования вниз и вправо, и без пересечений.
81. ildarovich 6994 08.06.15 09:55 Сейчас в теме
(80) adva, нет, эта методика вряд-ли подойдет для рисования блок-схем. В блок-схемах блоки располагаются по-другим критериям. Но методов визуализации графов и готовых программ (не на 1С) полным-полно. Можно подобрать и такие, которые подойдут для блок-схем. Наиболее популярным пакетом является опенсорсный пакет GraphViz .
82. davay2000 8 01.07.15 11:25 Сейчас в теме
ну так когда же Вы явите взору народа обещанный "Граф счетов бухгалтерского учета" или "граф по счетам затрат"?

Хотя "граф по счетам затрат" не так интересен(по крайней мере лично для меня) как "общая картина"...
83. ildarovich 6994 01.07.15 11:49 Сейчас в теме
(82) davay2000, тут такая история:
для себя я это давно сделал, но результат работы (получающееся итоговое расположение счетов и связей-проводок) не оправдал моих ожиданий.
Я надеялся, что физическая модель сделает картину счетов наглядной, но в итоге картина получается запутанной, некрасивой и мало чего поясняющей. И очень отличающейся от предприятия к предприятию. Возможно, нужно пробовать еще, настраивать модель, но не придумал пока как это сделать.
То есть по-сути получается, что вершины для наглядности нужно располагать вручную, а не автоматически.
84. davay2000 8 02.07.15 16:57 Сейчас в теме
(83)
печалько.

(в этом месте я глубоко зятянулся и...)

А если сгруппировать активные счета в одну группу, а пассивные в другую(в какую группу определять активно/пассивные - ума не приложу)? Думаю такая группировка могла бы прояснить картинку... а еще есть идея сгруппировать группы счетов по родительским группам(например 101, 111,... в группу 1; 301,311,... в группу 3;...)

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

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

...если представить "оборот товара" схемой "купи/продай/купи2/продай2/купи3/...",
то это соответствует движениям "
[[ДолгПоставщикам/РасходДС/ПоступлениеТовара] / [ДолгКлиентов/ПоступлениеДС/ОтгрузкаТовара]] /
[[ДолгПоставщикам2/РасходДС2/ПоступлениеТовара2] / [ДолгКлиентов2/ПоступлениеДС2/ОтгрузкаТовара2]]/
..."

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

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

еще подумал:
ДолгПоставщикам/ОтгрузкаТовара это сальдо на счетах...
РасходДС/ПоступлениеДС - это движение и к сожалению остатка нет, но их можно объединить: взять просто "остатки на 3 классе счетов в разрезе целевого использования средств"...
вообще - как наглядно на динамическом графе отобразить перемещения части средств с одного узла на другой - это еще один вопрос?
85. ildarovich 6994 03.07.15 12:12 Сейчас в теме
(84) davay2000, не хочется забегать вперед: у меня очень давно есть на тему визуализации оборотов хорошая идея. Проблема в том, что для рисования ее на чистом 1С чуть-чуть не хватает графических примитивов. В 1С обещали реализовать в табличном документе поддержку SVG. Когда это сделается (возможно, осенью?) - покажу этот подход.
Но вообще посмотрите работы Polav. Он толстенную книгу написал на эту тему. Там много информации для размышлений. Ссылки в его комментариях (42), (54), (56), (58) и (67).
90. Steelvan 16.08.15 22:25 Сейчас в теме
(85)

...В 1С обещали реализовать в табличном документе поддержку SVG...

Откуда информация ? Где читать ?
96. ildarovich 6994 17.08.15 10:41 Сейчас в теме
(90) Steelvan, 1С, как правило, не публикует информацию о планах. Почитать не получится. Это слухи. Но из надежных источников.
86. Polav62 283 14.08.15 14:59 Сейчас в теме
(84) Небольшой пример работы с Графами предприятий и Графами затрат можно посмотреть в видеоролике:
Строим Граф затрат в слое бухгалтерского учета

Там есть и варианты построения подсистем визуализации данных учета
87. ildarovich 6994 14.08.15 16:47 Сейчас в теме
(86) Polav62, большое спасибо, ролик посмотрел - очень интересно!
Визуализация - сила!
Подсистема (ЕК - затраты) - уже продается или еще делается?
Для какой конфигурации?
Наверное, стоит о ней сюда статью написать.
89. Polav62 283 15.08.15 15:27 Сейчас в теме
88. Polav62 283 14.08.15 20:52 Сейчас в теме
Еще в 2008-2010 годах была сделана.
Как модуль контроллинга для 1С Бухгалтерия (экспериментировали и в УПП и др.)
Но, видно тогда время еще не пришло. Да и 1С тогда напряглась, реальные инновации никому не нужны.
Проблема в том, что в основу заложена теория Графов предприятий (и Графов затрат), а ее нужно изучать
(не говоря уже о том, что ее нужно еще и создавать по многим разделам).
Предлагали разработчикам РАУЗ (она тогда только создавалась) хотя бы визуализацию сделать. Отказались.
Сейчас используется как инструмент методолога для создания моделей предприятий.
91. Steelvan 16.08.15 22:46 Сейчас в теме
(88) Polav62,

Как пощупать можно ?
92. Polav62 283 17.08.15 09:11 Сейчас в теме
(91) Steelvan, пока только в видеороликах.
Когда появится спрос на такие продукты, вернемся к актуализации коммерческой версии.
А пока - специалистов по Графам предприятий нет (и не предвидится) - нет и спроса на решение таких задач.
93. Steelvan 17.08.15 09:50 Сейчас в теме
(92) Polav62,

Тогда смысл ?

Посмотрите на мои 22 см ?
94. Steelvan 17.08.15 09:53 Сейчас в теме
Если возможности продать нет, пустите в массы бесплатно.

Просто жалко вашу работу. Объем проделан и на полку ? Трудно мне понять.
95. Polav62 283 17.08.15 10:25 Сейчас в теме
(94) Steelvan, здесь не все так просто.

Для того, чтобы пустить в массы, нужно, чтобы они понимали с чем имеют дело. Глупо просто так кликать мышкой и картинки смотреть, не понимая смысла происходящего.
Работа не пропадет, просто сейчас нужно в массы запустить теорию Графов предприятий. Нужно показать - какие задачи и как можно решать на Графах предприятий.
Для этого создан проект - сайт graphcost.com + книга Графы затрат. Моделирование в микроэкономике (2014) + модуль ЕК-Затраты

А то, что продукт на основе теории Графов предприятий пойдет (и не только этот), нет сомнения. Всему свое время.
Самое интересное, что и сейчас абсолютно все(!) работают с Графами предприятий (двойная запись) и Графами затрат (например - РАУЗ).
Просто этого НЕ ЗАМЕЧАЮТ. Печалька. Вот когда заметят - тогда все и начнется. Это очень хороший стартап.
97. ildarovich 6994 24.08.15 13:16 Сейчас в теме
(95) Polav62, купил по случаю вот такую книжку:
Г.Ф. Чергецкая "Модели объектов бухгалтерского учета"..
Модели в этой книге - это графы.
Прикрепленные файлы:
doc01310120150824111836.pdf
graphbuh; +1 Ответить
98. Polav62 283 24.08.15 14:04 Сейчас в теме
(97) ну не могут же бесконечно игнорироваться очевидные вещи - в нашем случае, "наличие" графов в бухгалтерском (и любом другом) учете.
Правда, название книги "немного" не соответствует ее содержанию. Скорее всего, автор увлечена этой темой и предполагает ее развивать в дальнейшем.
А пока такое название можно рассматривать как аванс на будущие успехи автора.
99. d.zhukov 661 09.11.15 07:13 Сейчас в теме
Руководство вторую неделю просит отчет по дебиторке сделать... дам им лучше эту обработку, пусть снежинки рисуют..))
100. Polav62 283 16.11.15 12:40 Сейчас в теме
;)

- Вот... дали за ударную работу ... Микроскоп
- Для чего он тебе?
...
- Луну будем разглядывать!

(В.Шукшин "Микроскоп")


"Снежинки" тоже бывают очень полезны в определенных случаях:

Граф предприятия - "связанные" объекты учета
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    28452    9    tormozit    44    

Краткое руководство по внесению изменений в конфигурацию

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.01.2020    13054    17    sapervodichka    41    

Полезные процедуры и функции для программиста

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

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

1 стартмани

07.10.2019    24745    13    HostHost    40    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    15578    11    Dementor    29    

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    16534    4    m-rv    86    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    18638    20    Stepa86    44    

Процедура ПриКомпоновкеРезультата

Практика программирования v8 1cv8.cf Абонемент ($m)

Коллекция кода

1 стартмани

26.07.2019    28969    13    vasilev2015    57    

1С:Ассемблер. Немного летнего веселья!

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

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

1 стартмани

21.06.2019    23870    75    Evil Beaver    117    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    26696    86    m-rv    57    

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

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

12.06.2019    25099    19    Hatson    22    

Баг или фича? Неожиданное поведение платформы

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

Рассмотрим несколько случаев неожиданного поведения платформы 1С, а также что с этим можно cделать.

18.02.2019    20060    0    YPermitin    89    

HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX

Универсальные обработки Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Тестируем возможности HTML в новой версии 8.3.14 платформы на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX.

1 стартмани

29.01.2019    24618    87    Synoecium    46    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    24180    19    mvxyz    17    

Отладка сложных отчетов на СКД

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

Расширение для отладки сложных отчетов на СКД (в т.ч. для собираемых программно "на лету") и быстрого перехода к отладке таких отчетов в консоли запросов и отчетов на СКД.

1 стартмани

28.12.2018    23256    83    maxx    58    

Реализация простого http-сервиса "Просмотр карточки номенклатуры(товара) в браузере"

Практика программирования v8 1cv8.cf Абонемент ($m)

Практический пример реализации простого http-сервиса средствами 1С Предприятие 8.3. Обеспечивает просмотр списка товаров и просмотр данных товара в браузере.

1 стартмани

07.12.2018    19914    15    dmitry1975    32    

Использование подсистемы БСП "Заполнение объектов"

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

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    22396    12    ids79    23    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    23836    61    vasvl123    9    

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    28758    45    dsdred    13    

HTTP Сервисы: Путь к своему сервису. Часть 1

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    68816    23    dsdred    24    

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

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    26456    11    SITR-utyos    13    

Работа с публикациями "Инфостарт" Промо

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    17235    12    RocKeR_13    16    

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    39592    33    dsdred    36    

Работа со схемой запроса

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    39646    83    kalyaka    34    

Асинхронная запись и чтение файла без использования модальных методов и временных файлов

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

10.04.2018    25385    19    Alxby    23    

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

Практика программирования v8 УПП1 Россия Абонемент ($m)

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

2 стартмани

08.05.2018    24498    8    wowik    3    

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула

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

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    34576    27    agent00mouse    0    

Практика доступа в базу 1С через протокол oData. Чтение данных

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

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    83135    294    Dementor    44    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

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

1 стартмани

06.12.2017    24018    49    kwazi    6    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции Промо

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    24238    25    informa1555    26    

Простой бесплатный DashBoard с помощью http сервиса

Практика программирования v8 Абонемент ($m)

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

1 стартмани

25.11.2017    50865    62    dewersia    32    

Полезный код для программистов 1С (часть 1). Управление свойствами элементов формы. Хранение копии данных реквизитов

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

У каждого программиста за время работы накапливается полезный инструментарий, которым он привык пользоваться. Естественно и у меня он тоже имеется. И вот решено было немного поделиться с сообществом. Возможно идеи не новые. Более того, допускаю, что реализованы они не самым оптимальным образом. Но ведь для этого сообщество и существует, чтобы делиться с ним, получая обратную связь.

1 стартмани

24.09.2017    38693    15    vandalsvq    80    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    27886    126    PLAstic    52    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    43922    36    Demanoidos    60    

Макеты СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

25.07.2017    87738    121    json    27    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    111674    13    signum2009    45    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов

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

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

26.05.2017    46007    15    DarkAn    86    

Работа с данными выбора Промо

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    36908    17    kalyaka    16    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.03.2017    27727    110    romasna    49    

Разбираемся с механизмом Дополнительные отчеты и обработки в БСП

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Чуть более комплексное описание, чем на других ресурсах

1 стартмани

30.10.2016    135189    921    json    65    

Несколько шаблонов для доработки типовых конфигураций

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

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

1 стартмани

03.10.2016    33422    95    json    25    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    46931    32    ildarovich    41    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    51895    7    wowik    29    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

Инструментарий разработчика Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    55426    159    rozer    64    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    49315    19    arakelyan    18    

Простой способ индексирования интервалов Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

28.09.2016    37471    38    ildarovich    22    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    72554    145    igo1    51    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

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

1 стартмани

03.03.2016    15924    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

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

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

1 стартмани

17.02.2016    45036    47    yuraos    17    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    32072    54    rpgshnik    48    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    48684    161    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

16.02.2016    21080    8    Tatitutu    5    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    34971    19    milkers    4    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

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

1 стартмани

06.12.2015    51981    47    YPermitin    19