Имя: Пароль:
1C
1C 7.7
v7: Конвертация данных. Выгрузка по произвольному алгоритму
0 alpack
 
11.06.20
07:29
Добрый день!
Конфигурация Источник Тис9.2
Конфигурация Приемник Самописная конфигурация

Настраиваю выгрузку справочника Контрагенты.
1. Создал ПКО для справочника Контрагенты. Источник не указывал
   Реквизиты:
               Код
               ВидКонтрагента
               Наименование
               ПолнНаименование
               ИНН(Поиск)
               ЭтоГруппа(Поиск)
2. Создал ПВД.
   Способ выборки: Произвольный алгоритм
   Правило(Созданое ПКО Контрагенты)
3. Обработчик перед выгрузкой ПВД:

ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Код");
ВыборкаДанных.НоваяКолонка("ВидКонтрагента");
ВыборкаДанных.НоваяКолонка("Наименование");
ВыборкаДанных.НоваяКолонка("ПолнНаименование");
ВыборкаДанных.НоваяКолонка("ИНН");  
    
Контрагент = СоздатьОбъект("Справочник.Контрагенты");
Контрагент.ВыбратьЭлементы();
Пока Контрагент.ПолучитьЭлемент() = 1 Цикл
    Если Контрагент.ЭтоГруппа() = 1 Тогда
        Продолжить;
    КонецЕсли;
    ВыборкаДанных.НоваяСтрока();
    ВыборкаДанных.Код = Контрагент.Код;
    ВыборкаДанных.ВидКонтрагента = "Прочая организация";
    ВыборкаДанных.Наименование = Контрагент.Наименование;
    Если Контрагент.ЮрФизЛицо.Вид()="ЮрЛица" тогда  
         ВыборкаДанных.ИНН = Лев(СокрЛП(Контрагент.ЮрФизЛицо.ИНН),22);
         ВыборкаДанных.ПолнНаименование = СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование);
    ИначеЕсли  Контрагент.ЮрФизЛицо.Вид()="ФизЛица" тогда
         ВыборкаДанных.ИНН = Лев(СокрЛП(Контрагент.ЮрФизЛицо.ИНН),11);
         ВыборкаДанных.ПолнНаименование = СокрЛП(Контрагент.ЮрФизЛицо.ПолнНаименование);
   КонецЕсли;
КонецЦикла;
  

Проблема: выгружается 1 объект. Первый. И все

Проверил код внешней обработкой, ТЗ заполняется.
Сделал Тестирование и исправление. Не помогло
1 SleepyHead
 
гуру
11.06.20
09:14
(0) Вангую, у тебя есть только один контрагент в корне справочника, а все остальные внутри групп.
2 tgu82
 
11.06.20
09:34
(1) Но у (0) группы же обходятся по условию. А в самописной конфе я иак понял что ему не нужны группы
3 alpack
 
11.06.20
11:22
Проблема решена!
Решение:
Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший