//ирМобильный Перем ирМобильный Экспорт; //ирМобильный Перем ирОбщий Экспорт; //ирМобильный Перем ирСервер Экспорт; //ирМобильный Перем ирКэш Экспорт; //ирМобильный Перем ирПривилегированный Экспорт; #Если Клиент Тогда //////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ Перем мЗапрос Экспорт; Перем мРезультатыПоиска Экспорт; Перем мМетаданныеОбъекта Экспорт; Перем мКорневойТипОбъекта Экспорт; Перем мПутьКДаннымПоляНечеткогоСравнения; Перем мСтруктураКлючаПоиска; Перем мСтруктураПредставлений Экспорт; Перем мСтрокаРеквизитов; Перем мСписокРеквизитов; Перем мЗависимыеМетаданные; Перем мПостроительЗапросаОтбора; Перем мЗатронутыеЭлементыПВХ Экспорт; Перем МассивСтруктурУсекаемыхТипов Экспорт; //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ // <Описание процедуры> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // Функция ВыполнитьАвтокорректировку() Экспорт Если ВыполнятьВТранзакции Тогда НачатьТранзакцию(); КонецЕсли; ВыполнитьАнализ(); ВыполнитьОчисткуРегистров(); ВыполнитьКоррекциюПВХ(мЗатронутыеЭлементыПВХ); Если ВыполнятьВТранзакции Тогда ЗафиксироватьТранзакцию(); КонецЕсли; Возврат ВыполнитьАнализ(); КонецФункции // ВыполнитьАвтокорректировку() // <Описание процедуры> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // Функция ВыполнитьАнализ() Экспорт ЗатрагиваемыеЭлементыТекущегоПланаВидовХарактеристик = Новый ТаблицаЗначений; МассивСтруктурУсекаемыхТипов = Новый Массив; МассивТиповКУдалению = Новый Массив; Для Каждого УсекаемыйТип Из УсекаемыеТипы.Типы() Цикл МетаданныеТипа = Метаданные.НайтиПоТипу(УсекаемыйТип); Если МетаданныеТипа = Неопределено Тогда Сообщить("Примитивный тип """ + УсекаемыйТип + """ не будет учтен"); МассивТиповКУдалению.Добавить(УсекаемыйТип); Продолжить; КонецЕсли; СтруктураУсекаемогоТипа = Новый Структура; СтруктураУсекаемогоТипа.Вставить("Тип", УсекаемыйТип); СтруктураУсекаемогоТипа.Вставить("ТипЗапроса", Метаданные.НайтиПоТипу(УсекаемыйТип).ПолноеИмя()); МассивСтруктурУсекаемыхТипов.Добавить(СтруктураУсекаемогоТипа); КонецЦикла; УсекаемыеТипы = Новый ОписаниеТипов(УсекаемыеТипы, , МассивТиповКУдалению); // Регистры сведений НайтиПоРавенствуНовыхКлючейЗаписи(); // Планы видов характеристик ЗаполнитьТаблицуПВХ(); Результат = Истина И Не ПроблемныеПланыВидовХарактеристик.Количество() > 0 И Не ПроблемныеРегистры.Количество() > 0; Возврат Результат; КонецФункции // ВыполнитьАнализ() // <Описание процедуры> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // Процедура ВыполнитьОчисткуГруппыРегистра(СтрокаРегистра, СтрокаГруппы) Экспорт Если ВыполнятьВТранзакции Тогда НачатьТранзакцию(); КонецЕсли; МенеджерРегистра = РегистрыСведений[СтрокаРегистра.Имя]; ТаблицаЗаписей = ПолучитьПроблемныеЗаписиГруппыРегистра(СтрокаРегистра, СтрокаГруппы); Для Каждого СтрокаЗаписи Из ТаблицаЗаписей Цикл #Если Клиент Тогда ОбработкаПрерыванияПользователя(); #КонецЕсли НаборЗаписей = ирОбщий.ПолучитьНаборЗаписейПоКлючуЛкс("РегистрСведений." + СтрокаРегистра.Имя, СтрокаЗаписи); НаборЗаписей.Записать(); КонецЦикла; Если ВыполнятьВТранзакции Тогда ЗафиксироватьТранзакцию(); КонецЕсли; КонецПроцедуры // ВыполнитьОчисткуГруппыРегистра() // <Описание функции> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // // Возвращаемое значение: // – <Тип.Вид> – <описание значения> // <продолжение описания значения>; // <Значение2> – <Тип.Вид> – <описание значения> // <продолжение описания значения>. // Функция ПолучитьПроблемныеЗаписиГруппыРегистра(СтрокаРегистра, СтрокаГруппы) Экспорт Запрос = Новый Запрос; Запрос.Текст = СтрокаРегистра.ЗапросВыборкиСоставаГруппы; МетаРегистр = Метаданные.РегистрыСведений[СтрокаРегистра.Имя]; Для Каждого МетаИзмерение Из МетаРегистр.Измерения Цикл Запрос.УстановитьПараметр(МетаИзмерение.Имя, СтрокаГруппы[МетаИзмерение.Имя]); КонецЦикла; Если МетаРегистр.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда Запрос.УстановитьПараметр("Период", СтрокаГруппы["Период"]); КонецЕсли; Если МетаРегистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда Запрос.УстановитьПараметр("Регистратор", СтрокаГруппы["Регистратор"]); КонецЕсли; ТаблицаЗаписей = Запрос.Выполнить().Выгрузить(); Возврат ТаблицаЗаписей; КонецФункции // ПолучитьПроблемныеЗаписиГруппыРегистра() // <Описание процедуры> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // Процедура ВыполнитьОчисткуРегистра(СтрокаРегистра) Экспорт Если ВыполнятьВТранзакции Тогда НачатьТранзакцию(); КонецЕсли; мЗапрос.Текст = "ВЫБРАТЬ * ИЗ " + СтрокаРегистра.Имя; ГруппыТекущегоРегистра = мЗапрос.Выполнить().Выгрузить(); Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ГруппыТекущегоРегистра.Количество(), "Коррекция регистра " + СтрокаРегистра.Имя); Для Каждого СтрокаГруппы Из ГруппыТекущегоРегистра Цикл ирОбщий.ОбработатьИндикаторЛкс(Индикатор); ВыполнитьОчисткуГруппыРегистра(СтрокаРегистра, СтрокаГруппы); КонецЦикла; ирОбщий.ОсвободитьИндикаторПроцессаЛкс(); Если ВыполнятьВТранзакции Тогда ЗафиксироватьТранзакцию(); КонецЕсли; КонецПроцедуры // ВыполнитьОчисткуГруппРегистра() // <Описание процедуры> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // Процедура ВыполнитьОчисткуРегистров() Экспорт Если ВыполнятьВТранзакции Тогда НачатьТранзакцию(); КонецЕсли; Для Каждого СтрокаРегистра Из ПроблемныеРегистры Цикл ВыполнитьОчисткуРегистра(СтрокаРегистра); КонецЦикла; Если ВыполнятьВТранзакции Тогда ЗафиксироватьТранзакцию(); КонецЕсли; КонецПроцедуры // ВыполнитьОчисткуРегистров() Процедура НайтиПоРавенствуНовыхКлючейЗаписи() Экспорт ПроблемныеРегистры.Очистить(); ЭлементыТекущейГруппы.Очистить(); ГруппыТекущегоРегистра.Очистить(); ГруппыТекущегоРегистра.Колонки.Очистить(); мТекущаяГруппа = Неопределено; мСтруктураПредставлений = Новый Структура; мСтруктураПредставлений.Вставить("КоличествоЭлементовВГруппе", "Количество элементов"); мСтруктураПредставлений.Вставить("НомерГруппы", "Номер группы"); мСтруктураПредставлений.Вставить("ВывестиСостав", "Вывести состав"); мСтруктураПредставлений.Вставить("Период", "Период"); мСтруктураПредставлений.Вставить("Регистратор", "Регистратор"); мСтруктураПредставлений.Вставить("ОткрытьЗапись", "Открыть запись"); мСтруктураПредставлений.Вставить("Правильный", "Правильный"); мСтруктураПредставлений.Вставить("НомерСтроки", "Номер строки"); мСтруктураПредставлений.Вставить("Активность", "Активность"); мЗапрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Метаданные.РегистрыСведений.Количество(), "Регистры сведений"); Для Каждого МетаРегистр Из Метаданные.РегистрыСведений Цикл ирОбщий.ОбработатьИндикаторЛкс(Индикатор); ТекстВЫБРАТЬ = ""; ТекстСГРУППИРОВАТЬ = ""; ТекстГДЕ2 = ""; ВозможныПроблемы = Ложь; Для Каждого МетаИзмерение Из МетаРегистр.Измерения Цикл ИмяПоля = МетаИзмерение.Имя; ТекстПоля = "ВЫБОР КОГДА ЛОЖЬ"; Для Каждого СтруктураУсекаемогоТипа Из МассивСтруктурУсекаемыхТипов Цикл Если МетаИзмерение.Тип.СодержитТип(СтруктураУсекаемогоТипа.Тип) Тогда ТекстПоля = ТекстПоля + Символы.ПС + "ИЛИ (" + ИмяПоля + " ССЫЛКА " + СтруктураУсекаемогоТипа.ТипЗапроса + ")"; ВозможныПроблемы = Истина; КонецЕсли; КонецЦикла; ТекстПоля = ТекстПоля + Символы.ПС + "ТОГДА НЕОПРЕДЕЛЕНО"; ТекстПоля = ТекстПоля + Символы.ПС + "ИНАЧЕ " + ИмяПоля + Символы.ПС + " КОНЕЦ"; ТекстВЫБРАТЬ = ТекстВЫБРАТЬ + ", " + ТекстПоля + " КАК " + ИмяПоля; // запрещенные имена например "Соединение" так вызывают ошибку? ТекстГДЕ2 = ТекстГДЕ2 + " И " + ТекстПоля + " = &" + ИмяПоля; ТекстСГРУППИРОВАТЬ = ТекстСГРУППИРОВАТЬ + ", " + ТекстПоля; КонецЦикла; Если МетаРегистр.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда ИмяПоля = "Период"; ТекстПоля = ИмяПоля; ТекстВЫБРАТЬ = ТекстВЫБРАТЬ + ", " + ТекстПоля + " КАК " + ИмяПоля; // запрещенные имена например "Соединение" так вызывают ошибку? ТекстГДЕ2 = ТекстГДЕ2 + " И " + ТекстПоля + " = &" + ИмяПоля; ТекстСГРУППИРОВАТЬ = ТекстСГРУППИРОВАТЬ + ", " + ТекстПоля; КонецЕсли; Если МетаРегистр.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору Тогда ИмяПоля = "Регистратор"; ТекстПоля = ИмяПоля; ТекстВЫБРАТЬ = ТекстВЫБРАТЬ + ", " + ТекстПоля + " КАК " + ИмяПоля; // запрещенные имена например "Соединение" так вызывают ошибку? ТекстГДЕ2 = ТекстГДЕ2 + " И " + ТекстПоля + " = &" + ИмяПоля; ТекстСГРУППИРОВАТЬ = ТекстСГРУППИРОВАТЬ + ", " + ТекстПоля; КонецЕсли; Если Не ВозможныПроблемы Тогда Продолжить; КонецЕсли; ТекстСГРУППИРОВАТЬ = Сред(ТекстСГРУППИРОВАТЬ, 2); ТекстЗапросаПоиска = " |ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоЭлементовВГруппе" + ТекстВЫБРАТЬ + " |ПОМЕСТИТЬ " + МетаРегистр.Имя + " |ИЗ " + МетаРегистр.ПолноеИмя() + " КАК Регистр |СГРУППИРОВАТЬ ПО " + ТекстСГРУППИРОВАТЬ + " |ИМЕЮЩИЕ КОЛИЧЕСТВО(*) > 1 |"; мЗапрос.Текст = ТекстЗапросаПоиска; мЗапрос.Выполнить(); мЗапрос.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КоличествоГрупп ИЗ " + МетаРегистр.Имя; КоличествоГрупп = мЗапрос.Выполнить().Выгрузить()[0].КоличествоГрупп; Если КоличествоГрупп = 0 Тогда Продолжить; КонецЕсли; СтрокаРегистра = ПроблемныеРегистры.Добавить(); СтрокаРегистра.ЗапросВыборкиСоставаГруппы = " |ВЫБРАТЬ * |ИЗ " + МетаРегистр.ПолноеИмя() + " КАК Регистр |ГДЕ ИСТИНА " + ТекстГДЕ2 + " |"; СтрокаРегистра.Имя = МетаРегистр.Имя; СтрокаРегистра.КоличествоГрупп = КоличествоГрупп; КонецЦикла; ирОбщий.ОсвободитьИндикаторПроцессаЛкс(); КонецПроцедуры // НайтиПоРавенствуНовыхКлючейЗаписи() // <Описание процедуры> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // Процедура ЗаполнитьТаблицуПВХ() мЗатронутыеЭлементыПВХ = Новый ТаблицаЗначений; мЗатронутыеЭлементыПВХ.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка")); мЗатронутыеЭлементыПВХ.Колонки.Добавить("Ссылка"); Для Каждого МетаПВХ Из Метаданные.ПланыВидовХарактеристик Цикл Выборка = ирОбщий.ПолучитьМенеджерЛкс(МетаПВХ).Выбрать(); Пока Выборка.Следующий() Цикл ОбъектПВХ = Выборка.ПолучитьОбъект(); Затрагивается = Ложь; Для Каждого СтруктураУсекаемогоТипа Из МассивСтруктурУсекаемыхТипов Цикл Если ОбъектПВХ.ТипЗначения.СодержитТип(СтруктураУсекаемогоТипа.Тип) Тогда Затрагивается = Истина; Прервать; КонецЕсли; КонецЦикла; Если Затрагивается Тогда СтрокаЭлементаПВХ = мЗатронутыеЭлементыПВХ.Добавить(); СтрокаЭлементаПВХ.Имя = МетаПВХ.Имя; СтрокаЭлементаПВХ.Ссылка = Выборка.Ссылка; КонецЕсли; КонецЦикла; КонецЦикла; ИтогоПВХ = мЗатронутыеЭлементыПВХ.Скопировать(); ИтогоПВХ.Колонки.Добавить("КоличествоЗатрагиваемыхЭлементов"); ИтогоПВХ.ЗаполнитьЗначения(1, "КоличествоЗатрагиваемыхЭлементов"); ИтогоПВХ.Свернуть("Имя", "КоличествоЗатрагиваемыхЭлементов"); ПроблемныеПланыВидовХарактеристик.Загрузить(ИтогоПВХ); КонецПроцедуры // ЗаполнитьТаблицуПВХ() Процедура ВыполнитьКоррекциюПВХ(ТаблицаСсылокПВХ) Экспорт Если ВыполнятьВТранзакции Тогда НачатьТранзакцию(); КонецЕсли; ИндикаторПроцесса = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ТаблицаСсылокПВХ.Количество(), "Коррекция элементов ПВХ"); Для Каждого СтрокаЭлемента Из ТаблицаСсылокПВХ Цикл #Если Клиент Тогда ирОбщий.ОбработатьИндикаторЛкс(ИндикаторПроцесса); #КонецЕсли ОбъектПВХ = СтрокаЭлемента.Ссылка.ПолучитьОбъект(); ИсходныйТипЗначения = Новый ОписаниеТипов(ОбъектПВХ.ТипЗначения); ДобавляемыеТипы = Новый Массив; // НовыйТипЗначения = Новый ОписаниеТипов(ИсходныйТипЗначения, ДобавляемыеТипы, УсекаемыеТипы.Типы()); Если НовыйТипЗначения.Типы().Количество() = 0 Тогда Сообщить("Автоматическая модификация типа значения элемента """ + ОбъектПВХ + """ невозможна, т.к. он становится пустым", СтатусСообщения.Важное); Продолжить; КонецЕсли; ОбъектПВХ.ТипЗначения = НовыйТипЗначения; ОбъектПВХ.ОбменДанными.Загрузка = ОтключатьКонтрольЗаписи; Попытка ОбъектПВХ.Записать(); Сообщить("Модифицирован тип значения элемента """ + ОбъектПВХ + """", СтатусСообщения.Информация); Сообщить(Символы.Таб + "Старый: " + ИсходныйТипЗначения); Сообщить(Символы.Таб + " Новый: " + ОбъектПВХ.ТипЗначения); Исключение Сообщить("Ошибка при коррекции """ + ОбъектПВХ + """: " + ОписаниеОшибки(), СтатусСообщения.Важное); КонецПопытки; КонецЦикла; ирОбщий.ОсвободитьИндикаторПроцессаЛкс(); Если ВыполнятьВТранзакции Тогда ЗафиксироватьТранзакцию(); КонецЕсли; КонецПроцедуры // ВыполнитьКоррекциюПВХ() // <Описание функции> // // Параметры: // <Параметр1> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>; // <Параметр2> – <Тип.Вид> – <описание параметра> // <продолжение описания параметра>. // // Возвращаемое значение: // – <Тип.Вид> – <описание значения> // <продолжение описания значения>; // <Значение2> – <Тип.Вид> – <описание значения> // <продолжение описания значения>. // Процедура ЗаполнитьПоРазницеМеждуКонфигурациями(ПолноеИмяФайла = "") Экспорт Если Не ЗначениеЗаполнено(ПолноеИмяФайла) Тогда ВременныйФайл = Новый ФАйл(ПолучитьИмяВременногоФайла("CF")); ПолноеИмяФайла = ВременныйФайл.ПолноеИмя; Состояние("Выгружаем основную конфигурацию"); ЗапуститьСистему("DESIGNER /DumpCfg """ + ПолноеИмяФайла + """", Истина); //ВременныйФайл = Новый Файл("Z:\Система2ис.cf"); // для отладки Если Не ВременныйФайл.Существует() Тогда Сообщить("Не удалось выгрузить файл конфигурации. Возможно был занят конфигуратор.", СтатусСообщения.Внимание); Возврат; КонецЕсли; КонецЕсли; ФайлКонфигурации = Новый Файл(ПолноеИмяФайла); ВременныйКаталог = ПолучитьИмяВременногоФайла(); СтрокаСоединенияВременнойБазы = "File=""" + ВременныйКаталог + """;"; Состояние("Создаем временную базу"); // Антибаг платформы 8.2.14 http://partners.v8.1c.ru/forum/thread.jsp?id=952390#952390 //ЗапуститьСистему("CREATEINFOBASE " + СтрокаСоединенияВременнойБазы + " /UseTemplate " + ФайлКонфигурации.ПолноеИмя, Истина); СтрокаКоманды = """" + КаталогПрограммы() + "1cv8.exe"" " + "CREATEINFOBASE File=""" + ВременныйКаталог + """;"; // Антибаг платформы http://partners.v8.1c.ru/forum/thread.jsp?id=1076785#1076785 Если ирКэш.Получить().ИДВерсииПлатформы < "802018" Тогда СтрокаКоманды = СтрокаКоманды + "/"; КонецЕсли; СтрокаКоманды = СтрокаКоманды + " /UseTemplate """ + ФайлКонфигурации.ПолноеИмя + """"; //ирКэш.Получить().ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения(СтрокаКоманды); РезультатКоманды = ирКэш.Получить().ПолучитьТекстРезультатаКомандыСистемы(СтрокаКоманды); КомСоединитель = Новый COMОбъект("v" + ирКэш.Получить().ИДВерсииПлатформы + ".ComConnector"); КомСоединение = КомСоединитель.Connect(СтрокаСоединенияВременнойБазы); СсылочныеТипыМетаданных = Новый Массив; СсылочныеТипыМетаданных.Добавить("Справочники"); СсылочныеТипыМетаданных.Добавить("Документы"); СсылочныеТипыМетаданных.Добавить("ПланыВидовХарактеристик"); СсылочныеТипыМетаданных.Добавить("Перечисления"); СсылочныеТипыМетаданных.Добавить("ПланыВидовХарактеристик"); СсылочныеТипыМетаданных.Добавить("ПланыСчетов"); СсылочныеТипыМетаданных.Добавить("ПланыОбмена"); СсылочныеТипыМетаданных.Добавить("Задачи"); СсылочныеТипыМетаданных.Добавить("БизнесПроцессы"); МассивУдаленныхТипов = Новый Массив(); НовыеМетаданные = КомСоединение.Метаданные; Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(СсылочныеТипыМетаданных.Количество()); Для Каждого ИмяКоллекции Из СсылочныеТипыМетаданных Цикл ирОбщий.ОбработатьИндикаторЛкс(Индикатор); КоллекцияТекущая = Метаданные[ИмяКоллекции]; КоллекцияНовая = НовыеМетаданные[ИмяКоллекции]; Для Каждого Метаобъект Из КоллекцияТекущая Цикл Если КоллекцияНовая.Найти(Метаобъект.Имя) = Неопределено Тогда МассивУдаленныхТипов.Добавить(Тип(СтрЗаменить(Метаобъект.ПолноеИмя(), ".", "Ссылка."))); КонецЕсли; КонецЦикла; КонецЦикла; ирОбщий.ОсвободитьИндикаторПроцессаЛкс(); КомСоединитель = Неопределено; КомСоединение = Неопределено; НовыеМетаданные = Неопределено; КоллекцияНовая = Неопределено; УсекаемыеТипы = Новый ОписаниеТипов(МассивУдаленныхТипов); Если ВременныйФайл <> Неопределено Тогда УдалитьФайлы(ВременныйФайл.ПолноеИмя); КонецЕсли; УдалитьФайлы(ВременныйКаталог); КонецПроцедуры // ЗаполнитьПоРазницеМеждуКонфигурациями() //ирМобильный #Если Клиент Тогда //ирМобильный Контейнер = Новый Структура(); //ирМобильный Оповестить("ирПолучитьБазовуюФорму", Контейнер); //ирМобильный Если Не Контейнер.Свойство("ирМобильный", ирМобильный) Тогда //ирМобильный ПолноеИмяФайлаБазовогоМодуля = ВосстановитьЗначение("ирПолноеИмяФайлаОсновногоМодуля"); //ирМобильный ирМобильный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля); //ирМобильный КонецЕсли; //ирМобильный ирОбщий = ирМобильный.ПолучитьОбщийМодульЛкс("ирОбщий"); //ирМобильный ирКэш = ирМобильный.ПолучитьОбщийМодульЛкс("ирКэш"); //ирМобильный ирСервер = ирМобильный.ПолучитьОбщийМодульЛкс("ирСервер"); //ирМобильный ирПривилегированный = ирМобильный.ПолучитьОбщийМодульЛкс("ирПривилегированный"); //ирМобильный #КонецЕсли мЗапрос = Новый Запрос; ЗаписьНаСервере = ирОбщий.ПолучитьРежимЗаписиНаСервереПоУмолчаниюЛкс(); #КонецЕсли