Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Новый топик    Ответить
 Управляемое приложение 8.2  [new]
XSprinter
Member

Откуда:
Сообщений: 55
Добрый день, хочу освоить концепцию работы 8.2 в тонком клиенте.
Не понимаю как организовать следующий простой алгоритм, описываю схематично

   Запрос = Новый  Запрос();
   Запрос.Текст = "Выбор набора ссылок БД";

   Выборка =  Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
        
        ОбработкаПрерыванияПользователя(); // данная функция не существует на сервере 1С
        
        Объект = Выборка.Ссылка.ПолучитьОбъект();
        //далее работа с объектом

   КонецЦикла;

Проблема в том что объект Запрос и непосредственная работа с объектами возможна только на сервере, а обработка прерывания пользователя только на клиенте.
23 авг 10, 18:41    [9310819]     Ответить | Цитировать Сообщить модератору
 Re: Управляемое приложение 8.2  [new]
XSprinter
Member

Откуда:
Сообщений: 55
Спасибо , пока писал сам понял, что-то такое
 
     Список = ПолучениеНаборасСылокНаСервере();

     Для Каждого Элемент Из Список Цикл
        
        ОбработкаПрерыванияПользователя(); 
        
        ПроцедураОбработкиОбъектаНаСервере(Элемент);

     КонецЦикла;
     
но жаль что набор ссылок необходимо возвращать на клиента
только для вызова процедуры ОбработкаПрерыванияПользователя.

Может есть более эффективные варианты?
23 авг 10, 18:50    [9310875]     Ответить | Цитировать Сообщить модератору
 Re: Управляемое приложение 8.2  [new]
lerpapod
Member

Откуда:
Сообщений: 1
&НаСервере
Функция ИнициализацияОбработкиСервер()

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

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

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

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

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

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

    // Обработка

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

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

    КонецЦикла;

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

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

    КонецЕсли;

КонецПроцедуры
by http://infostart.ru/public/76309/
27 дек 10, 16:23    [10006256]     Ответить | Цитировать Сообщить модератору
Все форумы / Ответить
 
Лучший учебный центр Microsoft!
Новейшие курсы Microsoft SQL Server 2014!
ОЧЕНЬ привлекательные цены на курсы Oracle — от 26 тыс.руб.!
Все курсы по базам данных: Microsoft SQL Server 2014, Oracle, IBM DB2, Access, MySql