XMLTsdMagazinVasilek/CommonForms/СообщенияОбмена/Ext/Form/Module.bsl

261 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("ТекстСообщения") Тогда
ТекстСообщения = Параметры.ТекстСообщения;
КонецЕсли;
Если ПустаяСтрока(ТекстСообщения) Тогда
ТекстСообщения = "Нет сообщений.";
КонецЕсли;
Если Параметры.Свойство("ПредложитьОбновление") Тогда
ПредложитьОбновление = Параметры.ПредложитьОбновление;
КонецЕсли;
Если Параметры.Свойство("ИдентификаторПубликации") Тогда
ИдентификаторПубликации = Параметры.ИдентификаторПубликации;
КонецЕсли;
Элементы.ЗагрузитьОбновление.Видимость = ПредложитьОбновление;
Элементы.Закрыть.Видимость = ПредложитьОбновление;
ЭтоАнимацияОбновления = Параметры.Свойство("ПоказатьАнимациюОбновления")
И Параметры.ПоказатьАнимациюОбновления = Истина;
Если Не ЭтоАнимацияОбновления Тогда
ЭтоАнимацияОбновления = СтрНайти(НРег(ТекстСообщения), "обнаружена новая версия") > 0;
КонецЕсли;
Если ЭтоАнимацияОбновления Тогда
Элементы.ГруппаАнимацияОбновления.Видимость = Истина;
Элементы.СписокСообщений.Видимость = Ложь;
Элементы.ЗагрузитьОбновление.Видимость = Ложь;
Элементы.Закрыть.Видимость = Истина;
Элементы.Закрыть.Заголовок = "Понятно";
Если Не ПустаяСтрока(ТекстСообщения) Тогда
Элементы.ЗаголовокОбновления.Заголовок = ТекстСообщения;
КонецЕсли;
КонецЕсли;
ЗаполнитьСписокСообщений();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокСообщений()
СписокСообщений.Очистить();
СтрокиТекста = СтрРазделить(ТекстСообщения, Символы.ПС);
Для Каждого СтрокаТекста Из СтрокиТекста Цикл
Если ПустаяСтрока(СтрокаТекста) Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = СписокСообщений.Добавить();
НоваяСтрока.Текст = СтрокаТекста;
НоваяСтрока.Вид = ВидСообщенияПоТексту(СтрокаТекста);
КонецЦикла;
Если СписокСообщений.Количество() = 0 Тогда
НоваяСтрока = СписокСообщений.Добавить();
НоваяСтрока.Текст = "Нет сообщений.";
НоваяСтрока.Вид = "Инфо";
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВидСообщенияПоТексту(Текст)
СтрокаПоиска = НРег(Текст);
Если СтрНайти(СтрокаПоиска, "ошибка") > 0
Или СтрНайти(СтрокаПоиска, "не удалось") > 0
Или СтрНайти(СтрокаПоиска, "не вернула") > 0
Или СтрНайти(СтрокаПоиска, "не записаны") > 0
Или СтрНайти(СтрокаПоиска, "не найден") > 0 Тогда
Возврат "Ошибка";
КонецЕсли;
Если СтрНайти(СтрокаПоиска, "напоминание") > 0
Или СтрНайти(СтрокаПоиска, "обновление") > 0
Или СтрНайти(СтрокаПоиска, "опубликована") > 0
Или СтрНайти(СтрокаПоиска, "обнаружена новая версия") > 0
Или СтрНайти(СтрокаПоиска, "загрузить обновление") > 0 Тогда
Возврат "Обновление";
КонецЕсли;
Если СтрНайти(СтрокаПоиска, "загружена") > 0
Или СтрНайти(СтрокаПоиска, "отправлено") > 0
Или СтрНайти(СтрокаПоиска, "обновлены") > 0
Или СтрНайти(СтрокаПоиска, "обновлена") > 0
Или СтрНайти(СтрокаПоиска, "изменений нет") > 0
Или СтрНайти(СтрокаПоиска, "синхронизация выполнена") > 0 Тогда
Возврат "Успех";
КонецЕсли;
Возврат "Инфо";
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Анимация обновления: без автозакрытия, закрытие только по кнопке «Понятно».
Если ЭтоАнимацияОбновления Тогда
ОтключитьОбработчикОжидания("ЗакрытьФормуПоТаймеру");
НомерКадра = 0;
ПоказатьКадрАнимации();
ПодключитьОбработчикОжидания("СледующийКадрАнимации", 2);
Возврат;
КонецЕсли;
Если ПредложитьОбновление Тогда
Возврат;
КонецЕсли;
Таймаут = 4;
Если Параметры.Свойство("ТаймаутЗакрытия") Тогда
Если Параметры.ТаймаутЗакрытия = 0 Тогда
Возврат;
КонецЕсли;
Таймаут = Параметры.ТаймаутЗакрытия;
КонецЕсли;
ПодключитьОбработчикОжидания("ЗакрытьФормуПоТаймеру", Таймаут);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
ОтключитьОбработчикОжидания("СледующийКадрАнимации");
ОтключитьОбработчикОжидания("ЗакрытьФормуПоТаймеру");
КонецПроцедуры
&НаКлиенте
Процедура СледующийКадрАнимации()
Если Не Открыта() Тогда
ОтключитьОбработчикОжидания("СледующийКадрАнимации");
Возврат;
КонецЕсли;
НомерКадра = НомерКадра + 1;
Если НомерКадра > 6 Тогда
НомерКадра = 0;
КонецЕсли;
ПоказатьКадрАнимации();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьКадрАнимации()
Элементы.НомерШага.Заголовок = "Шаг " + XMLСтрока(НомерКадра + 1) + " из 7";
Элементы.ЭкранКнопка.Видимость = Ложь;
Если НомерКадра = 0 Тогда
Элементы.ЭкранСтрока1.Заголовок = "Документы";
Элементы.ЭкранСтрока2.Заголовок = "№ 14 Отправлен";
Элементы.ПодсказкаКадра.Заголовок = "Приложение открыто. Чтобы обновить конфигурацию, откройте список приложений платформы.";
Элементы.ИндикаторКадра.Заголовок = "● ○ ○ ○ ○ ○ ○";
ИначеЕсли НомерКадра = 1 Тогда
Элементы.ЭкранСтрока1.Заголовок = "Приложения";
Элементы.ЭкранСтрока2.Заголовок = "ВасяВасилек";
Элементы.ПодсказкаКадра.Заголовок = "Откройте список запущенных приложений (свайп вверх или кнопка приложений).";
Элементы.ИндикаторКадра.Заголовок = "○ ● ○ ○ ○ ○ ○";
ИначеЕсли НомерКадра = 2 Тогда
Элементы.ЭкранСтрока1.Заголовок = "Удерживайте";
Элементы.ЭкранСтрока2.Заголовок = "карточку базы";
Элементы.ПодсказкаКадра.Заголовок = "Нажмите и удерживайте карточку нужной базы, пока не появятся действия.";
Элементы.ИндикаторКадра.Заголовок = "○ ○ ● ○ ○ ○ ○";
ИначеЕсли НомерКадра = 3 Тогда
Элементы.ЭкранСтрока1.Заголовок = "Действия";
Элементы.ЭкранСтрока2.Заголовок = "";
Элементы.ЭкранКнопка.Видимость = Истина;
Элементы.ПодсказкаКадра.Заголовок = "Нажмите «Обновить». Это штатная команда мобильной платформы 1С.";
Элементы.ИндикаторКадра.Заголовок = "○ ○ ○ ● ○ ○ ○";
ИначеЕсли НомерКадра = 4 Тогда
Элементы.ЭкранСтрока1.Заголовок = "Информация";
Элементы.ЭкранСтрока2.Заголовок = "Обнаружена новая версия приложения";
Элементы.ПодсказкаКадра.Заголовок = "Платформа сравнивает публикацию с установленной конфигурацией.";
Элементы.ИндикаторКадра.Заголовок = "○ ○ ○ ○ ● ○ ○";
ИначеЕсли НомерКадра = 5 Тогда
Элементы.ЭкранСтрока1.Заголовок = "Загрузка";
Элементы.ЭкранСтрока2.Заголовок = "████████░░";
Элементы.ПодсказкаКадра.Заголовок = "Конфигурация скачивается с публикации. Не закрывайте приложение до конца загрузки.";
Элементы.ИндикаторКадра.Заголовок = "○ ○ ○ ○ ○ ● ○";
Иначе
Элементы.ЭкранСтрока1.Заголовок = "Готово";
Элементы.ЭкранСтрока2.Заголовок = "Версия обновлена";
Элементы.ПодсказкаКадра.Заголовок = "Приложение перезапускается уже на новой версии.";
Элементы.ИндикаторКадра.Заголовок = "○ ○ ○ ○ ○ ○ ●";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФормуПоТаймеру()
ОтключитьОбработчикОжидания("ЗакрытьФормуПоТаймеру");
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
ОтключитьОбработчикОжидания("ЗакрытьФормуПоТаймеру");
ОтключитьОбработчикОжидания("СледующийКадрАнимации");
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьОбновление(Команда)
ОтключитьОбработчикОжидания("ЗакрытьФормуПоТаймеру");
Элементы.ЗагрузитьОбновление.Доступность = Ложь;
Элементы.Закрыть.Доступность = Ложь;
ТекстСообщения = "Загрузка обновления..."
+ Символы.ПС + "Приложение будет перезапущено.";
ЗаполнитьСписокСообщений();
ПодготовитьЗагрузкуОбновленияНаСервере();
ЗафиксироватьОбновлениеНаСервере();
Оповестить("ЗагрузитьОбновлениеТСД");
ПодключитьОбработчикОжидания("ПерезапуститьДляОбновления", 1);
КонецПроцедуры
&НаКлиенте
Процедура ПерезапуститьДляОбновления()
ОтключитьОбработчикОжидания("ПерезапуститьДляОбновления");
ЗавершитьРаботуСистемы(Ложь, Истина);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗагрузкуОбновленияНаСервере()
Синхронизация.ПодготовитьЗагрузкуОбновления();
КонецПроцедуры
&НаСервере
Процедура ЗафиксироватьОбновлениеНаСервере()
Синхронизация.ЗафиксироватьИдентификаторПубликации(ИдентификаторПубликации);
КонецПроцедуры