Универсальный обмен данными данными XML через COM с передачей параметров. #353804


#0 by KalachevDV
Собственно выполняю сабж. Необходимо передавать параметры. В обработчике события "ПередЗагрузкойДанных" делаю примерно следующее: Выборка.Записать; Регистр не очищается... если указать код контрагента в коде явно, то все срабатывает... Параметры объявлены в правилах, в других обработчиках, например в ПВД "ПередОбработкой" их значения читаются верно. А вот в приемнике никак... где грабли спрятаны?
#1 by Immortal
скорее всего здесь  :
#2 by KalachevDV
Что не так?
#3 by IronDemon
В параметрах глянь галочку "При загрузке"
#4 by GenV
Уверен, что код перенесся через параметр. ЗЫ Не помню, добавли ли в книгу знаний, но: Чтобы передать параметр нужно: 1) Галочка "редактировать в диалоге", "использовать при загрузке" 2) Назначение этого параметра Либо выполнение кода: ПередатьОдинПараметрВПриемник(ИмяПараметра, ЗначениеПараметра, ПравилоПКО)
#5 by GenV
4+ при выполнении кода галочка "использовать при загрузке тоже нужна"
#6 by KalachevDV
Все стоит как ты и говоришь. Фишка в том, что если выгружать в файл и потом загружать из файла все ОТЛИЧНО!!!. А вот при прямой выгрузке в базу приемник... Грабли. Такое ощущение, что Параметры на стороне приемника не появляются.
#7 by GenV
Обработка в конфе приемника тоже не старая? Можешь добавить обработчик "После загрузки параметров", а в нем Сообщить(Параметры.КодКонтрагента) и проверить ...
#8 by KalachevDV
Обработка в приемника и источнике 23. Интересно, а где я посмотрю результат Сообщить при COM обмене... Уже тоже подумываю куда нить запихать результат, чтобы посмотреть...
#9 by KalachevDV
Точнее я даже уверен, что в этом обработчике ("ПередЗагрузкойДанных") они будут не определены... как быть непонятно...
#10 by GenV
А, блин. Через ВызыватьИсключение. Тогда в Источнике должно отобразиться.
#11 by KalachevDV
хммм... щас попробую
#12 by KalachevDV
Думаю ты это имел ввиду Попытка    Сообщить; Обработка завершается без всяких сообщений...
#13 by GenV
10+ если установил галку записывать в отдельный файл протоком COM, то можно попробывать использовать в обработчиках ЗаписатьВПротоколВыполнения - должно сработать
#14 by GenV
Нет. Просто: код ошибки (Строка(Параметры.КодКонтаргента)) передается в источник и выведется как ошибка
#15 by KAO111
Если указать файл протокола загрузки можно использовать функцию Например:
#16 by KalachevDV
Побегал с отладчиком. Таблица параметров в обработке, которая создается в приемнике заполняется, и заполняется верно... 100%...
#17 by GenV
Проверяй таким же образом: Справочники.Контрагенты.НайтиПоКоду(Параметры.КодКонтрагента)
#18 by KalachevDV
а вот это уже не могу... вызывается функция обработки приемника, а в нее отладчиком уже не влезешь...
#19 by GenV
См. Добавляешь в обработчик и смотришь, что выведет в протокол (ссылку или нет)
#20 by KalachevDV
Справочники.Контрагенты.НайтиПоКоду(Параметры.КодКонтрагента)  - эта строка отработает 100% . Проблема именно с чтение параметров. Т.е вот такой код ОчиститьРегистр = Параметры.ВыгрузитьВсе; Если ОчиститьРегистр Тогда тоже вылетало с ошибкой. Может при Com обмене нужно как-то по другому обращаться к параметрам???
#21 by KalachevDV
Кстати в , где этот протокол будет лежать? Я же не могу указать к нему путь, обработка создается автоматически...
#22 by GenV
В обработке источнике есть специальное поле в настройках
#23 by KalachevDV
точно, забыл про нее..
#24 by GenV
Если вылетает, значит ОчиститьРегистр не булево. А как ты убедился, что значение сконвертировалось и назначилось в приемнике в ?
#25 by KalachevDV
а когда перед выгрузкой просматриваешь переменную, которая обработчик в базе приемника, то там видна структура параметров, их имена и значения.
#26 by KalachevDV
В общем выдало на Начало загрузки:   01.08.2008 17:07:12 Параметры.КодКонтрагента= Окончание загрузки: 01.08.2008 17:10:54 и все :)
#27 by GenV
Значит не сконвертировался :) Тип данных "Строка" для параметра указывал? Проверяй выгрузку параметра
#28 by KalachevDV
Как я и думал. Неопределены... М.б к Параметрам обратиться так : Параметры.Свойство("КодКонтрагента", КодКонтрагента); Это ж вроде структура?
#29 by KalachevDV
Указал, да с этим все норм. Я своими глазами видел в отладчике "КодКонтрагента" - "04048" - Строка
#30 by GenV
:) Ты видел в источнике, а чтобы попасть в приемник они должны сконвертироваться ...
#31 by GenV
30+ проверь как формируется узел при конвертации параметра - процедура ПередатьОдинПараметрВПриемник в источнике.
#32 by KalachevDV
нет, я видел поля Com объекта...
#33 by GenV
Хм. А ты случайно не в ПередЗагрузкойДанных его хочешь использовать? Там его не будет. Для этого есть обработчик ПослеЗагрузкиПараметров ...
#34 by KalachevDV
В том то и дело, что нужно именно перед загрузкой данных в базу приемник вызвать процедуру выборочной очистки регистра базы приемника... Чото я не нашел обработчик ПослеЗагрузкиПараметров.  КД 2.0.21.
#35 by GenV
В общих обработчиках конвертации в последней КД есть (по-моему уже давно добавили). А в ПередЗагрузкой данные параметров еще не считаны.
#36 by KalachevDV
Так и знал бля...Этот пример мне еще тогда непонравился. я еще в написал, про этот обработчик... Думал ты понял где пытаюсь делать... Но, все равно, Спасибо всем. Genv тебе отдельный респект и уважение за терпение , за помощь.
#37 by GenV
Да, я только в конце вспомнил про эту фичу. Сам про неё все время забываю :)
#38 by KalachevDV
Вроде ж у меня при файловом обмене отрабатывала нормально... Ладно, в понедельник обновлюсь до 24 версии. попробую Покедова, удачных тебе выходных.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С