mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
1249 lines
84 KiB
Plaintext
1249 lines
84 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
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
#Если Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда
|
||
|
||
// Обертка. Добавляет глобальные переменные и методы в контекст поля текстового документа с контекстной подсказкой.
|
||
//
|
||
// Параметры
|
||
// ПолеТекстаПрограммы - ОбработкаОбъект.ПолеТекстаПрограммы.
|
||
//
|
||
Процедура ИнициализироватьГлобальныйКонтекстПодсказки(ПолеТекстаПрограммы) Экспорт
|
||
|
||
ирОбщий.ИнициироватьГлобальныйКонтекстПодсказкиЛкс(ПолеТекстаПрограммы);
|
||
|
||
КонецПроцедуры // ИнициализироватьГлобальныйКонтекстПодсказки()
|
||
|
||
Функция ЗначениеПеременнойИзТаблицыЛокальногоКонтекстаЛкс(ИмяПеременной, ТаблицаЛокальногоКонтекста) Экспорт
|
||
|
||
СтруктураКлюча = Новый Структура("нСлово, ТипСлова", НРег(ИмяПеременной), "Свойство");
|
||
НайденныеСтроки = ТаблицаЛокальногоКонтекста.НайтиСтроки(СтруктураКлюча);
|
||
Если НайденныеСтроки.Количество() > 0 Тогда
|
||
Возврат НайденныеСтроки[0].Значение;
|
||
Иначе
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
|
||
КонецФункции
|
||
|
||
// Вычисляет тип значения функции УК по внутренним параметрам и аргументам.
|
||
// Предназначена для вызвова из ирКлсПолеТекстаПрограммы.
|
||
//
|
||
// Параметры:
|
||
// ТаблицаЛокальногоКонтекста - ТаблицаЗначений - (см. ирКлсПолеТекстаПрограммы);
|
||
// МассивПараметров - Массив - выражений параметров.
|
||
//
|
||
// Возвращаемое значение:
|
||
// ТаблицаЗначений - ТаблицаСтруктурТипов (см. ирКлсПолеТекстаПрограммы).
|
||
//
|
||
Функция ПравилоВычисленияТипаЗначенияКПА(ТаблицаЛокальногоКонтекста, МассивПараметров) Экспорт
|
||
|
||
лПлатформа = ирКэш.Получить();
|
||
ТаблицаСтруктурТипов = лПлатформа.НоваяТаблицаСтруктурТипа();
|
||
Алгоритм = ЗначениеПеременнойИзТаблицыЛокальногоКонтекстаЛкс(МассивПараметров[0], ТаблицаЛокальногоКонтекста);
|
||
Если Алгоритм <> Неопределено Тогда
|
||
Структура = ирКПА(Алгоритм);
|
||
СтруктураТипа = лПлатформа.СтруктураТипаИзЗначения(Структура);
|
||
ЗаполнитьЗначенияСвойств(ТаблицаСтруктурТипов.Добавить(), СтруктураТипа);
|
||
КонецЕсли;
|
||
Возврат ТаблицаСтруктурТипов;
|
||
|
||
КонецФункции // ПравилоВычисленияТипаЗначенияУК()
|
||
|
||
// Конструктор Параметров Алгоритма.
|
||
//
|
||
// Параметры:
|
||
// Алгоритм - СправочникСсылка.ирАлгоритмы.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура - ключ - имя, значение - значение.
|
||
//
|
||
Функция ирКПА(Знач Алгоритм) Экспорт
|
||
|
||
#Если Сервер И Не Сервер Тогда
|
||
Алгоритм = Справочники.ирАлгоритмы.ПустаяСсылка();
|
||
#КонецЕсли
|
||
СтруктураПараметров = Новый Структура;
|
||
Для Каждого СтрокаПараметра Из Алгоритм.Параметры Цикл
|
||
СтруктураПараметров.Вставить(СтрокаПараметра.Имя, СтрокаПараметра.Значение);
|
||
КонецЦикла;
|
||
Возврат СтруктураПараметров;
|
||
|
||
КонецФункции // УК()
|
||
|
||
// Именованный Вызов Алгоритма. Передача параметров выполняется по имени.
|
||
//
|
||
// Параметры:
|
||
// Алгоритм - СправочникСсылка.ирАлгоритмы, Строка - ссылка или GUID или имя сервиса;
|
||
// *СтруктураПараметров - Структура, *Неопределено - ключи - имена параметров, значения - значения параметров;
|
||
// *пНастройкаАлгоритма - СправочникСсылка.НаборыЗначенийПараметров2iS, *Неопределено - набор значений параметров,
|
||
// имеющий приоритет ниже, чем СтруктураПараметров;
|
||
// *ПреобразоватьРезультатВСтрокуВнутр - Булево, *Ложь - преобразовать результат в строку внутреннюю (сериализовать)
|
||
//
|
||
// Возвращаемое значение:
|
||
// Произвольный.
|
||
//
|
||
Функция ирИВА(Знач Алгоритм, Знач СтруктураПараметров = Неопределено) Экспорт
|
||
|
||
Если СтруктураПараметров = Неопределено Тогда
|
||
СтруктураПараметров = Новый Структура;
|
||
КонецЕсли;
|
||
АлгоритмОбъект = ирОбщий.ПолучитьАлгоритмОбъектПоИдентификаторуЛкс(Алгоритм);
|
||
Результат = ирКэш.Получить().ВыполнитьМетодАлгоритма(АлгоритмОбъект, 1, СтруктураПараметров);
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ирИВА()
|
||
|
||
// Позиционный Вызов Алгоритма. Передача параметров выполняется по позиции.
|
||
//
|
||
// Параметры
|
||
// Алгоритм - СправочникСсылка.Сервисы2iS, Строка - ссылки или имя сервиса;
|
||
// *П... - Произвольный, *Null - параметры сервиса.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Произвольное.
|
||
//
|
||
Функция ирПВА(Знач Алгоритм, П0=Null, П1=Null, П2=Null, П3=Null,
|
||
П4=Null, П5=Null, П6=Null, П7=Null, П8=Null, П9=Null) Экспорт
|
||
|
||
АлгоритмОбъект = ирОбщий.ПолучитьАлгоритмОбъектПоИдентификаторуЛкс(Алгоритм);
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
Результат = мПлатформа.ВыполнитьМетодАлгоритма(АлгоритмОбъект, 0, П0, П1, П2, П3, П4, П5, П6, П7, П8, П9);
|
||
Возврат Результат;
|
||
|
||
КонецФункции // УФ()
|
||
|
||
#КонецЕсли
|
||
|
||
//#Область ГлобальныеПортативныеМетоды
|
||
|
||
#Если Клиент Тогда
|
||
|
||
Процедура ВнешнееСобытиеЛкс(Источник, Событие, Данные) Экспорт
|
||
|
||
#Если ТонкийКлиент Тогда
|
||
Если Источник = "KeyboardHook" Тогда
|
||
КодыКлавиш = ирКэш.КодыКлавишЛкс();
|
||
Если Ложь
|
||
Или Найти(Данные, КодыКлавиш["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
|
||
Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ВыбранныеТипыМетаданных.Добавить(СтрокаТипаМетаОбъектов);
|
||
КонецЦикла;
|
||
ТаблицаТиповМетаобъектов = ТаблицаТиповМетаобъектов.Скопировать(ВыбранныеТипыМетаданных);
|
||
ТаблицаТиповМетаобъектов.Сортировать("Категория");
|
||
Если Метаданные.Справочники.Количество() > 200 Тогда
|
||
СписокВыбораТипа = Новый СписокЗначений;
|
||
СписокВыбораТипа.ЗагрузитьЗначения(ТаблицаТиповМетаобъектов.ВыгрузитьКолонку("Единственное"));
|
||
Для Каждого ЭлементСписка Из СписокВыбораТипа Цикл
|
||
ЭлементСписка.Картинка = ирКлиент.КартинкаКорневогоТипаМДЛкс(ЭлементСписка.Значение);
|
||
КонецЦикла;
|
||
СписокВыбораТипа.Вставить(0, "<Все>");
|
||
ВыбранныйЭлемент = СписокВыбораТипа.ВыбратьЭлемент("Выберите тип формы для ускорения ее поиска");
|
||
Если ВыбранныйЭлемент = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
СтрокаТипа = ТаблицаТиповМетаобъектов.Найти(ВыбранныйЭлемент.Значение, "Единственное");
|
||
Если СтрокаТипа <> Неопределено Тогда
|
||
ТаблицаТиповМетаобъектов = ирОбщий.ЗначенияВМассивЛкс(СтрокаТипа);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
РазрешитьПрерывание = Ложь; // Прерывания запрещает платформа в обработчике внешнего события. Поэтому не будем обманывать пользователя
|
||
Для Каждого СтрокаТипаМетаОбъектов Из ТаблицаТиповМетаобъектов Цикл
|
||
ИндикаторТипа = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Метаданные[СтрокаТипаМетаОбъектов.Множественное].Количество(), "Поиск формы " + СтрокаТипаМетаОбъектов.Единственное,,, РазрешитьПрерывание);
|
||
Для Каждого ОбъектМД Из Метаданные[СтрокаТипаМетаОбъектов.Множественное] Цикл
|
||
#Если Сервер И Не Сервер Тогда
|
||
ОбъектМД = Метаданные.Справочники.ирАлгоритмы;
|
||
#КонецЕсли
|
||
ирОбщий.ОбработатьИндикаторЛкс(ИндикаторТипа);
|
||
Если ирОбщий.СтрНачинаетсяСЛкс(ОбъектМД.Имя, "ир", Истина) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
ПолноеИмяМД = ОбъектМД.ПолноеИмя();
|
||
Если ЛиКорневойТипТаблицыБД Тогда
|
||
ПолноеИмяФормы = ОбъектМД.ПолноеИмя() + ".ФормаСписка";
|
||
Иначе
|
||
ПолноеИмяФормы = ОбъектМД.ПолноеИмя() + ".Форма";
|
||
КонецЕсли;
|
||
ЭлементКэша = КэшПоискаФорм.НайтиПоЗначению(ПолноеИмяФормы);
|
||
Если ЭлементКэша <> Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Попытка
|
||
Форма = ирКлиент.ПолучитьФормуЛкс(ПолноеИмяФормы, ПараметрыБыстрогоСозданияФормы);
|
||
Исключение
|
||
Продолжить;
|
||
КонецПопытки;
|
||
Если Форма = Неопределено Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если Форма.Открыта() Тогда
|
||
ЭлементКэша = КэшПоискаФорм.Добавить(ПолноеИмяФормы);
|
||
КэшПоискаФормИзменен = Истина;
|
||
ВводДоступен = Форма.ВводДоступен();
|
||
КонецЕсли;
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
Если ВводДоступен Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если ВводДоступен Тогда
|
||
СобытиеОбработано = Истина;
|
||
Если ЭлементКэша <> Неопределено Тогда
|
||
ирОбщий.СостояниеЛкс();
|
||
ИндексФормыВКэше = КэшПоискаФорм.Индекс(ЭлементКэша);
|
||
Если ИндексФормыВКэше > 0 Тогда
|
||
КэшПоискаФорм.Сдвинуть(ЭлементКэша, -ИндексФормыВКэше);
|
||
КэшПоискаФормИзменен = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ирКлиент.Форма_ВнешнееСобытиеЛкс(Форма, Источник, Событие, Данные, ВводДоступен);
|
||
КонецЕсли;
|
||
МаксЭлементовКэша = 1000;
|
||
Пока КэшПоискаФорм.Количество() > МаксЭлементовКэша Цикл
|
||
КэшПоискаФорм.Удалить(МаксЭлементовКэша);
|
||
КонецЦикла;
|
||
Если КэшПоискаФормИзменен Тогда
|
||
ирОбщий.СохранитьЗначениеЛкс("КэшПоискаФорм", КэшПоискаФорм);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
КонецЕсли;
|
||
Если Не СобытиеОбработано Тогда
|
||
ирКлиент.Форма_ВнешнееСобытиеЛкс(, Источник, Событие, Данные);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
//Сообщить(Данные); // Отладка
|
||
КонецЕсли;
|
||
Исключение
|
||
// Антибаг платформы https://www.hostedredmine.com/issues/890762
|
||
Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
|
||
КонецПопытки;
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
#Если Клиент И Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда
|
||
|
||
Процедура ОбработатьПараметрЗапускаДляВсехРежимовЛкс() Экспорт
|
||
|
||
МаркерОткрытьФорму = "ОткрытьФормуИР.";
|
||
Если Найти(ПараметрЗапуска, МаркерОткрытьФорму) > 0 Тогда
|
||
ИмяФормы = ирОбщий.СтрокаМеждуМаркерамиЛкс(ПараметрЗапуска, МаркерОткрытьФорму, ";");
|
||
Форма = ирКлиент.ПолучитьФормуЛкс(ИмяФормы);
|
||
Если Форма <> Неопределено Тогда
|
||
Форма.Открыть();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// ОБРАБОТЧИКИ ОЖИДАНИЯ
|
||
|
||
Процедура ПроверитьФормыСсылокОтложенноЛкс() Экспорт
|
||
ирКлиент.ПроверитьФормыСсылокЛкс();
|
||
КонецПроцедуры
|
||
|
||
Процедура ОсвободитьВсеИндикаторыПроцессовОтложенноЛкс() Экспорт
|
||
|
||
ирОбщий.ОсвободитьВсеИндикаторыПроцессовЛкс();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СохранитьНастройкиПользователяОтложенноЛкс() Экспорт
|
||
|
||
СохранитьНастройкиПользователя();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВыполнитьПроверкуСовместимостиКонфигурацииЛкс() Экспорт
|
||
|
||
//мПлатформа = ирКэш.Получить();
|
||
//#Если Сервер И Не Сервер Тогда
|
||
// мПлатформа = Обработки.ирПлатформа.Создать();
|
||
//#КонецЕсли
|
||
#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||
Если ирОбщий.КлючБазыВСпискеПользователяЛкс() = Неопределено Тогда
|
||
ирОбщий.СообщитьЛкс("База не найдена в списке баз пользователя ОС. Поэтому она НЕ использует постоянный кэш метаданных, что сильно увеличивает время запуска.", СтатусСообщения.Важное,, Истина);
|
||
КонецЕсли;
|
||
Если ирОбщий.ВосстановитьЗначениеЛкс("ПроверятьПодпискиКонфигурации", Истина) <> Ложь Тогда
|
||
ирКлиент.ПроверитьПодпискиЛкс();
|
||
КонецЕсли;
|
||
#Если ТолстыйКлиентОбычноеПриложение Тогда
|
||
Если Истина
|
||
И Метаданные.ОсновнойРежимЗапуска = РежимЗапускаКлиентскогоПриложения.УправляемоеПриложение
|
||
И Не Метаданные.ИспользоватьУправляемыеФормыВОбычномПриложении
|
||
Тогда
|
||
Сообщить("Рекомендуется включить в свойствах конфигурации флажок ""Использовать управляемые формы в обычном приложении""");
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
#КонецЕсли
|
||
//#Если ТолстыйКлиентУправляемоеПриложение Тогда
|
||
// ирОбщий.ПроверитьФлажокИспользоватьОбычныеФормыВУправляемомПриложенииЛкс();
|
||
//#КонецЕсли
|
||
//Если Метаданные.ВариантВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Английский Тогда
|
||
// Сообщить("Подсистема не полностью поддерживает вариант встроенного языка Английский.", СтатусСообщения.Внимание);
|
||
//КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ГлобальныйОбработчикОжиданияСПараметрамиЛкс() Экспорт
|
||
|
||
ирКлиент.ОбработчикОжиданияСПараметрамиЛкс();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПроверитьОтмененныеФоновыеЗаданияОтложенноЛкс() Экспорт
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
Для Каждого Идентификатор Из мПлатформа.ОтмененныеФоновыеЗадания Цикл
|
||
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор);
|
||
Если ФоновоеЗадание <> Неопределено И ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Активно Тогда
|
||
ирОбщий.СообщитьЛкс(ирОбщий.СтрШаблонИменЛкс("Фоновое задание %1, которому была отправлена команда отмены, продолжает выполняться",, ФоновоеЗадание.Наименование + ". " + ФоновоеЗадание.Ключ),
|
||
СтатусСообщения.Внимание);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
мПлатформа.ОтмененныеФоновыеЗадания.Очистить();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура АктивироватьМодальныеГруппыЛкс() Экспорт
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
Для Каждого ЭлементСписка Из мПлатформа.МодальныеГруппы Цикл
|
||
ЭлементСписка.Пометка = Истина;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьСтруктуруАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ТекущаяФорма = Параметры.Форма;
|
||
Если Параметры.Свойство("КоманднаяПанель") Тогда
|
||
КоманднаяПанель = Параметры.КоманднаяПанель;
|
||
КонецЕсли;
|
||
//ТекущаяФорма = ирКлиент.АктивнаяУправляемаяФормаЛкс();
|
||
Если ТекущаяФорма <> Неопределено Тогда
|
||
Если КоманднаяПанель = Неопределено Тогда
|
||
ирКлиент.ОткрытьСтруктуруФормыЛкс(ТекущаяФорма);
|
||
Иначе
|
||
ирКлиент.ОткрытьСтруктуруКоманднойПанелиЛкс(ТекущаяФорма, КоманднаяПанель);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ИсследоватьТекущийЭлементАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ТекущаяФорма = Параметры.Форма;
|
||
ТекущийЭлемент = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(ТекущаяФорма);
|
||
Если ТипЗнч(ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда
|
||
ТекущаяКолонка = ТекущийЭлемент.ТекущийЭлемент;
|
||
ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ТабличноеПоле") Тогда
|
||
ТекущаяКолонка = ТекущийЭлемент.ТекущаяКолонка;
|
||
ИмяТекущегоСвойства = "ЭлементУправления";
|
||
ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ПолеТабличногоДокумента") Тогда
|
||
ИмяТекущегоСвойства = "ТекущаяОбласть";
|
||
КонецЕсли;
|
||
Если ТекущаяКолонка <> Неопределено Тогда
|
||
ТекущийЭлемент = ТекущаяКолонка;
|
||
КонецЕсли;
|
||
ирОбщий.ИсследоватьЛкс(ТекущийЭлемент,,,, ТекущийЭлемент.Имя, ИмяТекущегоСвойства, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьОбъектАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
Ссылка = ирОбщий.КлючОсновногоОбъектаФормыЛкс(Форма);
|
||
Если Ссылка <> Неопределено Тогда
|
||
КлючСтроки = Неопределено;
|
||
ИмяПоляБД = ирОбщий.НайтиПутьКДаннымПоляТаблицыФормыЛкс(Ссылка, Форма.ТекущийЭлемент.Имя);
|
||
Если ТипЗнч(Форма.ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда
|
||
ИмяТЧБД = ИмяПоляБД;
|
||
ИмяПоляБД = "";
|
||
Если Форма.ТекущийЭлемент.ТекущийЭлемент <> Неопределено Тогда
|
||
ИмяПоляБД = ирОбщий.ПутьКДаннымКолонкиТабличногоПоляЛкс(Форма.ТекущийЭлемент);
|
||
КонецЕсли;
|
||
ДанныеТаблицыФормы = ирОбщий.ДанныеЭлементаФормыЛкс(Форма.ТекущийЭлемент);
|
||
Если Форма.ТекущийЭлемент.ТекущаяСтрока <> Неопределено И ирОбщий.ЛиДанныеФормыСВозможностьюПоискаЛкс(ДанныеТаблицыФормы) Тогда
|
||
КлючСтроки = Новый Структура("НомерСтроки", ДанныеТаблицыФормы.Индекс(ДанныеТаблицыФормы.НайтиПоИдентификатору(Форма.ТекущийЭлемент.ТекущаяСтрока)) + 1);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
//Если ПоляТаблицы.Найти(ИмяТЧБД, "Имя") = Неопределено Тогда
|
||
// ИмяТЧБД = "";
|
||
//КонецЕсли;
|
||
//ИмяДочернейТаблицыБД = Ссылка.Метаданные().ПолноеИмя();
|
||
//Если ЗначениеЗаполнено(ИмяТЧБД) Тогда
|
||
// ИмяДочернейТаблицыБД = ИмяДочернейТаблицыБД + "." + ИмяТЧБД;
|
||
//КонецЕсли;
|
||
//ПоляТаблицы = ирОбщий.ПоляТаблицыБДЛкс(ИмяДочернейТаблицыБД);
|
||
//Если ПоляТаблицы.Найти(ИмяПоляБД, "Имя") = Неопределено Тогда
|
||
// ИмяПоляБД = "";
|
||
//КонецЕсли;
|
||
ирКлиент.ОткрытьСсылкуВРедактореОбъектаБДЛкс(Ссылка,, ИмяТЧБД, ИмяПоляБД, КлючСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КопироватьСсылкуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Неопределено;
|
||
Ссылка = ирОбщий.КлючОсновногоОбъектаФормыЛкс(Форма);
|
||
Если Ссылка <> Неопределено Тогда
|
||
ирКлиент.БуферОбменаПриложения_УстановитьЗначениеЛкс(Ссылка,, ирОбщий.ВнешняяНавигационнаяСсылкаЛкс(Ссылка));
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьОбъектСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
Форма = Параметры.Форма;
|
||
ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Форма, КлючТекущейСтроки);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
ДанныеКолонки = ирОбщий.ПутьКДаннымКолонкиТабличногоПоляЛкс(Форма.ТекущийЭлемент);
|
||
ирКлиент.ОткрытьСсылкуВРедактореОбъектаБДЛкс(КлючТекущейСтроки,,, ДанныеКолонки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьОбъектТекущегоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма, КлючТекущейСтроки);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
ирКлиент.ОткрытьСсылкуВРедактореОбъектаБДЛкс(КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьОбъектТекущегоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма, КлючТекущейСтроки,, Ложь);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
ирКлиент.ОткрытьЗначениеЛкс(КлючТекущейСтроки,,,, Ложь);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОбработатьОбъектыАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ТаблицаФормыДинамическогоСписка = Неопределено;
|
||
Ссылки = ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Параметры.Форма, КлючТекущейСтроки, ТаблицаФормыДинамическогоСписка);
|
||
Если Ссылки.Количество() > 0 Тогда
|
||
Если ТаблицаФормыДинамическогоСписка <> Неопределено Тогда
|
||
ирКлиент.ОткрытьПодборИОбработкуОбъектовИзДинамическогоСпискаЛкс(ТаблицаФормыДинамическогоСписка,, Ссылки);
|
||
Иначе
|
||
ирКлиент.ОткрытьМассивОбъектовВПодбореИОбработкеОбъектовЛкс(Ссылки,,,, КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОбработатьОбъектыТекущегоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
Ссылки = ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма, КлючТекущейСтроки);
|
||
Если Ссылки.Количество() > 0 Тогда
|
||
ирКлиент.ОткрытьМассивОбъектовВПодбореИОбработкеОбъектовЛкс(Ссылки,,,, КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьТаблицуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьТаблицуЗначенийИзАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НастроитьКолонкиТаблицыАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
ТекущийЭлемент = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(Форма);
|
||
Если Истина
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТаблицаФормы")
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле")
|
||
Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьНастройкуКолонокТабличногоПоляЛкс(Форма, ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьТабличныйДокументАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьТабличныйДокументИзАктивнойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьТаблицуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ЗапомнитьСодержимоеЭлементаАктивнойФормыДляСравненияЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьРазличныеЗначенияКолонкиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьРазличныеЗначенияКолонкиАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура УстановитьЗначениеВКолонкеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
ТекущийЭлемент = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(Форма);
|
||
Если Истина
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТаблицаФормы")
|
||
И ТипЗнч(ТекущийЭлемент) <> Тип("ТабличноеПоле")
|
||
Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьМенеджерТабличногоПоляЛкс(ТекущийЭлемент, Форма, "Обработка");
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗагрузитьДанныеВТабличноеПолеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Форма = Параметры.Форма;
|
||
ТабличноеПоле = ирКлиент.ТекущийЭлементАктивнойФормыЛкс(Форма);
|
||
ирКлиент.ЗагрузитьСтрокиВТабличноеПолеЛкс(Форма, ТабличноеПоле,,,, Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОтладитьКомпоновкуДанныхАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОтладитьКомпоновкуДанныхАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОтладитьПостроительОтчетаАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирОбщий.ОтладитьЛкс(Параметры.Форма.ПостроительОтчета);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура РедактироватьАктивныйСписокЗначенийЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.РедактироватьАктивныйСписокЗначенийУправляемыйЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НастроитьДинамическийСписокАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.НастроитьДинамическийСписокАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьДинамическийСписокАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьДинамическийСписокАктивнойУправляемойФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НайтиВыбратьСсылкуВДинамическомСпискеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.НайтиВыбратьСсылкуВДинамическомСпискеЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьМенеджерТабличногоПоляАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ОткрытьМенеджерТабличногоПоляЛкс(, Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СообщитьКоличествоСтрокАктивнойТаблицыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ТабличноеПолеИлиТаблицаФормы_СколькоСтрокЛкс(Параметры.Форма.ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.ТабличноеПолеИлиТаблицаФормы_СравнитьСтрокиЛкс(Параметры.Форма, Параметры.Форма.ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВставитьСкопированнуюСсылкуАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.БуферОбмена_ВставитьЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура НайтиСкопированнуюСсылкуВТаблицеАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.НайтиСсылкуИзБуфераВТаблицеФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КопироватьСсылкуАктивнойСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.КопироватьСсылкуАктивнойСтрокиФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КопироватьСсылкиЯчеекАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
ирКлиент.КопироватьСсылкиЯчеекФормыЛкс(Параметры.Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСкопированнуюСсылкуСЯчейкойАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
Ссылки = ирКлиент.ЗначенияВыделенныхЯчеекТаблицыЛкс(Параметры.Форма);
|
||
Если Ссылки <> Неопределено Тогда
|
||
Значение = ирКлиент.ЗначениеИзБуфераОбменаЛкс();
|
||
ирКлиент.Сравнить2ЗначенияВФормеЛкс(Значение, Ссылки[0]);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСкопированнуюСсылкуСКлючомСтрокиАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
КлючТекущейСтроки = Неопределено;
|
||
ирКлиент.КлючиСтрокБДИзТаблицыФормыЛкс(Параметры.Форма, КлючТекущейСтроки);
|
||
Если КлючТекущейСтроки <> Неопределено Тогда
|
||
Значение = ирКлиент.ЗначениеИзБуфераОбменаЛкс();
|
||
ирКлиент.Сравнить2ЗначенияВФормеЛкс(Значение, КлючТекущейСтроки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СравнитьСкопированнуюСсылкуСАктивнойФормойЛкс(Параметры) Экспорт
|
||
|
||
КлючОсновногоОбъекта = ирОбщий.КлючОсновногоОбъектаФормыЛкс(Параметры.Форма);
|
||
Если КлючОсновногоОбъекта <> Неопределено Тогда
|
||
Значение = ирКлиент.ЗначениеИзБуфераОбменаЛкс();
|
||
ирКлиент.Сравнить2ЗначенияВФормеЛкс(Значение, КлючОсновногоОбъекта);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОткрытьТекстАктивнойФормыЛкс(Параметры) Экспорт
|
||
|
||
АктивнаяФорма = Параметры.Форма;
|
||
Текст = ирКлиент.Форма_ЗначениеТекущегоПоляЛкс(АктивнаяФорма);
|
||
ирКлиент.ОткрытьТекстЛкс(Текст,, "",, АктивнаяФорма.ТекущийЭлемент);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Антибаг платформы https://www.hostedredmine.com/issues/929519
|
||
// В некоторых случаях не помогает. При проблемах заменить на УстановитьФокусВводаФормеЛкс()
|
||
// 8мс
|
||
Процедура ВосстановитьФокусВводаГлЛкс() Экспорт
|
||
|
||
ирКлиент.ОткрытьИЗакрытьПустуюФормуЛкс();
|
||
|
||
КонецПроцедуры
|
||
|
||
// Антибаг платформы https://www.hostedredmine.com/issues/926161
|
||
Процедура АктивироватьАктивнуюФормуЛкс() Экспорт
|
||
|
||
АктивнаяФорма = ирКлиент.АктивнаяФормаЛкс();
|
||
Если АктивнаяФорма = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирКлиент.ОткрытьИЗакрытьПустуюФормуЛкс();
|
||
ирКлиент.Форма_АктивироватьОткрытьЛкс(АктивнаяФорма);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
// ОТЛАДКА
|
||
|
||
// Обертка ирОбщий.ПрЛкс(). Присваивает первому параметру второй.
|
||
// Удобно вызывать из отладчика через диалог "Вычислить выражение".
|
||
//
|
||
// Параметры:
|
||
// П1 - Произвольный - параметр1;
|
||
// П2 - Произвольный - параметр2;
|
||
//
|
||
// Возвращаемое значение:
|
||
// П2 - Не используется.
|
||
//
|
||
Функция Пр(п1, Знач п2 = Неопределено, Знач ВернутьЛожь = Ложь) Экспорт
|
||
|
||
Результат = ирОбщий.ПрЛкс(п1, п2);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ДуЛкс(). Выполняет программный код, переданный в параметре.
|
||
// Остальные параметры могут участвовать в теле этого кода. Вернуть результат можно через переменную Р.
|
||
// Удобно использовать в отладчике.
|
||
//
|
||
// Параметры:
|
||
// П1 - Произвольный - параметр1;
|
||
// П2 - Произвольный - параметр2;
|
||
// П3 - Произвольный - параметр3;
|
||
// П4 - Произвольный - параметр4;
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено - Не используется.
|
||
//
|
||
Функция Ду(Знач ТекстПрограммы, п1 = 0, п2 = 0, п3 = 0, п4 = 0) Экспорт
|
||
|
||
Результат = ирОбщий.ДуЛкс(ТекстПрограммы, п1, п2, п3, п4);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ОперироватьЛкс(). На клиенте открывает консоль кода с передачей туда всех своих параметров. На сервере сразу выполняет код.
|
||
// Изменения параметров возвращаются в вызывающий контекст в модальном режиме.
|
||
//
|
||
// Параметры:
|
||
// ТекстПрограммы - Строка - программный код для передачи в консоль кода или выполнения;
|
||
// РежимОперации - Число - 0 - немодально, 1 - модально, 2 - неинтерактивно (на сервере всегда);
|
||
// СтрокаИменПараметров - Строка - имена параметров для консоли кода через запятую, если не указаны, то будут оригинальные П*;
|
||
// П* - Произвольный - параметры для использования при выполнении программного кода;
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка - описание ошибок.
|
||
//
|
||
Функция Оперировать(Знач ТекстПрограммы = "", Знач РежимОперации = 0, СтрокаИменПараметров= "",
|
||
П1 = Null, П2 = Null, П3 = Null, П4 = Null, П5 = Null, П6 = Null, П7 = Null, П8 = Null, П9 = Null) Экспорт
|
||
|
||
Результат = ирОбщий.ОперироватьЛкс(ТекстПрограммы, РежимОперации, СтрокаИменПараметров, П1, П2, П3, П4, П5, П6, П7, П8, П9);
|
||
Возврат Результат;
|
||
|
||
КонецФункции // РП()
|
||
|
||
// Обертка ирОбщий.ПерЛкс(). Подготавливает строку для помещения всех переменных в структуру с целью ее дальнейшего вычисления в отладчике "Вычислить(Пер())".
|
||
//
|
||
// Параметры:
|
||
// ТекстПрограммы - Строка, *"" - на клиенте можно не указывать и тогда текст будет браться из буфера обмена, можно вставить имена локальных переменных выведенных в табличный документ
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка для вычисления в отладчике.
|
||
//
|
||
Функция Пер(Знач ТекстПрограммы = "") Экспорт
|
||
|
||
Результат = ирОбщий.ПерЛкс(ТекстПрограммы);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ПерИсЛкс(). Подготавливает строку для помещения всех переменных в структуру и ее передачи в метод Ис() в отладчике "Вычислить(ПерИс())".
|
||
//
|
||
// Параметры:
|
||
// ТекстПрограммы - Строка, *"" - на клиенте можно не указывать и тогда текст будет браться из буфера обмена, можно вставить имена локальных переменных выведенных в табличный документ
|
||
// <Остальные> - от функции Ис()
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка для вычисления в отладчике.
|
||
//
|
||
Функция ПерИс(Знач ТекстПрограммы = "", КакКоллекцию = Ложь, ОтложенноеВыполнение = Ложь) Экспорт
|
||
|
||
Результат = ирОбщий.ПерИсЛкс(ТекстПрограммы);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ДокЛкс(). Подготавливает выражение встроенного языка для вызова функции сборки описания параметров с целью ее дальнейшего вычисления в отладчике "Вычислить(Док())".
|
||
// Строковые литералы должны быть обрамлены удвоенными двойным кавычками. Допускается не удваивать их в литерале пустой строки ("").
|
||
//
|
||
// Параметры:
|
||
// ТекстПараметров - Строка, *"" - на клиенте можно не указывать и тогда текст будет браться из буфера обмена, например "Знач Текст = ""п"", Знач Рупор = Неопределено"
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка для вычисления в отладчике.
|
||
//
|
||
Функция Док(Знач ТекстПараметров = "") Экспорт
|
||
|
||
Результат = ирОбщий.ДокЛкс(ТекстПараметров);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ПолВТЛкс(). Функция получает структуру (Имя временной таблицы; Таблица значений) из указанного запроса или менеджера временных таблиц.
|
||
// Полезна для просмотра временных таблиц из менеджера временных таблиц серверного контекста в отладчике.
|
||
// Параметры:
|
||
// ЗапросИлиМенеджерВременныхТаблиц - Запрос, МенеджерВременныхТаблиц
|
||
// ИменаВременныхТаблиц - Строка, *"" - имена существующих, но возможно не используемых в тексте запроса временных таблиц через запятую
|
||
// ДопустимоеЧислоСтрок - Число, *500000 - выбирать из временной таблицы не более этого числа строк
|
||
//
|
||
// Результат - ТаблицаЗначений, Структура
|
||
//
|
||
Функция ПолВТ(ЗапросИлиМенеджерВременныхТаблиц, ИменаВременныхТаблиц = "", ДопустимоеЧислоСтрок = 500000) Экспорт
|
||
|
||
Результат = ирОбщий.ПолВТЛкс(ЗапросИлиМенеджерВременныхТаблиц, ИменаВременныхТаблиц, ДопустимоеЧислоСтрок);
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПолВТ()
|
||
|
||
// Обертка ирОбщий.ТехНЛкс(). Начать трассу в технологическом журнале. Сам технологический журнал надо заранее включить.
|
||
Функция ТехН() Экспорт
|
||
|
||
Результат = ирОбщий.ТехНЛкс();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ТехКЛкс(). Кончить трассу в технологическом журнале и показать ее анализ
|
||
Функция ТехК() Экспорт
|
||
|
||
Результат = ирОбщий.ТехКЛкс();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
#Если Клиент Тогда
|
||
|
||
// Обертка ирОбщий.ПопЛкс(). Подготавливает строку для вызова Оперировать() в отладчике. Вызвается путем вычисления "Вычислить(Поп())".
|
||
// Изменения параметров возвращаются в вызывающий контекст.
|
||
//
|
||
// Параметры:
|
||
// ТекстПрограммы - Строка, *"" - программный код для передачи в консоль кода или выполнения, берется из буфера обмена если пустой;
|
||
// РежимОперации - Число - 0 - немодально, 1 - модально, 2 - неинтерактивно (на сервере всегда);
|
||
//
|
||
// Возвращаемое значение:
|
||
// Строка для вычисления в отладчике.
|
||
//
|
||
Функция Поп(Знач ТекстПрограммы = "", РежимОперации = 1) Экспорт
|
||
|
||
Результат = ирОбщий.ПопЛкс(ТекстПрограммы, РежимОперации);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ОпЛкс(). Модально открывает консоль кода с передачей туда всех своих параметров.
|
||
// Удобно вызывать из отладчика через диалог "Вычислить выражение".
|
||
// Изменения параметров возвращаются в вызывающий контекст.
|
||
//
|
||
// Параметры:
|
||
// П* - Произвольный;
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено.
|
||
//
|
||
Функция Оп(П1 = Null, П2 = Null, П3 = Null, П4 = Null, П5 = Null) Экспорт
|
||
|
||
Результат = ирОбщий.ОпЛкс(П1, П2, П3, П4, П5);
|
||
Возврат Результат;
|
||
|
||
КонецФункции // Оп()
|
||
|
||
// Обертка ирОбщий.ОперироватьСтруктуройЛкс(). Открывает консоль кода с передачей туда всех параметров из состава структуры.
|
||
// Изменения параметров возвращаются в структуру, но не в вызывающий контекст.
|
||
//
|
||
// Параметры:
|
||
// ТекстПрограммы - Строка;
|
||
// Модально - Булево - открывать окно модально;
|
||
// СтруктураПараметров - Структура - ключи соответсвуют именам параметов, а значения их значениям.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено.
|
||
//
|
||
Функция ОперироватьСтруктурой(Знач ТекстПрограммы = "", Модально = Ложь, СтруктураПараметров) Экспорт
|
||
|
||
Результат = ирОбщий.ОперироватьСтруктуройЛкс(ТекстПрограммы, Модально, СтруктураПараметров);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ОпсЛкс(). Обертка ОперироватьСтруктурой. Модально открывает консоль кода с передачей туда всех параметров из состава структуры.
|
||
// Удобно вызывать из отладчика через диалог "Вычислить выражение".
|
||
// Изменения параметров возвращаются в структуру, но не в вызывающий контекст.
|
||
//
|
||
// Параметры:
|
||
// СтруктураПараметров - Структура - ключи соответсвуют именам параметов, а значения их значениям.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено.
|
||
//
|
||
Функция Опс(Знач СтруктураПараметров) Экспорт
|
||
|
||
Результат = ирОбщий.ОпсЛкс(СтруктураПараметров);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.НаблюдатьЛкс(). Выводит в окно сообщений переданное значение вместе с типом и заданным представлением.
|
||
//
|
||
// Параметры:
|
||
// Значение - Произвольный;
|
||
// *Представление - Строка, *"" - представление наблюдаемого значения.
|
||
//
|
||
Процедура Наблюдать(Знач Значение, Представление = "") Экспорт
|
||
|
||
ирОбщий.НаблюдатьЛкс(Значение, Представление);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецЕсли
|
||
|
||
// Обертка ирОбщий.ОтладитьЛкс(). Открывает нужную консоль для редактирования сложного объекта.
|
||
// Варианты использования в зависимости от типа параметра Объект:
|
||
// Запрос, COMОбъект - открывает Запрос или ADODB.Command или ADODB.Connection в консоли запросов
|
||
// ПостроительЗапроса - открывает результирующий запрос построителя запросов в консоли запросов
|
||
// ПостроительОтчета - открывает построитель отчета в консоли построителей отчетов, откуда можно открыть результирующий запрос построителя отчета в консоли запросов
|
||
// СхемаКомпоновки - открывает схему компоновки в консоли компоновки данных, откуда можно открыть результирующие (из макета компоновки) запросы в консоли запросов
|
||
//
|
||
// Параметры:
|
||
// Объект - Запрос, ПостроительЗапроса, ПостроительОтчета, СхемаКомпоновкиДанных, COMОбъект.ADODB.Command - исследуемый объект;
|
||
// Модально - Булево - открывать окно модально, должно быть Истина для использования функции в отладчике;
|
||
// НастройкаКомпоновкиИлиТекстЗапроса - НастройкиКомпоновкиДанных, Строка, *Неопределено - настройки для схемы компоновки, текст запроса для WMI или ADODB.Connection;
|
||
// ВнешниеНаборыДанных - Структура, *Неопределено - внешние наборы данных для схемы компоновки;
|
||
// ОтложенноеВыполнение - Булево - на сервере игнорируется (равно Истина), вместо открытия инструмента отладки выполняется помещение
|
||
// объектов отладки во временное хранилище;
|
||
// ДопустимоеЧислоСтрокВоВременнойТаблицеОтложеннойОтладки - Число, *500000 - допустимое количество строк во всех временных таблицах запроса
|
||
// для отложенной отладки, больше этого количества строки не сохраняются, о чем сообщается в результате;
|
||
// Наименование - Строка - наименование сохраняемого объекта отложенной отладки;
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено.
|
||
//
|
||
Функция Отладить(Знач Объект, Модально = Ложь, Знач Объект2 = Неопределено, Знач ВнешниеНаборыДанных = Неопределено,
|
||
ОтложенноеВыполнение = Ложь, ПорогОбрезкиВременнойТаблицы = 500000, Наименование = "", Знач МенеджерВременныхТаблиц = Неопределено) Экспорт
|
||
|
||
Результат = ирОбщий.ОтладитьЛкс(Объект, Модально, Объект2, ВнешниеНаборыДанных, ОтложенноеВыполнение, ПорогОбрезкиВременнойТаблицы,, Наименование, МенеджерВременныхТаблиц);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ОтЛкс(). Открывает или формирует снимок объекта для открытия в соответствующем инструменте.
|
||
// Удобно вызывать из отладчика через диалог "Вычислить выражение".
|
||
// Варианты использования в зависимости от типа параметра Объект:
|
||
// Запрос, COMОбъект, HttpСоединение - открывает Запрос или ADODB.Command или ADODB.Connection в консоли запросов
|
||
// ПостроительЗапроса - открывает результирующий запрос построителя запросов в консоли запросов
|
||
// ПостроительОтчета - открывает построитель отчета в консоли построителей отчетов, откуда можно открыть результирующий запрос построителя отчета в консоли запросов
|
||
// СхемаКомпоновки - открывает схему компоновки в консоли компоновки данных, откуда можно открыть результирующие (из макета компоновки) запросы в консоли запросов
|
||
// МакетКомпоновкиДанных - открытвает запросы макета компоновки в консоли запросов
|
||
// ОтчетОбъект - открывает схему и настройки компоновки отчета в консоли компоновки данных, откуда можно открыть результирующие (из макета компоновки) запросы в консоли запросов
|
||
// РегистрСведенийНаборЗаписей - открывает группировку таблицы набора записей по измерениям
|
||
//
|
||
// Параметры:
|
||
// Объект - Запрос, ПостроительЗапроса, ПостроительОтчета, СхемаКомпоновкиДанных, МакетКомпоновкиДанных, ОтчетОбъект, ADODB.Command, ADODB.Connection, HttpСоединение - исследуемый объект;
|
||
// Объект2 - НастройкиКомпоновкиДанных, Строка, *Неопределено -
|
||
// если первый параметр СхемаКомпоновкиДанных, то настройки компоновки,
|
||
// если первый параметр WMI или ADODB.Connection, то текст запроса,
|
||
// если первый параметр HttpСоединение, то HttpЗапрос,
|
||
// если первый параметр Запрос, имена временных таблиц разделенных запятыми;
|
||
// ВнешниеНаборыДанных - Структура, *Неопределено - внешние наборы данных для схемы компоновки;
|
||
// ОтложенноеВыполнение - Булево - на сервере игнорируется (равно Истина), вместо открытия инструмента отладки выполняется помещение
|
||
// объектов отладки во временное хранилище;
|
||
// Наименование - Строка - наименование сохраняемого объекта отложенной отладки;
|
||
//
|
||
// Возвращаемое значение:
|
||
// Неопределено.
|
||
//
|
||
Функция От(Знач Объект, Знач Объект2 = Неопределено, Знач ВнешниеНаборыДанных = Неопределено, ОтложенноеВыполнение = Ложь, ПорогОбрезкиВременнойТаблицы = 500000, Наименование = "",
|
||
Знач МенеджерВременныхТаблиц = Неопределено) Экспорт
|
||
|
||
#Если ТолстыйКлиентОбычноеПриложение Тогда
|
||
Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
|
||
БазоваяФорма = ПолучитьФорму(Неопределено); // Чтобы использовалась форма именно этого объекта
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
Результат = ирОбщий.ОтЛкс(Объект, Объект2, ВнешниеНаборыДанных, ОтложенноеВыполнение, ПорогОбрезкиВременнойТаблицы, Наименование, МенеджерВременныхТаблиц);
|
||
Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
|
||
ирПортативный.УсловныйДеструктор();
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ИсследоватьЛкс(). Открывает исследователь объектов.
|
||
//
|
||
// Параметры:
|
||
// Объект - Произвольный, *Неопределено - объект, который будет исследован;
|
||
// Модально - Булево - открывать окно модально;
|
||
// КакКоллекцию - Булево, *Ложь - исследовать как коллекцию вместо объекта.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Сам объект.
|
||
//
|
||
Функция Исследовать(Знач Объект = Неопределено, Модально = Ложь, КакКоллекцию = Ложь, ОтложенноеВыполнение = Ложь) Экспорт
|
||
|
||
Результат = ирОбщий.ИсследоватьЛкс(Объект, Модально, КакКоллекцию, ОтложенноеВыполнение);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ИсЛкс(). Открывает или формирует снимок объекта для открытия в исследователе объектов.
|
||
// Удобно вызывать из отладчика через диалог "Вычислить выражение".
|
||
Функция Ис(Знач Объект = Неопределено, КакКоллекцию = Ложь, ОтложенноеВыполнение = Ложь) Экспорт
|
||
|
||
#Если ТолстыйКлиентОбычноеПриложение Тогда
|
||
Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
|
||
Пустышка = ПолучитьФорму(Неопределено); // Чтобы использовалась форма именно этого объекта
|
||
КонецЕсли;
|
||
#КонецЕсли
|
||
Результат = ирОбщий.ИсЛкс(Объект, КакКоллекцию, ОтложенноеВыполнение);
|
||
Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
|
||
ирПортативный.УсловныйДеструктор();
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ФайлЛкс(). Возвращает текст из файла
|
||
Функция Файл(Знач ИмяФайла, Знач Кодировка = "") Экспорт
|
||
|
||
Результат = ирОбщий.ФайлЛкс(ИмяФайла, Кодировка);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.СокрКолЛкс(). Удаляет все элементы коллекции кроме заданного или первого.
|
||
Функция СокрКол(Коллекция, ОставитьЭлементИлиКлюч = Неопределено) Экспорт
|
||
|
||
ирОбщий.СокрКолЛкс(Коллекция, ОставитьЭлементИлиКлюч);
|
||
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.ИзмЛкс(). Проверяет что переданное значение отличается от предыдущего переданного с тем же именем.
|
||
// Удобно вызывать из отладчика в качестве условия точки останова.
|
||
Функция Изм(Значение, ИмяЗначения = "п", Знач НужноеСтароеЗначение = "фйъх13м9", Знач НужноеНовоеЗначение = "фйъх13м9") Экспорт
|
||
Результат = ирОбщий.ИзмЛкс(Значение, ИмяЗначения, НужноеСтароеЗначение, НужноеНовоеЗначение);
|
||
Возврат Результат;
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.СткЛкс(). Создает из объекта структуру
|
||
Функция Стк(Объект) Экспорт
|
||
Возврат ирОбщий.СткЛкс(Объект);
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.КолЛкс(). Создает из объекта таблицу значений
|
||
Функция Кол(Объект) Экспорт
|
||
Возврат ирОбщий.КолЛкс(Объект);
|
||
КонецФункции
|
||
|
||
// Обертка ирОбщий.УслЛкс(). Формирует строку условия точки останова по значениям всех свойств объекта.
|
||
Функция Усл(Объект, ИмяПеременной, МаксДлинаСтроки = 20, МаксДробныхЗнаков = 6) Экспорт
|
||
Возврат ирОбщий.УслЛкс(Объект, ИмяПеременной, МаксДлинаСтроки, МаксДробныхЗнаков);
|
||
КонецФункции
|
||
|
||
//#КонецОбласти
|
||
|
||
|