mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
811 lines
52 KiB
Plaintext
811 lines
52 KiB
Plaintext
#Если Клиент И Не ВебКлиент И Не МобильныйКлиент Тогда
|
||
|
||
// Вынесено сюда, чтобы у всех пользователей не компилировался тяжелый общий модуль ирОбщий в варианте Расширение
|
||
Процедура ОткрытьОднократноАдаптациюРасширенияЛкс(выхПерехватКлавиатуры = Неопределено) Экспорт
|
||
|
||
Если Ложь
|
||
#Если ТонкийКлиент Тогда
|
||
Или Не ирСервер.ЛиЕстьИнтерактивныйДоступКИнструментамЛкс() // 30мс
|
||
#Иначе
|
||
Или Не ПравоДоступа("Просмотр", Метаданные.Подсистемы.ИнструментыРазработчикаTormozit)
|
||
#КонецЕсли
|
||
Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
#Если Не ТолстыйКлиентОбычноеПриложение Тогда
|
||
Если Найти(ПараметрЗапуска, "ОтключитьПерехватКлавиатурыИР") = 0 Тогда
|
||
//ирОбщий.ПодключитьПерехватКлавиатурыЛкс(выхПерехватКлавиатуры); // Очень долго из-за инициализации всех модулей
|
||
СисИнфо = Новый СистемнаяИнформация;
|
||
Если СисИнфо.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
|
||
Разрядность = "64";
|
||
Иначе
|
||
Разрядность = "32";
|
||
КонецЕсли;
|
||
Попытка
|
||
//Успех = ПодключитьВнешнююКомпоненту("Обработка.ирПлатформа.Макет.KeyboardHookZip", "ПерехватКлавиатуры", ТипВнешнейКомпоненты.Native); // На 8.2 работать не будет
|
||
Успех = ПодключитьВнешнююКомпоненту("Обработка.ирПлатформа.Макет.KeyboardHookWin" + Разрядность, "ПерехватКлавиатуры", ТипВнешнейКомпоненты.Native); // 0.03сек
|
||
Исключение
|
||
// В тонком клиенте: Использование синхронных методов на клиенте запрещено!
|
||
ОписаниеОшибки = ОписаниеОшибки();
|
||
Успех = Истина;
|
||
КонецПопытки;
|
||
Если Не Успех Тогда
|
||
#Если ТонкийКлиент Тогда
|
||
ирКлиент.ПослеУстановкиKeyboardHook();
|
||
#КонецЕсли
|
||
КонецЕсли;
|
||
Попытка
|
||
выхПерехватКлавиатуры = Новый ("AddIn.ПерехватКлавиатуры.KeyboardHook");
|
||
Исключение
|
||
КонецПопытки;
|
||
Если выхПерехватКлавиатуры <> Неопределено Тогда
|
||
выхПерехватКлавиатуры.ЗахватПервым = Истина; // Используем не по назначению
|
||
выхПерехватКлавиатуры.ЗахватРазрешен = Истина;
|
||
выхПерехватКлавиатуры.СобытиеПриНажатии = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
|
||
#Если Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда
|
||
Если Истина
|
||
И ПравоДоступа("Администрирование", Метаданные)
|
||
И Метаданные.Справочники.Найти("ирАлгоритмы") = Неопределено
|
||
Тогда
|
||
// Это вариант поставки "Расширение"
|
||
//ИмяПродуктаЛкс = ирОбщий.ИмяПродуктаЛкс(); // !!! Так при начале каждого сеанса толстого клиента будет компилироваться ирОбщий
|
||
ИмяПродуктаЛкс = "ИнструментыРазработчикаTormozit";
|
||
ОткрытьАдаптациюИР = Ложь;
|
||
Если Найти(НРег(ПараметрЗапуска), НРег("ОткрытьАдаптациюИР")) > 0 Тогда
|
||
ОткрытьАдаптациюИР = Истина;
|
||
КонецЕсли;
|
||
Если ОткрытьАдаптациюИР Тогда
|
||
ОткрытьФорму("ОбщаяФорма.ирАдаптацияРасширения", Новый Структура("Автооткрытие", Истина));
|
||
КонецЕсли;
|
||
// Пример пакетного запуска - /CАдаптироватьРасширениеИР;<ПарольПользователя>
|
||
// http://devtool1c.ucoz.ru/forum/3-1695-1
|
||
ИмяПараметра = "АдаптироватьРасширениеИР";
|
||
Если Найти(НРег(ПараметрЗапуска), НРег(ИмяПараметра)) > 0 Тогда
|
||
ПарольПользователя = ирОбщий.ТекстМеждуМаркерамиЛкс(ПараметрЗапуска, ИмяПараметра + ";", ";");
|
||
РезультатАдаптации = ирОбщий.АдаптироватьРасширениеЛкс(ИмяПользователя(), ПарольПользователя);
|
||
//Если РезультатАдаптации Тогда
|
||
ПрекратитьРаботуСистемы();
|
||
Возврат;
|
||
//КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
#Если Сервер И Не Сервер Тогда
|
||
ОбработатьПараметрЗапускаДляВсехРежимовЛкс();
|
||
#КонецЕсли
|
||
ПодключитьОбработчикОжидания("ОбработатьПараметрЗапускаДляВсехРежимовЛкс", 0.1, Истина); // Асинхронно, чтобы все сообщения отобразились https://www.hostedredmine.com/issues/953670
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
//#Область ГлобальныеПортативныеМетоды
|
||
|
||
#Если Клиент Тогда
|
||
|
||
Процедура ВнешнееСобытиеЛкс(Источник, Событие, Данные) Экспорт
|
||
|
||
#Если ТонкийКлиент Тогда
|
||
Если Источник = "KeyboardHook" Тогда
|
||
//КодыКлавиш = ирКэш.КодыКлавишЛкс(); // В тонком недоступно
|
||
КодыКлавиш = Новый Соответствие;
|
||
КодыКлавиш["CTRL+~"] = "04288";
|
||
Если Ложь
|
||
Или Найти(Данные, КодыКлавиш["CTRL+~"]) = 1
|
||
Тогда
|
||
АктивноеОкно = АктивноеОкно();
|
||
Если АктивноеОкно <> Неопределено Тогда
|
||
НавигационнаяСсылка = АктивноеОкно.ПолучитьНавигационнуюСсылку();
|
||
КонецЕсли;
|
||
ирОбщий.ПроверитьЧтоСеансТолстогоКлиентаЛкс(НавигационнаяСсылка);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
|
||
#Если Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда
|
||
Попытка
|
||
Если Истина
|
||
И Источник = "KeyboardHook"
|
||
И (Ложь
|
||
Или ирКэш.ЛиПортативныйРежимЛкс()
|
||
Или ПравоДоступа("Просмотр", Метаданные.Подсистемы.ИнструментыРазработчикаTormozit))
|
||
Тогда
|
||
ПередатьОбработку = Ложь; // Максимально отсрачиваем компиляцию общего модуля ирОбщий
|
||
ПерехватКлавиатуры = ирКэш.ПерехватКлавиатурыЛкс();
|
||
КодыКлавиш = ирКэш.КодыКлавишЛкс();
|
||
Если ПерехватКлавиатуры.ЗахватПервым = Истина Тогда // Используем не по назначению
|
||
КлавишиТриггеры = Новый Массив;
|
||
КлавишиТриггеры.Добавить("CTRL+~");
|
||
КлавишиТриггеры.Добавить("CTRL+C");
|
||
КлавишиТриггеры.Добавить("CTRL+V");
|
||
КлавишиТриггеры.Добавить("CTRL+ALT+G");
|
||
Для Каждого КлючКлавиши Из КлавишиТриггеры Цикл
|
||
Если Найти(Данные, КодыКлавиш[КлючКлавиши]) = 1 Тогда
|
||
ПередатьОбработку = Истина;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Иначе
|
||
ПередатьОбработку = Истина;
|
||
КонецЕсли;
|
||
Если ПередатьОбработку Тогда
|
||
ПерехватКлавиатуры.ЗахватПервым = Ложь; // Используем не по назначению
|
||
СобытиеОбработано = Ложь;
|
||
АктивнаяУправляемаяФорма = ирКлиент.АктивнаяУправляемаяФормаЛкс();
|
||
Если АктивнаяУправляемаяФорма = Неопределено Тогда
|
||
ирКлиент.УдалитьСсылкиНаЗакрытыеФормыЛкс();
|
||
Для Каждого ПроверятьПолеHTML Из ирОбщий.ЗначенияВМассивЛкс(Ложь, Истина) Цикл
|
||
Для Каждого Форма Из ирКэш.ОткрытыеФормыПодсистемыЛкс() Цикл
|
||
СлужебныеДанные = ирОбщий.СлужебныеДанныеФормыЛкс(Форма);
|
||
Если ирКлиент.Форма_ВводДоступенЛкс(Форма, ПроверятьПолеHTML) Тогда
|
||
СобытиеОбработано = Истина;
|
||
Если ирОбщий.ТекущееВремяВМиллисекундахЛкс() - СлужебныеДанные.ДатаОткрытия > 100 Тогда // https://www.hostedredmine.com/issues/892885
|
||
Если ирОбщий.МетодРеализованЛкс(Форма, "ВнешнееСобытие") Тогда
|
||
Форма.ВнешнееСобытие(Источник, Событие, Данные);
|
||
Иначе
|
||
ирОбщий.СообщитьЛкс(ирОбщий.СтрШаблонИменЛкс("У формы %1 отсутствует экспортный обработчик %2", 1, Форма.Заголовок, 2, "ВнешнееСобытие"));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если СобытиеОбработано Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
#Если ТолстыйКлиентОбычноеПриложение Тогда
|
||
Если Не СобытиеОбработано И Найти(Данные, КодыКлавиш["CTRL+~"]) = 1 Тогда
|
||
КэшПоискаФорм = ирОбщий.ВосстановитьЗначениеЛкс("КэшПоискаФорм");
|
||
Если КэшПоискаФорм = Неопределено Тогда
|
||
КэшПоискаФорм = Новый СписокЗначений;
|
||
КонецЕсли;
|
||
КэшПоискаФормИзменен = Ложь;
|
||
ВводДоступен = Ложь;
|
||
Для Каждого КлючИЗначение Из ирКэш.ОтслеживаемыеФормыЛкс() Цикл
|
||
Форма = КлючИЗначение.Ключ;
|
||
ВводДоступен = ирКлиент.Форма_ВводДоступенЛкс(Форма);
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Форма, КлючТекущейСтроки,,, Истина);
|
||
Если КлючТекущейСтроки <> Неопределено И ирОбщий.ЛиСсылкаНаОбъектБДЛкс(КлючТекущейСтроки) Тогда
|
||
Форма = КлючТекущейСтроки.ПолучитьФорму();
|
||
Если Форма.Открыта() Тогда
|
||
ирКлиент.НачатьОтслеживаниеФормыЛкс(Форма);
|
||
ВводДоступен = ирКлиент.Форма_ВводДоступенЛкс(Форма);
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если Не ВводДоступен Тогда
|
||
ПараметрыБыстрогоСозданияФормы = ирКлиент.ПараметрыБыстрогоСозданияФормыЛкс();
|
||
Для Каждого ЭлементКэша Из КэшПоискаФорм Цикл
|
||
ПолноеИмяФормы = ЭлементКэша.Значение;
|
||
Попытка
|
||
Форма = ирКлиент.ПолучитьФормуЛкс(ПолноеИмяФормы, ПараметрыБыстрогоСозданияФормы);
|
||
ВводДоступен = Форма.ВводДоступен();
|
||
Исключение
|
||
Продолжить;
|
||
КонецПопытки;
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если Не ВводДоступен Тогда
|
||
ТаблицаТиповМетаобъектов = ирКэш.ТипыМетаОбъектов(, Ложь, Ложь);
|
||
ВыбранныеТипыМетаданных = Новый Массив;
|
||
Для Каждого СтрокаТипаМетаОбъектов Из ТаблицаТиповМетаобъектов Цикл
|
||
ЛиКорневойТипТаблицыБД = ирОбщий.ЛиКорневойТипТаблицыБДЛкс(СтрокаТипаМетаОбъектов.Единственное);
|
||
Если Ложь
|
||
Или СтрокаТипаМетаОбъектов.Единственное = "Перерасчет"
|
||
Или СтрокаТипаМетаОбъектов.Единственное = "Последовательность"
|
||
Или СтрокаТипаМетаОбъектов.Единственное = "ВнешнийИсточникДанных"
|
||
Или (Истина
|
||
И Не ЛиКорневойТипТаблицыБД
|
||
И СтрокаТипаМетаОбъектов.Единственное <> "Отчет"
|
||
И СтрокаТипаМетаОбъектов.Единственное <> "Обработка")
|
||
Или Метаданные[СтрокаТипаМетаОбъектов.Множественное].Количество() = 0
|
||
Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ВыбранныеТипыМетаданных.Добавить(СтрокаТипаМетаОбъектов);
|
||
КонецЦикла;
|
||
ТаблицаТиповМетаобъектов = ТаблицаТиповМетаобъектов.Скопировать(ВыбранныеТипыМетаданных);
|
||
ТаблицаТиповМетаобъектов.Сортировать("Категория");
|
||
Если Метаданные.Справочники.Количество() > 100 Тогда
|
||
СписокВыбораТипа = Новый СписокЗначений;
|
||
СписокВыбораТипа.ЗагрузитьЗначения(ТаблицаТиповМетаобъектов.ВыгрузитьКолонку("Единственное"));
|
||
Для Каждого ЭлементСписка Из СписокВыбораТипа Цикл
|
||
ЭлементСписка.Картинка = ирКлиент.КартинкаКорневогоТипаМДЛкс(ЭлементСписка.Значение);
|
||
КонецЦикла;
|
||
СписокВыбораТипа.Вставить(0, "<Все>");
|
||
ВыбранныйЭлемент = СписокВыбораТипа.ВыбратьЭлемент("Выберите тип формы для ускорения ее поиска");
|
||
Если ВыбранныйЭлемент = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
СтрокаТипа = ТаблицаТиповМетаобъектов.Найти(ВыбранныйЭлемент.Значение, "Единственное");
|
||
Если СтрокаТипа <> Неопределено Тогда
|
||
ТаблицаТиповМетаобъектов = ирОбщий.ЗначенияВМассивЛкс(СтрокаТипа);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
РазрешитьПрерывание = Ложь; // Прерывания запрещает платформа в обработчике внешнего события. Поэтому не будем обманывать пользователя
|
||
Для Каждого СтрокаТипаМетаОбъектов Из ТаблицаТиповМетаобъектов Цикл
|
||
ИндикаторТипа = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Метаданные[СтрокаТипаМетаОбъектов.Множественное].Количество(), "Поиск формы " + СтрокаТипаМетаОбъектов.Единственное,,, РазрешитьПрерывание);
|
||
Для Каждого ОбъектМД Из Метаданные[СтрокаТипаМетаОбъектов.Множественное] Цикл
|
||
#Если Сервер И Не Сервер Тогда
|
||
ОбъектМД = Метаданные.Справочники.ирАлгоритмы;
|
||
#КонецЕсли
|
||
ирОбщий.ОбработатьИндикаторЛкс(ИндикаторТипа);
|
||
Если ирОбщий.СтрНачинаетсяСЛкс(ОбъектМД.Имя, "ир", Истина) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ПолноеИмяМД = ОбъектМД.ПолноеИмя();
|
||
Если ЛиКорневойТипТаблицыБД Тогда
|
||
ПолноеИмяФормы = ОбъектМД.ПолноеИмя() + ".ФормаСписка";
|
||
Иначе
|
||
ПолноеИмяФормы = ОбъектМД.ПолноеИмя() + ".Форма";
|
||
КонецЕсли;
|
||
ЭлементКэша = КэшПоискаФорм.НайтиПоЗначению(ПолноеИмяФормы);
|
||
Если ЭлементКэша <> Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Попытка
|
||
Форма = ирКлиент.ПолучитьФормуЛкс(ПолноеИмяФормы, ПараметрыБыстрогоСозданияФормы);
|
||
Исключение
|
||
Продолжить;
|
||
КонецПопытки;
|
||
Если Форма = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если Форма.Открыта() Тогда
|
||
ЭлементКэша = КэшПоискаФорм.Добавить(ПолноеИмяФормы);
|
||
КэшПоискаФормИзменен = Истина;
|
||
ВводДоступен = Форма.ВводДоступен();
|
||
КонецЕсли;
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если ВводДоступен Тогда
|
||
СобытиеОбработано = Истина;
|
||
Если ЭлементКэша <> Неопределено Тогда
|
||
ирОбщий.СостояниеЛкс();
|
||
ИндексФормыВКэше = КэшПоискаФорм.Индекс(ЭлементКэша);
|
||
Если ИндексФормыВКэше > 0 Тогда
|
||
КэшПоискаФорм.Сдвинуть(ЭлементКэша, -ИндексФормыВКэше);
|
||
КэшПоискаФормИзменен = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ирКлиент.Форма_ВнешнееСобытиеЛкс(Форма, Источник, Событие, Данные, ВводДоступен);
|
||
КонецЕсли;
|
||
МаксЭлементовКэша = 200;
|
||
Пока КэшПоискаФорм.Количество() > МаксЭлементовКэша Цикл
|
||
КэшПоискаФорм.Удалить(МаксЭлементовКэша);
|
||
КонецЦикла;
|
||
Если КэшПоискаФормИзменен Тогда
|
||
ирОбщий.СохранитьЗначениеЛкс("КэшПоискаФорм", КэшПоискаФорм);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
КонецЕсли;
|
||
Если Не СобытиеОбработано Тогда
|
||
ирКлиент.Форма_ВнешнееСобытиеЛкс(, Источник, Событие, Данные);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
//Сообщить(Данные); // Отладка
|
||
КонецЕсли;
|
||
Исключение
|
||
// Антибаг платформы https://www.hostedredmine.com/issues/890762
|
||
Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
|
||
КонецПопытки;
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
#Если Клиент И Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда
|
||
|
||
Процедура ОбработатьПараметрЗапускаДляВсехРежимовЛкс() Экспорт
|
||
|
||
ОтключитьОбработчикОжидания("ОбработатьПараметрЗапускаДляВсехРежимовЛкс");
|
||
МаркерОткрытьФорму = "ОткрытьФормуИР.";
|
||
Фрагменты = ирОбщий.СтрРазделитьЛкс(ПараметрЗапуска, ";");
|
||
Если Найти(ПараметрЗапуска, МаркерОткрытьФорму) > 0 Тогда
|
||
ИмяФормы = ирОбщий.ТекстМеждуМаркерамиЛкс(ПараметрЗапуска, МаркерОткрытьФорму, ";");
|
||
Форма = ирКлиент.ПолучитьФормуЛкс(ИмяФормы);
|
||
Если Форма <> Неопределено Тогда
|
||
Форма.Открыть();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Найти(ПараметрЗапуска, "ТестироватьМетаданныеИР") Тогда
|
||
Если Фрагменты.Количество() < 3 Тогда
|
||
ВызватьИсключение ирКлиент.ОписаниеПараметраЗапускаТестированияМетаданныхЛкс();
|
||
КонецЕсли;
|
||
ФайлНастроек = Фрагменты[1];
|
||
ФайлРезультата = Фрагменты[2];
|
||
Объект = ирОбщий.СоздатьОбъектПоИмениМетаданныхЛкс("Обработка.ирТестированиеМетаданных");
|
||
#Если Сервер И Не Сервер Тогда
|
||
Объект = Обработки.ирТестированиеМетаданных.Создать();
|
||
#КонецЕсли
|
||
Форма = Объект.ПолучитьФорму();
|
||
НастройкаФормы = ирОбщий.ЗагрузитьЗначениеИзФайлаЛкс(ФайлНастроек);
|
||
Если НастройкаФормы = Неопределено Тогда
|
||
ВызватьИсключение "Некорректный файл настройки формы";
|
||
КонецЕсли;
|
||
ирКлиент.ЗагрузитьНастройкуФормыЛкс(Форма, НастройкаФормы);
|
||
Форма.ПроверятьФормы = Ложь;
|
||
Форма.КнопкаВыполнитьНажатие();
|
||
Результат = Форма.Ошибки.Скопировать(, "Метаданные, Операция, Контекст, Момент, ОписаниеОшибки, ПодробноеОписаниеОшибки");
|
||
Текст = ирОбщий.ТаблицаЗначенийВJSONЛкс(Результат);
|
||
ТекстДокумент = Новый ТекстовыйДокумент;
|
||
ТекстДокумент.УстановитьТекст(Текст);
|
||
ТекстДокумент.Записать(ФайлРезультата);
|
||
ЗавершитьРаботуСистемы(Ложь);
|
||
Возврат;
|
||
ИначеЕсли Найти(ПараметрЗапуска, "ПодготовкаКИзменениюСтруктурыБД") Тогда
|
||
ирКлиент.ОткрытьПодготовкаКИзменениюСтруктурыБДЛкс();
|
||
Возврат;
|
||
ИначеЕсли Найти(ПараметрЗапуска, "ОткрытьСтартерИР") Тогда
|
||
Если Метаданные.Имя = "Пустая" Тогда
|
||
УстановитьЗаголовокПриложения("Стартер (ИР)");
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьБазыПользователяОСЛкс();
|
||
Возврат;
|
||
ИначеЕсли Найти(ПараметрЗапуска, "ОбновитьКэшМодулейИР") Тогда
|
||
РазрешитьДиалоги = Ложь;
|
||
Если Фрагменты.Количество() > 1 Тогда
|
||
РазрешитьДиалоги = Булево(Фрагменты[1]);
|
||
КонецЕсли;
|
||
ирКлиент.ОбновитьКэшМодулейЛкс(, Истина, РазрешитьДиалоги);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// ОБРАБОТЧИКИ ОЖИДАНИЯ
|
||
|
||
Процедура ПроверитьФормыСсылокОтложенноЛкс() Экспорт
|
||
ирКлиент.ПроверитьФормыСсылокЛкс();
|
||
КонецПроцедуры
|
||
|
||
Процедура ОсвободитьВсеИндикаторыПроцессовОтложенноЛкс() Экспорт
|
||
|
||
ирОбщий.ОсвободитьВсеИндикаторыПроцессовЛкс();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СохранитьНастройкиПользователяОтложенноЛкс() Экспорт
|
||
|
||
СохранитьНастройкиПользователя();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВыполнитьПроверкуСовместимостиКонфигурацииЛкс() Экспорт
|
||
|
||
//мПлатформа = ирКэш.Получить();
|
||
//#Если Сервер И Не Сервер Тогда
|
||
// мПлатформа = Обработки.ирПлатформа.Создать();
|
||
//#КонецЕсли
|
||
#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||
Если ирОбщий.КлючБазыВСпискеПользователяЛкс() = Неопределено Тогда
|
||
ирОбщий.СообщитьЛкс("База не найдена в списке баз пользователя ОС. Поэтому она НЕ использует постоянный кэш метаданных, что сильно увеличивает время запуска.", СтатусСообщения.Важное,, Истина);
|
||
КонецЕсли;
|
||
Если ирОбщий.ВосстановитьЗначениеЛкс("ПроверятьПодпискиКонфигурации", Истина) <> Ложь Тогда
|
||
ирКлиент.ПроверитьПодпискиЛкс();
|
||
КонецЕсли;
|
||
Если ирОбщий.ВосстановитьЗначениеЛкс("БольшеНеПоказыватьСоветы") <> Истина Тогда
|
||
ирКлиент.ОткрытьФормуЛкс("Обработка.ирПлатформа.Форма.ПолезныеСоветы");
|
||
КонецЕсли;
|
||
#Если ТолстыйКлиентОбычноеПриложение Тогда
|
||
Если Истина
|
||
И Метаданные.ОсновнойРежимЗапуска = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение
|
||
И Не Метаданные.ИспользоватьУправляемыеФормыВОбычномПриложении
|
||
Тогда
|
||
Сообщить("Рекомендуется включить в свойствах конфигурации флажок ""Использовать управляемые формы в обычном приложении""");
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
//#Если ТолстыйКлиентУправляемоеПриложение Тогда
|
||
// ирОбщий.ПроверитьФлажокИспользоватьОбычныеФормыВУправляемомПриложенииЛкс();
|
||
//#КонецЕсли
|
||
//Если Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Английский Тогда
|
||
// Сообщить("Подсистема не полностью поддерживает вариант встроенного языка Английский.", СтатусСообщения.Внимание);
|
||
//КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ГлобальныйОбработчикОжиданияСПараметрамиЛкс() Экспорт
|
||
|
||
ирКлиент.ОбработчикОжиданияСПараметрамиЛкс();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьОтмененныеФоновыеЗаданияОтложенноЛкс() Экспорт
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
Для Каждого Идентификатор Из мПлатформа.ОтмененныеФоновыеЗадания Цикл
|
||
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
|
||
Если ФоновоеЗадание <> Неопределено И ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
|
||
ирОбщий.СообщитьЛкс(ирОбщий.СтрШаблонИменЛкс("Фоновое задание %1, которому была отправлена команда отмены, продолжает выполняться",, ФоновоеЗадание.Наименование + ". " + ФоновоеЗадание.Ключ),
|
||
СтатусСообщения.Внимание);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
мПлатформа.ОтмененныеФоновыеЗадания.Очистить();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура АктивироватьМодальныеГруппыЛкс() Экспорт
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
Для Каждого ЭлементСписка Из мПлатформа.МодальныеГруппы Цикл
|
||
ЭлементСписка.Пометка = Истина;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьСтруктуруАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ТекущаяФорма = Параметры.Форма;
|
||
Если Параметры.Свойство("КоманднаяПанель") Тогда
|
||
КоманднаяПанель = Параметры.КоманднаяПанель;
|
||
КонецЕсли;
|
||
//ТекущаяФорма = ирКлиент.АктивнаяУправляемаяФормаЛкс();
|
||
Если ТекущаяФорма <> Неопределено Тогда
|
||
Если КоманднаяПанель = Неопределено Тогда
|
||
ирКлиент.ОткрытьСтруктуруФормыЛкс(ТекущаяФорма);
|
||
Иначе
|
||
ирКлиент.ОткрытьСтруктуруКоманднойПанелиЛкс(ТекущаяФорма, КоманднаяПанель);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ИсследоватьТекущийЭлементАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ТекущаяФорма = Параметры.Форма;
|
||
ТекущийЭлемент = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(ТекущаяФорма);
|
||
Если ТипЗнч(ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда
|
||
ТекущаяКолонка = ТекущийЭлемент.ТекущийЭлемент;
|
||
ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ТабличноеПоле") Тогда
|
||
ТекущаяКолонка = ТекущийЭлемент.ТекущаяКолонка;
|
||
ИмяТекущегоСвойства = "ЭлементУправления";
|
||
ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ПолеТабличногоДокумента") Тогда
|
||
ИмяТекущегоСвойства = "ТекущаяОбласть";
|
||
КонецЕсли;
|
||
Если ТекущаяКолонка <> Неопределено Тогда
|
||
ТекущийЭлемент = ТекущаяКолонка;
|
||
КонецЕсли;
|
||
ирОбщий.ИсследоватьЛкс(ТекущийЭлемент,,,, ТекущийЭлемент.Имя, ИмяТекущегоСвойства, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьОбъектАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
Ссылка = ирОбщий.КлючОсновногоОбъектаФормыЛкс(Форма);
|
||
Если Ссылка <> Неопределено Тогда
|
||
КлючСтроки = Неопределено;
|
||
ИмяПоляБД = ирОбщий.НайтиПутьКДаннымПоляТаблицыФормыЛкс(Ссылка, Форма.ТекущийЭлемент.Имя);
|
||
Если ТипЗнч(Форма.ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда
|
||
ИмяТЧБД = ИмяПоляБД;
|
||
ИмяПоляБД = "";
|
||
Если Форма.ТекущийЭлемент.ТекущийЭлемент <> Неопределено Тогда
|
||
ИмяПоляБД = ирОбщий.ПутьКДаннымКолонкиТабличногоПоляЛкс(Форма.ТекущийЭлемент);
|
||
КонецЕсли;
|
||
ДанныеТаблицыФормы = ирОбщий.ДанныеЭлементаФормыЛкс(Форма.ТекущийЭлемент);
|
||
Если Форма.ТекущийЭлемент.ТекущаяСтрока <> Неопределено И ирОбщий.ЛиДанныеФормыСВозможностьюПоискаЛкс(ДанныеТаблицыФормы) Тогда
|
||
КлючСтроки = Новый Структура("НомерСтроки", ДанныеТаблицыФормы.Индекс(ДанныеТаблицыФормы.НайтиПоИдентификатору(Форма.ТекущийЭлемент.ТекущаяСтрока)) + 1);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
//Если ПоляТаблицы.Найти(ИмяТЧБД, "Имя") = Неопределено Тогда
|
||
// ИмяТЧБД = "";
|
||
//КонецЕсли;
|
||
//ИмяДочернейТаблицыБД = Ссылка.Метаданные().ПолноеИмя();
|
||
//Если ЗначениеЗаполнено(ИмяТЧБД) Тогда
|
||
// ИмяДочернейТаблицыБД = ИмяДочернейТаблицыБД + "." + ИмяТЧБД;
|
||
//КонецЕсли;
|
||
//ПоляТаблицы = ирОбщий.ПоляТаблицыБДЛкс(ИмяДочернейТаблицыБД);
|
||
//Если ПоляТаблицы.Найти(ИмяПоляБД, "Имя") = Неопределено Тогда
|
||
// ИмяПоляБД = "";
|
||
//КонецЕсли;
|
||
ирКлиент.ОткрытьСсылкуВРедактореОбъектаБДЛкс(Ссылка,, ИмяТЧБД, ИмяПоляБД, КлючСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КопироватьСсылкуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Неопределено;
|
||
Ссылка = ирОбщий.КлючОсновногоОбъектаФормыЛкс(Форма);
|
||
Если Ссылка <> Неопределено Тогда
|
||
ирКлиент.БуферОбменаПриложения_УстановитьЗначениеЛкс(Ссылка,, ирОбщий.ВнешняяНавигационнаяСсылкаЛкс(Ссылка));
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьОбъектСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
Форма = Параметры.Форма;
|
||
ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Форма, КлючТекущейСтроки);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
ДанныеКолонки = ирОбщий.ПутьКДаннымКолонкиТабличногоПоляЛкс(Форма.ТекущийЭлемент);
|
||
ирКлиент.ОткрытьСсылкуВРедактореОбъектаБДЛкс(КлючТекущейСтроки,,, ДанныеКолонки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьОбъектТекущегоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма, КлючТекущейСтроки);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
ирКлиент.ОткрытьСсылкуВРедактореОбъектаБДЛкс(КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьОбъектТекущегоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма, КлючТекущейСтроки,, Ложь);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
ирКлиент.ОткрытьЗначениеЛкс(КлючТекущейСтроки,,,, Ложь);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОбработатьОбъектыАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ТаблицаФормыДинамическогоСписка = Неопределено;
|
||
Ссылки = ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Параметры.Форма, КлючТекущейСтроки, ТаблицаФормыДинамическогоСписка);
|
||
Если Ссылки.Количество() > 0 Тогда
|
||
Если ТаблицаФормыДинамическогоСписка <> Неопределено Тогда
|
||
ирКлиент.ОткрытьПодборИОбработкуОбъектовИзДинамическогоСпискаЛкс(ТаблицаФормыДинамическогоСписка,, Ссылки);
|
||
Иначе
|
||
ирКлиент.ОткрытьМассивОбъектовВПодбореИОбработкеОбъектовЛкс(Ссылки,,,, КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОбработатьОбъектыТекущегоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
Ссылки = ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма, КлючТекущейСтроки);
|
||
Если Ссылки.Количество() > 0 Тогда
|
||
ирКлиент.ОткрытьМассивОбъектовВПодбореИОбработкеОбъектовЛкс(Ссылки,,,, КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьТаблицуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьТаблицуЗначенийИзАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НастроитьКолонкиТаблицыАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
ТекущийЭлемент = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(Форма);
|
||
Если Истина
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТаблицаФормы")
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле")
|
||
Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьНастройкуКолонокТабличногоПоляЛкс(Форма, ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьТабличныйДокументАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьТабличныйДокументИзАктивнойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьТаблицуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ЗапомнитьСодержимоеЭлементаАктивнойФормыДляСравненияЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьРазличныеЗначенияКолонкиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьРазличныеЗначенияКолонкиАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура УстановитьЗначениеВКолонкеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
ТекущийЭлемент = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(Форма);
|
||
Если Истина
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТаблицаФормы")
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле")
|
||
Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьМенеджерТабличногоПоляЛкс(ТекущийЭлемент, Форма, "Обработка");
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗагрузитьДанныеВТабличноеПолеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
ТабличноеПоле = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(Форма);
|
||
ирКлиент.ЗагрузитьСтрокиВТабличноеПолеЛкс(Форма, ТабличноеПоле,,,, Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОтладитьКомпоновкуДанныхАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОтладитьКомпоновкуДанныхАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОтладитьПостроительОтчетаАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирОбщий.ОтладитьЛкс(Параметры.Форма.ПостроительОтчета);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьАктивныйСписокЗначенийЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.РедактироватьАктивныйСписокЗначенийУправляемыйЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НастроитьДинамическийСписокАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.НастроитьДинамическийСписокАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьДинамическийСписокАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьДинамическийСписокАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НайтиВыбратьСсылкуВДинамическомСпискеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.НайтиВыбратьСсылкуВДинамическомСпискеЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьМенеджерТабличногоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьМенеджерТабличногоПоляЛкс(, Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СообщитьКоличествоСтрокАктивнойТаблицыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ТабличноеПолеИлиТаблицаФормы_СколькоСтрокЛкс(Параметры.Форма.ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ТабличноеПолеИлиТаблицаФормы_СравнитьСтрокиЛкс(Параметры.Форма, Параметры.Форма.ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВставитьСкопированнуюСсылкуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.БуферОбмена_ВставитьЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НайтиСкопированнуюСсылкуВТаблицеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.НайтиСсылкуИзБуфераВТаблицеФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КопироватьСсылкуАктивнойСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.КопироватьСсылкуАктивнойСтрокиФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КопироватьСсылкиЯчеекАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.КопироватьСсылкиЯчеекФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСкопированнуюСсылкуСЯчейкойАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Ссылки = ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма);
|
||
Если Ссылки <> Неопределено Тогда
|
||
Значение = ирКлиент.ЗначениеИзБуфераОбменаЛкс();
|
||
ирКлиент.Сравнить2ЗначенияВФормеЛкс(Значение, Ссылки[0]);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСкопированнуюСсылкуСКлючомСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Параметры.Форма, КлючТекущейСтроки);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
Значение = ирКлиент.ЗначениеИзБуфераОбменаЛкс();
|
||
ирКлиент.Сравнить2ЗначенияВФормеЛкс(Значение, КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСкопированнуюСсылкуСАктивнойФормойЛкс(Параметры) Экспорт
|
||
|
||
КлючОсновногоОбъекта = ирОбщий.КлючОсновногоОбъектаФормыЛкс(Параметры.Форма);
|
||
Если КлючОсновногоОбъекта <> Неопределено Тогда
|
||
Значение = ирКлиент.ЗначениеИзБуфераОбменаЛкс();
|
||
ирКлиент.Сравнить2ЗначенияВФормеЛкс(Значение, КлючОсновногоОбъекта);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьТекстАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
АктивнаяФорма = Параметры.Форма;
|
||
Текст = ирКлиент.Форма_ЗначениеТекущегоПоляЛкс(АктивнаяФорма);
|
||
ирКлиент.ОткрытьТекстЛкс(Текст,, "",,, АктивнаяФорма.ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Антибаг платформы https://www.hostedredmine.com/issues/929519 исправлено в 8.3.19
|
||
// В некоторых случаях не помогает. При проблемах заменить на УстановитьФокусВводаФормеЛкс()
|
||
// 8мс
|
||
Процедура ВосстановитьФокусВводаГлЛкс() Экспорт
|
||
|
||
ирКлиент.ОткрытьИЗакрытьПустуюФормуЛкс();
|
||
|
||
КонецПроцедуры
|
||
|
||
// Антибаг платформы https://www.hostedredmine.com/issues/926161
|
||
Процедура АктивироватьАктивнуюФормуЛкс() Экспорт
|
||
|
||
АктивнаяФорма = ирКлиент.АктивнаяФормаЛкс();
|
||
Если АктивнаяФорма = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьИЗакрытьПустуюФормуЛкс();
|
||
ирКлиент.Форма_АктивироватьОткрытьЛкс(АктивнаяФорма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОтключитьРежимПроверкиМодуляЛкс() Экспорт
|
||
ирКэш.Получить().мРежимПроверкиМодуля = Ложь;
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
//#КонецОбласти
|