Имя: Пароль:
1C
 
Конвертация данных 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Ур.Выгурзить();?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс