Имя: Пароль:
1C
1С v8
Конвертация данных, подтверждение
,
0 lg2marvel
 
25.02.21
17:51
Всем привет. Конвертация данных, давно не сталкивался, много подзабыл.

Две базы (БП), односторонний обмен: Источник, Приемник.
Из Источника выгружаю документ "ВводВЭксплуатациюОС" в документ "ОперацияУПР".

Реализовано следующим образом:
В правилах ПКО: ВводВЭксплуатациюОС", "ОперацияУПР", ПКС ОперацииУПР - все получаем из входящих данных.
ПВД ВводВЭксплуатациюОС: подготовливаем структуру ВходящиеДанные и  

ВыгрузитьПоПравилу(Объект.Ссылка,,ВходящиеДанные,,"ОперацияУПР");
Отказ = Истина;

в настройках ПКО ОперацияУПР галочка искать объект приемника по внутреннему идентификатору и автоматически генерировать номер.
в настройках ПКО ВводВЭксплуатациюОС - искать объект приемника по внутреннемц идентификатору.

Запускаю обмен из источника: отправка без ошибок, получение ошибка:

Значение не является значением объектного типа (Менеджер)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8978)}:    УникальныйИдентификаторИсточника = СтруктураСвойств.Менеджер.ПолучитьСсылку(УникальныйИдентификаторИсточника);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16076)}:            ПоследнийОбъектЗагрузки = ПрочитатьИнформациюОРегистрацииОбъекта();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2667)}:        ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5480)}:        ОбработкаОбменаДаннымиВнешнееСоединение.ВыполнитьВыгрузкуДанных(ОбработкаДляЗагрузкиДанных);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2539)}:            ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(26)}:    ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4892)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(719)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(710)}:    ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

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

Ок, лезу в отладку (в базе источнике, в базе приемнике ошибка отправки: возникла ощшибка в базе корреспонденте):
Обработка.КонвертацияОбъектовИнформационныхБаз
Функция ПрочитатьИнформациюОРегистрацииОбъекта()
    // Присваиваем ПЕРЕКРЕСТНЫЕ значения переменным; РС симметричен.
    УникальныйИдентификаторПриемника = одАтрибут(ФайлОбмена, ТипСтрока, "УникальныйИдентификаторИсточника");
    УникальныйИдентификаторИсточника = одАтрибут(ФайлОбмена, ТипСтрока, "УникальныйИдентификаторПриемника");
    ТипПриемника                     = одАтрибут(ФайлОбмена, ТипСтрока, "ТипИсточника");
    ТипИсточника                     = одАтрибут(ФайлОбмена, ТипСтрока, "ТипПриемника");
    ПустойНабор                      = одАтрибут(ФайлОбмена, ТипБулево, "ПустойНабор");
Идентификаторы есть, ТипПриемника есть, ТипИсточника - нет

и как с этим быть? Пересмотрел кучу примеров, как-то упускается из виду этот момент. Подскажите плз.
1 vde69
 
25.02.21
17:57
а где узел?
2 vde69
 
25.02.21
17:58
ну и смотреть чего ты там подготовил во входящих данных :)
3 lg2marvel
 
25.02.21
17:58
(1) Узел?, не понял Вас
4 lg2marvel
 
25.02.21
17:59
(2)
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("Комментарий", Объект.Комментарий);
ВходящиеДанные.Вставить("ВнешняяСсылка",
    ОбщегоНазначения.АдресПубликацииИнформационнойБазыВИнтернете() + "#" + ПолучитьНавигационнуюСсылку(Объект.Ссылка)
);
ВходящиеДанные.Вставить("Организация", Объект.Организация);
ВходящиеДанные.Вставить("Содержание", Строка(Объект.Ссылка));
ВходящиеДанные.Вставить("Организация", Объект.Организация);
ВходящиеДанные.Вставить("Дата", Объект.Дата);
ВходящиеДанные.Вставить("ПометкаУдаления", Объект.ПометкаУдаления);
ВходящиеДанные.Вставить("Проведен", Объект.Проведен);

Запрос = Новый Запрос;
Запрос.Текст = "
        |ВЫБРАТЬ
        |    ХозрасчетныйДвиженияССубконто.Период КАК Период,
        |    ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор,
        |    ХозрасчетныйДвиженияССубконто.НомерСтроки КАК НомерСтроки,
        |    ХозрасчетныйДвиженияССубконто.Активность КАК Активность,
        |    ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт,
        |    ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
    //    |    ХозрасчетныйДвиженияССубконто.ВидСубконтоДт1 КАК ВидСубконтоДт1,
        |    ХозрасчетныйДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2,
    //    |    ХозрасчетныйДвиженияССубконто.ВидСубконтоДт2 КАК ВидСубконтоДт2,
        |    ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК СубконтоДт3,
    //    |    ХозрасчетныйДвиженияССубконто.ВидСубконтоДт3 КАК ВидСубконтоДт3,
        |    ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКт,
        |    ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1,
    //    |    ХозрасчетныйДвиженияССубконто.ВидСубконтоКт1 КАК ВидСубконтоКт1,
        |    ХозрасчетныйДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2,
    //    |    ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2 КАК ВидСубконтоКт2,
        |    ХозрасчетныйДвиженияССубконто.СубконтоКт3 КАК СубконтоКт3,
    //    |    ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3 КАК ВидСубконтоКт3,
        |    ХозрасчетныйДвиженияССубконто.Организация КАК Организация,
        |    ХозрасчетныйДвиженияССубконто.ВалютаДт КАК ВалютаДт,
        |    ХозрасчетныйДвиженияССубконто.ВалютаКт КАК ВалютаКт,
        |    ХозрасчетныйДвиженияССубконто.НалоговоеНазначениеДт КАК НалоговоеНазначениеДт,
        |    ХозрасчетныйДвиженияССубконто.НалоговоеНазначениеКт КАК НалоговоеНазначениеКт,
        |    ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма,
        |    ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаДт КАК ВалютнаяСуммаДт,
        |    ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаКт КАК ВалютнаяСуммаКт,
        |    ХозрасчетныйДвиженияССубконто.КоличествоДт КАК КоличествоДт,
        |    ХозрасчетныйДвиженияССубконто.КоличествоКт КАК КоличествоКт,
        |    ХозрасчетныйДвиженияССубконто.СуммаНУДт КАК СуммаНУДт,
        |    ХозрасчетныйДвиженияССубконто.СуммаНУКт КАК СуммаНУКт,
        |    ХозрасчетныйДвиженияССубконто.Содержание КАК Содержание,
        |    ХозрасчетныйДвиженияССубконто.НомерЖурнала КАК НомерЖурнала,
        |    ХозрасчетныйДвиженияССубконто.СчетДополнительный КАК СчетДополнительный,
        |    ХозрасчетныйДвиженияССубконто.НеКорректироватьСтоимостьАвтоматически КАК НеКорректироватьСтоимостьАвтоматически,
        |    ХозрасчетныйДвиженияССубконто.НомерИсходнойПроводки КАК НомерИсходнойПроводки
    //    |    ХозрасчетныйДвиженияССубконто.МоментВремени КАК МоментВремени
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , Регистратор = &Регистратор, , ) КАК ХозрасчетныйДвиженияССубконто
        |";
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
тз = Запрос.Выполнить().Выгрузить();
ВходящиеДанные.Вставить("Хозрасчетный", тз);
ВходящиеДанные.Вставить("СуммаОперации", тз.Итог("Сумма"));

ВыгрузитьПоПравилу(Объект.Ссылка,,ВходящиеДанные,,"ОперацияУПР");

Отказ = Истина;
5 vde69
 
25.02.21
18:00
я на память не помню, но еще в части случаев надо перекресно пользоватся входящие и исходящие данные, по моему это твой случай
6 lg2marvel
 
25.02.21
18:00
(4) в обработчике ПВД ПередВыгрузкой
7 vde69
 
25.02.21
18:02
(4) у тебя не все необходимые свойства. Подумай, что является ключем поиска :)
8 lg2marvel
 
25.02.21
18:02
(5) т.е. добавлять регистрацию документа в приемнике и делать "холостую" выгрузку обратно в источник?
9 lg2marvel
 
25.02.21
18:03
(7) по уникальному идентификатору хотелось бы
10 vde69
 
25.02.21
18:03
должно быть типа (посмотри в файле у других ссылок)
"{Идентификатор}"
11 vde69
 
25.02.21
18:06
(8) нет, по моему ты должен генерить ИсходящиеДанные, а в ПКО они уже станут входящими...

а вот когда идешь из ПКО в ПКС то там они всегда входящие
12 lg2marvel
 
25.02.21
18:14
(10) нет такого нигде :-(
(11)  Попробую конечно, но ведь док полностью передается заполненный в приемник
13 lg2marvel
 
25.02.21
18:28
(11) данные отправились, все ок. При повторном запуске документы с регистрации снялись - ок.

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

Значение не является значением объектного типа (Менеджер)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8978)}:    УникальныйИдентификаторИсточника = СтруктураСвойств.Менеджер.ПолучитьСсылку(УникальныйИдентификаторИсточника);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16076)}:            ПоследнийОбъектЗагрузки = ПрочитатьИнформациюОРегистрацииОбъекта();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2667)}:        ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5480)}:        ОбработкаОбменаДаннымиВнешнееСоединение.ВыполнитьВыгрузкуДанных(ОбработкаДляЗагрузкиДанных);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2539)}:            ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(26)}:    ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4892)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(719)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(710)}:    ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
14 lg2marvel
 
25.02.21
19:00
вопрос закрыт, ошибка была не связанная с правилами. Пересоздал узел обмена - все ок
15 lg2marvel
 
01.03.21
16:01
Таки вопрос не закрыт :-(.
Объекты выгрузились, и при повторной синхронизации  опять та же ошибка. В принципе на работоспособность не влияет, но не хорошо это.
(5) О перекрестной передаче не подскажете где почитать, глянуть примеры?
16 lg2marvel
 
01.03.21
16:18
В РегистрСведений.СоответствияОбъектовИнформационныхБаз.ФормаСписка не пишется в поле ТипПриемника значение. Попробую исправить