|
КД 2.1 Ошибка в ВыгрузитьПоПравилу | ☑ | ||
---|---|---|---|---|
0
vadim777
21.02.16
✎
14:38
|
Документ ПоступлениеТоваров.
В событии ПередВыгрузкой записан код: Если Источник.Склад.ТипСклада = Перечисления.ТипыСкладов.СкладЦентральногоОфиса Тогда Отказ = Истина; Иначе Если Параметры.Контрагенты.Найти(Источник.Контрагент) = Неопределено Тогда Сообщить("Выгружаем "+Строка(Источник.Контрагент)); ВыгрузитьПоПравилу(Источник.Контрагент,,,,"Контрагенты",,,,, Ложь); Сообщить("Выгрузили "+Строка(Источник.Контрагент)); Параметры.Контрагенты.Добавить(Источник.Контрагент); КонецЕсли; КонецЕсли; Получаем ошибу: Начало выгрузки: 21.02.2016 14:24:42 Выгружаем Поставщик1 Ошибка получения значения свойства подчиненного объекта (по имени свойства источника) ПКО = Контрагенты (Справочник: Контрагенты) ПКС = 2 (Наименование --> Наименование) Объект = Поставщик1 (Контрагенты) СвойствоПриемника = Наименование (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211) КодСообщения = 16 Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = ПоступлениеТоваровУслуг (Документ: Поступление товаров) Объект = Поступление товаров АЛКАЛК00003 от 25.01.2016 0:00:00 (Поступление товаров) Обработчик = ПередВыгрузкойОбъекта ОписаниеОшибки = Ошибка получения значения свойства подчиненного объекта (по имени свойства источника) ПКО = Контрагенты (Справочник: Контрагенты) ПКС = 2 (Наименование --> Наименование) Объект = Поставщик1 (Контрагенты) СвойствоПриемника = Наименование (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211) КодСообщения = 16 ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618) КодСообщения = 41 Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1587)}: Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = ПоступлениеТоваровУслуг (Документ: Поступление товаров) Объект = Поступление товаров АЛКАЛК00003 от 25.01.2016 0:00:00 (Поступление товаров) Обработчик = ПередВыгрузкойОбъекта ОписаниеОшибки = Ошибка получения значения свойства подчиненного объекта (по имени свойства источника) ПКО = Контрагенты (Справочник: Контрагенты) ПКС = 2 (Наименование --> Наименование) Объект = Поставщик1 (Контрагенты) СвойствоПриемника = Наименование (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211) КодСообщения = 16 ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618) КодСообщения = 41 Если вызов ВыгрузкаПоПравилу(..) закомментировать, то выгрузка контрагента происходит без ошибок. Почему по правилу не выгружается? |
|||
1
GrayT
21.02.16
✎
15:20
|
Может ему туда объект отдать а не ссылку?
|
|||
2
vadim777
21.02.16
✎
15:58
|
(1) Попробовал дать объект:
ВыгрузитьПоПравилу(Источник.Контрагент.ПолучитьОбъект(),,,,"Контрагенты",,,,, Ложь); В результате сообщений об ошибке еще больше: Начало выгрузки: 21.02.2016 15:55:22 Выгружаем Поставщик1 Ошибка получения значения свойства подчиненного объекта (по имени свойства источника) ПКО = Контрагенты (Справочник: Контрагенты) ПКС = 2 (Наименование --> Наименование) Объект = Поставщик1 (Справочник объект: Контрагенты) СвойствоПриемника = Наименование (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211) КодСообщения = 16 Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = ПоступлениеТоваровУслуг (Документ: Поступление товаров) Объект = Поступление товаров АЛКАЛК00003 от 25.01.2016 0:00:00 (Поступление товаров) Обработчик = ПередВыгрузкойОбъекта ОписаниеОшибки = Ошибка получения значения свойства подчиненного объекта (по имени свойства источника) ПКО = Контрагенты (Справочник: Контрагенты) ПКС = 2 (Наименование --> Наименование) Объект = Поставщик1 (Справочник объект: Контрагенты) СвойствоПриемника = Наименование (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211) КодСообщения = 16 ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618) КодСообщения = 41 Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1587)}: Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = ПоступлениеТоваровУслуг (Документ: Поступление товаров) Объект = Поступление товаров АЛКАЛК00003 от 25.01.2016 0:00:00 (Поступление товаров) Обработчик = ПередВыгрузкойОбъекта ОписаниеОшибки = Ошибка получения значения свойства подчиненного объекта (по имени свойства источника) ПКО = Контрагенты (Справочник: Контрагенты) ПКС = 2 (Наименование --> Наименование) Объект = Поставщик1 (Справочник объект: Контрагенты) СвойствоПриемника = Наименование (Строка) ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8211) КодСообщения = 16 ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1618) КодСообщения = 41 |
|||
3
GrayT
21.02.16
✎
16:10
|
С объектом я вообще тупанул. Это ни при чем. А зачем вообще потребовалось выгружать контрагента из ПередВыгрузкой документа?
|
|||
4
vadim777
21.02.16
✎
17:08
|
Это сделано в стандартной конфе Аптека для Украины 1.0.
Видишь, там идет проверка на то, что контрагент уже обработан: Если Параметры.Контрагенты.Найти(Источник.Контрагент) = Неопределено Тогда Сообщить("Выгружаем "+Строка(Источник.Контрагент)); ВыгрузитьПоПравилу(Источник.Контрагент,,,,"Контрагенты",,,,, Ложь); Сообщить("Выгрузили "+Строка(Источник.Контрагент)); Параметры.Контрагенты.Добавить(Источник.Контрагент); КонецЕсли; Ну чтобы увеличить скорость загрузки данных. |
|||
5
GrayT
21.02.16
✎
17:40
|
Что за глупость? Есть признак ЗапоминатьВыгруженное. Стандартная выгрузка запоминает ключ выгруженных объектов (ссылка для объектов ссылочного типа) и повторно их не выгружает. И ни какой специальной обработки не требуется. Иными словами - пусть данный контрагент хоть в сотне документов разных типов будет, в файл выгрузке он промишется один раз
|
|||
6
vadim777
21.02.16
✎
18:02
|
Да и я также подумал об этом признаке.
Но сейчас пытаюсь выяснить, почему ВыгрузитьПоПравилу(..) не работает. Несколько раз использовал такой вызов - все было норм. А в этой конфе ни фига не могу побороть. |
|||
7
GrayT
21.02.16
✎
18:09
|
Отладчиком посмотреть? Сам так (вызов из ПередВыгрузкой) раньше не делал. ВыгрузитьПоПравилу из ПВО нормально, а так...
Мне вообще непонятно как мы оказались в ПКО ПоступлениеТоваровУслуг. Ведь по идее должны были сразу попасть в ПКО Контрагенты. Единственное объяснение - уже начали выгружать документ, открыли узел, а тут на тебе - выгружай контрагента |
|||
8
vadim777
21.02.16
✎
19:55
|
(7) Для отладки в событии ПередВыгрузкой документа ПоступлениеТоваров изменил текст:
Сообщить("ПКО ПоступлениеТоваровУслуг "+Строка(Источник)); Если Источник.Склад.ТипСклада = Перечисления.ТипыСкладов.СкладЦентральногоОфиса Тогда Отказ = Истина; Иначе Если Параметры.Контрагенты.Найти(Источник.Контрагент) = Неопределено Тогда //Сообщить("Выгружаем "+Строка(Источник.Контрагент)); //ВыгрузитьПоПравилу(Источник.Контрагент,,,,"Контрагенты",,,,, Ложь); //Сообщить("Выгрузили "+Строка(Источник.Контрагент)); Параметры.Контрагенты.Добавить(Источник.Контрагент); КонецЕсли; КонецЕсли; Также в ПКО Контрагенты в событие ПередВыгрузкой добавил текст: Сообщить("ПКО Контрагенты "+Строка(Источник)); Выгружаю только один документ ПоступлениеТоваров. Результат: Начало выгрузки: 21.02.2016 19:49:59 ПКО ПоступлениеТоваровУслуг Поступление товаров АЛКАЛК00003 от 25.01.2016 0:00:00 ПКО Контрагенты Поставщик1 Контрагенты Окончание выгрузки: 21.02.2016 19:50:03 Выгружено объектов: 456 Видно, что процесс идет сначала в ПКО документа, а затем уже - в ПКО Контрагенты. |
|||
9
vadim777
07.03.16
✎
14:01
|
Так вот, решил попробовать обмен по этим правилам непосредственно из 1С, а не через Универсальный обмен.
Все работает! Беру эти-же правила, и пытаюсь сделать выгрузку через Универсальный обмен - та же ошибка. Почему? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |