gifts2017

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

Опубликовал Владислав Томашевич (tomvlad) в раздел Обмен - Обмен через XML

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

Скажу несколько слов об инструменте, который поможет Вам работать с правилами регистрации. Это — обработка «Сравнение и объединение правил регистрации объектов». Она найдет отличия в 2 (или более!) правилах регистрации. Позволит объединить как отдельные составляющие правил, так и только их конкретные реквизиты. Сэкономит до 100% времени и более на поддержке.

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

Наименование Файл Версия Размер
Навигатор по правилам обмена 897
.epf 41,30Kb
31.10.13
897
.epf 1.0 41,30Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Яков Коган (Yashazz) 13.08.13 13:58
Йессс, наконец-то это кто-то сделал, ура!

Идея была примерно та же, но нужды крайней не случилось. Спасибо, нужная и хорошая вещь!
2. Павел (Yimaida) 14.08.13 02:08
Обработка полезная, спору нет. Только вот, что то она не отображает все обработчики событий. Например, в ПКО документа "После загрузки" есть, а "При загрузке" - нет, или перед выгрузкой в ПКС.
3. Александр Крынецкий (echo77) 14.08.13 08:04
Сейчас посмотрим. Плюсую
4. Александр Крынецкий (echo77) 14.08.13 08:23
(0) Непонятно почему ПКО номенклатура со способом вызова ВыгрузитьПоПравилу попала в дереве в ПВД Путевой лист
Прикрепленные файлы:
Код.html
5. Владислав Томашевич (tomvlad) 14.08.13 08:36
(2) Отображаются не все обработчики событий, а только те, в которых были найдены вызовы. Обработчик "При загрузке" для ПКО действительно не обрабатывался, исправлю.
(4) Спасибо, действительно нужно еще поработать над алгоритмом.
6. Олег Филиппов (comol) 14.08.13 09:33
7. Роман (Raminus) 14.08.13 09:46
Надо будет посмотреть, а так плюсую авансом!
8. Галина Орехова (orehova123) 14.08.13 09:54
Посмотрю, спасибо. Тоже плюсую авансом, так как задумка очень полезная
9. Галина Орехова (orehova123) 14.08.13 09:56
Тоже плюсую авансом, так как считаю задумку очень полезной
10. Серега (serezhick) 14.08.13 09:56
11. Павел (Yimaida) 14.08.13 11:01
(5) Да нет. Я же не привел весь список обработчиков событий. Я указал для примера, то что у меня в правилах явно (закомментированные, кстати, тоже не попадают) используется.
12. Владислав Томашевич (tomvlad) 14.08.13 11:24
(11) Yimaida, закоменнтированные вызовы и не должны попасть, в запросе на это есть условие:

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


Обработчик "Перед выгрузкой" для ПКС нормально обрабатывает вызовы, проверил.
13. Павел (Yimaida) 14.08.13 11:30
(12) Если Вы считаете, что в обработке все отрабатывает как надо, то я спорить не собираюсь. Вы выложили обработку - я написал, то что не работает у меня. Если бы Вы были нацелены конструктивно, то попросили бы мои правила посмотреть. А так уперлись, что так и надо. Надо так надо.
14. Владислав Томашевич (tomvlad) 14.08.13 11:49
(13) Зря Вы Павел так реагируете. Вы сообщаете об ошибке, я пытаюсь понять - в чем она заключается. То что Вы не приводите дополнительной информации, позволяющей диагностировать ошибку, конечно плохо. Но ведь я не могу тянуть ее из Вас клещами, не правда ли? То что мог, я проверил, ошибку не нашел, о чем и написал.

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

Почему бы и Вам не поступить подобным образом?
15. Павел (Yimaida) 14.08.13 12:21
Владислав, а что покажет скриншот Вашей обработки запущенной на моих ПОД? Не видя самих ПОД скриншот ничего не даст, и даже кусок кода из моего обработчика (это я уже утрирую, конечно).
Тянуть клещами ничего не надо. Если обработка выложена "as is", то не воспринимайте мои комментарии, как наезд и т.п. Ничего личного.
16. yuraskas Рупышев (yuraskas) 14.08.13 12:47
Конечно плюс. Но у меня дублируются объекты в дереве (напр. спр. физические лица, открываешь еще раз физические лица, потом уже идут правилаконвертациисвойств).
17. Владислав Томашевич (tomvlad) 14.08.13 12:56
(16) yuraskas, скорее всего Вы видите разные объекты - сначала показано ПВД "Физические лица", а затем - ПКО "Физические лица", которое уже вызывает ПКС. Убедиться в этом можно с помощью шрифта - для строк, в которых выводятся ПКО он жирный.
18. yuraskas Рупышев (yuraskas) 14.08.13 13:13
да, действительно. Спасибо за ответ.
19. Ламия 14.08.13 13:20
Позволит ли данная обработка работать с правилами выгрузки из 8ки в 7ку? Я верно полагаю, что ей все равно какие правила обрабатывать?
20. Владислав Томашевич (tomvlad) 14.08.13 13:20
(19) Ламия, абсолютно все равно. Правда алгоритмы в 7.7 вызываются по-другому и эти вызовы пока не обрабатываются. Доработаю в ближайшее время.
21. Ламия 14.08.13 13:53
Жаль, а то пытаюсь сваять правила из 8ки в 7ку, надеялась Ваша обработка поможет существенно.
22. Павел Колмаков (Stim213) 14.08.13 13:57
Отличная обработка, только она не сработает, например, при редактировании штатных правил обмена ЗУП-БП 3.0.
Разработчики придумали ход конем, обработка загрузки данных в 3.0 вызывает универ обмен данными XML в режиме отладки и заменяет обработчики ПКО кодом из обработки ОбработчикиЗагрузкиИзЗУП25. В результате, как ни исправляй правила обмена в выгрузке - обработчики всегда будут те, которые прописаны в 3.0. Имхо, это очередная заплатка разрабов типовых решений, котрую нужно искоренять
bovka; Ganjubas; ekomova; Now; Rustig; +5 Ответить 1
23. Илья Илья (killitch) 14.08.13 13:59
Спасибо! Пригодится, будем следить за обновлениями.
24. Владислав Томашевич (tomvlad) 14.08.13 15:15
(21) Ламия, добавил анализ вызовов алгоритмов из 1С:Предприятия 7.7
25. Павел (Yimaida) 14.08.13 16:18
(22) Stim213, Это сделано для защиты от кода, который может быть загружен через ПОД.
26. Александр Фомин (alex15650) 15.08.13 10:34
При открытии обработки пишет ошибку "Поле объекта не обнаружено (ТипыОбъектов)"
27. Владислав Томашевич (tomvlad) 15.08.13 10:40
(26) alex15650, обработка предназначена для использования ТОЛЬКО с конфигурацией 1С:Конвертация данных!
28. Александр Фомин (alex15650) 15.08.13 10:53
(27) tomvlad, а, понял, спасибо )
29. Росинфо 1 (rosinfo1) 18.08.13 00:41
Так и не понял как это работает. В описании не сказано что для конфигурации КД и для какого релиза КД. У меня установлена КД 2.0.28.1. Правила нужно предварительно загружать в конфигурацию КД или нет? У поля ПравилаОбмена тип "строка" и отсутствует обработчик НачалоВыбора. Неудобно выбирать файл из каталога на диске. Скопировал туда путь "F:\Правила конвертации.xml" получил ошибку
{Форма.Форма.Форма(741)}: Ошибка при вызове метода контекста (ВыбратьИерархически)
ВыборкаПВД = Справочники.ПравилаВыгрузкиДанных.ВыбратьИерархически(, ПравилаОбмена,, "Порядок");
по причине:
Несоответствие типов (параметр номер '2')
Юзербилити не проработано. Не хватает универсальности под любую конфу.
30. Владислав Томашевич (tomvlad) 19.08.13 08:54
(29) rosinfo1, подскажите пожалуйста, что именно вызвало трудности в понимании того, как используется эта обработка?

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

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

