Имя: Пароль:
1C
1С v8
Ошибка при выгрузке по самописным правилам. "Поле объекта не обнаружено"
,
0 Alex87r
 
18.07.17
00:17
Привет всем, кто не спит)

Делаю правила обмена. При выгрузке документа отчет о продажах столкнулся с такой ошибкой:

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8014)}: Поле объекта не обнаружено (РасшифровкаПлатежа)

в ПВД для данного объекта прописал:

СтруктураДляВыгрузки.Вставить("Дата",Объект.Дата);
СтруктураДляВыгрузки.Вставить("ВалютаДокумента",Объект.ВалютаДокумента);
СтруктураДляВыгрузки.Вставить("ВидОперации","РозничнаяВыручка");
СтруктураДляВыгрузки.Вставить("ВыручкаСНТТ",истина);
СтруктураДляВыгрузки.Вставить("Номер",Объект.Номер);
СтруктураДляВыгрузки.Вставить("Организация",Объект.Фирма);
СтруктураДляВыгрузки.Вставить("Контрагент",Объект.Склад);
СтруктураДляВыгрузки.Вставить("СуммаДокумента",КоллекцияОбъектов.Итог("СуммаПлатежа"));
СтруктураДляВыгрузки.Вставить("РасшифровкаПлатежа",КоллекцияОбъектов);
    

    ВыгрузитьПоПравилу(СтруктураДляВыгрузки,,,, "ПриходныйКасс

В ПКО, в приемнике для этого правила в свойствах есть реквизит "РасшифровкаПлатежа".
https://yadi.sk/i/VTGOwNZF3L9DXn
Куда еще смотреть?)
1 Alex87r
 
18.07.17
00:18
ВыгрузитьПоПравилу(СтруктураДляВыгрузки,,,, "ПриходныйКассовыйОрдер");
2 Альбатрос
 
18.07.17
05:55
Ты полностью код обработчика показывай
3 Альбатрос
 
18.07.17
05:55
и ошибку полностью, так указывается, где ошибка возникает.
4 assasu
 
18.07.17
05:57
(0) я бы в отладчик пошел.
5 Alex87r
 
18.07.17
10:45
Эта ошибка полностью. :
Начало выгрузки:   18.07.2017 10:43:10
2

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8014)}: Поле объекта не обнаружено (РасшифровкаПлатежа)


Вот весь текст пвд, но я так понимаю, что ошибка не в нем возникает.

Отказ = Объект.ПометкаУдаления;
Если Не Объект.Проведен Тогда //и Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
    Отказ = Истина;
КонецЕсли;

ТаблицаДляСвертки = Объект.Товары.Выгрузить();

ТаблицаДляСвертки.Свернуть("СтавкаНДС","Сумма, СуммаНДС");
Сообщить(ТаблицаДляСвертки.Количество());    
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("СуммаПлатежа");
КоллекцияОбъектов.Колонки.Добавить("СтавкаНДС");
КоллекцияОбъектов.Колонки.Добавить("СуммаНДС");

СтруктураДляВыгрузки = Новый Структура;

Для Каждого Строка Из ТаблицаДляСвертки Цикл
    НСТр = КоллекцияОбъектов.Добавить();
    НСТр.СуммаПлатежа =  Строка.Сумма;
    НСТр.СтавкаНДС       =  Строка.СтавкаНДС;
    НСТр.СуммаНДС       =  Строка.СуммаНДС;    
КонецЦикла;    

СтруктураДляВыгрузки.Очистить();
        
СтруктураДляВыгрузки.Вставить("Дата",Объект.Дата);
СтруктураДляВыгрузки.Вставить("ВалютаДокумента",Объект.ВалютаДокумента);
СтруктураДляВыгрузки.Вставить("ВидОперации","РозничнаяВыручка");
СтруктураДляВыгрузки.Вставить("ВыручкаСНТТ",истина);
СтруктураДляВыгрузки.Вставить("Номер",Объект.Номер);
СтруктураДляВыгрузки.Вставить("Организация",Объект.Фирма);
СтруктураДляВыгрузки.Вставить("Контрагент",Объект.Склад);
СтруктураДляВыгрузки.Вставить("СуммаДокумента",КоллекцияОбъектов.Итог("СуммаПлатежа"));
СтруктураДляВыгрузки.Вставить("РасшифровкаПлатежа",КоллекцияОбъектов);
    

    ВыгрузитьПоПравилу(СтруктураДляВыгрузки,,,, "ПриходныйКассовыйОрдер");
6 h-sp
 
18.07.17
10:48
(5) а зачем здесь вообще пвд? через задницу делаете. В пко ПередВыгрузкой сформируйте Коллекция.Объектов, вот и всё. А пвд стандартное.
7 Alex87r
 
18.07.17
10:59
(6) А как потом прочитать эту коллекцию? Скинь пример
8 Ёпрст
 
18.07.17
11:04
(7) галка получить из входящих данных.
9 Alex87r
 
18.07.17
11:07
(8) А пример создания такой коллекции?) Просто я так не делал. Я эти правила сделал по аналогии, как УТ 10 - БП 2.
10 h-sp
 
18.07.17
11:09
(7) пишешь запрос в перед выгрузкой

потом КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();
11 Ёпрст
 
18.07.17
11:18
(9)
в ПКГС напиши в ПередОбработкой()

.....

КоллекцияОбъектов = ТаблицаДляСвёртки;
12 h-sp
 
18.07.17
11:24
(7) да, немного перепутал. в ПГКС надо. Это на таб части щелкаешь изменить. и там типа

КоллекцияОбъектов = Источник.Товары.Выгрузить();

Для каждого СтрокаТовары Из КоллекцияОбъектов Цикл
    СтрокаТовары.Коэффициент = СтрокаТовары.ЕдиницаИзмерения.Коэффициент;
    СтрокаТовары.Количество = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.Коэффициент;
    //СтрокаТовары.Цена = ?(СтрокаТовары.Количество <> 0, СтрокаТовары.Сумма / СтрокаТовары.Количество, 0);
    СтрокаТовары.Содержание = "";
КонецЦикла;
// Добавим услуги
Для Каждого СтрокаУслуги Из Источник.Услуги Цикл
    СтрокаТовары = КоллекцияОбъектов.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТовары, СтрокаУслуги);
КонецЦикла;
13 Alex87r
 
18.07.17
12:10
Засунул в ПКО, "Перед выгрузкой":

ТаблицаДляСвертки = Источник.Товары.Выгрузить();

ТаблицаДляСвертки.Свернуть("СтавкаНДС","Сумма, СуммаНДС");
Сообщить(ТаблицаДляСвертки.Количество());    
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("СуммаПлатежа");
КоллекцияОбъектов.Колонки.Добавить("СтавкаНДС");
КоллекцияОбъектов.Колонки.Добавить("СуммаНДС");

ИсходящиеДанные = Новый Структура;

Для Каждого Строка Из ТаблицаДляСвертки Цикл
    НСТр = КоллекцияОбъектов.Добавить();
    НСТр.СуммаПлатежа =  Строка.Сумма;
    НСТр.СтавкаНДС       =  Строка.СтавкаНДС;
    НСТр.СуммаНДС       =  Строка.СуммаНДС;    
КонецЦикла;    

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



Выдает ошибку:





Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПКО                    =  ПриходныйКассовыйОрдер  (ДокументСсылка.ZОтчет --> ДокументСсылка.ПриходныйКассовыйОрдер)
    Объект                 =  Структура  (Структура)
    Обработчик             =  ПередВыгрузкойОбъекта
    ОписаниеОшибки         =  Поле объекта не обнаружено (Товары)
    ПозицияМодуля          =  (6)
    КодСообщения           =  41

Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПВД                    =  ZОтчет
    Объект                 =  Отчет кассовой смены #030717_006 от 03.07.2017 23:59:59  (Отчет кассовой смены)
    Обработчик             =  ПередВыгрузкойОбъектаВыборки
    ОписаниеОшибки         =  Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПКО                    =  ПриходныйКассовыйОрдер  (ДокументСсылка.ZОтчет --> ДокументСсылка.ПриходныйКассовыйОрдер)
    Объект                 =  Структура  (Структура)
    Обработчик             =  ПередВыгрузкойОбъекта
    ОписаниеОшибки         =  Поле объекта не обнаружено (Товары)
    ПозицияМодуля          =  (6)
    КодСообщения           =  41
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1641)
    КодСообщения           =  33

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1695)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПВД                    =  ZОтчет
    Объект                 =  Отчет кассовой смены #030717_006 от 03.07.2017 23:59:59  (Отчет кассовой смены)
    Обработчик             =  ПередВыгрузкойОбъектаВыборки
    ОписаниеОшибки         =  Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПКО                    =  ПриходныйКассовыйОрдер  (ДокументСсылка.ZОтчет --> ДокументСсылка.ПриходныйКассовыйОрдер)
    Объект                 =  Структура  (Структура)
    Обработчик             =  ПередВыгрузкойОбъекта
    ОписаниеОшибки         =  Поле объекта не обнаружено (Товары)
    ПозицияМодуля          =  (6)
    КодСообщения           =  41
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1641)
    КодСообщения           =  33
14 Ёпрст
 
18.07.17
12:12
(13) не туда засунул. Нужно в ПГКС в ПередОбработкой пихать
15 Ёпрст
 
18.07.17
12:13
грубо, в ПКС у группы Расшифровка платежа жмешь F2 и там творишь
16 Alex87r
 
18.07.17
12:15
(15) Понятно) Попробую
17 Alex87r
 
18.07.17
14:01
Ребят, подскажите в чем дело. Ошибка:


Ошибка получения коллекции подчиненных объектов из входящих данных
    ПКО                    =  ПриходныйКассовыйОрдер  (ДокументСсылка.ZОтчет --> ДокументСсылка.ПриходныйКассовыйОрдер)
    ПКГС                   =  21  ( --> РасшифровкаПлатежа)
    Объект                 =  Отчет кассовой смены #030717_008 от 03.07.2017 23:59:59  (Отчет кассовой смены)
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7967)
    КодСообщения           =  66

Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7990)}: Ошибка получения коллекции подчиненных объектов из входящих данных
    ПКО                    =  ПриходныйКассовыйОрдер  (ДокументСсылка.ZОтчет --> ДокументСсылка.ПриходныйКассовыйОрдер)
    ПКГС                   =  21  ( --> РасшифровкаПлатежа)
    Объект                 =  Отчет кассовой смены #030717_008 от 03.07.2017 23:59:59  (Отчет кассовой смены)
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7967)
    КодСообщения           =  66

В отладчике появляется после. ВходящиеДанные = неопределено:
Попытка
            
            КоллекцияОбъектов = ВходящиеДанные[ПКГС.Приемник];
18 Ёпрст
 
18.07.17
14:10
(17) А чего хоть в ПКГС то хоть написал ?
19 Alex87r
 
18.07.17
15:08
(18)

ТаблицаДляСвертки = Источник.Товары.Выгрузить();

ТаблицаДляСвертки.Свернуть("СтавкаНДС","Сумма, СуммаНДС");
Сообщить(ТаблицаДляСвертки.Количество());    
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("СуммаПлатежа");
КоллекцияОбъектов.Колонки.Добавить("СтавкаНДС");
КоллекцияОбъектов.Колонки.Добавить("СуммаНДС");

ИсходящиеДанные = Новый Структура;

Для Каждого Строка Из ТаблицаДляСвертки Цикл
    НСТр = КоллекцияОбъектов.Добавить();
    НСТр.СуммаПлатежа =  Строка.Сумма;
    НСТр.СтавкаНДС       =  Строка.СтавкаНДС;
    НСТр.СуммаНДС       =  Строка.СуммаНДС;    
КонецЦикла;    

ИсходящиеДанные.Очистить();
        
ИсходящиеДанные.Вставить("Дата",Источник.Дата);
ИсходящиеДанные.Вставить("ВалютаДокумента",Источник.ВалютаДокумента);
ИсходящиеДанные.Вставить("ВидОперации","РозничнаяВыручка");
ИсходящиеДанные.Вставить("ВыручкаСНТТ",истина);
ИсходящиеДанные.Вставить("Номер",Источник.Номер);
ИсходящиеДанные.Вставить("Организация",Источник.Фирма);
ИсходящиеДанные.Вставить("Контрагент",Источник.Склад);
ИсходящиеДанные.Вставить("СуммаДокумента",КоллекцияОбъектов.Итог("СуммаПлатежа"));
ИсходящиеДанные.Вставить("РасшифровкаПлатежа",КоллекцияОбъектов);
20 Alex87r
 
18.07.17
16:16
ап)
21 Alex87r
 
18.07.17
17:34
В общем я вернулся к тому, с чего начиналось. Т.е. к (5)
В отладчике нашел, что сначала выгружается моя заданная структура, а ошибка вылетает на ссылке документа Отчет кассовой смены. Там нету ТЧ "РасшифровкаПлатежа".
Добавил строчку в конце ПВД, после

ВыгрузитьПоПравилу(СтруктураДляВыгрузки,,,, "ПриходныйКассовыйОрдер");


Отказ = Истина;

Сейчас работает, если гружу 1 документ.
Если выбираю 2 документа, то грузится все равно один) Как это побороть?)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.