Имя: Пароль:
1C
1С v8
Произвольный алгоритм правил выгрузки данных
0 10kgcaxapa
 
08.06.17
08:40
Здравствуйте! Появилась задача написать правила конвертации нескольких документов поступления из одной базы в один документ другой базы.Создал ПКО,у свойств указал получать из входящих данных.В ПВД создал структуру,в конце написал ВыборкаДанных = МояТаблица; При выгрузке выдает ошибку

Ошибка получения свойства объекта из входящих данных
    ПКО                    =  ПоступлениеТоваровУслуг  (:)
    ПКС                    =  4  (--> Контрагент)
    Объект                 =  Тест (Контрагент)
    СвойствоПриемника      =  Контрагент  (СправочникСсылка.Контрагенты)
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    Может в Пко еще что-то надо дописать? Если нужно,могу показать XML
1 10kgcaxapa
 
08.06.17
12:13
Упростил запрос,чтобы хоть что-то выгрузилось

запрос=новый запрос;
запрос.текст=
"ВЫБРАТЬ
|    ПоступлениеТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
|    ПоступлениеТоваровУслугТовары.Количество,
|    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
|    ПоступлениеТоваровУслугТовары.Номенклатура,
|    ПоступлениеТоваровУслугТовары.Сумма,
|    ПоступлениеТоваровУслугТовары.СуммаНДС,
|    ПоступлениеТоваровУслугТовары.Цена
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары";

ВыборкаДанных=запрос.выполнить().выгрузить();

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

При выгрузке уже другая ошибка

Ошибка получения коллекции подчиненных объектов из входящих данных
    ПКО                    =  ПоступлениеТоваровУслуг  (:)
    ПКГС                   =  1  (--> Товары)
    Объект                 =  СтрокаТаблицыЗначений  (Строка таблицы значений)
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9140)
    КодСообщения           =  66
2 finik
 
08.06.17
12:31
у тебя в ВыборкуДанных (т.е. в ПКО документа) идет таблица из запроса, а что идет в Товары? Проверь, судя по ошибке что-то не то.
3 Cyberhawk
 
08.06.17
12:35
|    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
заменить на
|    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент,
4 10kgcaxapa
 
08.06.17
12:40
(2) Если я вас правильно,понял,то ничего...Стоит галка получать из входящих данных
5 10kgcaxapa
 
08.06.17
12:46
(3) Ничего не изменилось
6 Cyberhawk
 
08.06.17
12:51
(5) Сколько платят за решение вопроса?
7 10kgcaxapa
 
08.06.17
12:52
Мне много платят)
8 10kgcaxapa
 
08.06.17
12:53
Вот скин синхронизации свойств
https://drive.google.com/open?id=0B41P7U88tnheM19IX05hSHpoQVk
9 finik
 
08.06.17
12:53
(4) Как понимаю, входящие данные туда не доходят. Что там оказывается, можно посмотреть на отладке. Проще наверное товары сразу добавить товары в ВыборкуДанных.
10 10kgcaxapa
 
08.06.17
12:53
Я вот думаю,может без правил выгрузки подчиненных объектов работать не хочет?
11 10kgcaxapa
 
08.06.17
12:57
(9) > Проще наверное товары сразу добавить товары в ВыборкуДанных
А это как?
12 finik
 
08.06.17
12:58
(11) добавить получение товаров сразу в запрос, флажок "получить из входящих данных" снять.
13 finik
 
08.06.17
13:00
торможу, у тебя же запрос уже и получает товары. Только ВыборкуДанных нужно оформить по другому. В виде таблицы значений, у которой колонками будут поля шапки, плюс одна колонка "Товары" с вложенной таблицой товаров
14 finik
 
08.06.17
13:02
в общем перепиши запрос для выборки примерно в такой вид:

ВЫБРАТЬ
|    ПоступлениеТоваровУслуг.Номер КАК Номер,
|    ПоступлениеТоваровУслуг.Дата КАК Дата,
|    ПоступлениеТоваровУслуг.Товары.(
|        Номенклатура КАК Номенклатура,
|        Количество КАК Количество,
|        Цена КАК Цена
|    ) КАК Товары
|ИЗ
|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
15 finik
 
08.06.17
13:03
и сними галочку
16 10kgcaxapa
 
08.06.17
13:12
(15) Не понимаю почему,но это работает)
17 finik
 
08.06.17
13:18
конечно работает.
с тебя за помощь 10 кг сахара.:)
18 10kgcaxapa
 
08.06.17
13:25
(17) Как оказалось работает не так,как хотелось бы...С вложенными таблицами не сделаешь группировку,а без нее смысл выгрузки теряется.Нужно свернуть по контрагенту,чтобы из миллиона накладных получилась одна.
19 10kgcaxapa
 
08.06.17
13:27
(13) А обязательно запрос переписывать? Если ТЗ создать вручную,+колонку с товарами из запроса?
20 10kgcaxapa
 
08.06.17
13:28
Но вроде так у меня не работало
21 Ёпрст
 
08.06.17
13:29
(19) можно и так. У тебя в ТЗ должна быть ТАбличнаяСасть
22 Ёпрст
 
08.06.17
13:29
часть
23 10kgcaxapa
 
08.06.17
13:50
(21) Документ создался,все хорошо...Только номенклатура не выгрузилась
24 10kgcaxapa
 
08.06.17
13:51
Ладно контрагента можно при загрузке воткнуть,а как с номенклатурой быть?Для нее тоже правила выгрузки данных нужны?
25 finik
 
08.06.17
13:57
(24) Да. Нужно описать правила и для номенклатуры. При необходимости и для подчиненных ей - всяких единиц измерения и т.д. по всей цепочке ссылок, которые надо выгрузить.
26 10kgcaxapa
 
08.06.17
14:17
(25) Работает.Только я до сих пор не понимаю,для чего тогда нужна галка получать из входящих данных...
27 Cyberhawk
 
08.06.17
16:06
(26) Внезапно: для заполнения ПКС не из свойств источника, а из свойств структуры, сидящей в переменной под названием "ВходящиеДанные". Куда предварительно ты должен нужную структуру положить.
28 10kgcaxapa
 
08.06.17
17:37
(27) Я же в ПВД писал запрос,по идее это призвольные данные,так? Источник в ПКО не указывал.Тогда почему вынрузка ругается когда ставишь эту галку,мне не понятно.Без нее все работает.Поэтому и спрашиваю,что это за магия
29 D_E_S_131
 
08.06.17
17:55
(28) Когда "произвольное", то выгрузка за загрузку особо не отвечает.
30 Cyberhawk
 
08.06.17
19:24
(28) Рекомендую пройти этот тест: http://nazva.net/logic_test1/
О результате доложить в этой ветке
31 10kgcaxapa
 
09.06.17
16:32
(30) Весело тут у вас)
Не поленился и прошел...Правильные ответы: 26 / 30 (86.7%).Вопрос о входящих данных остался открытым для меня
32 Cyberhawk
 
09.06.17
16:35
(31) Перечитывай (27) до наступления просветления. При появлении конкретных вопросов - задавай
33 10kgcaxapa
 
09.06.17
16:51
(32) ВыборкаДанных и ВходящиеДанные-это разные сущности?
34 10kgcaxapa
 
09.06.17
16:52
и там и там стркутура,я думал это одно и тоже...Выборка в ПКС сразу попадает?
35 Cyberhawk
 
09.06.17
20:34
(33) Разные, конечно
(34) ВыборкаДанных не обязательно структура
36 Defender aka LINN
 
09.06.17
21:21
(32) Так ты ж дичь какую-то написал.
(31) Входящие данные - это ИСХОДЯЩИЕ данные, переданные из ПКС. Например, есть у тебя в источнике справочник договоров. И в приемнике есть, но вот в приемнике они делятся на "с поставщиком", "с покупателем" и т.д., а в источнике - нет. Тогда в ПКС договора в, скажем, документе реализации, ты пишешь "ИсходящиеДанные = Новый Структура("Вид", "СПокупателем")". А в поступлении - "ИсходящиеДанные = Новый Структура("Вид", "СПоставщиком")". А в ПКО договоров у тебя реквизит "Вид" получает значение из входящих данных.
37 d4rkmesa
 
10.06.17
13:40
Не в тему, но от таких задач, вроде слияния нескольких документов в один, лучше отказываться до последнего, особенно если инициатива исходит от бухгалтерии. Иначе вопросы "почему не сходится сводный документ, видимо неправильно работает обмен, пусть программист разбирается" будут возникать регулярно.
38 Cyberhawk
 
12.06.17
09:29
(36) Там каждое слово на вес золота
Программист всегда исправляет последнюю ошибку.