helpf.pro
Регистрация
 +2 
Распечатать

Обработка на сервере с индикатором

Обработка на сервере с отображением процесса загрузки (индикатор) и возможностью прерывания

Код 1C v 8.2 УП
 // Автор acsent
&НаСервере
Функция ИнициализацияОбработкиСервер()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Спр.Ссылка
    |ИЗ
    |   Справочник.Банки КАК Спр";

    Данные      = Запрос.Выполнить().Выгрузить();
    АдресДанных = ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);

    // Обработка
    // В справочнике ~ 4000 элементов
    Возврат Данные.Количество();

КонецФункции

&НаСервереБезКонтекста
Функция ОбработатьЭлемент(ДанныеЭлемента)

    СпрОбъект = ДанныеЭлемента.Ссылка.ПолучитьОбъект();

    // Обработка

    СпрОбъект.ОбменДанными.Загрузка = Истина;
    СпрОбъект.Записать();

КонецФункции

&НаСервереБезКонтекста
Функция ОбработатьПорциюНаСервере(Начало, Конец, АдресДанных)

    Данные = ПолучитьИзВременногоХранилища(АдресДанных);

    Для Счетчик = Начало - 1 По Конец - 1 Цикл

        ОбработатьЭлемент(Данные[Счетчик]);

    КонецЦикла;

КонецФункции

&НаКлиенте
Процедура ВыполнитьОбработку(Команда)

    Количество      = ИнициализацияОбработкиСервер();
    РазмерШага      = 10;
    КоличествоШагов = Цел(Количество / РазмерШага);
    КоличествоЦел   = КоличествоШагов * РазмерШага;

    Если КоличествоЦел < Количество Тогда
        Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов + 1;
    Иначе
        Элементы.Индикатор.МаксимальноеЗначение = КоличествоШагов;
    КонецЕсли;

    Для Счетчик = 1 По КоличествоШагов Цикл

        ОбработатьПорциюНаСервере(РазмерШага * (Счетчик - 1) + 1, РазмерШага * Счетчик, АдресДанных);
        Индикатор = Счетчик;
        ОбработкаПрерыванияПользователя();
        ОбновитьОтображениеДанных();

    КонецЦикла;

    Если КоличествоЦел < Количество Тогда

        ОбработатьПорциюНаСервере(КоличествоШагов * РазмерШага + 1, Количество, АдресДанных);
        Индикатор = Индикатор + 1;

    КонецЕсли;

КонецПроцедуры   
Разместил:   Версии: | 8.2 УП |  Дата:   Прочитано: 24098
 +2 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1C медленно работает по сети с базой на SQL Server 23
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Посмотреть все результаты поиска похожих
Комментарии
scanport
21.01.2015 07:30Комментарий: 3
scanport

Работает, очень помогла статья. Спасибо.

Количество серверных вызовов можно регулировать.

E_Migachev
30.05.2013 16:56Комментарий: 2
E_Migachev
Pelmen, да, данные тут постоянно гуляют клиент - сервер и обратно - но больше это ни как и не реализуешь на текущий момент
Pelmen
30.05.2013 16:25Комментарий: 1
Pelmen
Я так понял, тут происходит куча серверных вызовов?
Неправильно это с точки зрения оптимизации. Хотя, для возможности прерывания процесса, наверное, только такой вариант подойдёт.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!