Правила обмена — как на ладони!


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

Можно ли изучить сложные правила за 15 минут?

Скажите, задумывались ли Вы над тем, как устроены правила обмена? Наверняка задумывались!

И скорее всего даже знаете, что они включают в себя правила выгрузки данных (ПВД), правила конвертации объектов (ПКО), правила конвертации свойств (ПКС и ПКГС) и правила конвертации значений (ПКЗ).

А еще в них есть правила очистки данных, алгоритмы, запросы, параметры конвертации, дополнительные обработки и большое количество обработчиков событий.

В самом простом случае правила можно представить так: правило выгрузки данных вызывает правило конвертации и передает ему выгружаемый объект. Правило конвертации по правилам конвертации свойств передает его свойства (реквизиты) другим правилам конвертации объектов или правилам конвертации значений. В результате этих вызовов формируется файл xml.

И это самый простой вариант!

А теперь представьте себе более сложные правила. Такие например, как правила обмена «Управление торговлей, ред. 1.1 → Бухгалтерия предприятия, ред. 3.0». Структура  конфигураций значительно различается. Большое количество параметров, общих алгоритмов и запросов. Многочисленные варианты настройки…

И понять, что же представляют собой эти правила, становится уже не так просто…

Дело в том, что правила могут быть вызваны по — разному. Например, в ПВД можно указать по какому именно ПКО будет выгружаться переданный объект (указав его в реквизите «Правило конвертации»). А можно в обработчике «Перед выгрузкой» или «При выгрузке» в зависимости от каких — либо условий определить значение переменной ИмяПКО, которому он должен быть передан или вызвать функцию ВыгрузитьПоПравилу(). А этих условий может быть не один и даже не два…

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

И вот представьте себе, как Вы изучаете простыни кода, пытаясь найти эти вызовы и понять — как выполняется преобразование объекта. Представили? А теперь — забудьте!

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

Представлю Вашему вниманию маленькую, но очень полезную обработку «Навигатор правил обмена», которая позволяет выявлять следующие взаимосвязи:

1. Для ПВД, ПКС указано ПКО.
2. Для ПКС не указано ПКО, выполняется подбор подходящего правила по типу источника и приемника.
3. Выполняется вызов функции ВыгрузитьПоПравилу().
4. Переменной ИмяПКО присваивается значение в одном из обработчиков событий.

Эта обработка очень проста в использовании — нужно указать правила обмена и нажать кнопку «Сформировать». После того, как будет выполнен анализ вызовов (может выполняться довольно долго)  она сформирует дерево правил.

Дерево правил

Дерево правил — основной инструмент обработки. Оно предназначено для отображения структуры вызовов и позволяет перейти к конкретному элементу правил (ПВД, ПКО, ПКС, ПКГС, ПКЗ, параметрам, алгоритмам и запросам) или открыть общую форму «Настройка правил обмена данными» с отбором по текущему правилу и элементу правил.

Более того, обработка покажет и способ, по которому вызывается конкретное правило!

Вам «в наследство» достались сложные правила обмена, и понять логику предыдущего программиста сложно? Тогда эта обработка предназначена именно для Вас!

Вы открываете свои правила, в которые не заглядывали год и пытаетесь вспомнить что имелось в виду, когда писался алгоритм? «Навигатор правил обмена»  моментально поможет Вам вспомнить все!

И еще одна маленькая, но в некоторых случаях очень полезная возможность. Если в текущей строке дерева содержится ПКО, то контекстное меню будет содержать команду "Установить отбор по текущему значению". С помощью этой кнопки можно быстро отфильтровать все вхождения в дерево этого ПКО (с учетом подчиненных и родительских строк).

Отбор по ПКО Результат отбора

Скачайте обработку и изучите правила с которыми Вы работаете сейчас!

Открывайте и редактируйте правила прямо из обработки, когда Вы точно знаете — откуда они были вызваны! Сэкономьте время и нервы!

P.S. Я буду очень рад любым замечаниям и предложениям, которые смогут улучшить этот инструмент, повысить его производительность и удобство.

 

 Изменения в релизах

Версия 2.2 от 30.03.2024

  1. Изменения в отображении ПКС в дереве вызовов:
    1. Добавлена сортировка по порядку родителя и порядку ПКС,
    2. Правила, по которым выполняется поиск, выделяются жирным шрифтом.
  2. Исправлены выявленные ошибки.

Версия 2.0 от 14.01.2024

  1. Переработан анализ поиска ссылок на объекты правил с использованием регулярных выражений.
  2. Снижено потребление оперативной памяти.
  3. Исправлены выявленные ошибки.

76 Comments

  1. Yashazz

    Йессс, наконец-то это кто-то сделал, ура!

    Идея была примерно та же, но нужды крайней не случилось. Спасибо, нужная и хорошая вещь!

    Reply
  2. Yimaida

    Обработка полезная, спору нет. Только вот, что то она не отображает все обработчики событий. Например, в ПКО документа «После загрузки» есть, а «При загрузке» — нет, или перед выгрузкой в ПКС.

    Reply
  3. echo77

    Сейчас посмотрим. Плюсую

    Reply
  4. echo77

    (0) Непонятно почему ПКО номенклатура со способом вызова ВыгрузитьПоПравилу попала в дереве в ПВД Путевой лист

    Reply
  5. tomvlad

    (2) Отображаются не все обработчики событий, а только те, в которых были найдены вызовы. Обработчик «При загрузке» для ПКО действительно не обрабатывался, исправлю.

    (4) Спасибо, действительно нужно еще поработать над алгоритмом.

    Reply
  6. comol

    Респект

    Reply
  7. Raminus

    Надо будет посмотреть, а так плюсую авансом!

    Reply
  8. orehova123

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

    Reply
  9. orehova123

    Тоже плюсую авансом, так как считаю задумку очень полезной

    Reply
  10. serezhick

    наконец-то!!!

    Reply
  11. Yimaida

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

    Reply
  12. tomvlad

    (11) Yimaida, закоменнтированные вызовы и не должны попасть, в запросе на это есть условие:

    |  ИЛИ (» + ИмяСправочника + «.» + ИмяРеквизита + » ПОДОБНО «»%[#k8SjZc9Dxk/][#k8SjZc9Dxk/]» + УсловиеСвязи + «)» 

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

    Reply
  13. tomvlad

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

    Вот Александр (3) привел скриншот, привел фрагмент кода — замечательно, ошибка найдена и уже исправлена.

    Почему бы и Вам не поступить подобным образом?

    Reply
  14. Yimaida

    Владислав, а что покажет скриншот Вашей обработки запущенной на моих ПОД? Не видя самих ПОД скриншот ничего не даст, и даже кусок кода из моего обработчика (это я уже утрирую, конечно).

    Тянуть клещами ничего не надо. Если обработка выложена «as is», то не воспринимайте мои комментарии, как наезд и т.п. Ничего личного.

    Reply
  15. yuraskas

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

    Reply
  16. tomvlad

    (16) yuraskas, скорее всего Вы видите разные объекты — сначала показано ПВД «Физические лица», а затем — ПКО «Физические лица», которое уже вызывает ПКС. Убедиться в этом можно с помощью шрифта — для строк, в которых выводятся ПКО он жирный.

    Reply
  17. yuraskas

    да, действительно. Спасибо за ответ.

    Reply
  18. Ламия

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

    Reply
  19. tomvlad

    (19) Ламия, абсолютно все равно. Правда алгоритмы в 7.7 вызываются по-другому и эти вызовы пока не обрабатываются. Доработаю в ближайшее время.

    Reply
  20. Ламия

    Жаль, а то пытаюсь сваять правила из 8ки в 7ку, надеялась Ваша обработка поможет существенно.

    Reply
  21. Stim213

    Отличная обработка, только она не сработает, например, при редактировании штатных правил обмена ЗУП-БП 3.0.

    Разработчики придумали ход конем, обработка загрузки данных в 3.0 вызывает универ обмен данными XML в режиме отладки и заменяет обработчики ПКО кодом из обработки ОбработчикиЗагрузкиИзЗУП25. В результате, как ни исправляй правила обмена в выгрузке — обработчики всегда будут те, которые прописаны в 3.0. Имхо, это очередная заплатка разрабов типовых решений, котрую нужно искоренять

    Reply
  22. killitch

    Спасибо! Пригодится, будем следить за обновлениями.

    Reply
  23. tomvlad

    (21) Ламия, добавил анализ вызовов алгоритмов из 1С:Предприятия 7.7

    Reply
  24. Yimaida

    (22) Stim213, Это сделано для защиты от кода, который может быть загружен через ПОД.

    Reply
  25. alex15650

    При открытии обработки пишет ошибку «Поле объекта не обнаружено (ТипыОбъектов)»

    Reply
  26. tomvlad

    (26) alex15650, обработка предназначена для использования ТОЛЬКО с конфигурацией 1С:Конвертация данных!

    Reply
  27. alex15650

    (27) а, понял, спасибо )

    Reply
  28. rosinfo1

    Так и не понял как это работает. В описании не сказано что для конфигурации КД и для какого релиза КД. У меня установлена КД 2.0.28.1. Правила нужно предварительно загружать в конфигурацию КД или нет? У поля ПравилаОбмена тип «строка» и отсутствует обработчик НачалоВыбора. Неудобно выбирать файл из каталога на диске. Скопировал туда путь «F:Правила конвертации.xml» получил ошибку

    {Форма.Форма.Форма(741)}: Ошибка при вызове метода контекста (ВыбратьИерархически)

    ВыборкаПВД = Справочники.ПравилаВыгрузкиДанных.ВыбратьИерархически(, ПравилаОбмена,, «Порядок»);

    по причине:

    Несоответствие типов (параметр номер ‘2’)

    Юзербилити не проработано. Не хватает универсальности под любую конфу.

    Reply
  29. tomvlad

    (29) rosinfo1, подскажите пожалуйста, что именно вызвало трудности в понимании того, как используется эта обработка?

    В описании публикации указана конфигурация, для использования в которой предназначена обработка. Это — 1С:Конвертация данных.

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

    Извините, я не знаю слова «юзербилити». Если Вы имеете в виду слово «Юзабилити», то что именно не проработано?

    Reply
  30. Famza

    (0) Надо попробовать

    Reply
  31. rosinfo1

    (30) Спасибо все получилось. Мои трудности скорее всего связаны с тем, что я редко использую КД 2.0, в основном правила обмена исправляю через AKXMLEdit или XMLNotepad. Через Ctrl+F нахожу нужный мне блок и работаю с ним(возможно кто-то посчитает это мазохизмом). Поэтому правила храню в отдельных файлах на диске, открываю через Меню/Файл/Открыть. Думал, что в этой обработке такой же интерфейс и не зависимость от запущенной КФГ.

    Reply
  32. Famza

    (0) Не получилось за 15 минут изучить сложные правила — ошибка, однако: Память всю сожрала обработка )))

    Ось вин ХР, планка ОЗУ стоит 4Г, КД 2.1.8.1, ПОД — типовые для УПП «Правила переноса данных из типовой конфигурации «Бухгалтерский учет», редакции 4.5 для 1С:Предприятия 7.7».

    Reply
  33. Famza

    (0) Может сделать возможность выбора просмотра правил и формировать дерево просмотра правил по отобранным?

    Reply
  34. Shrek2015

    хорошая штуковина!

    Reply
  35. Rustig

    спасибо!

    Reply
  36. AVK_Alex

    Ставлю плюс уже только за идею! А сам механизм «будем посмотреть»…

    Reply
  37. karakozov

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

    Reply
  38. Pride82

    Как я понял эта обработка только для того чтобы «почитать» и «посмотреть» правила?

    Возможно ли редактирование какого нибудь проблемного места в правилах?

    Reply
  39. tomvlad

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

    Reply
  40. Pride82

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

    Reply
  41. shira84

    (105) Gazza, да я считаю это мазохизмом.

    Reply
  42. smir

    Надо попробывать

    Reply
  43. newold2

    Мне понравилось. Плюс.

    Reply
  44. alexandr_astafiev

    Грузил стандартный перенос из 1С 7.7 Бухгалтерия 4.5 в 1С 8.2 Бухгалтерия 2.0 Запускал обработку в 1С 8.2 Конвертация 2.1.8.1 Оказалось недостаточно памяти для загрузки такой конвертации в обработку даже на корпоративном сервере Сервер правда не «упал» но программа 1С Конвертация вылетела Что то не так с этой обработкой

    Reply
  45. tomvlad

    (45) alexandr_astafiev, да все очень просто. При анализе вызовов выполняется пакетный запрос. И все бы ничего, но в одном из запросов пакета есть объединение из более чем 200 запросов. Если правила небольшие, то проблем, как правило не возникает. Для правил «развестистых» уже могут быть варианты…

    Конечно, нужно бы оптимизировать запрос. Если у вас есть желание — займитесь, результатами этого потом с удовольствием воспользуются другие (и я в том числе).

    Если желания нет — используйте 64-х разрядную систему. Падать не будет.

    Reply
  46. alexandr_astafiev

    Когда мой домашний и рабочий компы где по 2 Гбайта памяти не потянули я не очень удивился Но корпоративный сервер терминалов он нормальный современный http://clip2net.com/s/6mYWE7 Единственный вариант что захожу на сервер терминально и может где то ограничение на объем доступной памяти срабатывает Хотя права у меня вроде бы админские Я 1С занимаюсь а системный администратор у нас другой человек Во всяком случае пока каких то ограничений в правах не замечал Так что попробую конечно глянуть запросы Напишу что получилось

    Reply
  47. IgorXml

    У меня правила для УПП. На работе Windows XP 32 3 Гб ОЗУ. После 20 минут — «Нехватка памяти». Но для мелких правил ОК.

    Reply
  48. hunterok

    В УНФ для Украины не работает. При подключении дополнительной обработки, ошибка «Метод объекта не обнаружен (СведенияОВнешнейОбработке)»

    Reply
  49. tomvlad

    (49) hunterok, в некоторых случаях помогает чтение описания.

    Reply
  50. hunterok

    (50) Я извиняюсь, просто не сразу въехал в суть. Проверил, все работает. Только оперативки ест не мало.

    Reply
  51. dufrein

    Возможно уменьшить количество съедаемой оперативной памяти?

    Reply
  52. tomvlad

    (52) dufrein, конечно возможно. См. здесь (46)

    Reply
  53. Sevift

    И зачем я это скачал и денег с меня сняли?

    {Форма.Форма.Форма(1615)}: Поле объекта не обнаружено (ТипыОбъектов)

    СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.Справочник , 36);

    Reply
  54. Bukaska

    Специалисты ещё не перевелись)))

    (54) Sevift, А вы на какой конфе пытаетесь открывать?

    Reply
  55. soba

    Мертвая ссылка на «Сравнение и объединение правил регистрации объектов»

    Reply
  56. h00k

    (56) soba,

    Мертвая ссылка на «Сравнение и объединение правил регистрации объектов»

    Данный функционал включен в конфигурацию конвертация данных 2.0.

    Reply
  57. tomvlad

    (56) Обработка «Сравнение, объединение правил регистрации» была временно снята с продажи, т.к. готовится к выпуску дополнение к конвертации «1С:Конвертация данных, ред. 2.1», включающее и ее, и ряд других интересных механизмов, существенно облегчающих разработку правил. С сожалению, выпуск дополнения переносится ближе к концу года, поэтому обработка «Сравнение, объединение правил регистрации» была возвращена в интернет-магазин Инфостарта.

    (57) Вы ошибаетесь, типовая конфигурация «1С:Конвертация данных» не содержит инструментов для выполнения сравнения и объединения правила регистрации. Единственный инструмент здесь.

    Reply
  58. b-dm

    Обработка не заработала на Комплекскной автоматизации 1.1. Жаль потраченного стартмани 🙂

    Reply
  59. tomvlad

    (59) Обработка предназначена для работы в конфигурации 1С:Конвертация данных, ред. 2.1, о чем недвусмысленно говорится на странице публикации. Причем здесь 1С:Комплексная автоматизация?

    Reply
  60. b-dm

    (60) — сорри, протупил или пропустил 🙂 Спасибо за замечание по делу, на следующей неделе проверю.

    Reply
  61. b-dm

    Да, потверждаю обработка работает великолепно на конфигурации «Конвертация данных 2.1»

    Reply
  62. sysline

    Скажите, на КД 3.0 будет работать?

    Через файл отрыть в режиме предприятия открываю и вижу пустую форму…

    Reply
  63. tomvlad

    (63) Обработка предназначена для использования с конфигурацией 1С:Конвертация данных, ред. 2.1

    Reply
  64. acanta

    Комп выдал Недостаточно памяти (на автоматически созданных правилах КА1)

    Reply
  65. tomvlad

    (65) Скоро будет выпущена новая версия, в которой вместо запросов будут использоваться регулярные выражения. Это позволит существенно повысить быстродействие и снизить объем ОЗУ, потребляемый приложением (даже на правилах для «тяжелых» конфигураций).

    Reply
  66. tomvlad

    Выпущена новая версия — 2.0.

    Список изменений:

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

    2. Снижено потребление оперативной памяти.

    3. Исправлены выявленные ошибки.

    Reply
  67. 1cprogr_nsk

    А для чего это всё? В КД и так всё понятно. в чем плюсы то?

    Reply
  68. tomvlad

    (69) Этот инструмент предназначен для анализа и работы со сложными правилами обмена для которых «и так все понятно» сказать никак нельзя. Но их можно использовать и для работы с относительно простыми правилами.

    Во вложении небольшой пример относительно сложных правил.

    Reply
  69. echo77

    (0) Было бы еще лучше, если бы ПКС поиска выделялись жирным в дереве или еще каким-то образом

    Reply
  70. tomvlad

    (70) Интересная мысль, спасибо, подумаю.

    Reply
  71. VLRomanTim

    «Вы можете получить инструмент, который наглядно отобразит все связи и вызовы, по которым происходит преобразование данных. И вдобавок — абсолютно бесплатно!» — 2 Стартмани, это по вашему бесплатно?)

    Reply
  72. tomvlad

    (70) Добавил выделение ПКС, по которым выполняется поиск с помощью полужирного шрифта.

    Reply
  73. echo77

    (72) Если вы «в теме» (разработчик, который хоть сколь полезные вещи выкладывает) — то практически бесплатно 🙂

    Не жидитесь — выложенная вещь стоит намного дороже, чем за нее просит автор 🙂

    Reply
  74. tomvlad

    (72) Во-первых, Роман, первая версия этой обработки была опубликована, когда 1$m практически ничего не стоил, а заработать его можно было, сделав, к примеру несколько комментариев на форуме.

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

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

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

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

    Поэтому — да, я считаю, что 2$m (даже с учетом текущего курса) — это бесплатно.

    Reply
  75. VLRomanTim

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

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

    В любом случае, спасибо за вашу работу и отзыв на мой комментарий.

    Reply
  76. eeeio

    А откуда можно скачать версию 2.2?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *