Имя: Пароль:
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) Там каждое слово на вес золота
Независимо от того, куда вы едете — это в гору и против ветра!