0
triviumfan
15.01.18
✎
23:50
|
Доброго дня (ночи!).
Первый раз вижу, что метод Следующий() обходит не все элементы выборки из результата запроса. В чём прикол?!
Справочник "Контрагенты", ~30к элементов.
Запрос = Новый Запрос("Выбрать Ссылка, Наименование Из Справочник." + СправочникДляПоиска);
Выборка = Запрос.Выполнить().Выбрать();
Индикатор1 = 0;
ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Выборка.Количество();
Пока Выборка.Следующий() Цикл
//...
КонецЦикла;
На 27% выполнения цикл останавливается. Никогда такого ранее не встречал. Хотя помнится, некоторые жаловались на похожее поведение платформы при работе с ado recordset. Куда копать? Выгружать результат в ТЗ? Дико звучит...
|
|
2
triviumfan
16.01.18
✎
07:57
|
Пока Выборка.Следующий() Цикл
УИД_Источника = Выборка.Ссылка.УникальныйИдентификатор();
УИД_Приемника = ТекCOMОбъект.NewObject("УникальныйИдентификатор", Строка(УИД_Источника));
НайденныйЭлемент = ВнешнийСправочник.ПолучитьСсылку(УИД_Приемника);
Если Найти(ТекCOMОбъект.String(НайденныйЭлемент),"не найден") = 0 Тогда
Если ТолькоРазныеНаименования И НайденныйЭлемент.Наименование = Выборка.Наименование Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = СписокОбъектов.Добавить();
НоваяСтрока.Источник = Выборка.Ссылка;
НоваяСтрока.НаименованиеПриемника = НайденныйЭлемент.Наименование;
НоваяСтрока.Приемник = ТекCOMОбъект.String(УИД_Приемника);
КонецЕсли;
Индикатор1 = Индикатор1 + 1;
ОбработкаПрерыванияПользователя();
КонецЦикла;
Ошибка в том, что индикатор не всегда инкрементируется. Нет никакой ошибки) Автор сам дурак, плюс противопоказано ночью обработки писать. Отбой, всем печенек)
|
|