Приветствую. Никак не могу найти простейшей анимации пользователю, пока исполняется код на сервере (управл. формы, не БСП, самописное что-то).

Пытаюсь сделать формочку, доб. декорацию, задаю картинку "ДлительнаяОперация48" - нет никакой анимации в итоге, просто отображает статично картинку. Да что в этом 1с кругом везде ничего не является тем, чем кажется на первый взгляд? Ну почему не показывает нормально gif?

Заранее огромное спасибо всем, кто поможет
---
может так устроит.
---
```1c
    Состояние("Что-то выполняется");
```
---
Это конечно, но оно же исчезает сразу, не дожидаясь пока завершится долгая серверная оп
---
Пытаюсь сделать формочку, доб. декорацию, задаю картинку "ДлительнаяОперация48"
Тип декорации картинка?
Все отображается.
---
Нет! В тонком клиенте у меня просто статичная картинка! Как получается, что у Вас декорация отображает ее как анимированную??
---
как верно замечено в (10) вы просто на время серверной процедуры пытаетесь картинку показать? В это время клиент тупо ждет возврата управления на клиент. Запускайте серверную процедуру фоновым заданием.
Или вообще анимации нет?
---
Вообще анимации нет. Отвлекаясь от всего, я просто показываю формочку не как модальную, просто форму с gif-декорацией. Почему нет анимации?

В модуле формы у меня проц "НаСервере" - как её запустить фоновым заданием? (дико извиняюсь, если оч тупые у меня вопросы
---
если анимации нет вообще, в том числе и без серверных вызовов, то что-то не так сделали.
---
Код запуска задания:

```1c
    Адрес = ПоместитьВоВременноеХранилище(Неопределено, FormID);
    Результаты.Вставить(Ключ, Адрес);

    ПараметрыЗапуска = Новый Массив;
    ПараметрыЗапуска.Добавить(Адрес);

    ЭкземплярЗадания = ФоновыеЗадания.Выполнить(Обработчик, ПараметрыЗапуска, КлючНаСтарт, "Подготовка таблицы: " + Ключ);

    ТекущаяГруппа.Добавить(ЭкземплярЗадания.УникальныйИдентификатор);
```

Обработчик в серверном модуле:

```1c
    Процедура СостоянияЗаказовПокупателей(ИдентификаторВХ) Экспорт

    Если ПустаяСтрока(ИдентификаторВХ) Тогда
    Возврат;
    КонецЕсли;

    ПоместитьВоВременноеХранилище(ПеречитатьСостоянияЗаказовПокупателей(), ИдентификаторВХ);

    КонецПроцедуры
```

Ожидание выполнения:

```1c
    ЭкземплярыЗаданий = Новый Массив;
    Для Каждого UID Из ТекущаяГруппа Цикл
    ЭкземплярЗадания = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(UID);
    Если НЕ ЭкземплярЗадания = Неопределено Тогда
    ЭкземплярыЗаданий.Добавить(ЭкземплярЗадания);
    КонецЕсли;
    КонецЦикла;

    Если ЭкземплярыЗаданий.Количество() > 0 Тогда
    ФоновыеЗадания.ОжидатьЗавершения(ЭкземплярыЗаданий);
    КонецЕсли;
```

(17)
---
Ну почему не показывает нормально gif?
Потому что операция не длительная, а просто выполняется на сервере длительное время, потому gif просто замирает. Надо запустить в фоне
---
Честно, не очень понял (в 1с недавно). Вот из проц "НаКлиенте" собираюсь запустить долгую проц "НаСервере". Я сделал формочку , там у меня декорация "ДлительнаяОперация48" , но нет никакой анимации при показе этой формочки. почему формочка, просто пока она открыта перед юзером, - почему она не показывает анимацию?
---
произведите вскрытие котика из БП 3.0 и не плодите мутантов.

мне нравится как он зевает
---
Спасибо за совет, но нет сейчас у меня БП 3 под руками, хочу сделать срочно, а пока я разберусь с тем котом из БП... Неужели нельяз что-то ПРОСТЕЙШЕЕ родить самому??
---
Используйте Состояние(..

с отметкой прогресса выполнения
---
Так процедура же вып на сервере! Никакого прогресса не будет по любому! Так ладно, это уже бы пусть. Да хоть просто картинку простейшую АНИМИРОВАННУЮ показать юзеру - и то для 1с проблема
---
У вас в конфигураторе когда открываешь эту форму с картинкой gif анимация есть?
Вот у меня есть везде и в конфигураторе и в тонком и в любом клиенте
---
```1c
    &НаСервереБезКонтекста
    Функция ПолучитьСписокСсылок()
    Запрос = Новый Запрос(...
    Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
    КонецФункции

    &НаСервереБезКонтекста
    Процедура ОбработатьСсылку(Знач Ссылка)
    // твой код обработки
    КонецПроцедуры

    &НаКлиенте
    Процедура ВыполнитьОбработку(Команда)
    СписокСсылок = ПолучитьСписокСсылок();
    Счетчик = 0;
    Для Каждого Ссылка Из СписокСсылок Цикл
    Счетчик = Счетчик + 1;
    Прогресс = Цел(Счетчик / СписокСсылок.Количество() * 100);
    ОбработкаПрерыванияПользователя();
    Состояние("Обработка ссылки " + Ссылка, Прогресс);
    ОбработатьСсылку(Ссылка);
    КонецЦикла;
    КонецПроцедуры
```
---
Спасибо , посмотрю , но пока мне больше нравится идея формочки с анимацией, и все, но как независимую форму ее открывать как-то не очень, хорошо бы как-то и интерфейс блокировать юзеру, и проц НаСервере выполнять
---
Так, одну проблему я нашел объяснение : в той конфигурации, с которой я сейчас работаю , сама эта картинка, хотя называется "ДлительнаяОперация48" , и выглядит так же, НО ОНА СТАТИЧНАЯ у них в общих картинках!! Я добавил свою такую же - анимация появилась

Слава Богу, а то я уже не знал, что думать! Ну почему нет анимации?

Теперь надо подумать , как запустить фоновым заданием - проц "На Сервере" из в модуля формы из одного из обработчиков "НаКлиенте" вызывается
---
Анимация на клиенте работает только если форма клиента активна и не занята выполнением кода
---
(21)
(18)
Ясно. Фоновое задание тогда здесь явно мимо
Тогда я вижу единственное вменяемое решение это как-то через "Состояние ()" , типа того, что в
(14)
---
Отнюдь.

Фоновое задание возможно использовать, как показано (18) если ты используешь ПодключитьОбработчикОжидания() вместо последней части и будешь периодически проверять статусы заданий
---
Спасибо, думать надо..

Но это все какие-то танцы с бубном на ровнейшем, простейшем месте!!
Ну казалось бы, Ну надо же чтобы та же функция "Состояние" просто повисела перед глазами юзера , пока идет вызов серверной процедуры! плюс картиночку анимированную показывала!
А когда произойдет возврат из серверной - просто команда убрать это"Сосотяние" - все!!

Но это целая проблема, и надо так извращаться?..
---
...

Используйте ПоказатьОповещениеПользователя(...

если вас устроит отображение неанимированной картинки
---
Спасибо, это уже что-то . Да ладно уж, не до картинок уже, честно! Хотя бы что-то надо, чтобы юзер понимал, что не надо лихорадочно кликать все кнопки, а просто немножко подождпть (там реально секунд 30). Но это проблема для юзеров - надо обязательно КРУПНОЕ ЯВНОЕ что-то чтобы перед ними выскочило со словами :) "ПОДОЖДИТЕ Пож-ста,, не разбивайте компьютер и программу не перезапускайте!"
---
может так устроит.
---
spacecraft, мне кажется, что Вы нашли решение! Я еще не понял, как Вы это сделали, и почему оно у Вас работает, помедитирую потом над Вашим отличным , по-моему, решением!!

Я пока чтобы наконец перейти к другим вопросам, сделал вот такое: я сам контрол (после выбора из которого), перед вызовом сереверной части меняю его самого ЗАГОЛОВОК на типа "Подождите..." , а после возврата из серверной ставлю все как было

но конечно, Ваше гениальное (серьёзно) решение в 100 раз лучше!! Спасибо огромное!!
---
Это плохое решение. Нет прерывания длительной операции.
---
что?
---
Да Господи, обойдутся без прерывания!!
\
Не критично абсолютно!!!

Во-первых, там не пол часа , а пол минуты, во-вторых, для сверхтяжелых длительных обработок - так штатные все те их премудрости можно городить всю ту х...(сорри)

....Общий подход к асинхронному выполнению длительных серверных операций с помощью фонового задания:

Код, выполняющий длительную обработку данных, располагается в модуле менеджера объекта* или в общем модуле. Результат своей работы он помещает во временное хранилище;

*Примечание: необходимо использовать процедуру-обертку в общем модуле, которая будет вызывать процедуру модуля менеджера через ОбщегоНазначения.ВыполнитьМетодКонфигурации(). Т.к. фоновые задания могут работать только с процедурами и функциями общих модулей.
Для выполнения этого кода на сервере запускается фоновое задание, при этом необходимо ожидать завершения выполнения фонового задания в течение 0.8 сек;
Если за время ожидания выполнения задания оно не завершилось, то управление возвращается на клиент, и в клиентском коде подключается обработчик ожидания, в котором периодически проверяется состояние фонового задания. При этом интервал опроса задания увеличивается от 1 до 15 секунд с фиксированным коэффициентом 1.4;
На время выполнения длительной операции пользователю отображается индикатор;
при этом для отчетов индикатор выводится в поле табличного документа, используя свойство поля табличного документа ОтображениеСостояния:
.....

А для простых нормальных случаев в пару минут - ИДЕАЛЬНОЕ решение!
---
весело.
Проблема фоновых заданий в том, что они выполняются без привязки к контексту формы и процедуры должна располагаться в не глобальном общем модуле. Вот от этого и пляшите.
Вот для примера:

```1c
    &НаКлиенте
    Процедура Команда1(Команда)
    ЗапуститьДлительнуюПроцедуру();
    КонецПроцедуры

    &НаСервере
    Процедура ЗапуститьДлительнуюПроцедуру()
    ФоновыеЗадания.Выполнить("ОбщийМодульСерверный.ДлительнаяСервернаяПроцедура");
    КонецПроцедуры
```

В неглобальном общем модуле "ОбщийМодульСерверный" с флагом Сервер:

```1c
    Процедура ДлительнаяСервернаяПроцедура() Экспорт
    // тут длительное выполнение
    КонецПроцедуры
```
---
Пока все тут:) независимую формочку с анимацией - можно как-то открыть "маленькую" и поверх данной открытой формы??
Или тоже проблема?
---
Или хотя бы форму курсора мыши юзеру поменять на "песочные часики" , ну хоть что-то, чтобы простое , быстрое и без "извращений"??
---
"ПоказатьОповещениеПользователя(..)" висит строго 10 сек, но серверная проц время от времени и быстрее срабатывает, но чаще конечно секунд 20-40. Так что, это тоже "не очень" выход, к сожалению.
---
Хм, чуть-чуть перепилить и в управляемых формах отлично работает и прогрессбар и прерывание пользователем!
---
Вот не могу не сказать: spacecraft- просто гениальный специалист! (и человек отличный, я уверен!)

Вот он нашёл-таки ПРОСТЕЙШЕЕ(!) ,НО ПОЛНОСТЬЮ РАБОТАЮЩЕЕ, УДОВЛЕТВОРЯЮЩЕЕ ВСЕМ ТРЕБОВАНИЯМ РЕШЕНИЕ!!
Браво!

Огромное спасибо всем, кто пытался помочь, Dmurk , Вы тоже очень помогали, в общем , я очень рад, что обратился на этот прекрасный форум за помощью!
---
Всем привет. Маленький вопрос вдогонку. Добавил в конф свою формочку типа "Подождите", все отлично работает, только открывает (иногда) сразу "2 штуки": одна - слева сверху, вторая - по центру.

Если второй раз запустить в этом же сеансе, то уже дальше всегда открывает нормально: "одну штуку" , и по центру.

Можно ли как-то сделать, чтобы сразу открывался один экз. формы?
---
Прикол вообще, вроде починил сам: в оригинале у spacecraft в свойствах его формочки стояло св-во "ОтображатьЗаголовок" (которого нет у формы) , а я "на автомате" снял флажок у этого св-ва.
Стал сравнивать, поставил тоже этот флажок обратно - и глюк с "дублем" формы вроде пропал! Ну и отлично
---
Я делал простейшим образом через БСП:

```1c
    ФормаДО = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтаФорма, Новый УникальныйИдентификатор);
    СервернаяПроцедураНаСервере();
    ДлительныеОперацииКлиент.ЗакрытьФормуДлительнойОперации(ФормаДО);
```
---
prof_it777, спасибо, отличный вариант!