Имя: Пароль:
1C
 
Правила обмена данными и "ДопОбработки"
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), всё будет работать так как я пропишу в обработке. Это не минус - это норма для любой разработки
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший