mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 13:14:11 +00:00
296 lines
18 KiB
Plaintext
296 lines
18 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
// Поместить строку соединения во временное хранилище
|
||
Функция ПоместитьСтрокуСоединенияВХранилищеЛкс(Адрес) Экспорт
|
||
|
||
ПоместитьВоВременноеХранилище(СтрокаСоединенияИнформационнойБазы(), Адрес);
|
||
|
||
КонецФункции
|
||
|
||
// Получить строку соединения сервера
|
||
Функция ПолучитьСтрокуСоединенияСервераЛкс() Экспорт
|
||
|
||
Если ирКэш.ЭтоФайловаяБазаЛкс() Тогда
|
||
Результат = СтрокаСоединенияИнформационнойБазы();
|
||
Иначе
|
||
Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
|
||
Результат = СтрокаСоединенияИнформационнойБазы();
|
||
Иначе
|
||
// Антибаг https://partners.v8.1c.ru/forum/t/1361906/m/1361906
|
||
//Если МонопольныйРежим() Тогда
|
||
// ВызватьИсключение "Невозможно определить строку соединения сервера в монопольном режиме";
|
||
//КонецЕсли;
|
||
АдресХранилища = ПоместитьВоВременноеХранилище("");
|
||
Параметры = Новый Массив();
|
||
Параметры.Добавить(АдресХранилища);
|
||
ФоновоеЗадание = ФоновыеЗадания.Выполнить("ирСервер.ПоместитьСтрокуСоединенияВХранилищеЛкс", Параметры,, "Получение строки соединения сервера (ИР)");
|
||
ФоновоеЗадание.ОжидатьЗавершения();
|
||
Результат = ПолучитьИзВременногоХранилища(АдресХранилища);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
|
||
/////////////////////////////////////////////
|
||
// Редиректы
|
||
|
||
Функция ПолучитьКаталогНастроекПриложения1СЛкс(ИспользоватьОбщийКаталогНастроек = Истина, СоздатьЕслиОтсутствует = Ложь) Экспорт
|
||
|
||
Результат = ирОбщий.ПолучитьКаталогНастроекПриложения1СЛкс(ИспользоватьОбщийКаталогНастроек, СоздатьЕслиОтсутствует);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПолучитьИмяФайлаАктивнойНастройкиТехноЖурналаЛкс() Экспорт
|
||
|
||
Результат = ирОбщий.ПолучитьИмяФайлаАктивнойНастройкиТехноЖурналаЛкс();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ЛиКаталогТехножурналаНедоступенЛкс(КаталогЖурнала) Экспорт
|
||
|
||
Результат = ирОбщий.ЛиКаталогТехножурналаНедоступенЛкс(КаталогЖурнала);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ЗаписатьТекстВФайлЛкс(ПолноеИмяФайла, Текст, Кодировка = Неопределено) Экспорт
|
||
|
||
Результат = ирОбщий.ЗаписатьТекстВФайлЛкс(ПолноеИмяФайла, Текст, Кодировка);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПрочитатьТекстИзФайлаЛкс(ПолноеИмяФайла, Кодировка = Неопределено) Экспорт
|
||
|
||
Результат = ирОбщий.ПрочитатьТекстИзФайлаЛкс(ПолноеИмяФайла, Кодировка);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция НайтиИменаФайловЛкс(Путь, Маска = Неопределено, ИскатьВПодкаталогах = Истина) Экспорт
|
||
|
||
Результат = ирОбщий.НайтиИменаФайловЛкс(Путь, Маска, ИскатьВПодкаталогах);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ВычислитьРазмерКаталогаЛкс(Каталог, ВключаяПодкаталоги = Истина) Экспорт
|
||
|
||
Результат = ирОбщий.ВычислитьРазмерКаталогаЛкс(Каталог, ВключаяПодкаталоги);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПолучитьТекущуюДатуЛкс() Экспорт
|
||
|
||
Результат = ирОбщий.ПолучитьТекущуюДатуЛкс();
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ОчиститьКаталогТехножурналаЛкс(КаталогЖурнала, ВыводитьПредупрежденияИСообщения = Истина) Экспорт
|
||
|
||
ирОбщий.ОчиститьКаталогТехножурналаЛкс(КаталогЖурнала, , ВыводитьПредупрежденияИСообщения);
|
||
|
||
КонецПроцедуры // ОчиститьКаталогТехножурналаЛкс()
|
||
|
||
|
||
Процедура ВыполнитьЗапросЛкс(ТекстЗапроса) Экспорт
|
||
|
||
Запрос = Новый Запрос(ТекстЗапроса);
|
||
Запрос.Выполнить();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПереместитьФайлЛкс(ИмяИсточника, ИмяПриемника) Экспорт
|
||
|
||
ПереместитьФайл(ИмяИсточника, ИмяПриемника);
|
||
|
||
КонецПроцедуры // ПереместитьФайл()
|
||
|
||
Функция ЛиФайлСуществуетЛкс(ПолноеИмяФайла, выхДатаИзменения = Неопределено) Экспорт
|
||
|
||
Файл1 = Новый Файл(ПолноеИмяФайла);
|
||
ФайлНайден = Файл1.Существует();
|
||
Если ФайлНайден Тогда
|
||
выхДатаИзменения = Файл1.ПолучитьВремяИзменения();
|
||
КонецЕсли;
|
||
Возврат ФайлНайден;
|
||
|
||
КонецФункции // ЛиФайлСуществует()
|
||
|
||
// Выполняет текст алгоритма.
|
||
//
|
||
// Параметры:
|
||
// ТекстДляВыполнения – Строка;
|
||
// _АлгоритмОбъект - СправочникОбъект
|
||
// *СтруктураПараметров - Структура, *Неопределено.
|
||
//
|
||
Функция ВыполнитьАлгоритм(_ТекстДляВыполнения, _АлгоритмОбъект = Null, _Режим = Null,
|
||
_П0 = Null, _П1 = Null, _П2 = Null, _П3 = Null, _П4 = Null, _П5 = Null, _П6 = Null, _П7 = Null, _П8 = Null, _П9 = Null) Экспорт
|
||
|
||
Перем Результат;
|
||
Если Истина
|
||
И ирКэш.ЛиПортативныйРежимЛкс()
|
||
И ирПортативный.ЛиСерверныйМодульДоступенЛкс(Ложь)
|
||
Тогда
|
||
ПараметрыКоманды = Новый Структура("_ТекстДляВыполнения, _АлгоритмОбъект", _ТекстДляВыполнения, _АлгоритмОбъект);
|
||
ирПортативный.ВыполнитьСерверныйМетодЛкс("ВыполнитьАлгоритм", ПараметрыКоманды);
|
||
Иначе
|
||
Выполнить(_ТекстДляВыполнения);
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции // ПозиционныйМетод()
|
||
|
||
Процедура ВыполнитьАлгоритмБезРезультата(_ТекстДляВыполнения) Экспорт
|
||
|
||
Выполнить(_ТекстДляВыполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ВычислитьВыражение(Выражение) Экспорт
|
||
|
||
Возврат Вычислить(Выражение);
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаписатьОбъектXMLЛкс(ОбъектXML, ДополнительныеСвойства, РежимЗаписи = Неопределено, РежимПроведения = Неопределено, ОтключатьКонтрольЗаписи = Неопределено,
|
||
БезАвторегистрацииИзменений = Неопределено) Экспорт
|
||
|
||
Если Истина
|
||
И ирКэш.ЛиПортативныйРежимЛкс()
|
||
И ирПортативный.ЛиСерверныйМодульДоступенЛкс()
|
||
Тогда
|
||
ПараметрыКоманды = Новый Структура("ОбъектXML, ДополнительныеСвойства, РежимЗаписи, РежимПроведения, ОтключатьКонтрольЗаписи, БезАвторегистрацииИзменений",
|
||
ОбъектXML, ДополнительныеСвойства, РежимЗаписи, РежимПроведения, ОтключатьКонтрольЗаписи, БезАвторегистрацииИзменений);
|
||
ирПортативный.ВыполнитьСерверныйМетодЛкс("ЗаписатьОбъектXMLЛкс", ПараметрыКоманды);
|
||
ДополнительныеСвойства = ПараметрыКоманды.ДополнительныеСвойства;
|
||
ОбъектXML = ПараметрыКоманды.ОбъектXML;
|
||
Иначе
|
||
Объект = ирОбщий.ВосстановитьОбъектИзСтрокиXMLЛкс(ОбъектXML);
|
||
ирОбщий.ВосстановитьДополнительныеСвойстваОбъектаЛкс(Объект, ДополнительныеСвойства);
|
||
ирОбщий.ЗаписатьОбъектЛкс(Объект, Ложь, РежимЗаписи, РежимПроведения, ОтключатьКонтрольЗаписи, БезАвторегистрацииИзменений);
|
||
ДополнительныеСвойства = ирОбщий.СериализоватьДополнительныеСвойстваОбъектаЛкс(Объект);
|
||
ОбъектXML = ирОбщий.СохранитьОбъектВВидеСтрокиXMLЛкс(Объект);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура УдалитьОбъектЛкс(ХМЛ, СтруктураДополнительныхСвойств) Экспорт
|
||
|
||
Объект = ирОбщий.ВосстановитьОбъектИзСтрокиXMLЛкс(ХМЛ);
|
||
Объект.Прочитать();
|
||
ирОбщий.ВосстановитьДополнительныеСвойстваОбъектаЛкс(Объект, СтруктураДополнительныхСвойств);
|
||
//Объект.Удалить();
|
||
ирОбщий.УдалитьОбъектЛкс(Объект, Ложь);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура УстановитьПометкуУдаленияОбъектаЛкс(ОбъектXML, СтруктураДополнительныхСвойств, ЗначениеПометки = Истина, БезАвторегистрацииИзменений = Неопределено) Экспорт
|
||
|
||
Объект = ирОбщий.ВосстановитьОбъектИзСтрокиXMLЛкс(ОбъектXML);
|
||
Объект.Прочитать(); // Иначе объект будет модифицирован и возникнет ошибка
|
||
ирОбщий.ВосстановитьДополнительныеСвойстваОбъектаЛкс(Объект, СтруктураДополнительныхСвойств);
|
||
ирОбщий.УстановитьПометкуУдаленияОбъектаЛкс(Объект,, ЗначениеПометки, БезАвторегистрацииИзменений);
|
||
ДополнительныеСвойства = ирОбщий.СериализоватьДополнительныеСвойстваОбъектаЛкс(Объект);
|
||
ОбъектXML = ирОбщий.СохранитьОбъектВВидеСтрокиXMLЛкс(Объект);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПолучитьИмяКомпьютераЛкс() Экспорт
|
||
|
||
Если ирКэш.ЛиПортативныйРежимЛкс() Тогда
|
||
Результат = НСтр(СтрокаСоединенияИнформационнойБазы(), "Srvr");
|
||
Иначе
|
||
Результат = ИмяКомпьютера();
|
||
КонецЕсли;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ПолучитьИспользованиеСобытияЖурналаРегистрацииКакСтруктуру(ИмяСобытия) Экспорт
|
||
|
||
Результат = Новый Структура("Использование, ОписаниеИспользования");
|
||
|
||
ИспользованиеСобытия = ПолучитьИспользованиеСобытияЖурналаРегистрации(ИмяСобытия);
|
||
Результат.Использование = ИспользованиеСобытия.Использование;
|
||
|
||
Если ТипЗнч(ИспользованиеСобытия.ОписаниеИспользования) = Тип("Массив") И ИспользованиеСобытия.ОписаниеИспользования.Количество() > 0 Тогда
|
||
|
||
ОписаниеИспользования = Новый Массив();
|
||
|
||
Если ТипЗнч(ИспользованиеСобытия.ОписаниеИспользования[0]) = Тип("ОписаниеИспользованияСобытияДоступЖурналаРегистрации") Тогда
|
||
|
||
СтрокаКлючей = "Объект, ПоляРегистрации, ПоляДоступа";
|
||
|
||
ИначеЕсли ТипЗнч(ИспользованиеСобытия.ОписаниеИспользования[0]) = Тип("ОписаниеИспользованияСобытияОтказВДоступеЖурналаРегистрации") Тогда
|
||
|
||
СтрокаКлючей = "Объект, ПоляРегистрации";
|
||
|
||
Иначе
|
||
|
||
//ВызватьИсключение "Неизвестный тип " + ТипЗнч(ИспользованиеСобытия.ОписаниеИспользования[0]);
|
||
|
||
КонецЕсли;
|
||
|
||
Для Каждого ЭлементОписания Из ИспользованиеСобытия.ОписаниеИспользования Цикл
|
||
|
||
ЭлементМассива = Новый Структура(СтрокаКлючей);
|
||
ЗаполнитьЗначенияСвойств(ЭлементМассива, ЭлементОписания);
|
||
ОписаниеИспользования.Добавить(ЭлементМассива);
|
||
|
||
КонецЦикла;
|
||
|
||
Результат.ОписаниеИспользования = ОписаниеИспользования;
|
||
|
||
Иначе
|
||
|
||
Результат.ОписаниеИспользования = Неопределено;
|
||
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура УстановитьИспользованиеСобытияЖурналаРегистрацииПоСтруктуре(ИмяСобытия, пИспользованиеСобытия) Экспорт
|
||
|
||
ИспользованиеСобытия = Новый ИспользованиеСобытияЖурналаРегистрации;
|
||
ИспользованиеСобытия.Использование = пИспользованиеСобытия.Использование;
|
||
|
||
пОписаниеИспользования = Неопределено;
|
||
пИспользованиеСобытия.Свойство("ОписаниеИспользования", пОписаниеИспользования);
|
||
Если Истина
|
||
И ТипЗнч(пОписаниеИспользования) = Тип("Массив")
|
||
И пОписаниеИспользования.Количество() > 0
|
||
И (Ложь
|
||
Или ИмяСобытия = "_$Access$_.Access"
|
||
Или ИмяСобытия = "_$Access$_.AccessDenied") Тогда
|
||
|
||
ТипОписанияСтрокой = ?(ИмяСобытия = "_$Access$_.Access", "ОписаниеИспользованияСобытияДоступЖурналаРегистрации","ОписаниеИспользованияСобытияОтказВДоступеЖурналаРегистрации");
|
||
ОписаниеИспользования = Новый Массив();
|
||
Для Каждого пЭлементОписания Из пОписаниеИспользования Цикл
|
||
|
||
ЭлементОписания = Новый(ТипОписанияСтрокой);
|
||
ЗаполнитьЗначенияСвойств(ЭлементОписания, пЭлементОписания);
|
||
ОписаниеИспользования.Добавить(ЭлементОписания);
|
||
|
||
КонецЦикла;
|
||
|
||
ИспользованиеСобытия.ОписаниеИспользования = ОписаниеИспользования;
|
||
|
||
КонецЕсли;
|
||
|
||
УстановитьИспользованиеСобытияЖурналаРегистрации(ИмяСобытия, ИспользованиеСобытия)
|
||
|
||
КонецПроцедуры
|