gifts2017

Конвертация

Опубликовал Ufimtsev (Ufimtsev) в раздел Программирование - Практика программирования

Использование собственных функций в конвертации

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

Для чего в конец модуля обработки 'V8Exchan81.epf' вносим
фрагмент кода с нашими функциями.
Для подключения текстов отладки также вносим этот фрагмент кода
в макет 'Общие процедуры и функции' перед областью '#Область Конструктор_ТелоПроцедуры'
добавим нашу область '#Область нОбщиеФункции' и затем текст наших функций.


Для того чтобы сработала процедура генерации текста обработчиков
в модуль обработки 'V8Exchan81.epf' после строки:

ДобавитьВПотокСлужебныйКод(Результат, "ПеременныеОбработки");



добавим:

// вывод собственных ф-ций
ДобавитьВПотокСлужебныйКод(Результат, "нОбщиеФункции");




Готово !

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

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Коробов (WiseSnake) 09.12.08 06:58
Что значит >>намного более удобно???
Только ради отладки? так этот плюс не очевиден! В 95 % отладчик не нужен. Какой смысл лезть в конфигуратор и там что то писать? Я думаю что этот метод только замедлит написание правил.
2. Сергей Старовойтов (AVARY) 09.12.08 09:25
Сама идея универсальной выгрузки-загрузки XML состоит в том, что обработка выгрузки-загрузки у всех одинаковая и она способна прочитать любые (корректные для конфигурации с которой производится работа) правила обмена и произвести выгрузку данных по этим правилам, а также загрузить любой (корректный для конфигурации с которой производится работа) файл обмена.
Если меняется обработка. то ее нужно высылать вдогонку с правилами и файлом обмена.

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

Для удобства отладки в промышленных масштабах в случае восьмерки, лучше дописать КД, чтобы она формировала текст модуля обработки, как она это делает для семерки.
Bukaska; teflon; +2 Ответить 4
3. Ufimtsev (Ufimtsev) 10.12.08 17:31
(1) " ... В 95 % отладчик не нужен ..."?
- Хотя бы простая проверка синтаксических ошибок, может только ускорить написание правил.
4. Ufimtsev (Ufimtsev) 10.12.08 17:40
(2) " ...вызывается методом "Выполнить(Алгоритмы.<Ваш любимый алгоритм>)" в теле обработчика, поэтому никакие параметры в него передавать не нужно... "
- Мы можем написать 'Функции', которые возвращают 'Результат'.
5. Алексей Коробов (WiseSnake) 10.12.08 19:26
Полностью согласен с AVARY (2). Теряется универсальность. Так я, например, пользователю отправил один XML и он все сам разрулил. А так придеться еще ему долго объяснять что куда сохранить и откуда запустить...
(3) Отчасти согласен, но лучше прикрутить синтаксический контроль к "Конвертации данных" ;) я бы Вам огромнейшее спасибо сказал...))))
(4) А конструкцией Выполнить(Алгоритмы.<Ваш любимый алгоритм>) мы можем прочитать необходимые данные и если необходимо их изменить, а большего и не надо

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

Есть конечно плюс в обработке, это возможность отладки! Но....Каждый выбирает путь сам ;)
6. Ufimtsev (Ufimtsev) 10.12.08 21:27
(2)(5) Универсальность... Замечательные слова. На практике перед пользователем стоит задача перенести данные из одной конкретной базы в другую конкретную базу, поэтому пишем правила именно для этой ситуации. Далеко не каждый пользователь, даже если он отслеживает последние версии конвертации (не встречал таких) может и захочет искать нужный файл V8Exchan81.epf, так что выслать его ему его все равно придется.
7. Сергей Васильев (colmbo) 10.07.09 11:16
(2)"... Для удобства отладки в промышленных масштабах в случае восьмерки, лучше дописать КД, чтобы она формировала текст модуля обработки, как она это делает для семерки"

- уже написали разработчики, если не изменяет память, с 21 релиза конвертации
8. г. Казань Рустем Гумеров (Rustig) 28.10.11 01:34
Иногда эффективнее добавить свои функции, чем использовать Алгоритмы. Пример описывать не буду. Скажу только, что для отдельных проектов это может быть актуально.