gifts2017

Обмен УТ11 -> БП выгрузка контрагентов с адресами

Опубликовал Алексей (AlexeyK1) в раздел Обмен - Перенос данных из 1C8 в 1C8

Речь пойдет о ручной выгрузке данных из Управления Торговлей 11 в Бухгалтерию 2.0.
Здесь достаточно приводится рабочих правил выгрузки, но там не работает при выгрузке контрагента выгрузка "Адресов" (Юридические и Фактические), попробуем исправить.

Речь пойдет о ручной выгрузке данных из Управления Торговлей 11 в Бухгалтерию 2.0.
Здесь достаточно приводится рабочих правил выгрузки, посмотрите тут или тут
но там не работает, при выгрузке контрагента, выгрузка "Адресов" (Юридические и Фактические). Повозившись, изменил Алгоритм.ВыгрузкаКонтактнойИнформации, который есть в этих правилах, но отключен, закомментирована его работа.

Так вот, заменяем код этого алгоритма в правилах на мой, и должно работать, предварительно раскомментировав строку

 

//Выполнить(Алгоритмы.ВыгрузкаКонтактнойИнформации);

в Правилах выгрузки(событие "после выгрузки"), Контрагентов



также в правилах конвертации "КотактнойИнформации" необходимо изменить существующие строки события "после загрузки" 
 

вставить следующий код

ОбъектМодифицирован = Ложь;
   
ЗаписьРегистра = Объект;//[НомерЗаписи - 1];
   
Если ЗаписьРегистра.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес И НЕ ЗначениеЗаполнено(ЗаписьРегистра.Представление) Тогда
       
// Заполняем представление по умолчанию, если в УТ адрес был не произвольный
       
ПредставлениеАдреса = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдреса(ЗаписьРегистра);
        Если
ЗначениеЗаполнено(ПредставлениеАдреса) Тогда
           
ОбъектМодифицирован = Истина;
           
ЗаписьРегистра.Представление = ПредставлениеАдреса;
        КонецЕсли;
    КонецЕсли;

 

и должно работать, выгружается вся контактная информация по контрагенту, но в бухгателрию попадает только нужная Юр. адрес, Факт. адрес и телефоны.

 

код Алгоритма.ВыгрузкаКонтактнойИнформации

Строки = Новый ТаблицаЗначений;
Строки.Колонки.Добавить("Ссылка");
Строки.Колонки.Добавить("Объект");
Строки.Колонки.Добавить("Вид");
Строки.Колонки.Добавить("Тип");
Строки.Колонки.Добавить("Поле1");
Строки.Колонки.Добавить("Поле2");
Строки.Колонки.Добавить("Поле3");
Строки.Колонки.Добавить("Поле4");
Строки.Колонки.Добавить("Поле5");
Строки.Колонки.Добавить("Поле6");
Строки.Колонки.Добавить("Поле7");
Строки.Колонки.Добавить("Поле8");
Строки.Колонки.Добавить("Поле9");
Строки.Колонки.Добавить("ТипДома");
Строки.Колонки.Добавить("ТипКвартиры");
Строки.Колонки.Добавить("ТипКорпуса");
Строки.Колонки.Добавить("Представление");
Строки.Колонки.Добавить("Комментарий");
Строки.Колонки.Добавить("ЭтоПроизвольнаяСтрока", Новый ОписаниеТипов("Булево"));

// Типы дома, корпуса и квартиры, которые поддерживаются в БП
ТипыДомов = Новый Массив;
ТипыДомов.Добавить("дом");
ТипыДомов.Добавить("владение");

ТипыКорпусов = Новый Массив;
ТипыКорпусов.Добавить("корпус");
ТипыКорпусов.Добавить("строение");

ТипыКвартир = Новый Массив;
ТипыКвартир.Добавить("кв.");
ТипыКвартир.Добавить("оф.");
// Заполнение набора
Для Каждого СтрокаКИ Из Объект.КонтактнаяИнформация Цикл
   
// Получаем структуру значений полей
   
СтруктураПолей      = Новый Структура;
   
ПоследнийЭлементИмя = Неопределено;
   
СтрокаПолей         = СтрокаКИ.ЗначенияПолей;

    Для
Сч = 1 По СтрЧислоСтрок(СтрокаПолей) Цикл
       
Стр = СтрПолучитьСтроку(СтрокаПолей, Сч);
        Если
Лев(Стр, 1) = Символы.Таб Тогда
            Если
ПоследнийЭлементИмя <> Неопределено Тогда
               
СтруктураПолей[ПоследнийЭлементИмя] = СтруктураПолей[ПоследнийЭлементИмя] + Символы.ПС + Сред(Стр, 2);
            КонецЕсли;
        Иначе
           
Поз = Найти(Стр, "=");
            Если
Поз <> 0 Тогда
               
ПоследнийЭлементИмя = Лев(Стр, Поз-1);
               
СтруктураПолей.Вставить(ПоследнийЭлементИмя, Сред(Стр, Поз+1));
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

   
СтрокаНабора = Строки.Добавить();
   
СтрокаНабора.Объект                 = Объект.Ссылка;
   
СтрокаНабора.Вид                    = СтрокаКИ.Вид;
   
СтрокаНабора.Тип                    = СтрокаКИ.Тип;
   
СтрокаНабора.Представление          = СтрокаКИ.Представление;

    Если
СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Факс
        ИЛИ СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
       
СтруктураПолей.Свойство("КодСтраны", СтрокаНабора.Поле1);
       
СтруктураПолей.Свойство("КодГорода", СтрокаНабора.Поле2);
       
СтруктураПолей.Свойство("НомерТелефона", СтрокаНабора.Поле3);
       
СтруктураПолей.Свойство("Добавочный", СтрокаНабора.Поле4);
    ИначеЕсли
СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда

       
СтруктураПолей.Свойство("Индекс", СтрокаНабора.Поле1);
       
СтруктураПолей.Свойство("Регион", СтрокаНабора.Поле2);
       
СтруктураПолей.Свойство("Район", СтрокаНабора.Поле3);
       
СтруктураПолей.Свойство("Город", СтрокаНабора.Поле4);
       
СтруктураПолей.Свойство("НаселенныйПункт", СтрокаНабора.Поле5);
       
СтруктураПолей.Свойство("Улица", СтрокаНабора.Поле6);
       
СтруктураПолей.Свойство("Дом", СтрокаНабора.Поле7);
       
СтруктураПолей.Свойство("Корпус", СтрокаНабора.Поле8);
       
СтруктураПолей.Свойство("Квартира", СтрокаНабора.Поле9);

       
СтруктураПолей.Свойство("ТипДома", СтрокаНабора.ТипДома);
       
СтруктураПолей.Свойство("ТипКорпуса", СтрокаНабора.ТипКорпуса);
       
СтруктураПолей.Свойство("ТипКвартиры", СтрокаНабора.ТипКвартиры);

       
// Проверяем значения типа дома, корпуса и квартиры
       
СтрокаНабора.ТипДома     = ?(ТипыДомов.Найти(НРег(СтрокаНабора.ТипДома)) = Неопределено, Неопределено, СтрокаНабора.ТипДома);
       
СтрокаНабора.ТипКорпуса  = ?(ТипыКорпусов.Найти(НРег(СтрокаНабора.ТипКорпуса)) = Неопределено, Неопределено, СтрокаНабора.ТипКорпуса);
       
СтрокаНабора.ТипКвартиры = ?(ТипыКвартир.Найти(НРег(СтрокаНабора.ТипКвартиры)) = Неопределено, Неопределено, СтрокаНабора.ТипКвартиры);

       
// Получаем представление, какое оно должно быть
       
КодСтраны = "";
       
НаименованиеСтраны = СтрокаКИ.Страна;
       
СтранаРоссия = Справочники.СтраныМира.Россия;

       
СтруктураПолей.Свойство("КодСтраны", КодСтраны);
       
Страна = ?(ЗначениеЗаполнено(КодСтраны), Справочники.СтраныМира.НайтиПоКоду(КодСтраны), Неопределено);
       
Страна = ?(ЗначениеЗаполнено(Страна), Справочники.СтраныМира.НайтиПоНаименованию(НаименованиеСтраны, Истина), СтранаРоссия);
       
Страна = ?(ЗначениеЗаполнено(Страна), Страна, СтранаРоссия);

       
Представление = "";
        Если
Страна <> СтранаРоссия Тогда
           
Представление = Представление + ?(ЗначениеЗаполнено(Строка(Страна)), ", " + Строка(Страна), "");
        КонецЕсли;
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле1)), ", " + СокрЛП(СтрокаНабора.Поле1), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле2)), ", " + СокрЛП(СтрокаНабора.Поле2), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле3)), ", " + СокрЛП(СтрокаНабора.Поле3), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле4)), ", " + СокрЛП(СтрокаНабора.Поле4), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле5)), ", " + СокрЛП(СтрокаНабора.Поле5), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле6)), ", " + СокрЛП(СтрокаНабора.Поле6), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле7)), ", " + СтрокаНабора.ТипДома    + " № " + СокрЛП(СтрокаНабора.Поле7), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле8)), ", " + СтрокаНабора.ТипКорпуса + " " + СокрЛП(СтрокаНабора.Поле8), "");
       
Представление = Представление + ?(ЗначениеЗаполнено(СокрЛП(СтрокаНабора.Поле9)), ", " + СтрокаНабора.ТипКвартиры + " " + СокрЛП(СтрокаНабора.Поле9), "");

        Если
СтрДлина(Представление) > 2 Тогда
           
Представление = Сред(Представление, 3);
        КонецЕсли;

       
// Проверяем представление на наличие произвольного значения
       
Если Представление <> СтрокаНабора.Представление Тогда
           
СтрокаНабора.ЭтоПроизвольнаяСтрока = Истина;
           
СтрокаНабора.Поле1 = Строка(Страна);
        КонецЕсли;

       
СтрокаНабора.ТипКвартиры = ?(СтрокаНабора.ТипКвартиры = "кв.", "Квартира", "Офис");

    КонецЕсли;

   
СтруктураПолей.Свойство("Комментарий", СтрокаНабора.Комментарий);
КонецЦикла;




Для Каждого
текСтрокаКотакт из Строки Цикл

   
Сообщить(текСтрокаКотакт.Представление);
   
ВыгрузитьПоПравилу(текСтрокаКотакт, ,, , "КонтактнаяИнформация");
КонецЦикла;

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Зубцов (iov) 18.04.12 19:33
2. Алексей (AlexeyK1) 18.04.12 21:26
(1) Извините, дублировать не стал, чтобы не тратить ваши $m и не обвинили в плагиате, дал ссылку на те правила которые сам брал отсюда, и внес маленькие корректировки, о которых подробно расписал... просто мои правила которые я переделал они сугубо индивидуальны, но могу конечно задублировать с поправками на те, что ссылался.
вожно взять вот эти правила http://infostart.ru/public/120056/ и сделать изменения самому...
удачи
3. Александр Зубцов (iov) 18.04.12 22:03
(2) Та я не за себя радею... У мну есть все что надо ...
4. Галина Орехова (orehova123) 20.04.12 15:22
хм... спасибо, добавлю себе в закладки, чувствую, что скоро пригодится
5. Елена (elena_vash) 03.09.13 04:31
Спасибо, пригодилось.
Прикрепленные файлы:
6. FallenMAd rus (FallenMad) 05.02.14 19:29
Спасибо, очень пригодилось
7. timothy 24.02.14 17:34
Мне пригодилось спасибо
8. Михаил Семенов (mchammer4) 27.02.14 20:44
Спасибо! сохранил кому то SM
9. Анна Ни (Anyu-n) 02.12.15 15:15
Доброго времени суток! Вылезает ошбка
Ошибка в обработчике события ПослеВыгрузкиДанных (конвертация)
Обработчик = ПослеВыгрузкиДанных (конвертация)
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(35,25)}: Переменная не определена (Объект)
ПозицияМодуля = (14)
КСообщенияОбОшибках = 63
10. Анна Ни (Anyu-n) 03.12.15 11:34
Вроде все делала как сказали .... помогите пожалуйста....
Прикрепленные файлы:
11. Дмитрий Гневашев (Отала) 21.02.16 13:42
Аналогичная ошибка ,ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(35,25)}: Переменная не определена (Объект)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа