Здесь достаточно приводится рабочих правил выгрузки, но там не работает при выгрузке контрагента выгрузка "Адресов" (Юридические и Фактические), попробуем исправить.
Речь пойдет о ручной выгрузке данных из Управления Торговлей 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 = Строка(Страна);
КонецЕсли;
СтрокаНабора.ТипКвартиры = ?(СтрокаНабора.ТипКвартиры = «кв.», «Квартира», «Офис»);
КонецЕсли;
СтруктураПолей.Свойство(«Комментарий», СтрокаНабора.Комментарий);
КонецЦикла;
Для Каждого текСтрокаКотакт из Строки Цикл
Сообщить(текСтрокаКотакт.Представление);
ВыгрузитьПоПравилу(текСтрокаКотакт, ,, , «КонтактнаяИнформация»);
КонецЦикла;
(0) а само правило?
(1) Извините, дублировать не стал, чтобы не тратить ваши $m и не обвинили в плагиате, дал ссылку на те правила которые сам брал отсюда, и внес маленькие корректировки, о которых подробно расписал… просто мои правила которые я переделал они сугубо индивидуальны, но могу конечно задублировать с поправками на те, что ссылался.
http://infostart.ru/public/120056/ и сделать изменения самому…
вожно взять вот эти правила
удачи
(2) Та я не за себя радею… У мну есть все что надо …
хм… спасибо, добавлю себе в закладки, чувствую, что скоро пригодится
Спасибо, пригодилось.
Спасибо, очень пригодилось
Мне пригодилось спасибо
Спасибо! сохранил кому то SM
Доброго времени суток! Вылезает ошбка
Ошибка в обработчике события ПослеВыгрузкиДанных (конвертация)
Обработчик = ПослеВыгрузкиДанных (конвертация)
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(35,25)}: Переменная не определена (Объект)
ПозицияМодуля = (14)
КСообщенияОбОшибках = 63
Вроде все делала как сказали …. помогите пожалуйста….
Аналогичная ошибка ,ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(35,25)}: Переменная не определена (Объект)