БСП. При переносе по ссылке, элементы не существующие на стороне приемнике не создаются.
Здравствуйте!
Есть ПВД:
Как видно в нем в конце используется функция ВыгрузитьПоПравилу()
ПКО ЗакреплениеЗаКафедройИзВходящихДанных имеет следующий вид:
Табличные части этого ПКО имеют следующий вид:
Проблема следующая:
При выгрузке через обработку "Универсальный обмен данными в формате XML" все перегружается.
При обмене через БСП документ Закрепление за кафедрой создается, а ссылочные реквизиты, если объекты в базе не находятся по полям поиска не создают, а на место реквизита вставляется не известная ссылка и пишет "Объект не найден (<ссылка на объект>)". Собственно, что делать?
Есть ПВД:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.ПодразделениеОрганизации КАК Подразделение,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Должность,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.ЗанимаемыхСтавок КАК Ставка,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник.ВидЗанятости КАК ВидЗанятости,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Номер,
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен,
| ВЫБОР
| КОГДА ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СдельнаяОплатаТруда,
| ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета КАК ВидРасчета
|ИЗ
| Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.ОсновныеНачисления КАК ПриемНаРаботуВОрганизациюОсновныеНачисления
| ПО ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка = ПриемНаРаботуВОрганизациюОсновныеНачисления.Ссылка
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник = ПриемНаРаботуВОрганизациюОсновныеНачисления.Сотрудник
|ГДЕ
| ВЫБОР
| КОГДА &ИспользоватьОтборПоПодразделениям ТОГДА
| ПриемНаРаботуВОрганизациюРаботникиОрганизации.ПодразделениеОрганизации В ИЕРАРХИИ (&Подразделения)
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
//Отбор по видам расчета для выгрузки через БСП
| И ВЫБОР
| КОГДА &ИспользоватьОтборПоВидамРасчета ТОГДА
| ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета В ИЕРАРХИИ (&ВидРасчета)
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ
//Отбор по видам расчета для выгрузки через УОД
//| И ПриемНаРаботуВОрганизациюОсновныеНачисления.ВидРасчета В ИЕРАРХИИ (&ВидРасчета)
//| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата > &Дата
| И ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка = &Ссылка";
Выполнить(Алгоритмы.ЗаполнитьПараметрыОтбораПоВидамРасчета);
//Отбор по видам расчета для выгрузки через УОД
//Выполнить(Алгоритмы.ПолучитьМассивЗаданныхВидовРасчетов);
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
//ДатаОтбораДокументов = Дата("00010101");
//Выполнить(Алгоритмы.ПолучитьДатуСрезаПоследних);
//Запрос.УстановитьПараметр("Дата", ДатаОтбораДокументов);
Выполнить(Алгоритмы.ЗаполнитьПараметрыОтбораПоПодразделениям);
ВыборкаДанных = Неопределено;
ПустаяТабличнаяЧасть = Неопределено;
Выполнить(Алгоритмы.ПолучитьСтруктуруВыгрузкиКадровыхДокументов);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Сотрудники = ПустаяТабличнаяЧасть.Скопировать();
СтрокаДокумента = Неопределено;
Для Каждого СтрокаРезультата Из РезультатЗапроса Цикл
//Сообщить("1");
ДанныеИзВнешнихСистем = "Выгружено из ЗиКБУ, документ ""Прием на работу в организацию"" №" + СтрокаРезультата.Номер + " от " + Формат(СтрокаРезультата.Дата, "ДФ=dd.MM.yyyy") +
", " + СтрокаРезультата.Подразделение.Наименование;
СтрокаДокумента = ВыборкаДанных.Найти(ДанныеИзВнешнихСистем);
Если СтрокаДокумента = Неопределено Тогда
СтрокаДокумента = ВыборкаДанных.Добавить();
СтрокаДокумента.Дата = СтрокаРезультата.ДатаПриема;
СтрокаДокумента.Кафедра = СтрокаРезультата.Подразделение;
СтрокаДокумента.Проведен = СтрокаРезультата.Проведен;
СтрокаДокумента.ДокументСАктивнымиДолжностями = Истина;
СтрокаДокумента.ДанныеИзВнешнихСистем = ДанныеИзВнешнихСистем;
СтрокаДокумента.АктивныеДолжности = ПустаяТабличнаяЧасть.Скопировать();
СтрокаДокумента.НеактивныеДолжности = ПустаяТабличнаяЧасть.Скопировать();
КонецЕсли;
СтрокаРаботников = СтрокаДокумента.АктивныеДолжности.Добавить();
СтрокаРаботников.Должность = СтрокаРезультата.Должность;
СтрокаРаботников.Сотрудник = СтрокаРезультата.Сотрудник.Физлицо;
СтрокаРаботников.Ставка = СтрокаРезультата.Ставка * 100;
СтрокаРаботников.ВидНачисления = СтрокаРезультата.ВидРасчета;
СтрокаРаботников.ВидЗанятости = СтрокаРезультата.ВидЗанятости;
КонецЦикла;
ДокументыЗакреплениеЗаКафедрой = Неопределено;
Выполнить(Алгоритмы.ПереводТаблицыЗначенийВМассивЗакреплениеЗаКафедрой);
Для каждого Документ Из ДокументыЗакреплениеЗаКафедрой Цикл
ВыгрузитьПоПравилу(,,Документ,,"ЗакреплениеЗаКафедройИзВходящихДанных");
КонецЦикла;
Отказ = Истина;
ПоказатьКак видно в нем в конце используется функция ВыгрузитьПоПравилу()
ПКО ЗакреплениеЗаКафедройИзВходящихДанных имеет следующий вид:
Табличные части этого ПКО имеют следующий вид:
Проблема следующая:
При выгрузке через обработку "Универсальный обмен данными в формате XML" все перегружается.
При обмене через БСП документ Закрепление за кафедрой создается, а ссылочные реквизиты, если объекты в базе не находятся по полям поиска не создают, а на место реквизита вставляется не известная ссылка и пишет "Объект не найден (<ссылка на объект>)". Собственно, что делать?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) lopatin, стоп-стоп-стоп...
что-то намешали Вы кажется..
1. в ПВД Вы используете объект "ВыборкаДанных", который заполняете. Из справки: "Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически".
2. Вы создаете объект "ДокументыЗакреплениеЗаКафедрой", который обходите в цикле и для каждого элемента выполняете: ВыгрузитьПоПравилу(,,Документ,,"ЗакреплениеЗаКафедройИзВходящихДанных");
Сам объект "ДокументыЗакреплениеЗаКафедрой" заполняется, вероятно, в алгоритме: Выполнить(Алгоритмы.ПереводТаблицыЗначенийВМассивЗакреплениеЗаКафедрой);
Один из алгоритмов - лишний. Либо Вы инициализируете переменную "ВыборкаДанных", которую заполняете необходимым образом и далее происходит обработка соответствующими ПКО. Либо создаете произвольный объект, заполняете нужными данными и путем "ВыгрузитьПоПравилу" передаете объект в ПКО.
А тут...
Сначала ПКО обрабатывает "ВыборкаДанных", далее идет "ВыгрузкаПоПравилу" того же, а может и другого, объекта.
Кстати, из справки нюанс: "Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты"."
что-то намешали Вы кажется..
1. в ПВД Вы используете объект "ВыборкаДанных", который заполняете. Из справки: "Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически".
2. Вы создаете объект "ДокументыЗакреплениеЗаКафедрой", который обходите в цикле и для каждого элемента выполняете: ВыгрузитьПоПравилу(,,Документ,,"ЗакреплениеЗаКафедройИзВходящихДанных");
Сам объект "ДокументыЗакреплениеЗаКафедрой" заполняется, вероятно, в алгоритме: Выполнить(Алгоритмы.ПереводТаблицыЗначенийВМассивЗакреплениеЗаКафедрой);
Один из алгоритмов - лишний. Либо Вы инициализируете переменную "ВыборкаДанных", которую заполняете необходимым образом и далее происходит обработка соответствующими ПКО. Либо создаете произвольный объект, заполняете нужными данными и путем "ВыгрузитьПоПравилу" передаете объект в ПКО.
А тут...
Сначала ПКО обрабатывает "ВыборкаДанных", далее идет "ВыгрузкаПоПравилу" того же, а может и другого, объекта.
Кстати, из справки нюанс: "Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты"."
(18) frogo, ВыборкаДанных опеределена в обработчике Перед обработкой, а я же определяю обработчик Перед выгрузкой. Я просто позаимствовал имя переменной, это собственная переменная.
С ВыборкойДанных в произвольном алгоритме выгрузки, были проблемы БСП искало какие-то ссылки вроде..
Вот такого рода была ошибка:
Объект выборки Неопределен был.. и это естественно ведь при произвольном алгоритме мы объект выборки не указываем.
А что нибудь в сторону ТолькоПолучитьУзелСсылки из обработчика ПКО Перед выгрузкой может это, как-нибудь использовать?
С ВыборкойДанных в произвольном алгоритме выгрузки, были проблемы БСП искало какие-то ссылки вроде..
Вот такого рода была ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14671)}: Ошибка при вызове метода контекста (НайтиПоТипу)
СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')
СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')
Объект выборки Неопределен был.. и это естественно ведь при произвольном алгоритме мы объект выборки не указываем.
А что нибудь в сторону ТолькоПолучитьУзелСсылки из обработчика ПКО Перед выгрузкой может это, как-нибудь использовать?
(18) frogo, Ладно давайте так, как бы вы решили такую задачу:
Есть документ на стороне источника ПриемНаРаботу
Особенность, которую надо учесть для обмена - в нем одна табличная часть и каждому сотруднику(строке) табличной части указывается подразделение.
Есть документ на стороне приемника ЗакреплениеЗаКафедрой.
Особенность - один документ строго на одно подразделение, т.е. всему документу присваивается одно поздразделение.
В итоге получаем:
Один документ ПриемНаРаботу разбиваем на несколько документов ЗакреплениеЗаКафедрой. Т.е. отбираем сотрудников по подразделениям и заносим каждого в соответствующее ЗакреплениеЗаКафедрой.
Есть документ на стороне источника ПриемНаРаботу
Особенность, которую надо учесть для обмена - в нем одна табличная часть и каждому сотруднику(строке) табличной части указывается подразделение.
Есть документ на стороне приемника ЗакреплениеЗаКафедрой.
Особенность - один документ строго на одно подразделение, т.е. всему документу присваивается одно поздразделение.
В итоге получаем:
Один документ ПриемНаРаботу разбиваем на несколько документов ЗакреплениеЗаКафедрой. Т.е. отбираем сотрудников по подразделениям и заносим каждого в соответствующее ЗакреплениеЗаКафедрой.
(25) lopatin, Александр!
Надеюсь я правильно Вас понял, рассматриваю ПВД "ПриемНаРаботуВОрганизацию". Источник - пусто, произвольный алгоритм, ПКО "ЗакреплениеЗаКафедрой". В том виде, который Вы выложили.
Вы используете переменную "ВыборкаДанных", работая с ней как с таблицей значений, но нигде ее не создаете и не описываете структуру. Надо добавить строки:
Вероятно, это алгоритмом "ПолучитьСтруктуруВыгрузкиКадровыхДокументов" выполнялось, сейчас это закомментировано.
Для отладки, я бы весь код из ПВД в обработку загнал и посмотрел на результирующую таблицу значений - в каком виде она создается, какие данные туда попадают и соответствуют ли они ожидаемым.
У Вас должна быть ТЗ:
каждая строка - конечный документ "ЗакреплениеЗаКафедрой", колонки - реквизиты документа.
Реквизиты "АктивныеДолжности" и "НеактивныеДолжности" также таблица значений, со структурой идентичной табличным частям.
Ну и конечно проверьте типы значений которыми заполняются ТЗ.
Надеюсь я правильно Вас понял, рассматриваю ПВД "ПриемНаРаботуВОрганизацию". Источник - пусто, произвольный алгоритм, ПКО "ЗакреплениеЗаКафедрой". В том виде, который Вы выложили.
Вы используете переменную "ВыборкаДанных", работая с ней как с таблицей значений, но нигде ее не создаете и не описываете структуру. Надо добавить строки:
ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("УчебныйГод");
ВыборкаДанных.Колонки.Добавить("Кафедра");
ВыборкаДанных.Колонки.Добавить("ДанныеИзВнешнихСистем");
ВыборкаДанных.Колонки.Добавить("ДокументСАктивнымиДолжностями");
ВыборкаДанных.Колонки.Добавить("АктивныеДолжности");
ВыборкаДанных.Колонки.Добавить("НеактивныеДолжности");
Вероятно, это алгоритмом "ПолучитьСтруктуруВыгрузкиКадровыхДокументов" выполнялось, сейчас это закомментировано.
Для отладки, я бы весь код из ПВД в обработку загнал и посмотрел на результирующую таблицу значений - в каком виде она создается, какие данные туда попадают и соответствуют ли они ожидаемым.
У Вас должна быть ТЗ:
каждая строка - конечный документ "ЗакреплениеЗаКафедрой", колонки - реквизиты документа.
Реквизиты "АктивныеДолжности" и "НеактивныеДолжности" также таблица значений, со структурой идентичной табличным частям.
Ну и конечно проверьте типы значений которыми заполняются ТЗ.
(29) lopatin, В этом варианте правил я установил
Но теперь другая ошибка при выгрузке в обработчике после выгрузки в файл, выгружаются связанные элементы например у Физ. Лиц выгружаются Дипломы и происходит зацикливание, так как у дипломов есть ссылочное поле Физ лицо и т.д.
ТолькоПолучитьУзелСсылки = Ложь;
Но теперь другая ошибка при выгрузке в обработчике после выгрузки в файл, выгружаются связанные элементы например у Физ. Лиц выгружаются Дипломы и происходит зацикливание, так как у дипломов есть ссылочное поле Физ лицо и т.д.
(36) frogo, Конечный вариант, того что сейчас в этом файле.
Проблема с выгрузкой по ссылкам вроде решена, писал выше.
Теперь проблема с выгрузкой регистров через функцию ВыгрузитьПоПравилу.. Описал так же выше.
Смотреть в ПКО ФизическиеЛица, обработчик ПослеВыгрузкиВФайл: закомментированный код выдает ошибку на стороне приемника.
Проблема с выгрузкой по ссылкам вроде решена, писал выше.
Теперь проблема с выгрузкой регистров через функцию ВыгрузитьПоПравилу.. Описал так же выше.
Смотреть в ПКО ФизическиеЛица, обработчик ПослеВыгрузкиВФайл: закомментированный код выдает ошибку на стороне приемника.
(31) lopatin, проставил у всех ссылочных ПКС:
Все кажется работает.
Осталась еще одна проблема: Выгрузка записей Регистров сведений.
В обработчике ПКО ПослеВыгрузкиВФайл, есть такой код:
Т.е. тут отбираются записи регистра сведений связанные с текущим выгружаемым Физ. лицом.
На стороне источника все вроде нормально выгружается, вот что попадает по этому правилу в файл обмена:
На стороне приемника следующая ошибка:
Я как понял система запись регистра сведений пытается как объект обработать и пытается найти поле ДополнительныеСвойства, которого у регистра сведений нет.
В чем проблема? Кто скажет?
UPDATE
Объектом является здесь РегистрСведенийМенеджерЗаписи, а ДополнительныСведения определены для РегистрСведенийНаборЗаписей. Получается или я неправильно передаю записи регистра в функцию ВыгрузитьПоПравилу или таким способом передать запись регистра нельзя??? В интернете все примеры предлагают аналогичный вариант решения как у меня и ни кто не жалуется на работу. Через УОД у меня все работает замечательно, но в БСП не получается.
ВыгружатьОбъект = Истина;
Все кажется работает.
Осталась еще одна проблема: Выгрузка записей Регистров сведений.
В обработчике ПКО ПослеВыгрузкиВФайл, есть такой код:
///////////////////////////////////////////////////////
//Выгрузим паспортные данные Физического лица
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПаспортныеДанныеФизЛиц.Период,
| ПаспортныеДанныеФизЛиц.ФизЛицо,
| ПаспортныеДанныеФизЛиц.ДокументСерия,
| ПаспортныеДанныеФизЛиц.ДокументНомер,
| ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
| ПаспортныеДанныеФизЛиц.ДокументКодПодразделения,
| ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
| ПаспортныеДанныеФизЛиц.ДокументВид
|ИЗ
| РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
|ГДЕ
| ПаспортныеДанныеФизЛиц.ФизЛицо = &ФизЛицо";
Запрос.УстановитьПараметр("ФизЛицо", Источник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи, , , , "ПаспортныеДанные");
КонецЦикла;
ПоказатьТ.е. тут отбираются записи регистра сведений связанные с текущим выгружаемым Физ. лицом.
На стороне источника все вроде нормально выгружается, вот что попадает по этому правилу в файл обмена:
<Объект Нпп="6" Тип="РегистрСведенийЗапись.ПаспортныеДанные" ИмяПравила="ПаспортныеДанные">
<Свойство Имя="Активность" Тип="Булево">
<Значение>true</Значение>
</Свойство>
<Свойство Имя="Период" Тип="Дата">
<Значение>1900-01-01T00:00:00</Значение>
</Свойство>
<Свойство Имя="ФизическоеЛицо" Тип="СправочникСсылка.ФизическиеЛица"><Ссылка ПродолжитьПоиск="true">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.ФизическиеЛица" ТипПриемника="СправочникСсылка.ФизическиеЛица">
<Значение>e3030cc0-208b-11e5-80c6-002590e4b7db</Значение>
</Свойство>
<Свойство Имя="ДатаРождения" Тип="Дата">
<Значение>1994-12-31T00:00:00</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>Гунькина Дарья Сергеевна</Значение>
</Свойство>
<Свойство Имя="ЭтоГруппа" Тип="Булево">
<Значение>false</Значение>
</Свойство>
</Ссылка>
</Свойство>
<Свойство Имя="ДатаВыдачи" Тип="Дата">
<Значение>2015-01-23T00:00:00</Значение>
</Свойство>
<Свойство Имя="КодПодразделения" Тип="Строка"/>
<Свойство Имя="Номер" Тип="Строка">
<Значение>139743</Значение>
</Свойство>
<Свойство Имя="Серия" Тип="Строка">
<Значение>40 14</Значение>
</Свойство>
<Свойство Имя="ОВД" Тип="Строка">
<Значение>ТП №81 ОУФМС России по СПб и Ленинградской обл. в Центральном р-не гор. СПб</Значение>
</Свойство>
<Свойство Имя="ТипДокумента" Тип="СправочникСсылка.ТипыДокументов"><Ссылка>
<Свойство Имя="{ИмяПредопределенногоЭлемента}">
<Значение>ПаспортРФ</Значение>
</Свойство>
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.ДокументыУдостоверяющиеЛичность" ТипПриемника="СправочникСсылка.ТипыДокументов">
<Значение>ffeceef4-bc4c-4076-8ea7-03636eb00fbb</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>Паспорт гражданина Российской Федерации</Значение>
</Свойство>
</Ссылка>
</Свойство>
</Объект>
ПоказатьНа стороне приемника следующая ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9362)}: Поле объекта не обнаружено (ДополнительныеСвойства)
Объект.ДополнительныеСвойства.Вставить("ОбменДанными", Новый Структура("АнализДанных", Не РежимЗагрузкиДанныхВИнформационнуюБазу()));
Объект.ДополнительныеСвойства.Вставить("ОбменДанными", Новый Структура("АнализДанных", Не РежимЗагрузкиДанныхВИнформационнуюБазу()));
Я как понял система запись регистра сведений пытается как объект обработать и пытается найти поле ДополнительныеСвойства, которого у регистра сведений нет.
В чем проблема? Кто скажет?
UPDATE
Объектом является здесь РегистрСведенийМенеджерЗаписи, а ДополнительныСведения определены для РегистрСведенийНаборЗаписей. Получается или я неправильно передаю записи регистра в функцию ВыгрузитьПоПравилу или таким способом передать запись регистра нельзя??? В интернете все примеры предлагают аналогичный вариант решения как у меня и ни кто не жалуется на работу. Через УОД у меня все работает замечательно, но в БСП не получается.
(12) frogo, Да для меня это оказалось неожиданностью... В файл попал только сам документ Закрепление за кафедрой, ссылки на объекты и поля поиска.
Хотя там по ссылке должны еще множество ПКО вызываться, а в самом ПКО Физ. лица еще не однократно вызывается функция ВыгрузитьПоПравилу
Вот пример того, как выгрузился один из документов:
Вот кусок в который выгрузилось Физ лицо:
Есть соображения что нужно делать? Буду сейчас по отладчику смотреть, что ему не нравится. Но если будут соображения буду рад выслушать.
Хотя там по ссылке должны еще множество ПКО вызываться, а в самом ПКО Физ. лица еще не однократно вызывается функция ВыгрузитьПоПравилу
Вот пример того, как выгрузился один из документов:
<Объект Нпп="1" Тип="ДокументСсылка.ЗакреплениеЗаКафедрой" ИмяПравила="ЗакреплениеЗаКафедройИзВходящихДанных"><Ссылка>
<Свойство Имя="ДанныеИзВнешнихСистем" Тип="Строка">
<Значение>Выгружено из ЗиКБУ, документ "Прием на работу в организацию" №00000000091 от 02.07.2015, Кафедра журналистики</Значение>
</Свойство>
</Ссылка>
<Свойство Имя="Дата" Тип="Дата">
<Значение>2015-07-01T00:00:00</Значение>
</Свойство>
<Свойство Имя="Кафедра" Тип="СправочникСсылка.СтруктураУниверситета"><Ссылка ПродолжитьПоиск="true">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.ПодразделенияОрганизаций" ТипПриемника="СправочникСсылка.СтруктураУниверситета">
<Значение>019ecec5-2cc1-11e2-8052-50e5492043a3</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>Кафедра журналистики</Значение>
</Свойство>
</Ссылка>
</Свойство>
<Свойство Имя="Проведен" Тип="Булево">
<Значение>true</Значение>
</Свойство>
<Свойство Имя="ДокументСАктивнымиДолжностями" Тип="Булево">
<Значение>true</Значение>
</Свойство><ТабличнаяЧасть Имя="АктивныеДолжности">
<Запись>
<Свойство Имя="Сотрудник" Тип="СправочникСсылка.ФизическиеЛица"><Ссылка ПродолжитьПоиск="true">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.ФизическиеЛица" ТипПриемника="СправочникСсылка.ФизическиеЛица">
<Значение>e3030cc0-208b-11e5-80c6-002590e4b7db</Значение>
</Свойство>
<Свойство Имя="ДатаРождения" Тип="Дата">
<Значение>1994-12-31T00:00:00</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>Гунькина Дарья Сергеевна</Значение>
</Свойство>
<Свойство Имя="ЭтоГруппа" Тип="Булево">
<Значение>false</Значение>
</Свойство>
</Ссылка>
</Свойство>
<Свойство Имя="Должность" Тип="СправочникСсылка.Должности"><Ссылка ПродолжитьПоиск="true">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.ДолжностиОрганизаций" ТипПриемника="СправочникСсылка.Должности">
<Значение>3e4b92f1-1e8b-11e3-b478-003048568f61</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>Специалист по учебно-методической работе 1ой категории</Значение>
</Свойство>
</Ссылка>
</Свойство>
<Свойство Имя="Ставка" Тип="СправочникСсылка.ШтатныеСтавки"><Ссылка НеСоздаватьЕслиНеНайден="true">
<Свойство Имя="ПроцентОтПолнойСтавки" Тип="Число">
<Значение>100</Значение>
</Свойство>
</Ссылка>
</Свойство>
<Свойство Имя="ВидНачисления" Тип="СправочникСсылка.ВидыНачисленияЗаработнойПлаты"><Ссылка ПродолжитьПоиск="true">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций" ТипПриемника="СправочникСсылка.ВидыНачисленияЗаработнойПлаты">
<Значение>0ab6bd37-3574-11e2-8898-002522b9c92d</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>1 ОКЛАД</Значение>
</Свойство>
</Ссылка>
</Свойство>
<Свойство Имя="ВидЗанятости" Тип="ПеречислениеСсылка.ВидыЗанятости">
<Значение>ОсновноеМестоРаботы</Значение>
</Свойство>
</Запись>
</ТабличнаяЧасть><ТабличнаяЧасть Имя="НеактивныеДолжности"/>
</Объект>
ПоказатьВот кусок в который выгрузилось Физ лицо:
<Свойство Имя="Сотрудник" Тип="СправочникСсылка.ФизическиеЛица">
<Ссылка ПродолжитьПоиск="true">
<Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.ФизическиеЛица" ТипПриемника="СправочникСсылка.ФизическиеЛица">
<Значение>e3030cc0-208b-11e5-80c6-002590e4b7db</Значение>
</Свойство>
<Свойство Имя="ДатаРождения" Тип="Дата">
<Значение>1994-12-31T00:00:00</Значение>
</Свойство>
<Свойство Имя="Наименование" Тип="Строка">
<Значение>Гунькина Дарья Сергеевна</Значение>
</Свойство>
<Свойство Имя="ЭтоГруппа" Тип="Булево">
<Значение>false</Значение>
</Свойство>
</Ссылка>
</Свойство>
ПоказатьЕсть соображения что нужно делать? Буду сейчас по отладчику смотреть, что ему не нравится. Но если будут соображения буду рад выслушать.
Переписал перенос связанного регистра таким образом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПаспортныеДанныеФизЛиц.Период,
| ПаспортныеДанныеФизЛиц.ФизЛицо,
| ПаспортныеДанныеФизЛиц.ДокументСерия,
| ПаспортныеДанныеФизЛиц.ДокументНомер,
| ПаспортныеДанныеФизЛиц.ДокументДатаВыдачи,
| ПаспортныеДанныеФизЛиц.ДокументКодПодразделения,
| ПаспортныеДанныеФизЛиц.ДокументКемВыдан,
| ПаспортныеДанныеФизЛиц.ДокументВид
|ИЗ
| РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц
|ГДЕ
| ПаспортныеДанныеФизЛиц.ФизЛицо = &ФизЛицо";
Запрос.УстановитьПараметр("ФизЛицо", Источник);
Выборка = Запрос.Выполнить ().Выбрать ();
Пока Выборка.Следующий () Цикл
Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить ("Имя");
Отбор.Колонки.Добавить ("Значение");
Отбор.Колонки.Добавить ("Использование");
СтрокаОтбора = Отбор.Добавить ();
СтрокаОтбора.Имя = "ФизЛицо";
СтрокаОтбора.Значение = Выборка.ФизЛицо;
СтрокаОтбора.Использование = Истина;
Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Период");
Строки.Колонки.Добавить("ФизЛицо");
Строки.Колонки.Добавить("ДокументСерия");
Строки.Колонки.Добавить("ДокументНомер");
Строки.Колонки.Добавить("ДокументДатаВыдачи");
Строки.Колонки.Добавить("ДокументКодПодразделения");
Строки.Колонки.Добавить("ДокументКемВыдан");
Строки.Колонки.Добавить("ДокументВид");
Строка = Строки.Добавить();
//ЗаполнитьЗначенияСвойств(Строка, Выборка);
Строка.Период = Выборка.Период;
Строка.ФизЛицо = Выборка.ФизЛицо;
Строка.ДокументСерия = Выборка.ДокументСерия;
Строка.ДокументНомер = Выборка.ДокументНомер;
Строка.ДокументДатаВыдачи = Выборка.ДокументДатаВыдачи;
Строка.ДокументКодПодразделения = Выборка.ДокументКодПодразделения;
Строка.ДокументКемВыдан = Выборка.ДокументКемВыдан;
Строка.ДокументВид = Выборка.ДокументВид;
НаборЗаписей = Новый Структура("Отбор, Строки");
НаборЗаписей.Отбор = Отбор;
НаборЗаписей.Строки = Строки;
ВыгрузитьРегистр(НаборЗаписей,,,,"ПаспортныеДанные");
КонецЦикла;
Показать
(40) superkuzja, Только вот описание не смог найти её нормального, только примеры кода, хотелось бы еще описание, чтобы знать назначение всех параметров. А так по примерам на ощупь, под свое переделываешь и не знаешь, почему эти параметры не указывать, эти указывать.
Например, два регистра я еще таким образом перенес:
Вопрос: принципиально указывать Истина или нет.
Например, два регистра я еще таким образом перенес:
ВыгрузитьРегистр(НаборЗаписей,,,Истина,"КакойтоРегистрСведений");
Вопрос: принципиально указывать Истина или нет.
(41) lopatin, Если ты пользуешься обменом на БСП открой обработку "Конвертация объектов информационных баз" там есть функция ВыгрузитьРегистр().
Любой экспортной функцией из этой обработки можешь пользоваться. Достоверно это будет работать только на БСП обмене и до тех пор пока 1с не решат чего нибудь обновить в обработке.
В УниверсальномОбменеДаннымиXML те же самые функции могут работать чуть иначе. Даже ВыгрузитьПоПравилу().
Посмотрел ВыгрузитьРегистр() вызывает ВыгрузитьПоПравилу() внутри себя.
Любой экспортной функцией из этой обработки можешь пользоваться. Достоверно это будет работать только на БСП обмене и до тех пор пока 1с не решат чего нибудь обновить в обработке.
В УниверсальномОбменеДаннымиXML те же самые функции могут работать чуть иначе. Даже ВыгрузитьПоПравилу().
Посмотрел ВыгрузитьРегистр() вызывает ВыгрузитьПоПравилу() внутри себя.
(39) lopatin, что делать, если источник в описании ПКО пустой, а приемник - РС? Сделал как как описано в (39). Данные в ПКО попадают из ПКС с процедурой ВыгрузитьРегистр(НаборЗаписей,,,,"КакойтоПКО"), но проблема в том, что обработка "Конвертация объектов информационных баз" считает, что если имя типа источника пустое(т.е. не Метаданные, например Структура) и признак выгрузки объекта = Истина, то Источник имеет ссылочный тип и соответственно выскакивает следующая ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9676)}: Ошибка в обработчике события ПередОбработкойВыгрузки группы свойств
ПКО = ГруппыПользователей (Пользователи -> Группы пользователей)
ПКГС = 4 (--> Состав)
Объект = ОТР (Справочник объект: Пользователи)
Обработчик = ПередОбработкойВыгрузкиГруппыСвойств
ОписаниеОшибки = Поле объекта не обнаружено (Ссылка)
ПозицияМодуля = Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(11286)
КСообщенияОбОшибках = 48
ВызватьИсключение СтрокаСообщенияОбОшибке;
Показать
(43)
Столкнулся с аналогичной проблемой, решил путём добавления колонки с именем "Ссылка" в строки набора записей.
Рабочий пример для обработчика ПКО "После выгрузки в файл"
Столкнулся с аналогичной проблемой, решил путём добавления колонки с именем "Ссылка" в строки набора записей.
Рабочий пример для обработчика ПКО "После выгрузки в файл"
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК Объект,
| ФизическиеЛицаКонтактнаяИнформация.Тип КАК Тип,
| ФизическиеЛицаКонтактнаяИнформация.Вид КАК Вид,
| ФизическиеЛицаКонтактнаяИнформация.Представление КАК Представление,
| ИСТИНА КАК Активность
|ИЗ
| Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
|ГДЕ
| ФизическиеЛицаКонтактнаяИнформация.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Отбор = Новый ТаблицаЗначений;
Отбор.Колонки.Добавить ("Имя");
Отбор.Колонки.Добавить ("Значение");
Отбор.Колонки.Добавить ("Использование");
СтрокаОтбора = Отбор.Добавить();
СтрокаОтбора.Имя = "Объект";
СтрокаОтбора.Значение = Выборка.Объект;
СтрокаОтбора.Использование = Истина;
Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Представление");
Строки.Колонки.Добавить("Вид");
Строки.Колонки.Добавить("Тип");
Строки.Колонки.Добавить("Объект");
Строки.Колонки.Добавить("Активность");
Строки.Колонки.Добавить("Ссылка"); // Добавленная колонка.
Строка = Строки.Добавить();
Строка.Представление = Выборка.Представление;
Строка.Вид = Выборка.Вид;
Строка.Тип = Выборка.Тип;
Строка.Объект = Выборка.Объект;
Строка.Активность = Выборка.Активность;
НаборЗаписей = Новый Структура("Отбор, Строки");
НаборЗаписей.Отбор = Отбор;
НаборЗаписей.Строки = Строки;
ВыгрузитьРегистр(НаборЗаписей,,,, "КонтактнаяИнформация");
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот