![]() |
|
Правила обмена данными и "ДопОбработки" | ☑ | ||
---|---|---|---|---|
0
SeiOkami
03.10.16
✎
15:53
|
Здравия!
Пишу правила обмена между самописной конфой на БСП 2.3.2.58 и просто самописной конфой. Использую конвертацию 2.1.8.1. Добавил в правила подключаемую обработку "МояОбработка". В справке к конвертахе написано: "Доступ к подключаемым обработкам в обработчиках событий обмена осуществляется так: ДопОбработки.<ИмяОбработки>.<ИмяЭкспортируемойПроцедурыИлиФункции()>" Но моя обработке не подгружается в эту переменную. Прорыл код БСПшной обработки по универсальному обмену - нигде ничего в эту структуру не добавляется. Она только везде очищается. Открыл обработку из папки шаблонов, которая идёт вместе с конвертахой - там есть код, который добавляет в эту структуру подключаемые обработки, но этот код сработает только на клиенте. Это норма? Или какая-то недоработка? |
|||
1
Cyberhawk
03.10.16
✎
16:00
|
Для БСП это норма, их ОбменДаннымиXML несовместим с универсальным обменом данными ХМЛ
|
|||
2
SeiOkami
03.10.16
✎
16:01
|
(1), так я взял обработку и с БСП и с конвертации
|
|||
3
SeiOkami
03.10.16
✎
16:11
|
ап
|
|||
4
SeiOkami
03.10.16
✎
16:21
|
вверх
|
|||
5
Cyberhawk
03.10.16
✎
16:23
|
(2) И хапнул горюшка
|
|||
6
SeiOkami
03.10.16
✎
16:30
|
То есть этот функционал в конвертации не работает?
|
|||
7
Cyberhawk
03.10.16
✎
16:33
|
(6) В какой конвертации? Он работает в универсальном обмене на толстых формах.
|
|||
8
SeiOkami
03.10.16
✎
16:35
|
(7), но это только если ты вручную открыл обработку, ибо подключаемые обработки инициализируются только на клиенте
|
|||
9
SeiOkami
03.10.16
✎
16:46
|
странная недоработка...
|
|||
10
Cyberhawk
03.10.16
✎
17:02
|
(8) Не понял, в чем твоя проблема в свете сказанного в (1) и (7)? В ОФ код, обрамленный в ту директиву, выполнится. В УФ это не поддерживается.
|
|||
11
Cyberhawk
03.10.16
✎
17:03
|
Я, наверное, не совсем точно в (1) выразился: это не только в обработке из БСП не поддерживается, но и в универсальной обработке обмена, адаптированной под УФ, тоже не поддерживается
|
|||
12
SeiOkami
04.10.16
✎
07:57
|
(10), а если код будет выполнен из фона\регламентного задания\серверного модуля ? Сомневаюсь
|
|||
13
SeiOkami
04.10.16
✎
07:57
|
(11) я об этом сразу в (0) написал
|
|||
14
SeiOkami
04.10.16
✎
09:27
|
Вставил такой алгоритм в правила обмена, чтобы исправить косяк типовой обработки:
врПравилаОбмена = Новый ЧтениеXML; врПравилаОбмена.УстановитьСтроку(мXMLПравила); Пока врПравилаОбмена.Прочитать() Цикл Если врПравилаОбмена.ЛокальноеИмя = "Обработки" Тогда Пока врПравилаОбмена.Прочитать() Цикл Если врПравилаОбмена.ЛокальноеИмя = "Обработка" Тогда Имя = одАтрибут(врПравилаОбмена, одТипСтрока, "Имя"); Если ДопОбработки.Свойство(Имя) Тогда Продолжить; КонецЕсли; Если (одАтрибут(врПравилаОбмена, одТипБулево, "ИспользуетсяПриВыгрузке") И РежимОбмена = "Загрузка") ИЛИ (одАтрибут(врПравилаОбмена, одТипБулево, "ИспользуетсяПриЗагрузке") И РежимОбмена <> "Загрузка") Тогда ИмяВременногоФайла = КаталогВременныхФайлов() + Новый УникальныйИдентификатор() + ".epf"; одЗначениеЭлемента(врПравилаОбмена, одТипХранилищеЗначения).Получить().Записать(ИмяВременногоФайла); ДопОбработки.Вставить(Имя, ВнешниеОбработки.Создать(ИмяВременногоФайла)); УдалитьФайлы(ИмяВременногоФайла); КонецЕсли; ИначеЕсли (врПравилаОбмена.ЛокальноеИмя = "Обработки") И (врПравилаОбмена.ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда Прервать; КонецЕсли; КонецЦикла КонецЕсли; КонецЦикла; |
|||
15
Cyberhawk
04.10.16
✎
11:22
|
(12) Так там нет ОФ, поэтому ясен пень, что не выполнится.
1С это объясняет тем, что код обработок, хранящихся в файлике правил обмена, не должен выполняться на сервере (небезопасно) и поэтому назначение этих подключаемых обработок - только параметризация конвертации на клиенте (ну вот эти собственные формы настроек). (14) Ну т.е. ты повторил или почти повторил код обработки обмена, только без ограничивающей директивы :) Только у такого подхода есть минус - правила обмена, опирающиеся на код обработок, могут вести себя по-разному при интерактивной загрузке и при загрузке, например, регламентным заданием - во втором случае клиентские процедуры и всякие интерактивные штуки недоступны будут. |
|||
16
SeiOkami
05.10.16
✎
10:42
|
(15), всё будет работать так как я пропишу в обработке. Это не минус - это норма для любой разработки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |