// Автор acsent &НаСервере Функция ИнициализацияОбработкиСервер() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Спр.Ссылка |ИЗ | Справочник.Банки КАК Спр"; Данные = Запрос.Выполнить().Выгрузить(); АдресДанных = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор); // Обработка // В справочнике ~ 4000 элементов Возврат Данные.Количество(); КонецФункции &НаСервереБезКонтекста Функция ОбработатьЭлемент(ДанныеЭлемента) СпрОбъект = ДанныеЭлемента.Ссылка.ПолучитьОбъект(); // Обработка СпрОбъект.ОбменДанными.Загрузка = Истина; СпрОбъект.Записать(); КонецФункции &НаСервереБезКонтекста Функция ОбработатьПорциюНаСервере(Начало, Конец, АдресДанных) Данные = ПолучитьИзВременногоХранилища(АдресДанных); Для Счетчик = Начало - 1 По Конец - 1 Цикл ОбработатьЭлемент(Данные[Счетчик]); КонецЦикла; КонецФункции &НаКлиенте Процедура ВыполнитьОбработку(Команда) Количество = ИнициализацияОбработкиСервер(); РазмерШага = 10; КоличествоШагов = Цел(Количество / РазмерШага); КоличествоЦел = КоличествоШагов * РазмерШага; Если КоличествоЦел < Количество Тогда Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов + 1; Иначе Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов; КонецЕсли; Для Счетчик = 1 По КоличествоШагов Цикл ОбработатьПорциюНаСервере(РазмерШага * (Счетчик - 1) + 1, РазмерШага * Счетчик, АдресДанных); Индикатор = Счетчик; ОбработкаПрерыванияПользователя(); ОбновитьОтображениеДанных(); КонецЦикла; Если КоличествоЦел < Количество Тогда ОбработатьПорциюНаСервере(КоличествоШагов * РазмерШага + 1, Количество, АдресДанных); Индикатор = Индикатор + 1; КонецЕсли; КонецПроцедуры