From 9ea3b184fa9b5ef77c965e7d31e0414e7ebbdebf Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Thu, 29 Sep 2016 15:53:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=BD=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8?= =?UTF-8?q?=20"=D0=9D=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B2=D0=BE=D0=BF=D1=80=D0=BE=D1=81=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form.xml" | 1 + .../Ext/Form/Module.bsl" | 327 +++++++++--------- 2 files changed, 169 insertions(+), 159 deletions(-) diff --git "a/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" index d3f1b306..45320b75 100644 --- "a/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ "b/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -3,6 +3,7 @@ ПриОткрытии + ПриСозданииНаСервере diff --git "a/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index c8864ff4..4d9f0127 100644 --- "a/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/\320\227\320\260\320\272\321\200\321\213\321\202\321\214\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\320\265/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -1,160 +1,169 @@ -&НаКлиенте -Перем СчетчикОжиданияРезультатов; - -&НаКлиенте -Перем МаксИтерацийОжиданияРезультатов; - -&НаКлиенте -Перем ИндикаторВыполнения; - -&НаКлиенте -Перем ФормаОбновленияНайденнаОдинРаз; - -&НаКлиенте -Процедура ПриОткрытии(Отказ) - - ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина); - ПодключитьОбработчикОжидания("ПроверитьЛегальностьОбновления", 2); - -КонецПроцедуры - -&НаКлиенте -Процедура ПроверитьНеобходимостьЗавершенияПрограммы() Экспорт - Перем НеобходимоОжидание, МожноЗавершатьРаботу; - - НеобходимоОжидание = (Найти(ПараметрЗапуска, "ЗавершитьРаботуСистемы") > 0); - МожноЗавершатьРаботу = Ложь; - //СтрокаОшибкиОбновления = Нрег("Не выполнены дополнительные процедуры обработки данных"); - СтрокаНеудачиОбновления = Нрег("Не удалось выполнить обновление"); - - ФормаОбновленияНайденна = Ложь; - РезультатОбновленияНайден = Ложь; - - Окна = ПолучитьОкна(); - Для каждого Окн Из Окна Цикл - Если ТипЗнч(Окн) = Тип("ОкноКлиентскогоПриложения") Тогда - - Содержимое = Окн.ПолучитьСодержимое(); - //Сообщить(Окн.Заголовок); - Если Найти(НРег(Строка(Окн.Заголовок)), "обновление версии")>0 Тогда - ФормаОбновленияНайденнаОдинРаз = Истина; - ФормаОбновленияНайденна = Истина; - СчетчикОжиданияРезультатов = 1; - ПроцентВыполнения = 0; - Попытка - Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда - ПроцентВыполнения = Содержимое.ПрогрессВыполнения; - КонецЕсли; - Исключение - Сообщить(ОписаниеОшибки()); - КонецПопытки; - - Если ПроцентВыполнения <> ИндикаторВыполнения Тогда - ИндикаторВыполнения = ПроцентВыполнения; - СтрокаСообщения = ""+ТекущаяДата() + " - " + ПроцентВыполнения + "% Нашли форму обновления подождем еще"; - Сообщить(СтрокаСообщения); - КонецЕсли; - - КонецЕсли; - - Если СчетчикОжиданияРезультатов > 0 И Найти(НРег(Строка(Окн.Заголовок)), "что нового в конфигурации")>0 Тогда - СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1; - Сообщить(""+ТекущаяДата() + " - Удачное завершение обновления"); - МожноЗавершатьРаботу = Истина; - Прервать; - КонецЕсли; - - //Если (Найти(НРег(Строка(Окн.Заголовок)), СтрокаОшибкиОбновления)>0 - // ИЛИ - Если Найти(НРег(Строка(Окн.Заголовок)), СтрокаНеудачиОбновления)>0 Тогда - СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1; - МожноЗавершатьРаботу = Истина; - - Попытка - Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда - ТекстОшибки = Содержимое.Элементы.ТекстСообщенияОбОшибке.Заголовок; - Сообщить("ERROR: "+ТекущаяДата() + " "+ТекстОшибки); - КонецЕсли; - - Исключение - Сообщить("ERROR: "+ТекущаяДата() + ОписаниеОшибки()); - КонецПопытки; - - Сообщить("ERROR: "+ТекущаяДата() + "Неудачное обновление конфигурации"); - Если Не Содержимое = Неопределено И ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда - Содержимое.Закрыть(); - КонецЕсли; - - Прервать; - КонецЕсли; - КонецЕсли; - КонецЦикла; - - Если НеобходимоОжидание И МожноЗавершатьРаботу = Ложь И СчетчикОжиданияРезультатов <= МаксИтерацийОжиданияРезультатов Тогда - СчетчикОжиданияРезультатов = СчетчикОжиданияРезультатов + 1; - ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина); - КонецЕсли; - - Если ФормаОбновленияНайденна = Ложь И ФормаОбновленияНайденнаОдинРаз = Истина Тогда - СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1; - КонецЕсли; - - Если СчетчикОжиданияРезультатов > МаксИтерацийОжиданияРезультатов И НеобходимоОжидание = Истина Тогда - Сообщить(""+ТекущаяДата() + " - "+"Завершаем работу"); - - Если Не Содержимое = Неопределено И ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда - //Содержимое.Закрыть(); - КонецЕсли; - - ПодключитьОбработчикОжидания("ЗавершитьРаботу", 1, Истина); - - - КонецЕсли; - -КонецПроцедуры - -&НаСервереБезКонтекста -Процедура ЗаписатьПодтверждениеЛегальностиПолученияОбновлений() - - УстановитьПривилегированныйРежим(Истина); - ОбновлениеИнформационнойБазыСлужебный.ЗаписатьПодтверждениеЛегальностиПолученияОбновлений(); - -КонецПроцедуры - -&НаКлиенте -Процедура ПроверитьЛегальностьОбновления() Экспорт - - Окна = ПолучитьОкна(); - Для каждого Окн Из Окна Цикл - Если ТипЗнч(Окн) = Тип("ОкноКлиентскогоПриложения") Тогда - Содержимое = Окн.ПолучитьСодержимое(); - Если Найти(НРег(Строка(Окн.Заголовок)), "легальност") > 0 Тогда - Попытка - Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда - Содержимое.Результат = Истина; - Содержимое.Закрыть(Истина); - ЗаписатьПодтверждениеЛегальностиПолученияОбновлений(); - СчетчикОжиданияРезультатов = 0; - КонецЕсли; - Исключение - Сообщить(ОписаниеОшибки()); - КонецПопытки; - - ОтключитьОбработчикОжидания("ПроверитьЛегальностьОбновления"); - - КонецЕсли; - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура ЗавершитьРаботу() Экспорт - ЗавершитьРаботуСистемы(Истина); -КонецПроцедуры - - -СчетчикОжиданияРезультатов = 0; -МаксИтерацийОжиданияРезультатов = 5; -ИндикаторВыполнения = 0; +&НаКлиенте +Перем СчетчикОжиданияРезультатов; + +&НаКлиенте +Перем МаксИтерацийОжиданияРезультатов; + +&НаКлиенте +Перем ИндикаторВыполнения; + +&НаКлиенте +Перем ФормаОбновленияНайденнаОдинРаз; + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Попытка + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОбщиеНастройкиПользователя", "ЗапрашиватьПодтверждениеПриЗавершенииПрограммы", Ложь); + Исключение + // Данного модуля и метода может не быть в конфигурации + КонецПопытки; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина); + ПодключитьОбработчикОжидания("ПроверитьЛегальностьОбновления", 2); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьНеобходимостьЗавершенияПрограммы() Экспорт + Перем НеобходимоОжидание, МожноЗавершатьРаботу; + + НеобходимоОжидание = (Найти(ПараметрЗапуска, "ЗавершитьРаботуСистемы") > 0); + МожноЗавершатьРаботу = Ложь; + //СтрокаОшибкиОбновления = Нрег("Не выполнены дополнительные процедуры обработки данных"); + СтрокаНеудачиОбновления = Нрег("Не удалось выполнить обновление"); + + ФормаОбновленияНайденна = Ложь; + РезультатОбновленияНайден = Ложь; + + Окна = ПолучитьОкна(); + Для каждого Окн Из Окна Цикл + Если ТипЗнч(Окн) = Тип("ОкноКлиентскогоПриложения") Тогда + + Содержимое = Окн.ПолучитьСодержимое(); + //Сообщить(Окн.Заголовок); + Если Найти(НРег(Строка(Окн.Заголовок)), "обновление версии")>0 Тогда + ФормаОбновленияНайденнаОдинРаз = Истина; + ФормаОбновленияНайденна = Истина; + СчетчикОжиданияРезультатов = 1; + ПроцентВыполнения = 0; + Попытка + Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда + ПроцентВыполнения = Содержимое.ПрогрессВыполнения; + КонецЕсли; + Исключение + Сообщить(ОписаниеОшибки()); + КонецПопытки; + + Если ПроцентВыполнения <> ИндикаторВыполнения Тогда + ИндикаторВыполнения = ПроцентВыполнения; + СтрокаСообщения = ""+ТекущаяДата() + " - " + ПроцентВыполнения + "% Нашли форму обновления подождем еще"; + Сообщить(СтрокаСообщения); + КонецЕсли; + + КонецЕсли; + + Если СчетчикОжиданияРезультатов > 0 И Найти(НРег(Строка(Окн.Заголовок)), "что нового в конфигурации")>0 Тогда + СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1; + Сообщить(""+ТекущаяДата() + " - Удачное завершение обновления"); + МожноЗавершатьРаботу = Истина; + Прервать; + КонецЕсли; + + //Если (Найти(НРег(Строка(Окн.Заголовок)), СтрокаОшибкиОбновления)>0 + // ИЛИ + Если Найти(НРег(Строка(Окн.Заголовок)), СтрокаНеудачиОбновления)>0 Тогда + СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1; + МожноЗавершатьРаботу = Истина; + + Попытка + Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда + ТекстОшибки = Содержимое.Элементы.ТекстСообщенияОбОшибке.Заголовок; + Сообщить("ERROR: "+ТекущаяДата() + " "+ТекстОшибки); + КонецЕсли; + + Исключение + Сообщить("ERROR: "+ТекущаяДата() + ОписаниеОшибки()); + КонецПопытки; + + Сообщить("ERROR: "+ТекущаяДата() + "Неудачное обновление конфигурации"); + Если Не Содержимое = Неопределено И ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда + Содержимое.Закрыть(); + КонецЕсли; + + Прервать; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Если НеобходимоОжидание И МожноЗавершатьРаботу = Ложь И СчетчикОжиданияРезультатов <= МаксИтерацийОжиданияРезультатов Тогда + СчетчикОжиданияРезультатов = СчетчикОжиданияРезультатов + 1; + ПодключитьОбработчикОжидания("ПроверитьНеобходимостьЗавершенияПрограммы", 10, Истина); + КонецЕсли; + + Если ФормаОбновленияНайденна = Ложь И ФормаОбновленияНайденнаОдинРаз = Истина Тогда + СчетчикОжиданияРезультатов = МаксИтерацийОжиданияРезультатов + 1; + КонецЕсли; + + Если СчетчикОжиданияРезультатов > МаксИтерацийОжиданияРезультатов И НеобходимоОжидание = Истина Тогда + Сообщить(""+ТекущаяДата() + " - "+"Завершаем работу"); + + Если Не Содержимое = Неопределено И ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда + //Содержимое.Закрыть(); + КонецЕсли; + + ПодключитьОбработчикОжидания("ЗавершитьРаботу", 1, Истина); + + + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ЗаписатьПодтверждениеЛегальностиПолученияОбновлений() + + УстановитьПривилегированныйРежим(Истина); + ОбновлениеИнформационнойБазыСлужебный.ЗаписатьПодтверждениеЛегальностиПолученияОбновлений(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьЛегальностьОбновления() Экспорт + + Окна = ПолучитьОкна(); + Для каждого Окн Из Окна Цикл + Если ТипЗнч(Окн) = Тип("ОкноКлиентскогоПриложения") Тогда + Содержимое = Окн.ПолучитьСодержимое(); + Если Найти(НРег(Строка(Окн.Заголовок)), "легальност") > 0 Тогда + Попытка + Если ТипЗнч(Содержимое) = Тип("УправляемаяФорма") Тогда + Содержимое.Результат = Истина; + Содержимое.Закрыть(Истина); + ЗаписатьПодтверждениеЛегальностиПолученияОбновлений(); + СчетчикОжиданияРезультатов = 0; + КонецЕсли; + Исключение + Сообщить(ОписаниеОшибки()); + КонецПопытки; + + ОтключитьОбработчикОжидания("ПроверитьЛегальностьОбновления"); + + КонецЕсли; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьРаботу() Экспорт + ЗавершитьРаботуСистемы(Истина); +КонецПроцедуры + + +СчетчикОжиданияРезультатов = 0; +МаксИтерацийОжиданияРезультатов = 5; +ИндикаторВыполнения = 0; ФормаОбновленияНайденнаОдинРаз = Ложь; \ No newline at end of file