Документооборот-Бухгалтерия правила обмена Контрагенты(контактная информация)
Добрый день, коллеги.
Столкнулся с необходимостью выгрузки контрагентов между Документооборот и Бухгалтерией 2.0.
Вся проблема в том что контактная информация в документообороте хранится в табличной части "Контактная информация", а в бухгалтерии это регистр сведений.
Кто сталкивался с подобными задачами или имеет примеры правил, на данный момент удалось перенести контактную информацию в качестве предстваления, без разбивки по полям, а хочется чтобы разбивка по полям была.
Столкнулся с необходимостью выгрузки контрагентов между Документооборот и Бухгалтерией 2.0.
Вся проблема в том что контактная информация в документообороте хранится в табличной части "Контактная информация", а в бухгалтерии это регистр сведений.
Кто сталкивался с подобными задачами или имеет примеры правил, на данный момент удалось перенести контактную информацию в качестве предстваления, без разбивки по полям, а хочется чтобы разбивка по полям была.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Да, данная информация помогла, единственная трудность с которой столкнулся это соотнести поля у разных типов контактной информации,но по прежнему загружается только представление разбивки по полеям нет.Не могу понять, что не так.
Получился следующий кусок кода, размещение ПКО Контрагенты после выгрузки:
Если НЕ Источник.ЭтоГруппа Тогда
Запрос = Новый Запрос("ВЫБРАТЬ
| КорреспондентыКонтактнаяИнформация.Ссылка КАК Объект,
| КорреспондентыКонтактнаяИнформация.Тип,
| КорреспондентыКонтактнаяИнформация.Вид,
| КорреспондентыКонтактнаяИнформация.Представление,
| КорреспондентыКонтактнаяИнформация.ЗначенияПолей,
| КорреспондентыКонтактнаяИнформация.Страна,
| КорреспондентыКонтактнаяИнформация.Регион,
| КорреспондентыКонтактнаяИнформация.Город,
| ИСТИНА КАК Активность
|ИЗ
| Справочник.Корреспонденты.КонтактнаяИнформация КАК КорреспондентыКонтактнаяИнформация
|ГДЕ
| КорреспондентыКонтактнаяИнформация.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеДляЗаполненияКИ = Новый Структура("Активность,Объект, Тип, Вид, Представление, ЗначениеПоУмолчанию, Комментарий, Поле1, Поле2, Поле3, Поле4, Поле5, Поле6,Поле7,Поле8,Поле9,Поле10,ТипДома,ТипКорпуса,ТипКвартиры");
ДанныеДляЗаполненияКИ.Объект = Выборка.Объект;
ДанныеДляЗаполненияКИ.Тип = Выборка.Тип;
ДанныеДляЗаполненияКИ.Вид = Выборка.Вид;
ДанныеДляЗаполненияКИ.Представление = Выборка.Представление;
ДанныеДляЗаполненияКИ.Комментарий = "";
ДанныеДляЗаполненияКИ.Активность = Выборка.Активность;
ДанныеДляЗаполненияКИ.ЗначениеПоУмолчанию = Истина;
Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
ДанныеДляЗаполненияКИ.Поле1 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Индекс");
ДанныеДляЗаполненияКИ.Поле2 = Выборка.Регион;
ДанныеДляЗаполненияКИ.Поле3 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Район");
ДанныеДляЗаполненияКИ.Поле4 = Выборка.Город;
ДанныеДляЗаполненияКИ.Поле5 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"НаселенныйПункт");
ДанныеДляЗаполненияКИ.Поле6 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Улица");
ДанныеДляЗаполненияКИ.Поле7 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Дом");
ДанныеДляЗаполненияКИ.Поле8 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Корпус");
ДанныеДляЗаполненияКИ.Поле9 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Квартира");
ДанныеДляЗаполненияКИ.Поле10 = Выборка.Страна;
ДанныеДляЗаполненияКИ.ТипДома = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"ТипДома"); ;
ДанныеДляЗаполненияКИ.ТипКорпуса = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"ТипКорпуса"); ;
ДанныеДляЗаполненияКИ.ТипКвартиры = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"ТипКвартиры");;
ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
ДанныеДляЗаполненияКИ.Поле1 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"КодСтраны");
ДанныеДляЗаполненияКИ.Поле2 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"КодГорода");
ДанныеДляЗаполненияКИ.Поле3 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"НомерТелефона");
ДанныеДляЗаполненияКИ.Поле4 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Добавочный");
ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
ДанныеДляЗаполненияКИ.Представление = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"АдресЭП");
КонецЕсли;
ВыгрузитьПоПравилу( , , ДанныеДляЗаполненияКИ, , "КонтактнаяИнформация");
КонецЦикла;
КонецЕсли;
Получился следующий кусок кода, размещение ПКО Контрагенты после выгрузки:
Если НЕ Источник.ЭтоГруппа Тогда
Запрос = Новый Запрос("ВЫБРАТЬ
| КорреспондентыКонтактнаяИнформация.Ссылка КАК Объект,
| КорреспондентыКонтактнаяИнформация.Тип,
| КорреспондентыКонтактнаяИнформация.Вид,
| КорреспондентыКонтактнаяИнформация.Представление,
| КорреспондентыКонтактнаяИнформация.ЗначенияПолей,
| КорреспондентыКонтактнаяИнформация.Страна,
| КорреспондентыКонтактнаяИнформация.Регион,
| КорреспондентыКонтактнаяИнформация.Город,
| ИСТИНА КАК Активность
|ИЗ
| Справочник.Корреспонденты.КонтактнаяИнформация КАК КорреспондентыКонтактнаяИнформация
|ГДЕ
| КорреспондентыКонтактнаяИнформация.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеДляЗаполненияКИ = Новый Структура("Активность,Объект, Тип, Вид, Представление, ЗначениеПоУмолчанию, Комментарий, Поле1, Поле2, Поле3, Поле4, Поле5, Поле6,Поле7,Поле8,Поле9,Поле10,ТипДома,ТипКорпуса,ТипКвартиры");
ДанныеДляЗаполненияКИ.Объект = Выборка.Объект;
ДанныеДляЗаполненияКИ.Тип = Выборка.Тип;
ДанныеДляЗаполненияКИ.Вид = Выборка.Вид;
ДанныеДляЗаполненияКИ.Представление = Выборка.Представление;
ДанныеДляЗаполненияКИ.Комментарий = "";
ДанныеДляЗаполненияКИ.Активность = Выборка.Активность;
ДанныеДляЗаполненияКИ.ЗначениеПоУмолчанию = Истина;
Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
ДанныеДляЗаполненияКИ.Поле1 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Индекс");
ДанныеДляЗаполненияКИ.Поле2 = Выборка.Регион;
ДанныеДляЗаполненияКИ.Поле3 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Район");
ДанныеДляЗаполненияКИ.Поле4 = Выборка.Город;
ДанныеДляЗаполненияКИ.Поле5 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"НаселенныйПункт");
ДанныеДляЗаполненияКИ.Поле6 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Улица");
ДанныеДляЗаполненияКИ.Поле7 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Дом");
ДанныеДляЗаполненияКИ.Поле8 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Корпус");
ДанныеДляЗаполненияКИ.Поле9 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Квартира");
ДанныеДляЗаполненияКИ.Поле10 = Выборка.Страна;
ДанныеДляЗаполненияКИ.ТипДома = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"ТипДома"); ;
ДанныеДляЗаполненияКИ.ТипКорпуса = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"ТипКорпуса"); ;
ДанныеДляЗаполненияКИ.ТипКвартиры = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"ТипКвартиры");;
ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
ДанныеДляЗаполненияКИ.Поле1 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"КодСтраны");
ДанныеДляЗаполненияКИ.Поле2 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"КодГорода");
ДанныеДляЗаполненияКИ.Поле3 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"НомерТелефона");
ДанныеДляЗаполненияКИ.Поле4 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Добавочный");
ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
ДанныеДляЗаполненияКИ.Представление = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"АдресЭП");
КонецЕсли;
ВыгрузитьПоПравилу( , , ДанныеДляЗаполненияКИ, , "КонтактнаяИнформация");
КонецЦикла;
КонецЕсли;
(6) timrusanov, мне больше нравится исходный вариант
в коде например
во-первых, если это вызывается процедура из источника (т.е. ДО), то там в качестве 2-ого параметра должна выступать не строка, а ссылка на справочник ВидыКонтактнойИнформации
в коде например
Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
ДанныеДляЗаполненияКИ.Поле1 = УправлениеКонтактнойИнформацией.ПолучитьЗначениеКонтактнойИнформации(Выборка.ЗначенияПолей,"Индекс");
во-первых, если это вызывается процедура из источника (т.е. ДО), то там в качестве 2-ого параметра должна выступать не строка, а ссылка на справочник ВидыКонтактнойИнформации
(19) Gray-SV-02,Спасибо, скорее всего по этому мне и не заполняет по полям.
Вчера все получилось, загрузить, использовал другую процедуру (УправлениеКонтактнойИнформацией.ПреобразоватьСтрокуВСписокПолей(Выборка.ЗначенияПолей)), которая вызывается тоже из ДО, выгружу окончательный вариант, может кому еще пригодится.
Вчера все получилось, загрузить, использовал другую процедуру (УправлениеКонтактнойИнформацией.ПреобразоватьСтрокуВСписокПолей(Выборка.ЗначенияПолей)), которая вызывается тоже из ДО, выгружу окончательный вариант, может кому еще пригодится.
ну сначала нужно проверить все ли выгрузилось, я так понимаю что после выгрузки для каждого элемента спр. Корреспонденты данные о КИ хранятся в структуре ДанныеДляЗаполненияКИ.
А после загрузки или во время там какой код?
А после загрузки или во время там какой код?
Эта процедура встроеная в КД (КД-Обработки-ВыгрузкиОбработчиков-Макеты-ОбщиеПроцедурыиФункции-ВыгрузитьРегистр), она обращается к ОбщиеПроцедурыФункции.ВыгрузитьРегистр(НаборЗаписейДляВыгрузки, Правило, ВходящиеДанные, НеВыгружатьОбъектыПоСсылкам, ИмяПКО, ПравилоВыгрузкиДанных);
Т.е. по сути передает управление и обращается к конфигурвации из которой выгружается.
Проблема в том что данная процедура есть в ДО, но в обработках "КонвертацияОбъектовИнформационныхБаз"-ВыгрузитьРегистр.
Т.е. по сути передает управление и обращается к конфигурвации из которой выгружается.
Проблема в том что данная процедура есть в ДО, но в обработках "КонвертацияОбъектовИнформационныхБаз"-ВыгрузитьРегистр.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот