Имя: Пароль:
1C
1С v8
КД. Выгрузка справочника по своему алгоритму.
0 Adept
 
31.08.13
10:03
Пишу выгрузку из старой УТ в УТ11.
Переношу контрагентов в партнеров и в контрагентов
В старой УТ контактная информация это РС
В новой ТЧ справочника
по контрагенты->партнеры
Пишу свой алгоритм делаю запрос по справочники контрагенты и по РС Контактной  информации. Соответственно в ПКО попадает строка ТЧ с колонкой, которая является таблицей значений. Эта таблица и передается в ПКГС.
Но есть еще второе правило выгрузки контрагенты->контрагены
и там есть ссылка(в контрагенте) на партнера
и она соответственно приходит в ПКО как ссылка.
Соответственен код получения ТЧ не отрабатывает, вылетает с ошибкой. Как бы это правильно организовать.
1 Rie
 
31.08.13
10:29
(0) Варианты:
- не переписывать правило выгрузки, а делать запрос по контактной информации делать перед выгрузкой группы свойств в контрагентах;
- использовать ВыгрузитьПоПравилу для партнёра.
2 Adept
 
31.08.13
10:36
ПВД Контрагенты в партнеры

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

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


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

ТаблицаКонтактнойИнформации = Запрос.Выполнить().Выгрузить();
ТаблицаКонтактнойИнформации.Индексы.Добавить("Объект");

ТаблицаКонтрагентов.Колонки.Добавить("КонтактнаяИнформация");


для каждого СтрокаКонтрагентов Из ТаблицаКонтрагентов Цикл
    СтрокаКонтрагентов.КонтактнаяИнформация =     ТаблицаКонтактнойИнформации.Скопировать(Новый Структура("Объект",СтрокаКонтрагентов.Ссылка));
    Сообщить("ПВД");
    ВыгрузитьПоПравилу(СтрокаКонтрагентов,
                        Неопределено,
                        Неопределено,
                        Неопределено,
                        "КонтрагентыВПартнеры",
                        ,
                        ,
                        );
КонецЦикла;
3 Adept
 
31.08.13
10:37
ПКГС Контактная информация

Если ЗначениеЗаполнено(Источник) И ТипЗнч(Источник) = Тип("СтрокаТаблицыЗначений") И
    ЗначениеЗаполнено(Источник.КонтактнаяИнформация) Тогда
    Значение = Источник.КонтактнаяИнформация;
    Сообщить("Передано");
Иначе
    Сообщить("Нередано");
    Отказ = Истина;
КонецЕсли;
4 Adept
 
31.08.13
10:38
Получается очень странный вывод

Начало выгрузки:   31.08.2013 9:32:29
ПВД
Передано
ПВД
ПВД
ПВД
ПВД
ПВД
ПВД
ПВД
.....
ПВД
ПВД
ПВД

Окончание выгрузки: 31.08.2013 9:35:04


Фактически КИ перенесла только по одному контрагенту ...
5 Rie
 
31.08.13
10:41
(2), (3) Ну так сделай запрос к регистру КонтактнаяИнформация в обработчике ПередОбработкой ПКГС и у контрагента, и у партнёра. Результат запроса выгрузи в КоллекцияОбъектов.
И наступит счастье.
6 Adept
 
31.08.13
10:56
(5) Да, так прошло, спасибо.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший