Имя: Пароль:
1C
1С v8
Обход результата запроса
0 triviumfan
 
15.01.18
23:50
Доброго дня (ночи!).

Первый раз вижу, что метод Следующий() обходит не все элементы выборки из результата запроса. В чём прикол?!
Справочник "Контрагенты", ~30к элементов.


Запрос = Новый Запрос("Выбрать Ссылка, Наименование Из Справочник." + СправочникДляПоиска);
Выборка = Запрос.Выполнить().Выбрать();

Индикатор1 = 0;
ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Выборка.Количество();

Пока Выборка.Следующий() Цикл
//...
КонецЦикла;

На 27% выполнения цикл останавливается. Никогда такого ранее не встречал. Хотя помнится, некоторые жаловались на похожее поведение платформы при работе с ado recordset. Куда копать? Выгружать результат в ТЗ? Дико звучит...
1 Darych
 
16.01.18
01:07
ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Выборка.Количество();
Задвинь это и наслаждайся
2 triviumfan
 
16.01.18
07:57

    Пока Выборка.Следующий() Цикл
                
        УИД_Источника = Выборка.Ссылка.УникальныйИдентификатор();
        УИД_Приемника = ТекCOMОбъект.NewObject("УникальныйИдентификатор", Строка(УИД_Источника));
        НайденныйЭлемент = ВнешнийСправочник.ПолучитьСсылку(УИД_Приемника);
        
        Если Найти(ТекCOMОбъект.String(НайденныйЭлемент),"не найден") = 0 Тогда
            
            Если ТолькоРазныеНаименования И НайденныйЭлемент.Наименование = Выборка.Наименование Тогда
                Продолжить;
            КонецЕсли;
            
            НоваяСтрока = СписокОбъектов.Добавить();
            НоваяСтрока.Источник = Выборка.Ссылка;
            НоваяСтрока.НаименованиеПриемника = НайденныйЭлемент.Наименование;
            НоваяСтрока.Приемник = ТекCOMОбъект.String(УИД_Приемника);
            
        КонецЕсли;
        
                Индикатор1 = Индикатор1 + 1;
        ОбработкаПрерыванияПользователя();
        
    КонецЦикла;

Ошибка в том, что индикатор не всегда инкрементируется. Нет никакой ошибки) Автор сам дурак, плюс противопоказано ночью обработки писать. Отбой, всем печенек)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой