M_Volkov
Gold Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору HePapyc Цитата: А из альфа-авто данные выгружаются по их собственному, относительно универсальному, алгоритму общей обработкой, плюс используется промежуточная дбф БД для хранения соответствия объектов. | Хреново, а я надеялся, что они спрятали в какой-то "закрытый модуль", Рарус любит это дело... Цитата: Посмотри как сделано в переносе данных из УТ 10.3 в УТ 11.1 | Не мой случай, пример выгрузки КИ взял из описания обработчика "После выгрузки в файл" - только не понял почему После...!? Код: Отказ = Источник.ЭтоГруппа; Если Не Отказ Тогда Запрос = Новый Запрос(" |ВЫБРАТЬ | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.ЗначениеПоУмолчанию, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10, | КонтактнаяИнформация.Комментарий |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"); Запрос.УстановитьПараметр("Объект", Источник); Выборка = Запрос.Выполнить().Выбрать(); // Сообщить("Выгрузка вид КИ " + Выборка.Количество() + " для сотрудника: " + СокрЛП(Источник), СтатусСообщения.Информация); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация"); Если Параметры.Комментировать Тогда // Сообщить("Выгружен вид КИ: '" + СокрЛП(Выборка.Вид) + "' для сотрудника: " + СокрЛП(Источник), СтатусСообщения.Информация); КонецЕсли; КонецЦикла; КонецЕсли; | Но загвозка была в другом, в особенностях Альфа-Авто. Во-первых, предопределеные ее виды КИ вроде расширены: Номер ICQ, Веб-страница в УПП/КА отсутствуют, Адрес электронной почты - есть рабочий/домашний Но с другой стороны в УПП/КА сделана детализация по виду объекта контактной информации. Поэтому приходится, например, при конвертации предопределенного вида КИ "Юридический адрес" в зависимости от типа объекта конвертировать в: • Юридический адрес организации – для организации • Юридический адрес контрагента – для контрагента • Адрес по прописке физ. лица – для физ. лица (сотрудника Альфа-Авто) Ни чего лучше не придумал, как тупо создать для каждого вида объекта контактной информации свое ПКО: Во-вторых, в Альфа-Авто пользователи не имеют своей КИ. Хотя, как правило, каждый пользователь привязан к сотруднику - физ.лицу. Но опять у него только один Email физ. лица. Поэтому в него я пишу домашний Email, а рабочий - в КИ пользователя. ПКС Вид->Вид: Код: Структура = Новый Структура("ОбъектКИ", Источник.Объект); ИсходящиеДанные = Структура; Если ТипЗнч(Источник.Вид) = "Строка" Тогда Значение = СокрЛП(Источник.Вид); ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.ПрочаяИнформация Тогда Значение = "Прочая информация"; ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.ВебСтраницаОрганизации Тогда Значение = "Веб-страница организации"; ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.ВебСтраницаФизЛица Тогда Значение = "Домашняя веб-страница"; ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.НомерICQ Тогда Значение = "Номер ICQ"; ИначеЕсли Источник.Вид.Предопределенный Тогда Если ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Контрагенты") Тогда ИМяПКО = "ВидыКонтактнойИнформацииКонтрагенты"; ИначеЕсли ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.КонтактныеЛица") Тогда ИмяПКО = "ВидыКонтактнойИнформацииКонтактныеЛица"; ИначеЕсли ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Сотрудники") Тогда Если Источник.Вид = Справочники.ВидыКонтактнойИнформации.АдресЭлектроннойПочтыРабочий Тогда Пользователь = мвДоработки.ПользовательСотрудника(Источник.Объект); Если Пользователь <> Неопределено Тогда ИМяПКО = "ВидыКонтактнойИнформацииПользователи"; Иначе ИмяПКО = "ВидыКонтактнойИнформацииФизЛица"; КонецЕсли; Иначе ИмяПКО = "ВидыКонтактнойИнформацииФизЛица"; КонецЕсли; ИначеЕсли ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Организации") Тогда ИмяПКО = "ВидыКонтактнойИнформацииОрганизации"; Иначе ИмяПКО = "ВидыКонтактнойИнформации"; КонецЕсли; Иначе ИмяПКО = "ВидыКонтактнойИнформации"; КонецЕсли; | Может, по красивее есть решение? Добавлено: Да, "Активность" откуда взялась? Если не отключать, ошибку дает... |