Имя: Пароль:
1C
1С v8
Конвертация данных по произвольному алгоритму
,
0 Игорь_МММ
 
25.03.16
11:42
запросом в ПВД выбирается 69 элементов для выгрузки, выгружается только 3. С чем это может быть связано?
1 ДенисЧ
 
25.03.16
11:43
с ДНК?
2 Игорь_МММ
 
25.03.16
11:48
а помочь?
ПВД есть, данные запросом выбираются, в ПКС источник не заполнял, приемник заполнен. Поиск по Наименованию поставил.
3 Игорь_МММ
 
25.03.16
11:49
поля в запросе соответствуют полям приемника
4 Игорь_МММ
 
25.03.16
11:51
в общем-то это номенклатура -> номенклатура
5 Игорь_МММ
 
25.03.16
11:54
галку "искать объект по внутреннему индентификатору" снял
6 Borteg
 
25.03.16
11:57
(5) код произвольного алгоритма в студию
7 Игорь_МММ
 
25.03.16
11:59
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ЗаказыПокупателейТовары.Товар,
|    ЕСТЬNULL(ПотребностьПоСпецификацииПереченьЗаказа.Номенклатура,0) КАК Номенклатура
|ПОМЕСТИТЬ таблица
|ИЗ
|    Справочник.ЗаказыПокупателей.Товары КАК ЗаказыПокупателейТовары
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПотребностьПоСпецификации КАК ПотребностьПоСпецификации
|            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПотребностьПоСпецификации.ПереченьЗаказа КАК ПотребностьПоСпецификацииПереченьЗаказа
|            ПО ПотребностьПоСпецификации.Ссылка = ПотребностьПоСпецификацииПереченьЗаказа.Ссылка
|        ПО ЗаказыПокупателейТовары.Спецификация = ПотребностьПоСпецификации.ИмяСпецификации
|ГДЕ
|    ЗаказыПокупателейТовары.Выгружать = ИСТИНА
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    таблица.Товар КАК Номенклатура
|ПОМЕСТИТЬ Итог
|ИЗ
|    таблица КАК таблица
|
|СГРУППИРОВАТЬ ПО
|    таблица.Товар
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    таблица.Номенклатура
|ИЗ
|    таблица КАК таблица
|ГДЕ
|    таблица.Номенклатура <> 0
|СГРУППИРОВАТЬ ПО
|    таблица.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    СпрНоменклатура.Артикул,
|    СпрНоменклатура.Наименование,
|    СпрНоменклатура.Родитель,
|    СпрНоменклатура.ЭтоГруппа,
|    СпрНоменклатура.НаименованиеПолное,
|    СпрНоменклатура.БазоваяЕдиницаИзмерения
|ИЗ
|    Итог КАК Итог
|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
|        ПО Итог.Номенклатура = СпрНоменклатура.Ссылка";
ВыборкаДанных = Запрос.Выполнить().Выбрать();
8 Borteg
 
25.03.16
12:05
(7) в выборке точно 69 элементов? чем отличаются выгружаемые объекты и не выгружаемые? может в ПКО на какието условия отказ стоит?
9 Borteg
 
25.03.16
12:06
(7) поставь в выгрузку сообщить и посмотри при выгузке какие элементы выгружаются
10 Borteg
 
25.03.16
12:06
(7) так же не понятно чем поиск по идентификатору не угодил?
11 Borteg
 
25.03.16
12:10
(2) а поиск по полю этогруппа включен?
12 Rie
 
25.03.16
12:22
(0)
А почему в первом подзапросе
ЕСТЬNULL(ПотребностьПоСпецификацииПереченьЗаказа.Номенклатура,0)
а не ЕСТЬNULL(ПотребностьПоСпецификацииПереченьЗаказа.Номенклатура,Справочник.Номенклатура.ПустаяСсылка)

(да можно и просто NULL оставить - хуже от этого не будет).
13 Rie
 
25.03.16
12:23
(12)->(7)
14 Игорь_МММ
 
25.03.16
13:21
(8) я этот запрос ставил в источнике  -там смотрел, получилось 69 элементов.
А отличаются тем, что нужно выгружать только ту номенклатуру, которая присутствует в заказах, которые обозначены как "Выгружать"
(9) сейчас попробую (10) это уже просто тыкал на то на се - может что поможет (11) пробовал и сним и без него - все одинаково
(12) ну тоже пробовал различные варианты, сначала было просто без обработки NULL
15 Игорь_МММ
 
25.03.16
13:25
(9) поставил в ПВД обход выборки:

Пока ВЫборкаДанных.Следующий() Цикл
    Сообщить (выборкаДанных.Наименование);
конеццикла;

сообщает 69 наименований Номенклатуры и в конце пишет Выгружено 3 объекта
16 Игорь_МММ
 
25.03.16
13:28
так поправка: оставил выгрузку только номенклатуры - в итоге номенклатуры выгружает 0 объектов, то есть вообще номенклатуру не выгружает
17 sonne666
 
25.03.16
13:48
(16) в ПВД указано ПКО? В ПКО стоит галочка "Не запоминать выгруженные объекты"?
18 Игорь_МММ
 
25.03.16
13:48
плз, подскажите что посмотреть? почему не выгружаются данные?
19 Игорь_МММ
 
25.03.16
13:52
(17) ПКО указано. галочка не стояла - поставил, но результат тот же: выгружено 0
20 Игорь_МММ
 
25.03.16
13:54
а в ПКС надо указывать ПКО?
21 sonne666
 
25.03.16
13:57
(20) надо указывать, если приемник не примитивного типа.
В ПКО в обработчиках нигде не прописан отказ от выгрузки? Или в ПКС этого объекта?
22 Игорь_МММ
 
25.03.16
14:03
(21) все обработчики событий пустые
23 Игорь_МММ
 
25.03.16
14:09
24 sonne666
 
25.03.16
14:11
(23) В ПКО источник нужно убрать, по-моему
25 sonne666
 
25.03.16
14:13
(23) ну и ПВД не до конца видно, но в ВыборкаДанных должна быть ТЗ с реквизитами номенклатуры, а не с самим элементом.
26 Игорь_МММ
 
25.03.16
14:15
(25) вот тут (7) полный текст. вроде так
27 Игорь_МММ
 
25.03.16
14:16
там не ТЗ, а выборка - это же не принципиально?
28 Игорь_МММ
 
25.03.16
14:17
(24) не то ..
29 Borteg
 
25.03.16
14:28
(28) поиск по группе обязателен
30 Pro-tone
 
25.03.16
14:29
(0) запросом в ПВД выбирается 69 элементов для выгрузки, выгружается только 3. С чем это может быть связано?

Очевидно связано с тем, что происходит между выборкой элементов в ПВД и их записью в ИБ. Где-то срабатывает Отказ=Истина. Может быть еще на стороне ИБ-источника, а может и приемника.
31 Borteg
 
25.03.16
14:30
(28) так же в выборку я бы добавил ссылку обязательно, но не должно влиять
32 Borteg
 
25.03.16
14:34
(28) А вообще поставь в ПКО после загрузки код Попытка ОБъект.Записать();
Сообщить("Наименование объекта");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки и смотри что происходит
33 Игорь_МММ
 
25.03.16
14:34
(29) да, делал - без результата (31) не влияет (30) для меня это темный лес, не подскажите что посмотреть?
34 Игорь_МММ
 
25.03.16
14:37
(32) поставил но сообщений вообще никаких нет
35 Игорь_МММ
 
25.03.16
14:38
пардон, это надо загрузку выполнить?
36 Игорь_МММ
 
25.03.16
14:39
уже запутался ... у меня при выгрузке пишет выгружено 0 объектов . Сообщений из (32) не появляется
37 Borteg
 
25.03.16
14:43
(36) правила перечитываешь после модификации?)
38 Игорь_МММ
 
25.03.16
14:45
) ну конечно
39 Borteg
 
25.03.16
14:50
(38) Тогда используй режим отладки в универсальном обмене данных, там точно все отловишь)
40 Borteg
 
25.03.16
14:53
(38) и убери объект выборки в пвд
41 Игорь_МММ
 
25.03.16
14:58
(40) нет,
(39) этой обработки нет - надо скачать .. .попробую
42 sonne666
 
25.03.16
15:58
(28) если в ВыборкаДанных у вас объекты, в ПКО источник задан, а в ПКС источника нет. Как конвертация узнает, какие реквизиты в какие вы собрались выгружать.
Попробуйте в ПКС в источнике поставить реквизиты источника.
43 MishaD
 
25.03.16
16:15
Ну это правило МММ, вложили 69 тыщ, а получили 3
44 Игорь_МММ
 
26.03.16
23:34
получилось полечить таким образом : в запросе сделал выборку всех полей спр Номенклатура
вместо:
|ВЫБРАТЬ
|    СпрНоменклатура.Артикул,
|    СпрНоменклатура.Наименование,
|    СпрНоменклатура.Родитель,
|    СпрНоменклатура.ЭтоГруппа,
|    СпрНоменклатура.НаименованиеПолное,
|    СпрНоменклатура.БазоваяЕдиницаИзмерения,
|    СпрНоменклатура.Ссылка

сделал:

|ВЫБРАТЬ
|    СпрНоменклатура.Ссылка,
|    СпрНоменклатура.ВерсияДанных,
|    СпрНоменклатура.ПометкаУдаления,
|    СпрНоменклатура.Предопределенный,
|    СпрНоменклатура.Родитель,
|    СпрНоменклатура.ЭтоГруппа,
|    СпрНоменклатура.Код,
|    СпрНоменклатура.Наименование,
|    СпрНоменклатура.Артикул,
|    СпрНоменклатура.НаименованиеПолное,
|    СпрНоменклатура.БазоваяЕдиницаИзмерения,
|    СпрНоменклатура.СтавкаНДС,
|    СпрНоменклатура.Комментарий,
|    СпрНоменклатура.Услуга,
|    СпрНоменклатура.НоменклатурнаяГруппа,
|    СпрНоменклатура.СтранаПроисхождения,
|    СпрНоменклатура.НомерГТД,
|    СпрНоменклатура.СтатьяЗатрат,
|    СпрНоменклатура.ОсновнаяСпецификацияНоменклатуры,
|    СпрНоменклатура.Производитель,
|    СпрНоменклатура.Импортер,
|    СпрНоменклатура.ОсновнойПоставщик,
|    СпрНоменклатура.НормаПоставки,
|    СпрНоменклатура.МинимальныйОстаток,
|    СпрНоменклатура.СпособПроизводства,
|    СпрНоменклатура.Упаковка,
|    СпрНоменклатура.СпособОкругленияКоличества,
|    СпрНоменклатура.ПорядокОкругления,
|    СпрНоменклатура.Параметр,
|    СпрНоменклатура.МестоХранения,
|    СпрНоменклатура.Выпуск,
|    СпрНоменклатура.Спецификация,
|    СпрНоменклатура.Коэффициент,
|    СпрНоменклатура.Нахлест,
|    СпрНоменклатура.ВыгружатьВБП

однако след.непонятка: запрос выбирает 69 элементов. выгружено пишет 83. Что добавляется? Кроме номенклатуры все отключаю
45 Rie
 
27.03.16
04:51
(44) В таблице Итоги, вероятно, есть дубли по номенклатуре (вместо ВЫБРАТЬ - использовать бы ВЫБРАТЬ РАЗЛИЧНЫЕ, ну и ОБЪЕДИНИТЬ ВСЕ подкинет дополнительно кой-чего).
46 sonne666
 
28.03.16
10:52
(44) так у вас еще единицы измерения и родители элементов номенклатуры выгружаются. Посмотрите в файле выгрузки, что именно выгрузилось.
47 Игорь_МММ
 
28.03.16
14:27
(46) я же отключаю единицы измерения, а родители присутствуют в 69-ти. файл выгрузки это, извините, где глянуть?
48 sonne666
 
28.03.16
14:48
(47) Где отключаете? В ПКС номенклатуры убрали этот реквизит?
А чем выгружаете-то? Обработкой Универсальный обмен в формате xml?
49 Игорь_МММ
 
29.03.16
10:02
(48) снимаю галки при выгрузке https://cloud.mail.ru/public/7Rg7/23JB4oUVF
50 sonne666
 
29.03.16
10:33
(49) это не то, это какие объекты выгружаются по выборке. А так вы выгружаете номенклатуру, у которой есть реквизит типа ЕдиницаИзмерения, а это справочник, для которого тоже есть правило конвертации.
51 Игорь_МММ
 
29.03.16
10:39
(50) то бишь все равно цепляет все ссылки - понял, спасибо
52 Garykom
 
гуру
29.03.16
10:50
ТС хочешь выгрузить 1 элемент номенклатуры или много элементов?

Просто можно сделать 1 раз "ВыгрузитьПоПравилу()" для структуры с кучей номенклатуры и "групповое" ПКО/ПКС
Или в цикле вызывать "ВыгрузитьПоПравилу()" для каждого элемента номенклатуры
53 Игорь_МММ
 
29.03.16
10:54
(52) мне нужно выгрузить только определенную номенклатуру (выбираю запросом). Но я так понимаю если например, не выгружу ЕдиницуИзмерения, то  какая-то номенклатура не запишется - реквизит ЕИ обязателен же к заполнению. Это так?
54 sonne666
 
29.03.16
10:57
(53) При загрузке запишется.
55 Garykom
 
гуру
29.03.16
11:09
(53) выгрузится ли ЕИ уже от галочек в настройках ПКО зависит, там есть не заполнять по ссылке и т.д.
56 Игорь_МММ
 
29.03.16
11:30
то есть при записи нового элемента не будет проверяться наличие всех необходимых реквизитов ??
тогда как же (44) сработало?
57 sonne666
 
29.03.16
17:12
(56) при флаге Загрузка = Истина вообще ничего не проверяется (может, меня поправят). С помощью загрузки можно вообще насоздавать элементов, у которых ни один реквизит не будет заполнен.
Вы вообще пробовали загружать то, что выгрузили и посмотреть?
В каждом ПКО при выгрузке напишите что-нибудь типа
Сообщить(Источник);
58 Игорь_МММ
 
01.04.16
18:59
(12) как правильно обработать Нуль пустой ссылкой? как вы пишите:
ЕСТЬNULL(ПотребностьПоСпецификацииПереченьЗаказа.Номенклатура,Справочник.Номенклатура.ПустаяСсылка)
выдает: поле не найдено. пробовал ...ПустаяСсылка() - тоже не то. Как правильно то?
59 grate
 
01.04.16
19:02
(58) ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
60 Игорь_МММ
 
01.04.16
19:29
(59) Спасибо
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший