8.х ОБМЕН Перенос данных через COM Соединение из “УНФ+CRM 2.0” в “УТ+CRM 3.0”

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Skaylans23, 24 мар 2018.

  1. TopicStarter Overlay
    Skaylans23
    Offline

    Skaylans23

    Регистрация:
    9 дек 2016
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Когда я переносил данные из одной базы в другую а именно Документ "Событие "я наткнулся на ряд проблем:
    1 - Как мне записать данные в переменную которая является ссылкой? - Я делаю так

    ИмяКонтЛица = РезультатЗапроса.КонтактноеЛицо.Наименование;
    ДанныеКонтЛицаИзСправочника = Справочники.КонтактныеЛицаПартнеров.НайтиПоНаименованию(ИмяКонтЛица);


    Если Не ДанныеКонтЛицаИзСправочника.Пустой() Тогда
    ДокументСобытие.КонтактноеЛицо = ДанныеКонтЛицаИзСправочника;
    Иначе
    Пока Выборка.Следующий() Цикл
    CпрКонтЛица = Справочники.КонтактныеЛицаПартнеров.СоздатьЭлемент();
    //Элементы справочника
    CпрКонтЛица.Записать();
    ДокументСобытие.КонтактноеЛицо = CпрКонтЛица;
    КонецЦикла;
    CпрКонтЛица.Записать();
    ДокументСобытие.КонтактноеЛицо = CпрКонтЛица;
    КонецЕсли;

    2 - Как мне записать владельца в справочник если у меня есть только - Выборка.Владелец?
    3 - Как мне записать перечисления в той базе где я создаю Документ?


    Вот полный код обработки:

    Попытка
    Подключение = Соединение.Connect(СтрокаСоединения);
    Сообщить("Соединение установлено");
    Исключение
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Не удалось подключиться к базе" + ОписаниеОшибки();
    Сообщение.Сообщить();
    КонецПопытки;

    Запрос = Подключение.NewObject("Запрос");
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 20
    | Событие.Номер,
    | Событие.Дата,
    | Событие.ВидСобытия,
    | Событие.СостояниеСобытия,
    | Событие.ВходящееИсходящее,
    | Событие.Тема,
    | Событие.ЗагрузитьПриОткрытии,
    | Событие.Описание,
    | Событие.СодержаниеHTML,
    | Событие.КартинкиHTML,
    | Событие.ИзмененоВРяде,
    | Событие.ОтветственныйПользователь,
    | Событие.КонтактноеЛицо,
    | Событие.ДокументОснование,
    | Событие.Место,
    | Событие.НаВесьДень,
    | Событие.НачалоСобытия,
    | Событие.ОкончаниеСобытия,
    | Событие.ОсновнаяКатегория,
    | Событие.Ответственный,
    | Событие.Партнер,
    | Событие.Периодическое,
    | Событие.Подразделение,
    | Событие.Помещение,
    | Событие.СписокУчастников,
    | Событие.Результат,
    | Событие.РядСобытий,
    | Событие.Автор,
    | Событие.Проект,
    | Событие.Трудозатраты,
    | Событие.МаркетинговаяКампания,
    | Событие.ПричинаОтказа,
    | Событие.СуммаДокумента,
    | Событие.ВалютаДокумента,
    | Событие.ВидЦен,
    | Событие.Кратность,
    | Событие.Курс,
    | Событие.СуммаВключаетНДС,
    | Событие.Организация,
    | Событие.ВидСкидкиНаценки,
    | Событие.Договор,
    | Событие.АдресХранилищаФайлов,
    | Событие.ДатаСоздания,
    | Событие.сфпИдентификаторЗвонка,
    | Событие.Шаблон,
    | Событие.бфЭтоСобытиеБухФон,
    | Событие.УдалитьВходящееИсходящееСобытие,
    | Событие.ТемаИСодержание,
    | Событие.ИмяОтправителяSMS,
    | Событие.РедактироватьТрудозатратыВручную,
    | Событие.сфпCoMagicID,
    | Событие.КалендарьСотрудника,
    | Событие.ХозяйственнаяОперация,
    | Событие.Важность
    |ИЗ
    | Документ.Событие КАК Событие";

    Результат = Запрос.Выполнить().Выгрузить();

    Для Каждого РезультатЗапроса Из Результат Цикл
    Попытка
    ДокументСобытие = Документы.УдалитьCRM_Событие.СоздатьДокумент();
    ДокументСобытие.Номер = РезультатЗапроса.Номер;
    ДокументСобытие.Дата = РезультатЗапроса.Дата;
    ДокументСобытие.Тема = РезультатЗапроса.Тема;
    ДокументСобытие.Описание = РезультатЗапроса.Описание;
    ДокументСобытие.ИзмененоВРяде = РезультатЗапроса.ИзмененоВРяде;
    ДокументСобытие.Место = РезультатЗапроса.Место;
    ДокументСобытие.НаВесьДень = РезультатЗапроса.НаВесьДень;
    ДокументСобытие.ОкончаниеСобытия = РезультатЗапроса.ОкончаниеСобытия;
    ДокументСобытие.Периодическое = РезультатЗапроса.Периодическое;
    ДокументСобытие.СписокУчастников = РезультатЗапроса.СписокУчастников;
    ДокументСобытие.Результат = РезультатЗапроса.Результат;
    ДокументСобытие.СуммаДокумента = РезультатЗапроса.СуммаДокумента;
    ДокументСобытие.Кратность = РезультатЗапроса.Кратность;
    ДокументСобытие.Курс = РезультатЗапроса.Курс;
    ДокументСобытие.СуммаВключаетНДС = РезультатЗапроса.СуммаВключаетНДС;
    ДокументСобытие.ДатаСоздания = РезультатЗапроса.ДатаСоздания;
    ДокументСобытие.ВидСкидкиНаценки = РезультатЗапроса.ВидСкидкиНаценки;

    ///////////////////////////////////////////Создание Справочника - КонтактныеЛица ///////////////////////////////////////////////////////////////

    ИмяКонтЛица = РезультатЗапроса.КонтактноеЛицо.Наименование;
    ДанныеКонтЛицаИзСправочника = Справочники.КонтактныеЛицаПартнеров.НайтиПоНаименованию(ИмяКонтЛица);

    Если Не ДанныеКонтЛицаИзСправочника.Пустой() Тогда
    ДокументСобытие.КонтактноеЛицо = ДанныеКонтЛицаИзСправочника;
    Иначе
    ЗапросНаКонтЛица = Подключение.NewObject("Запрос");
    ЗапросНаКонтЛица.Текст =
    "ВЫБРАТЬ
    | КонтактныеЛица.Владелец,
    | КонтактныеЛица.Код,
    | КонтактныеЛица.Наименование,
    | КонтактныеЛица.ДатаРождения,
    | КонтактныеЛица.CRM_Должность,
    | КонтактныеЛица.CRM_Имя,
    | КонтактныеЛица.CRM_НапоминатьОДнеРождения,
    | КонтактныеЛица.CRM_Обращение,
    | КонтактныеЛица.CRM_Отчество,
    | КонтактныеЛица.УдалитьCRM_Пол,
    | КонтактныеЛица.CRM_РольКонтактногоЛица,
    | КонтактныеЛица.CRM_Состояние,
    | КонтактныеЛица.CRM_УчаствуетВАнкетировании,
    | КонтактныеЛица.CRM_Фамилия,
    | КонтактныеЛица.CRM_Фотография,
    | КонтактныеЛица.УдалитьCRM_ДатаРождения,
    | КонтактныеЛица.ДатаСоздания,
    | КонтактныеЛица.ДокументУдостоверяющийЛичность,
    | КонтактныеЛица.Должность,
    | КонтактныеЛица.Комментарий,
    | КонтактныеЛица.Недействителен,
    | КонтактныеЛица.сфпCoMagicID,
    | КонтактныеЛица.сфпПользовательДляПереключенияЗвонков,
    | КонтактныеЛица.Ответственный,
    | КонтактныеЛица.Пол,
    | КонтактныеЛица.РеквизитДопУпорядочивания,
    | КонтактныеЛица.СписокРолей,
    | КонтактныеЛица.Предопределенный,
    | КонтактныеЛица.ИмяПредопределенныхДанных
    |ИЗ
    | Справочник.КонтактныеЛица.Роли КАК КонтактныеЛицаРоли
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛица КАК КонтактныеЛица
    | ПО КонтактныеЛицаРоли.Ссылка = КонтактныеЛица.Ссылка,
    | Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаКонтактнаяИнформация,
    | Справочник.КонтактныеЛица.ДополнительныеРеквизиты КАК КонтактныеЛицаДополнительныеРеквизиты,
    | Справочник.КонтактныеЛица.CRM_ДополнительнаяИнформация КАК КонтактныеЛицаCRM_ДополнительнаяИнформация
    |ГДЕ
    | КонтактныеЛица.Наименование = &ИмяКонтЛица";

    ЗапросНаКонтЛица.УстановитьПараметр("ИмяКонтЛица", ИмяКонтЛица);

    ДанныеКонтЛица = ЗапросНаКонтЛица.Выполнить();
    Выборка = ДанныеКонтЛица.Выбрать();

    Пока Выборка.Следующий() Цикл
    CпрКонтЛица = Справочники.КонтактныеЛицаПартнеров.СоздатьЭлемент();
    //CпрКонтЛица.Владелец = Выборка.Владелец;
    CпрКонтЛица.CRM_Фамилия = Выборка.CRM_Фамилия;
    CпрКонтЛица.CRM_Имя = Выборка.CRM_Имя;
    CпрКонтЛица.CRM_Отчество = Выборка.CRM_Отчество;
    CпрКонтЛица.CRM_УчаствуетВАнкетировании = Выборка.CRM_УчаствуетВАнкетировании;
    CпрКонтЛица.ДатаРождения = Выборка.ДатаРождения;
    CпрКонтЛица.CRM_Должность = Выборка.CRM_Должность; //СправочникСсылка.CRM_Должности
    CпрКонтЛица.Комментарий = Выборка.Комментарий;
    CпрКонтЛица.Пол = Перечисления.ПолФизическогоЛица.Получить(Строка(Выборка.Пол)); //ПеречислениеСсылка.ПолФизическогоЛица
    CпрКонтЛица.CRM_НапоминатьОДнеРождения = Выборка.CRM_НапоминатьОДнеРождения;

    ///////////////////////////////////// Запрос - КонтактнаяИнформация - Контактного Лица ////////////////////////////////////////////////////

    ЗапросНаКонтИнфо = Подключение.NewObject("Запрос");
    ЗапросНаКонтИнфо.Текст =
    "ВЫБРАТЬ
    | КонтактныеЛицаКонтактнаяИнформация.НомерСтроки,
    | КонтактныеЛицаКонтактнаяИнформация.Тип,
    | КонтактныеЛицаКонтактнаяИнформация.Вид,
    | КонтактныеЛицаКонтактнаяИнформация.Представление,
    | КонтактныеЛицаКонтактнаяИнформация.ЗначенияПолей,
    | КонтактныеЛицаКонтактнаяИнформация.Страна,
    | КонтактныеЛицаКонтактнаяИнформация.Регион,
    | КонтактныеЛицаКонтактнаяИнформация.Город,
    | КонтактныеЛицаКонтактнаяИнформация.АдресЭП,
    | КонтактныеЛицаКонтактнаяИнформация.НомерТелефона,
    | КонтактныеЛицаКонтактнаяИнформация.НомерТелефонаБезКодов,
    | КонтактныеЛицаКонтактнаяИнформация.CRM_ОсновнойДляСвязи
    |ИЗ
    | Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаКонтактнаяИнформация";

    ТаблицаКонтИнфо = ЗапросНаКонтИнфо.Выполнить().Выгрузить();

    Для каждого КонтИнфо из ТаблицаКонтИнфо Цикл
    НоваяСтрока_КонтИнфо = CпрКонтЛица.КонтактнаяИнформация.Добавить();
    НоваяСтрока_КонтИнфо.Тип = Перечисления.ТипыКонтактнойИнформации.Получить(Строка(КонтИнфо.Тип)); //ПеречислениеСсылка.ТипыКонтактнойИнформации
    НоваяСтрока_КонтИнфо.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию(КонтИнфо.Вид.Наименование); //СправочникСсылка.ВидыКонтактнойИнформации
    НоваяСтрока_КонтИнфо.Представление = КонтИнфо.Представление;
    НоваяСтрока_КонтИнфо.ЗначенияПолей = КонтИнфо.ЗначенияПолей;
    НоваяСтрока_КонтИнфо.Страна = КонтИнфо.Страна;
    НоваяСтрока_КонтИнфо.Регион = КонтИнфо.Регион;
    НоваяСтрока_КонтИнфо.Город = КонтИнфо.Город;
    НоваяСтрока_КонтИнфо.CRM_ОсновнойДляСвязи = КонтИнфо.CRM_ОсновнойДляСвязи;
    НоваяСтрока_КонтИнфо.АдресЭП = КонтИнфо.АдресЭП;
    НоваяСтрока_КонтИнфо.НомерТелефона = КонтИнфо.НомерТелефона;
    НоваяСтрока_КонтИнфо.НомерТелефонаБезКодов = КонтИнфо.НомерТелефонаБезКодов;
    КонецЦикла;

    CпрКонтЛица.Записать();
    ДокументСобытие.КонтактноеЛицо = CпрКонтЛица;
    КонецЦикла;
    КонецЕсли;

    //////////////////////////////////// Создание Справочника - Пользователи /////////////////////////////////////////////////////////////////

    ИмяПользователя = РезультатЗапроса.Ответственный.Наименование;
    ДанныеПользователяИзСправочника = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);

    Если Не ДанныеКонтЛицаИзСправочника.Пустой() Тогда
    ДокументСобытие.Ответственный = ДанныеПользователяИзСправочника;
    ДокументСобытие.Автор = ДанныеПользователяИзСправочника;
    Иначе
    ЗапросНаПользователя = Подключение.NewObject("Запрос");
    ЗапросНаПользователя.Текст =
    "ВЫБРАТЬ
    | Пользователи.Наименование,
    | Пользователи.Недействителен,
    | Пользователи.УдалитьCRM_ТекущееПодразделение,
    | Пользователи.CRM_УчаствуетВАнкетировании,
    | Пользователи.CRM_Фотография,
    | Пользователи.CRM_Планируемый,
    | Пользователи.Подразделение,
    | Пользователи.ФизическоеЛицо,
    | Пользователи.Комментарий,
    | Пользователи.Служебный,
    | Пользователи.Подготовлен,
    | Пользователи.ИдентификаторПользователяИБ,
    | Пользователи.ИдентификаторПользователяСервиса
    |ИЗ
    | Справочник.Пользователи КАК Пользователи
    |ГДЕ
    | Пользователи.Наименование = &ИмяПользователя";

    ЗапросНаПользователя.УстановитьПараметр("ИмяПользователя", ИмяПользователя);

    ДанныеПользователя = ЗапросНаПользователя.Выполнить();
    Выборка = ДанныеПользователя.Выбрать();

    Пока Выборка.Следующий() Цикл
    СпрПользователи = Справочники.Пользователи.СоздатьЭлемент();
    СпрПользователи.Наименование = Выборка.Наименование;
    СпрПользователи.Недействителен = Выборка.Недействителен;
    СпрПользователи.Подразделение = Выборка.Подразделение; //ОпределяемыйТип.Подразделение
    СпрПользователи.ФизическоеЛицо = Выборка.ФизическоеЛицо; //ОпределяемыйТип.ФизическоеЛицо
    СпрПользователи.Комментарий = Выборка.Комментарий;
    СпрПользователи.Служебный = Выборка.Служебный;
    СпрПользователи.Подготовлен = Выборка.Подготовлен;
    СпрПользователи.ИдентификаторПользователяИБ = Выборка.ИдентификаторПользователяИБ; //УникальныйИдентификатор
    СпрПользователи.ИдентификаторПользователяСервиса = Выборка.ИдентификаторПользователяСервиса; //УникальныйИдентификатор
    СпрПользователи.СвойстваПользователяИБ = Выборка.СвойстваПользователяИБ; //ХранилищеЗначения

    ///////////////////////////////////// Запрос - КонтактнаяИнформация - Пользователя ////////////////////////////////////////////////////

    КонтИнфо_Запрос = Подключение.NewObject("Запрос");
    КонтИнфо_Запрос.Текст =
    "ВЫБРАТЬ
    | ПользователиКонтактнаяИнформация.Тип КАК Тип,
    | ПользователиКонтактнаяИнформация.Вид КАК Вид,
    | ПользователиКонтактнаяИнформация.Представление КАК Представление,
    | ПользователиКонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
    | ПользователиКонтактнаяИнформация.Страна КАК Страна,
    | ПользователиКонтактнаяИнформация.Регион КАК Регион,
    | ПользователиКонтактнаяИнформация.Город КАК Город,
    | ПользователиКонтактнаяИнформация.АдресЭП КАК АдресЭП,
    | ПользователиКонтактнаяИнформация.ДоменноеИмяСервера КАК ДоменноеИмяСервера,
    | ПользователиКонтактнаяИнформация.НомерТелефона КАК НомерТелефона,
    | ПользователиКонтактнаяИнформация.НомерТелефонаБезКодов КАК НомерТелефонаБезКодов,
    | ПользователиКонтактнаяИнформация.ВидДляСписка КАК ВидДляСписка
    |ИЗ
    | Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация";

    ТаблицаКонтИнфоПользователя = КонтИнфо_Запрос.Выполнить().Выгрузить();

    Для Каждого КонтИнфоПользователя Из ТаблицаКонтИнфоПользователя Цикл
    НоваяСтрока_КонтИнфоПользователя = СпрПользователи.КонтактнаяИнформация.Добавить();
    НоваяСтрока_КонтИнфоПользователя.Тип = КонтИнфоПользователя.Тип; //ПеречислениеСсылка.ТипыКонтактнойИнформации
    НоваяСтрока_КонтИнфоПользователя.Вид = КонтИнфоПользователя.Вид; //СправочникСсылка.ВидыКонтактнойИнформации
    НоваяСтрока_КонтИнфоПользователя.Представление = КонтИнфоПользователя.Представление;
    НоваяСтрока_КонтИнфоПользователя.ЗначенияПолей = КонтИнфоПользователя.ЗначенияПолей;
    НоваяСтрока_КонтИнфоПользователя.Страна = КонтИнфоПользователя.Страна;
    НоваяСтрока_КонтИнфоПользователя.Регион = КонтИнфоПользователя.Регион;
    НоваяСтрока_КонтИнфоПользователя.Город = КонтИнфоПользователя.Город;
    НоваяСтрока_КонтИнфоПользователя.АдресЭП = КонтИнфоПользователя.АдресЭП;
    НоваяСтрока_КонтИнфоПользователя.НомерТелефона = КонтИнфоПользователя.НомерТелефона;
    НоваяСтрока_КонтИнфоПользователя.НомерТелефонаБезКодов = КонтИнфоПользователя.НомерТелефонаБезКодов;
    НоваяСтрока_КонтИнфоПользователя.CRM_ОсновнойДляСвязи = КонтИнфоПользователя.CRM_ОсновнойДляСвязи;
    КонецЦикла;

    СпрПользователи.Записать();
    ДокументСобытие.Ответственный = СпрПользователи;
    ДокументСобытие.Автор = СпрПользователи;
    КонецЦикла;
    КонецЕсли;

    //--------------------------------------------------------------------------------------------------------------------------------------------------------------

    Попытка
    ДокументСобытие.Договор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(РезультатЗапроса.Договор.Наименование).ПолучитьОбъект();
    Сообщить(ДокументСобытие.Договор);
    Исключение
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Не удалось создать договор " + ОписаниеОшибки();
    Сообщение.Сообщить();
    КонецПопытки;

    ДокументСобытие.Организация = Справочники.Организации.НайтиПоНаименованию(РезультатЗапроса.Организация.Наименование);
    ДокументСобытие.ВидЦен = Справочники.ВидыЦен.НайтиПоНаименованию(РезультатЗапроса.ВидЦен.Наименование);
    ДокументСобытие.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию(РезультатЗапроса.ВалютаДокумента.Наименование);
    ДокументСобытие.Подразделение = Справочники.СтруктураПредприятия.НайтиПоНаименованию(РезультатЗапроса.Подразделение.Наименование);
    ДокументСобытие.ДокументОснование = Справочники.МаркетинговыеМероприятия.НайтиПоНаименованию(РезультатЗапроса.ДокументОснование.Наименование);
    //ДокументСобытие.Партнер = Справочники.Партнеры.НайтиПоНаименованию(РезультатЗапроса.Партнер.Наименование);

    Сообщить(ДокументСобытие.Организация);
    Сообщить(ДокументСобытие.ВидЦен);
    Сообщить(ДокументСобытие.ВалютаДокумента);
    Сообщить(ДокументСобытие.Подразделение);
    Сообщить(ДокументСобытие.ДокументОснование);

    //--------------------------------------------------------------------------------------------------------------------------------------------------------------

    ДокументСобытие.Записать();

    Сообщить("Документ " + ДокументСобытие + " успешно создан");
    Исключение
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Не удалось создать документ событие" + ОписаниеОшибки();
    Сообщение.Сообщить();
    КонецПопытки;
    КонецЦикла;