проблема с исполнением код обработчика "Перед выгрузкой"

1. leosoft 165 05.02.18 21:42 Сейчас в теме
Может кто подскажет.

Столкнулся с такой проблемой - взял в ЗУП 3.1.4 из правил обмена текст обработчика "Перед выгрузкой" для

ПВД документа "Отражение зарплаты...". В нем переопределяется объект на структуру:

ОписаниеОбъекта = Новый Структура;

...

Объект = ОписаниеОбъекта; === Вот на этой строке вылетает ошибка!

Так вот при выгрузке данных через встроенную в ЗУП обработку "Универсальный обмен данными" выдает ошибку:

Объект = Отражение зарплаты

Обработка = ПередВыгрузкойОбъектаВыборки

Поле объекта недоступно для записи (Ссылка)

Код ошибки = 33

Подскажите, пожалуйста - где копать? В типовом обмене ЗУП - БУХ это все работает. А тут не хочет!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ЧерныйКот 26.03.18 14:24 Сейчас в теме
(1) Потому что типовой обмен идет не с помощью обработки "УниверсальныйОбменДаннымиXML", там несколько иной механизм, с использованием планов обмена.
чтобы типовой обработчик перед выгрузкой заработал - нужно определить обработчик перед обработкой, и в этом обработчике, в переменную ВыборкаДанных поместить не ссылки а объекты.

я сделал так:
ВыборкаДанных = Новый Массив;

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ОтражениеЗарплатыВБухучете.Ссылка КАК Ссылка
|ИЗ
|	Документ.ОтражениеЗарплатыВБухучете КАК ОтражениеЗарплатыВБухучете
|ГДЕ
|	ОтражениеЗарплатыВБухучете.Организация = &Организация
|	И ОтражениеЗарплатыВБухучете.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
Запрос.УстановитьПараметр("Организация", Параметры.Организация);
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
	 ВыборкаДанных.Добавить(Выборка.Ссылка.ПолучитьОбъект());
КонецЦикла;
Показать
3. ЧерныйКот 26.03.18 15:01 Сейчас в теме
А вообще этот механизм используется только при выгрузке без детализации по сотрудникам, так что можно просто отключить его, установив параметр "НеВыгружатьПерсональныеДанныеФизическихЛиц" в ложь.
4. leosoft 165 26.03.18 15:55 Сейчас в теме
(3) Спасибо за ответ. Я тоже в другой обработчик все перекинул. Мне как раз надо было свернуть и по сотрудникам и по подразделениям, Но причину вылета я так и не понял - по идее
все должно было сработать и в УОД.
5. Human 02.07.19 07:50 Сейчас в теме
Приветствую. Подскажите пожалуйста, все равно ошибка выходит в модуле перед выгрузкой. Добавил перед обработкой, но все равно такая же ошибка...
Необходимо выгрузить посредством "УниверсальныйОбменДаннымиXML", т.к. типовой обмен нет возможности использовать.

Ошибка в обработчике события ПередВыгрузкойОбъекта
ПВД = ОтражениеЗарплатыВБухучете
Объект = Отражение зарплаты в бухучете 0000-000001 от 31.03.2019 (Отражение зарплаты в бухучете)
Обработчик = ПередВыгрузкойОбъектаВыборки
ОписаниеОшибки = Поле объекта недоступно для записи (Ссылка)
ПозицияМодуля = (157)
КодСообщения = 33
6. Drivingblind 228 24.03.20 12:48 Сейчас в теме
Заранее извиняюсь за некропостинг. Столкнулся с аналогичной проблемой. При обмене с выборкой по узлам плана обменов всё работает, если простая выгрузка без планов обмена - выдает эту ошибку.
Пока Выборка.Следующий() Цикл
		
	//ругалось на эту строку
	Объект = Выборка.Номенклатура;		
		
	ИсходящиеДанные = Новый Структура;
	ИсходящиеДанные.Вставить("Родитель",Выборка.Родитель);
		
КонецЦикла;
Показать

Решил данную проблему с использованием функции ВыгрузитьПоПравилу():
Пока Выборка.Следующий() Цикл
				
	ИсходящиеДанные = Новый Структура;
	ИсходящиеДанные.Вставить("Родитель",Выборка.Родитель);
		
	ВыгрузитьПоПравилу(Выборка.Номенклатура,,,ИсходящиеДанные,ИмяПКО);
	Отказ = Истина;
КонецЦикла;
Показать

Теперь работает и с планами обмена, и без них.
Может, кому пригодится.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот