|
Конвертация данных 2.0. Из входящих данных в параметр. | ☑ | ||
---|---|---|---|---|
0
zasyadko
19.08.15
✎
17:53
|
Помогите в решении вопроса. Необходимо передать при конвертации параметр "ДоговорКонтрагента" для каждой из строк ТЧ.
В ПКО "ВводНачальныхОстатков_УСН_Товары" создал ПКС на тч "НоменклатураНаСкладе", стоит галочка у нее "Получать из входящих данных", внутри различные ПКС и последнее добавил "ДоговорКонтрагента" с галкой "Передавать в параметр". Скрин http://pixs.ru/showimage/viaviaiipn_6539775_18472530.png работать отказывется. Выдает: ------- Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника) ПКО = ВводНачальныхОстатков_УСН_Товары (Документ: Ввод начальных остатков УСН) ПКС = 27 (--> ДоговорКонтрагента) Объект = Ввод начальных остатков УСН Ав000000002 от 31.12.2012 0:00:00 (Ввод начальных остатков УСН) СвойствоПриемника = () ОписаниеОшибки = Поле объекта не обнаружено ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283) КодСообщения = 17 ------- В ПКО Перед выгрузкой такой код: НоменклатураНаСкладе = Новый ТаблицаЗначений; НоменклатураНаСкладе.Колонки.Добавить("Номенклатура"); .............. НоменклатураНаСкладе.Колонки.Добавить("ДоговорКонтрагента"); Выборка3Ур = Выборка2Ур.Выбрать(); Пока Выборка3Ур.Следующий() Цикл Стр = НоменклатураНаСкладе.Добавить(); Стр.Номенклатура = Выборка3Ур.Номенклатура; .............. Стр.ДоговорКонтрагента = Выборка3Ур.ДоговорКонтрагента; КонецЦикла; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("НоменклатураНаСкладе", НоменклатураНаСкладе); ВыгрузитьПоПравилу(Источник, ,ВходящиеДанные , , "ВводНачальныхОстатков_УСН_Товары"); Что делаю не так? Необходимость есть передавать именно параметр на каждую строку ТЧ, именно из входящих данных кодом, т.к. реквизита Договор в приемнике нет физически, а нужен для дальнейших действий после загрузки, а данные перед выгрузкой берутся не только с выгружаемого объекта. |
|||
1
GreatOne
19.08.15
✎
18:08
|
поставь ему галку получить из вх. данных
|
|||
2
GreatOne
19.08.15
✎
18:11
|
чет сообщения пропадают. Еще можно значение = объектколлекции.договорконтрагента
|
|||
3
zasyadko
19.08.15
✎
18:21
|
(2) Ни так, ни так не помогает. Почему то он пытается по имени получить этот параметр и не находит.
|
|||
4
GreatOne
19.08.15
✎
18:36
|
Посмотри отладчиком или через сообщить() что там в объекте коллекции.
|
|||
5
GreatOne
19.08.15
✎
18:38
|
Кстати, входящиеданные=Выборка3Ур.выгрузить()
|
|||
6
zasyadko
19.08.15
✎
18:44
|
(5) Сделал так. Теперь выгружает без ошибок, но при загрузке поймать не могу:
--------------------- Пока Выборка2Ур.Следующий() Цикл НоменклатураНаСкладе = Новый ТаблицаЗначений; НоменклатураНаСкладе.Колонки.Добавить("Номенклатура"); НоменклатураНаСкладе.Колонки.Добавить("Количество"); НоменклатураНаСкладе.Колонки.Добавить("ОтражениеВУСН"); НоменклатураНаСкладе.Колонки.Добавить("Сумма"); НоменклатураНаСкладе.Колонки.Добавить("СчетУчета"); НоменклатураНаСкладе.Колонки.Добавить("Валюта"); НоменклатураНаСкладе.Колонки.Добавить("Партия"); НоменклатураНаСкладе.Колонки.Добавить("РасчетныйДокумент"); НоменклатураНаСкладе.Колонки.Добавить("СтатусыОплатыРасходовУСН"); НоменклатураНаСкладе.Колонки.Добавить("СтатусыПартийУСН"); НоменклатураНаСкладе.Колонки.Добавить("СуммаНУ"); НоменклатураНаСкладе.Колонки.Добавить("ВалютнаяСумма"); НоменклатураНаСкладе.Колонки.Добавить("НДС"); НоменклатураНаСкладе.Колонки.Добавить("ВалютныйНДС"); НоменклатураНаСкладе.Колонки.Добавить("ДоговорКонтрагента"); НоменклатураНаСкладеТабличнаяЧасть = Новый ТаблицаЗначений; НоменклатураНаСкладеТабличнаяЧасть.Колонки.Добавить("ДоговорКонтрагента"); Выборка3Ур = Выборка2Ур.Выбрать(); Пока Выборка3Ур.Следующий() Цикл Стр = НоменклатураНаСкладе.Добавить(); Стр.Номенклатура = Выборка3Ур.Номенклатура; Стр.Количество = Выборка3Ур.Количество; Стр.ОтражениеВУСН = Выборка3Ур.ОтражениеВУСН; Стр.Сумма = Выборка3Ур.Сумма - Выборка3Ур.НДС; Стр.СчетУчета = Выборка3Ур.СчетУчета; Стр.Валюта = Выборка3Ур.Валюта; Стр.Партия = Выборка3Ур.Партия; Стр.РасчетныйДокумент = Выборка3Ур.РасчетныйДокумент; Стр.СтатусыОплатыРасходовУСН = Выборка3Ур.СтатусыОплатыРасходовУСН; Стр.СтатусыПартийУСН = Выборка3Ур.СтатусыПартийУСН; Стр.СуммаНУ = Выборка3Ур.СуммаНУ - Выборка3Ур.НДС; Стр.ВалютнаяСумма = Выборка3Ур.ВалютнаяСумма - Выборка3Ур.НДС; Стр.НДС = Выборка3Ур.НДС; Стр.ВалютныйНДС = Выборка3Ур.ВалютныйНДС; Стр.ДоговорКонтрагента = Выборка3Ур.ДоговорКонтрагента; Стр2 = НоменклатураНаСкладеТабличнаяЧасть.Добавить(); Стр2.ДоговорКонтрагента = Выборка3Ур.ДоговорКонтрагента; КонецЦикла; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("Организация", Выборка1Ур.Организация); ВходящиеДанные.Вставить("Дата", Источник.Дата); ВходящиеДанные.Вставить("Номер", ""); ВходящиеДанные.Вставить("Комментарий", "ТоварыУСН"+"_"+Строка(Источник.Организация)+"_"+Строка(Выборка2Ур.Подразделение)+"_"+Строка(Источник.Номер)); ВходящиеДанные.Вставить("ПометкаУдаления", Источник.ПометкаУдаления); ВходящиеДанные.Вставить("Проведен", Источник.Проведен); ВходящиеДанные.Вставить("Ответственный", Источник.Ответственный); ВходящиеДанные.Вставить("ПодразделениеОрганизации", Зураб.ПодразделениеОрганизацииПоПодразделению(Выборка2Ур.Подразделение)); ВходящиеДанные.Вставить("НоменклатураНаСкладе", НоменклатураНаСкладе); ВходящиеДанные.Вставить("НоменклатураНаСкладеТабличнаяЧасть", НоменклатураНаСкладеТабличнаяЧасть); ВыгрузитьПоПравилу(Источник, ,ВходящиеДанные , , "ВводНачальныхОстатков_УСН_Товары"); КонецЦикла; --------------------- При загрузке: --------------------- Объект.РазделУчета = Перечисления.РазделыУчетаДляВводаОстатков.Товары; Если ПараметрыОбъекта <> Неопределено тогда ТаблицаПараметров = ПараметрыОбъекта["НоменклатураНаСкладеТабличнаяЧасть"]; НомерСтроки = 0; Для Каждого СтрокаПараметров Из ТаблицаПараметров Цикл ЗначениеПараметра = СтрокаПараметров.ДоговорКонтрагента; СтрокаТЧ = Объект.НоменклатураНаСкладе.Получить(НомерСтроки); Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Партия) Тогда О = Документы.ДокументРасчетовСКонтрагентом.СоздатьДокумент(); О.Дата = НачалоМесяца(Объект.Дата); О.Организация = Объект.Организация; О.Контрагент = ЗначениеПараметра.Владелец; О.ДоговорКонтрагента = ЗначениеПараметра; О.Записать(РежимЗаписиДокумента.Проведение); СтрокаТЧ.Партия = О.Ссылка; СтрокаТЧ.РасчетныйДокумент = О.Ссылка; КонецЕсли; НомерСтроки = НомерСтроки + 1; КонецЦикла; КонецЕсли; --------------------- |
|||
7
Kashey
19.08.15
✎
19:01
|
(0)
Попробуй в ПКС ДоговорКонтрагента в обработчике ПередВыгрузкой написать Значение = ОбъектКоллекции.ДоговорКонтрагента Там же установить галку передавать данные в параметр и задать имя параметра ДоговорКонтрагента Теперь можно попробывать обратиться к переданному значению в обработчике ПослеЗагрузки Договор = ПараметрыОбъекта["ДоговорКонтрагента"] |
|||
8
zasyadko
19.08.15
✎
19:05
|
Проблема решилась, то что я описал в первом сообщении абсолютно верно и работает. Второе мое сообщение полная ересь. Оказалось, что к вечеру уже намудрил и задолго до описанных циклов в запросе получал NULL значения для договра, отсюда и сломанная выгрузка. Всем старавшимся спасибо!
|
|||
9
GreatOne
19.08.15
✎
21:13
|
И все же не пойму, зачем такая портянка? Чем не устраивает
ВходящиеДанные = Выборка2Ур.Выгурзить(); ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |