Имя: Пароль:
1C
 
Конвертация данных 2.1
,
0 MakaMaka
 
22.03.18
09:04
Всем привет. Чет туплю на пустом месте:
В ПКО, в событии "Перед выгрузкой" определяю структуру ВходящиеДанные, в структуру добавляю элемент, присваиваю ему значение.

В ПКС Создаю правило выгрузки свойства, указываю, получать из входящих данных, указываю  правило конвертации свойства, но при выгрузке ничего не происходит. Т.е. выгрузка проходит, но значение реквизита не заполняется. Выгрузка проходит обработкой "Универсальный обмен в формате XML".
1 MakaMaka
 
22.03.18
09:17
Чувство, что при выгрузке вообще игнорятся параметры. Или параметры используются только когда выгрузка идет через обарботка "КонвертацияОбъектовИнформационныхБаз"?
2 Cyberhawk
 
22.03.18
09:18
Попробуй определять структуру "ИсходящиеДанные"
3 Cyberhawk
 
22.03.18
09:18
Хотя из ПКО в ПКС оно и не должно вроде передаваться. Только из ПВД в ПКО и из ПКС в ПКО
4 Cyberhawk
 
22.03.18
09:19
Ты в событиях ПКС определяй исходящие данные, зачем это в ПКО? В какой ПКС думаешь они пойдут?
5 MakaMaka
 
22.03.18
09:21
(2) Определена в ПВД, в ПВД данные получаю в запросе, потом обхожу выборку циклом:

ВыгрузитьПоПравилу(ВыборкаДанных.Ссылка, ,Новый Структура ,Новый Структура , "ПоступлениеТоваровУслуг_ПриемНаОтветХранение");
6 Cyberhawk
 
22.03.18
09:22
Определять = заполнять
7 MakaMaka
 
22.03.18
09:23
Ты в событиях ПКС определяй исходящие данные, зачем это в ПКО?
- А в чем разница? В ПКО до этого определял и ПКС значения подхватывали. Тут наверное что то другое.

В какой ПКС думаешь они пойдут?
- В ПКС Выгружаемого объекта. Думаю так.

(6) Ок. Спасибо.

Есть еще одна идея. Кажется есть зацепка, сейчас проверю, отпишусь.
8 MakaMaka
 
22.03.18
09:29
(6) Еще раз хотел сказать спасибо. Ларчик открывался просто.
В ПКО Объекта у меня пакетный запрос. Я одним запросом получаю нужные мне параметры. В итоге я просто забыл строчку
Выборка_Шапка.Следующий();
перед тем как обращаться к запросу.

Вывод: надо чаще писать запросы вручную, а не деградировать с конструктором.
Еще раз всем спасибо!
9 MakaMaka
 
22.03.18
13:43
Апну тему, вопрос все равно с КД связан.

Выгружаю документ, мне нужно, что бы он искался по гуиду, в настройках ПКО, в настройках, установлена галка "искать объект приемника по внутреннему идентификатору объекта истоника".

Но чет не ищет, загружаю один и тот же файл, и на каждую загрузку создается новый документ.
Примечание: я не выгружаю номер документа, установлена галка "Автоматически генерировать номер или код, если он не занят".

Народ, что я опять делаю не так? Пните плиз!
10 MakaMaka
 
22.03.18
14:03
Жесть какая то, галки стоят искать по гуиду, а документы создаются, хоть ты тресни. Видимо прийдется в отладчике копошиться.
11 MakaMaka
 
22.03.18
14:15
хоть идею подкиньте, что может быть не так. Почему не находится документ по гуиду?
12 MakaMaka
 
22.03.18
14:34
блин, только и разговоров : выборы и Путин. Программисты ау? Тут есть программисты???
13 Marik1274
 
22.03.18
14:35
Гуид может меняешь..? Правила старые? Например использовал отладку, правила обновил, а галочку "отладка" не убрал.
14 Marik1274
 
22.03.18
14:37
Посмотри в файле обмена гуид. Он не меняется?
15 MakaMaka
 
22.03.18
14:39
(14) Нет, загружаю один и тот же файл, он не меняется. Файл один, я его 2 раза загружу, 2 документа создается и т.д.
16 Marik1274
 
22.03.18
14:42
Возможно у тебя два похожих ПКО. Или может программно другое ПКО вызываешь (выгрузить по правилу).
А вообще проанализируй внимательно файл обмена. Там есть все, что нужно для загрузки. Только смотри не через осла, а хоть блокнотом. Удобно смотреть Нотепад+. Там цветом подсвечивается.
17 MakaMaka
 
22.03.18
14:47
НужноПродолжитьПоиск = (Элемент.Значение.ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли = Истина);
18 MakaMaka
 
22.03.18
14:47
Что скажете товарищи?
19 Cyberhawk
 
22.03.18
14:47
Покажи фрагмент файла выгрузки с объектом с ГУИДом, который у тебя "задваивается"
20 Cyberhawk
 
22.03.18
14:48
Затем покажи то ПКО в КД, что указано в файле выгрузки для этого объекта
21 MakaMaka
 
22.03.18
14:54
</Объект>
<Объект Нпп="1" Тип="ДокументСсылка.ПриемНаОтветХранение" ИмяПравила="ПоступлениеТоваровУслуг_ПриемНаОтветХранение"><Ссылка Нпп="1">
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
        <Значение>c47ab9ea-1d12-11e8-872e-0025906ab1cc</Значение>
    </Свойство>
</Ссылка>
    <Свойство Имя="Дата" Тип="Дата">
        <Значение>2018-03-01T08:38:30</Значение>
    </Свойство><ЗначениеПараметра Имя="НомерЗаявки" Тип="Строка">
    <Значение>ЕАED-000190</Значение>
</ЗначениеПараметра><Свойство Имя="Организация" Тип="СправочникСсылка.Организации"><Ссылка Нпп="2" НеСоздаватьЕслиНеНайден="true">
    <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка">
        <Значение>bcd8a040-d052-11e7-a24a-0025906ab1cc</Значение>
    </Свойство><Свойство Имя="ИНН" Тип="Строка">
    <Значение>6672346554</Значение>
</Свойство><Свойство Имя="КПП" Тип="Строка">
    <Значение>668501001</Значение>
</Свойство>
</Ссылка>
22 MakaMaka
 
22.03.18
15:01
Я вот такой интересный кусок кода нашел:

АвтоматическиСоздаватьНовыйОбъект = (НЕ НеСоздаватьОбъектЕслиНеНайден
            И НЕ НужноПродолжитьПоискЕслиЭлементПоGUIDНеНайден)
            И НЕ ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD;
23 Marik1274
 
22.03.18
15:03
ПКО-Настройки - тут эти галочки (ПКО документа)
24 MakaMaka
 
22.03.18
15:04
(23) Это знаю. Фигню я нашел. Не то что надо. Там дальше еще что то есть. Блин!
25 MakaMaka
 
22.03.18
15:14
26 MakaMaka
 
22.03.18
15:18
Поставил галку не создавать объект, если он не найден. Документы не создались. Значит что? Не находит по ГУИД?
27 MakaMaka
 
22.03.18
15:25
Галку снял, начал двоить) Вот же зараза такая, что то тут не чисто, какая то тонкость. Надо удалить документы и сравнить гуиды, тогда сразу станет ясно прав ли я. А если прав, то что делать?
28 Marik1274
 
22.03.18
15:25
ИмяПравила="ПоступлениеТоваровУслуг_ПриемНаОтветХранение"
Найди в файле обмена это правило и все что там выложи сюда
29 MakaMaka
 
22.03.18
15:56
(28) Короче песня такая, у меня создаются документы с другим гуидом. Чешу репу. Как такое возможно?
30 MakaMaka
 
22.03.18
15:58
В файле выгрузки гуида, который был передан в фале нет.
31 MakaMaka
 
22.03.18
16:08
Как же так? Как же должно быть? Неужели все?
32 MakaMaka
 
22.03.18
16:18
Убрал галку генерировать номер, если он не задан, и о ЧУДО! Эта кнопулечка, маленькая галка, она мне мозг совокупила! Она генерирует не только новый код, но и гуид. Вот такой вот вывод
33 MakaMaka
 
22.03.18
16:31
нет, все равно глючит
34 Ёпрст
 
22.03.18
16:57
(32) неверный вывод. В базе приёмнике почисти рег сведений
35 Ёпрст
 
22.03.18
16:57
там твоё кривое соответствие мешает норм. поиску.
36 Cyberhawk
 
22.03.18
20:16
У тебя пади кэш выгрузки работает, вот и нет ГУИДа нужного
37 Cyberhawk
 
22.03.18
20:16
Т.е. первым выгружается этот документ по ПКО, в котором не стоит поиск только по ГУИДу
38 Cyberhawk
 
22.03.18
20:17
Переопределяй ключ выгружаемых данных в каждом из ПКО, где фигурирует твой объект
39 MakaMaka
 
23.03.18
08:11
(38) Зачет! Сработало. Буду разбираться, изучать, что это за ключ выгружаемых данных. Спасибо большое!
40 AneJIbcuH
 
23.03.18
08:20
(10) У тебя случайно ПВД не с произвольным алгоритмом выгрузки?
41 MakaMaka
 
23.03.18
08:24
(40) Я это вот тут указал (5) , да запросом получаю данные, и выгружаю.
42 AneJIbcuH
 
23.03.18
08:26
(41) а в ПВД в ВыгрузитьПоПравилу  у тебя ссылка точно передавалась?
43 AneJIbcuH
 
23.03.18
08:34
(41) Как-то делал выгрузку документа таким образом (В ПВД):
Запрос с текстом, типа  
"Выбрать
Док.Ссылка,
Док.Контрагента,
Док.Договор
...
Док.Товары(
   ССылка,
   Номенклатура,
   ...)
Из .."

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

Так вот в запросе обязательно должна присутствовать (видимо и передаётся в ПКО) строка с получением ссылки: "Док.Ссылка". Иначе и не происходит поиск по ГУИД (даже если в ПКО стоит галка).
44 MakaMaka
 
23.03.18
08:40
(43) была ссылка.

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

Запрос.УстановитьПараметр("Организация", Параметры.Организация);
Запрос.УстановитьПараметр("Склад", Параметры.Склад);
Запрос.УстановитьПараметр("НачалоПериода", Параметры.НачалоПериода);
Запрос.УстановитьПараметр("ОкончаниеПериода", КонецДня(Параметры.ОкончаниеПериода));

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

Пока ВыборкаДанных.Следующий() Цикл
    
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю("0. Выгружается Объект :" + ВыборкаДанных.Ссылка +".",,,,,);
    
    ВыгрузитьПоПравилу(ВыборкаДанных.Ссылка, ,Новый Структура ,Новый Структура , "ПоступлениеТоваровУслуг_ПриемНаОтветХранение");
    
КонецЦикла;

Отказ = Истина;
45 MakaMaka
 
23.03.18
08:41
Я даже определял переменную ВыборкаДанных, в разных вариациях, и запрос в нее передавал и ТЗ и результат выборки запроса, не было результата. Помогло только определение ключа.
46 AneJIbcuH
 
23.03.18
08:51
(44) Ну да, не очень понятно. Зря конечно используешь Переменную "ВыборкаДанных", это зарезервированная переменная КД.

Вот так тоже пробовал?:

....
"Запрос.УстановитьПараметр("ОкончаниеПериода", КонецДня(Параметры.ОкончаниеПериода));

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

Пока лВыборкаДанных.Следующий() Цикл
    
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю("0. Выгружается Объект :" + лВыборкаДанных.Ссылка +".",,,,,);
    
    ВыгрузитьПоПравилу(лВыборкаДанных.Ссылка,,,, "ПоступлениеТоваровУслуг_ПриемНаОтветХранение");
    
КонецЦикла;

Отказ = Истина;"
47 MakaMaka
 
23.03.18
08:55
(46) использовал, я смотрел как работает, если выборку определяю. Последнее не понял, ты мой код мне скопировал?
48 MakaMaka
 
23.03.18
08:56
Сейчас переменная выборкаданных не определена, без нее живу.
49 AneJIbcuH
 
23.03.18
09:01
(47) Ну там мелочи ВыгрузитьПоПравилу(лВыборкаДанных.Ссылка,,,, "ПоступлениеТоваровУслуг_ПриемНаОтветХранение");
50 MakaMaka
 
23.03.18
09:06
(49) тогда не будет определены структуры Входящих данных и исходящих данных, а они мне дальше нужны, я в них выгружаю данные как в параметр, и использую после загрузки объекта.
51 AneJIbcuH
 
23.03.18
09:10
Что-то вообще непонятное. Какие данные выгружаешь?
52 AneJIbcuH
 
23.03.18
09:11
(50) Ну в целом, это не повлияет на поиск по ГУИДу
53 MakaMaka
 
23.03.18
09:18
Я выгружаю строковые данные в параметр, а во время приемки по значение параметра пихаю в запрос. Там сложный схематоз, но заказчик как художник, он так видит. Не будем это обсуждать. А так, согласен, на поиск п огуиду это не влияет.
54 AneJIbcuH
 
23.03.18
09:20
(53)  Думаю, что всё-таки у тебя, как  (37) сказано