Имя: Пароль:
1C
1С v8
КД 2 - Перенос из 8,2 в 7,7 реквизита-перечисление в реквизит-справочник
0 jyupiter
 
22.12.11
07:01
Источник - Платформа 8,2 Конфигурация УСО 1,3
Приёмник - Платформа 7,7 Конфигурация - сильно допиленная БУ ред.4,5

Пытаюсь написать правила обмена, чтобы получить хотя бы корректный и полный выгруз информации.
Вот что сделано:

В источнике у справочника ДоговорыКонтрагентов есть реквизит ВидДоговора типа ПеречислениеСсылка.ВидыДоговоровКонтрагентов
Ему соответствует в приёмнике реквизит ВидДоговора типа Справочник.ВидыДоговоров

Для ПКО Договоры прописано ПКС ВиДДоговора
Источник пустой, приёмник - справочник ВидыДоговоров

При выгрузке ПКС есть обработчик

ИсходящиеДанные = Новый Структура("Код, Наименование, Договор");

Если Источник.ВидДоговора = перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда
   ИсходящиеДанные.Код = "2.1.2";
   ИсходящиеДанные.Наименование = "2.1.2 Приобретение материалов";
Иначе
   ИсходящиеДанные.Код = "7";
   ИсходящиеДанные.Наименование = "7. Прочие";
КонецЕсли;
ИсходящиеДанные.Договор = Источник;



Прописано ПКО СправВидыДоговоров с пустым источником и приёмником-справочником

Перед выгрузкой ПКО СправВидыДоговоров есть обработчик:

КлючВыгружаемыхДанных = ВходящиеДанные.Код;

Увы мне - не понимаю, зачем он нужен, тупо скопировал с книжки Бояркина-Филатова (стр 124)

Ему подчинены два ПКС (Источники пустые, Приёмники - строковые реквизиты Код и Наименование соответственно)
В каждом проставлен флаг есть обработчик ПриВыгрузке:


Значение = ВходящиеДанные.Код;

И

Значение = ВходящиеДанные.Наименование;



Беда ровно одна, но ужасная-преужасная. Информация по реквизиту ВидДоговора не попадает в файл выгруза.
Пытался сделать иначе (то есть, как у Бояркина по первой схеме), но выгруз вообще не завершался - прерывался с ошибкой "Поле объекта не обнаружено (СтрокаПоискаВыгрузкиСсылки)" в процессе выгрузки ВидаДоговора.
Мой опыт "работы" с КД2 составляет две недели, я даже не понимаю толком, как задать правильный вопрос.

Надо что-то доделать? Или переделать? Что именно?
1 jyupiter
 
22.12.11
07:06
Забыл сказать:
Для создания правил обмена используется Конвертация Данных 2.1.5.1 на платформе 8.2 (если это имеет какую-то важность)
2 Aleksey
 
22.12.11
07:39
В справочнике ВидДоговора галка стоит, получить из входящих данных?
3 Рэйв
 
22.12.11
07:40
А почему бы не сделать проще

сделвать в ПКО ВидыДоговоров ПКС для Наименования и Код, где ПередВыгрузкой написать

Если Источник.ВидДоговора = перечисления.ВидыДоговоровКонтрагентов.СПоставщиком Тогда
   // в ПКС кода
   Значение = "2.1.2";
   // в ПКС Наименования
   Значение.Наименование = "2.1.2 Приобретение материалов";
Иначе
   //в ПКС Кода
   Значение = "7";
   //в ПКС Наименования
   Значение = "7. Прочие";
КонецЕсли;


потом сделать поиск по Коду...Ну или по коду и наименованию.
Должно нормально перелететь вроде
4 Рэйв
 
22.12.11
07:41
* Значение.Наименование = Значение
5 Рэйв
 
22.12.11
07:41
Ну вобщем в зависимости от значения перечисления ставить значение
6 jyupiter
 
22.12.11
07:48
(2) в ПКС СправВидыДоговоров флаг получить из входящих не стоит, потому что инфа берётся непосредственно из реквизитов источника
7 jyupiter
 
22.12.11
07:51
(5) я нашёл у себя ошибку: при переделке под описанную в теме схему я из ПКС "-->ВидыДоговоров"  удалил ПКО СправВидыДоговоров

Поэтому реквизит никуда не попадал

но когда я вернул ПКО на законное место, старая ошибка тоже вернулась. Выгруз аварийно завершается с ошибкой

Ошибка при выгрузке данных для узла плана обмена
   ТипОбъекта             =  Справочник объект: Договоры контрагентов
   Объект                 =  Основной договор
   ОписаниеОшибки         =  Поле объекта не обнаружено (СтрокаПоискаВыгрузкиСсылки)
   ПозицияМодуля          =  Обработка.ОбменДаннымиXML.МодульОбъекта(8740)
   КодСообщения           =  72
   УзелПланаОбмена        =  002
8 Рэйв
 
22.12.11
07:57
(7)Ну, написало же
Обработка.ОбменДаннымиXML.МодульОбъекта(8740)

Открывай в отладке, ставь точку останова на строке 8740 и смотри что ей надо.

Правда прямым перебором долго на F5 скорее всего.Так что найди какое нибудь условие для точки останова
9 jyupiter
 
22.12.11
08:02
(8)нет, по ф5 недолго, но всё равно ничего не ясно
СтрокаПоискаВыгрузкиСсылки - это поле структуры, которая ищется по объекту

Объект - значение перечисления ВидыДоговоров
Структура для него находится, а поле в ней с таким именем нет
почему нет - не знаю, разобрать 10к строк кода быстро не смогу
10 jyupiter
 
22.12.11
08:06
(3) поиск я делаю только по коду
разбор значений перечисления оставил в одном месте, а не раскидал по нескольким местам, потому что на самом деле значений у перечисления гораздо больше, и неохота дублировать разбор в разных местах
11 jyupiter
 
22.12.11
08:08
(9) Скорее всего, поля с именем СтрокаПоискаВыгрузкиСсылки в структуре нет потому, что объект типа ПеречислениеСсылка, а не СправочникСсылка

Одно перечисление в другое конвертируется на ура, а вот перечисление в справочник меня беспросветно парит уже второй день(((
12 Мимохожий Однако
 
22.12.11
08:14
Попробуй закомментировать поиск по коду.
13 jyupiter
 
22.12.11
08:22
(12)в каком месте закомментировать?
если снять флаг поиска с реквизита, выгруз делается, но значения Кода и Наименования для ВидДоговора в файл обмена не передаются
14 echo77
 
22.12.11
08:44
А что как все сложно?
Я в свое время делал вот так(не лучшее решение, но работало):
http://i31.fastpic.ru/big/2011/1222/1e/576d7122e0cd379484a897971556a01e.png
http://i31.fastpic.ru/big/2011/1222/e1/cf21370ea066b9d46ea8fa7c4cc8c4e1.png
15 jyupiter
 
22.12.11
08:45
(14) пока нихрена не умеешь - всегда сложно
переходим с 7,7 на 8,2 - приходится учиться
16 echo77
 
22.12.11
08:49
(15) у тебя получилось?
17 jyupiter
 
22.12.11
08:51
(14) сначала я так и сделал, как на твоих картинках (и так же, как по книжке Бояркина, схема номер раз)

но при выгрузе выскакивала точно та же ошибка
победить её не получилось, и я попробовал схему номер два

ошибка оказалась более живучей, чем мой боевой настрой
18 dk
 
22.12.11
08:55
(14) +1
тоже так же делал
просто менял название если надо, как-то так
Если Врег(Источник) = "НДС_18" Тогда
  Значение = "НДС 18%";
ИначеЕсли Врег(Источник) = "НДС_10" Тогда
  Значение = "НДС 10%";
...
----
т.е сопоставлял в коде названия перечислений в 7-ке и названия в справочнике в 8-ке
19 jyupiter
 
22.12.11
10:33
Обсуждение за рамками форума помогло выяснить, что я использую для выгруза не "Универсальный обмен ХМЛ", а встроенную в конфигурацию обработку для обмена данными ХМЛ. Видимо, начинка, то есть, модули, этих обработок сильно различаются

Поэтому было принято решение не парить больше моск ни себе, ни людям, завести в 7.7 реквизит ВидыДоговоровПрч типа Перечисление и передавать значение из 8.2 в него

Спасибо всем, кто принял участие в обсуждении и помог прийти к этому решению, за которое и самому Соломону не должно было бы быть стыдно)