Извините, я не знаю слова "юзербилити". Если Вы имеете в виду слово "Юзабилити", то что именно не проработано?
Прикрепленные файлы:
31. Иван Иванов (Famza) 19.08.13 11:24
32. Росинфо 1 (rosinfo1) 19.08.13 11:36
(30) tomvlad, Спасибо все получилось. Мои трудности скорее всего связаны с тем, что я редко использую КД 2.0, в основном правила обмена исправляю через AKXMLEdit или XMLNotepad. Через Ctrl+F нахожу нужный мне блок и работаю с ним(возможно кто-то посчитает это мазохизмом). Поэтому правила храню в отдельных файлах на диске, открываю через Меню/Файл/Открыть. Думал, что в этой обработке такой же интерфейс и не зависимость от запущенной КФГ.
33. Иван Иванов (Famza) 19.08.13 12:16
(0) Не получилось за 15 минут изучить сложные правила - ошибка, однако: Память всю сожрала обработка )))
Ось вин ХР, планка ОЗУ стоит 4Г, КД 2.1.8.1, ПОД - типовые для УПП "Правила переноса данных из типовой конфигурации «Бухгалтерский учет», редакции 4.5 для 1С:Предприятия 7.7".
Прикрепленные файлы:
34. Иван Иванов (Famza) 19.08.13 12:32
(0) Может сделать возможность выбора просмотра правил и формировать дерево просмотра правил по отобранным?
35. Shrek Shrek (Shrek2015) 19.08.13 14:26
36. г. Казань Рустем Гумеров (Rustig) 26.08.13 07:25
37. Алексей Карвацкий (AVK_Alex) 30.08.13 10:48
Ставлю плюс уже только за идею! А сам механизм "будем посмотреть"...
38. Владимир Каракозов (karakozov) 03.09.13 11:11
Весьма полезный инструментик.Не до конца понятно его прикладное применение, но выглядит занятно.
39. Валерий Маркевич (Pride82) 04.09.13 13:41
Как я понял эта обработка только для того чтобы "почитать" и "посмотреть" правила?
Возможно ли редактирование какого нибудь проблемного места в правилах?
40. Владислав Томашевич (tomvlad) 05.09.13 12:38
(39) Pride82, чтобы открыть правило достаточно щелкнуть по нему мышкой или с помощью контекстного меню перейти к форме настройки правил (при этом будет позиционирование на текущее правило).
41. Валерий Маркевич (Pride82) 06.09.13 10:26
Интересно. Вот бы еще развернутую справку добавить с наглядными примерами работы с правилами и с событиями правил, вообще бы цены не было.
42. Александр Ширипов (shira84) 10.09.13 08:43
(105) Gazza, да я считаю это мазохизмом.
43. smir (smir) 06.11.13 10:24
44. Алексей Сафонов (newold2) 07.11.13 17:44
45. Александр Астафьев (alexandr_astafiev) 12.12.13 15:15
Грузил стандартный перенос из 1С 7.7 Бухгалтерия 4.5 в 1С 8.2 Бухгалтерия 2.0 Запускал обработку в 1С 8.2 Конвертация 2.1.8.1 Оказалось недостаточно памяти для загрузки такой конвертации в обработку даже на корпоративном сервере Сервер правда не "упал" но программа 1С Конвертация вылетела Что то не так с этой обработкой
46. Владислав Томашевич (tomvlad) 12.12.13 15:36
(45) alexandr_astafiev, да все очень просто. При анализе вызовов выполняется пакетный запрос. И все бы ничего, но в одном из запросов пакета есть объединение из более чем 200 запросов. Если правила небольшие, то проблем, как правило не возникает. Для правил "развестистых" уже могут быть варианты...

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

Если желания нет - используйте 64-х разрядную систему. Падать не будет.
47. Александр Астафьев (alexandr_astafiev) 12.12.13 16:31
Когда мой домашний и рабочий компы где по 2 Гбайта памяти не потянули я не очень удивился Но корпоративный сервер терминалов он нормальный современный http://clip2net.com/s/6mYWE7 Единственный вариант что захожу на сервер терминально и может где то ограничение на объем доступной памяти срабатывает Хотя права у меня вроде бы админские Я 1С занимаюсь а системный администратор у нас другой человек Во всяком случае пока каких то ограничений в правах не замечал Так что попробую конечно глянуть запросы Напишу что получилось
48. Игорь Кащеев (IgorXml) 12.12.13 17:53
У меня правила для УПП. На работе Windows XP 32 3 Гб ОЗУ. После 20 минут - "Нехватка памяти". Но для мелких правил ОК.
49. Андрей Павликовский (hunterok) 16.01.14 19:00
В УНФ для Украины не работает. При подключении дополнительной обработки, ошибка "Метод объекта не обнаружен (СведенияОВнешнейОбработке)"
50. Владислав Томашевич (tomvlad) 16.01.14 23:22
(49) hunterok, в некоторых случаях помогает чтение описания.
Прикрепленные файлы:
51. Андрей Павликовский (hunterok) 16.01.14 23:26
(50) tomvlad, Я извиняюсь, просто не сразу въехал в суть. Проверил, все работает. Только оперативки ест не мало.
52. GeorgPolymer GP (dufrein) 27.01.14 14:23
Возможно уменьшить количество съедаемой оперативной памяти?
53. Владислав Томашевич (tomvlad) 27.01.14 14:38
(52) dufrein, конечно возможно. См. здесь (46)
54. Сергей Федунов (Sevift) 20.06.14 16:11
И зачем я это скачал и денег с меня сняли?
{Форма.Форма.Форма(1615)}: Поле объекта не обнаружено (ТипыОбъектов)
СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.Справочник , 36);
55. Елена Пименова (Bukaska) 20.06.14 16:53
Специалисты ещё не перевелись)))
(54) Sevift, А вы на какой конфе пытаетесь открывать?
56. soba (soba) 24.04.15 03:06
Мертвая ссылка на «Сравнение и объединение правил регистрации объектов»
57. Андрей (h00k) 18.05.15 02:08
(56) soba,
Мертвая ссылка на «Сравнение и объединение правил регистрации объектов»

Данный функционал включен в конфигурацию конвертация данных 2.0.
58. Владислав Томашевич (tomvlad) 18.05.15 08:05
(56) Обработка "Сравнение, объединение правил регистрации" была временно снята с продажи, т.к. готовится к выпуску дополнение к конвертации "1С:Конвертация данных, ред. 2.1", включающее и ее, и ряд других интересных механизмов, существенно облегчающих разработку правил. С сожалению, выпуск дополнения переносится ближе к концу года, поэтому обработка "Сравнение, объединение правил регистрации" была возвращена в интернет-магазин Инфостарта.

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