1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-12-12 09:04:01 +02:00

Merge pull request #150 from bia-technologies/feature/async-install-addin

Асинхронная установка компонент
This commit is contained in:
Koryakin Aleksey 2023-09-03 22:04:53 +03:00 committed by GitHub
commit da795febd6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 316 additions and 203 deletions

View File

@ -0,0 +1,64 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Процедура ВызватьОбработчик(Обработчик, Результат = Неопределено) Экспорт
Если Обработчик <> Неопределено Тогда
ВыполнитьОбработкуОповещения(Обработчик, Результат);
КонецЕсли;
КонецПроцедуры
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено) Экспорт
Обработчик = СледующийОбработчик(ПараметрыИсполнения);
ЮТЛогирование.Отладка("Вызов обработчика исполнителя: " + Обработчик.ИмяПроцедуры);
ВызватьОбработчик(Обработчик, Результат);
КонецПроцедуры
Функция СледующийОбработчик(ПараметрыИсполнения) Экспорт
ПараметрыИсполнения.ИндексСледующегоОбработчика = ПараметрыИсполнения.ИндексСледующегоОбработчика + 1;
Обработчик = ПараметрыИсполнения.Цепочка[ПараметрыИсполнения.ИндексСледующегоОбработчика];
ЮТЛогирование.Отладка("Следующий обработчик исполнителя: " + Обработчик.ИмяПроцедуры);
Возврат Обработчик;
КонецФункции
Процедура ДобавитьОбработчикЦепочки(ПараметрыИсполнения, Модуль, ИмяМетода) Экспорт
Обработчик = Новый ОписаниеОповещения(ИмяМетода, Модуль, ПараметрыИсполнения);
ПараметрыИсполнения.Цепочка.Добавить(Обработчик);
КонецПроцедуры
Функция ЦепочкаАсинхроннойОбработки() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("Цепочка", Новый Массив());
Параметры.Вставить("ИндексСледующегоОбработчика", -1);
Возврат Параметры;
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cb3274e3-1931-4354-be2c-7ad3e56b3042">
<name>ЮТАсинхроннаяОбработкаСлужебныйКлиент</name>
<synonym>
<key>ru</key>
<value>Асинхронная обработка служебный</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -33,7 +33,7 @@
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСохранитьКодВозврата");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗавершить");
ВызватьСледующийОбработчик(ПараметрыИсполнения);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыИсполнения);
КонецПроцедуры
@ -47,25 +47,15 @@
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикВыполнитьТестирование");
ПараметрыИсполнения.Цепочка.Добавить(ОбработчикЗавершения);
ВызватьСледующийОбработчик(ПараметрыИсполнения);
КонецПроцедуры
Процедура ВызватьОбработчик(Обработчик, Результат = Неопределено) Экспорт
Если Обработчик <> Неопределено Тогда
ВыполнитьОбработкуОповещения(Обработчик, Результат);
КонецЕсли;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыИсполнения);
КонецПроцедуры
Функция ПараметрыИсполнения() Экспорт
Параметры = Новый Структура();
Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
Параметры.Вставить("АргументыЗапуска");
Параметры.Вставить("ПараметрыЗапуска");
Параметры.Вставить("Цепочка", Новый Массив());
Параметры.Вставить("ИндексСледующегоОбработчика", -1);
Параметры.Вставить("ИсполняемыеТестовыеМодули");
Параметры.Вставить("РезультатыТестирования");
@ -137,7 +127,7 @@
Процедура ОбработчикЗагрузитьПараметры(Результат, ДополнительныеПараметры) Экспорт
Обработчик = СледующийОбработчик(ДополнительныеПараметры);
Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ДополнительныеПараметры);
ЮТПараметрыЗапуска.ПараметрыЗапуска(ДополнительныеПараметры.АргументыЗапуска, Обработчик);
КонецПроцедуры
@ -150,7 +140,7 @@
Возврат;
КонецЕсли;
ВызватьСледующийОбработчик(ДополнительныеПараметры);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
@ -158,7 +148,7 @@
ЮТСобытия.Инициализация(ДополнительныеПараметры.ПараметрыЗапуска);
ВызватьСледующийОбработчик(ДополнительныеПараметры);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
@ -179,7 +169,7 @@
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули);
ДополнительныеПараметры.ИсполняемыеТестовыеМодули = ИсполняемыеТестовыеМодули;
ВызватьСледующийОбработчик(ДополнительныеПараметры, ИсполняемыеТестовыеМодули);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры, ИсполняемыеТестовыеМодули);
КонецПроцедуры
@ -199,17 +189,17 @@
ЮТСобытия.ПослеВыполненияТестов(РезультатыТестирования);
ДополнительныеПараметры.РезультатыТестирования = РезультатыТестирования;
ВызватьСледующийОбработчик(ДополнительныеПараметры, РезультатыТестирования);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры, РезультатыТестирования);
КонецПроцедуры
Процедура ОбработчикСохранитьОтчет(Результат, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ДополнительныеПараметры.ПараметрыЗапуска.reportPath) Тогда
Обработчик = СледующийОбработчик(ДополнительныеПараметры);
Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ДополнительныеПараметры);
ЮТОтчет.СформироватьОтчет(ДополнительныеПараметры.РезультатыТестирования, ДополнительныеПараметры.ПараметрыЗапуска, Обработчик);
Иначе
ВызватьСледующийОбработчик(ДополнительныеПараметры);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
@ -217,7 +207,7 @@
Процедура ОбработчикСохранитьКодВозврата(Результат, ДополнительныеПараметры) Экспорт
ЗаписатьКодВозврата(ДополнительныеПараметры.РезультатыТестирования, ДополнительныеПараметры.ПараметрыЗапуска);
ВызватьСледующийОбработчик(ДополнительныеПараметры);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
@ -236,8 +226,8 @@
Процедура ОбработчикПодключитьКомпоненты(Результат, ДополнительныеПараметры) Экспорт
ЮТКомпонентыКлиент.ТихаяУстановкаКомпонент();
ВызватьСледующийОбработчик(ДополнительныеПараметры);
Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ДополнительныеПараметры);
ЮТКомпонентыКлиент.ТихаяУстановкаКомпонент(Обработчик);
КонецПроцедуры
@ -262,28 +252,6 @@
#КонецОбласти
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено)
Обработчик = СледующийОбработчик(ПараметрыИсполнения);
ЮТЛогирование.Отладка("Вызов обработчика исполнителя: " + Обработчик.ИмяПроцедуры);
ВыполнитьОбработкуОповещения(Обработчик, Результат);
КонецПроцедуры
Функция СледующийОбработчик(ПараметрыИсполнения)
Если ТипЗнч(ПараметрыИсполнения) = Тип("ОписаниеОповещения") Тогда
Возврат ПараметрыИсполнения;
КонецЕсли;
ПараметрыИсполнения.ИндексСледующегоОбработчика = ПараметрыИсполнения.ИндексСледующегоОбработчика + 1;
Обработчик = ПараметрыИсполнения.Цепочка[ПараметрыИсполнения.ИндексСледующегоОбработчика];
ЮТЛогирование.Отладка("Следующий обработчик исполнителя: " + Обработчик.ИмяПроцедуры);
Возврат Обработчик;
КонецФункции
Процедура ДобавитьОбработчикЦепочки(ПараметрыИсполнения, ИмяМетода)
Обработчик = Новый ОписаниеОповещения(ИмяМетода, ЭтотОбъект, ПараметрыИсполнения, "ОбработчикОшибки", ЭтотОбъект);

View File

@ -18,28 +18,49 @@
#Область СлужебныйПрограммныйИнтерфейс
Функция ТихаяУстановкаКомпонент() Экспорт
Процедура ТихаяУстановкаКомпонент(ОбработчикЗавершения) Экспорт
Успешно = Истина;
#Если Клиент И НЕ ВебКлиент Тогда
ПараметрыТихойУстановки = ПараметрыТихойУстановки();
ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыПауза());
Компоненты = ЮТОбщий.ЗначениеВМассиве(ЮТКомпоненты.ОписаниеКомпонентыПауза());
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ДобавитьОбработчикЦепочки(ПараметрыТихойУстановки,
ЭтотОбъект,
"УстановитьПараметрыОкружения");
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ДобавитьОбработчикЦепочки(ПараметрыТихойУстановки,
ЭтотОбъект,
"ТихаяУстановкаВнешнихКомпонент");
Для Каждого Компонента Из Компоненты Цикл
ТихаяУстановкаВнешнейКомпоненты(Компонента.ИмяМакета);
КонецЦикла;
#КонецЕсли
ПараметрыТихойУстановки.Цепочка.Добавить(ОбработчикЗавершения);
Возврат Успешно;
Обработчик = ЮТАсинхроннаяОбработкаСлужебныйКлиент.СледующийОбработчик(ПараметрыТихойУстановки);
НачатьПолучениеРабочегоКаталогаДанныхПользователя(Обработчик);
КонецФункции
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ТихаяУстановкаВнешнейКомпоненты(ИмяМакета)
Функция ПараметрыТихойУстановки()
ПараметрыТихойУстановки = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
ПараметрыТихойУстановки.Вставить("Компоненты", Новый Массив());
ПараметрыТихойУстановки.Вставить("РабочийКаталог", "");
ПараметрыТихойУстановки.Вставить("ОперационнаяСистема", "");
ПараметрыТихойУстановки.Вставить("Архитектура", "");
ПараметрыТихойУстановки.Вставить("ДанныеРеестра", "");
ПараметрыТихойУстановки.Вставить("ИзмененРеестр", Ложь);
Возврат ПараметрыТихойУстановки;
КонецФункции
Процедура УстановитьПараметрыОкружения(Результат, ПараметрыТихойУстановки) Экспорт
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Результат, "..", "..", "..");
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT");
ПараметрыТихойУстановки.РабочийКаталог = КаталогКомпонент;
Информация = Новый СистемнаяИнформация();
ОперационнаяСистема = Неопределено;
Архитектура = Неопределено;
@ -47,6 +68,7 @@
Linux = "Linux";
Windows = "Windows";
MacOS = "MacOS";
x86 = "i386";
x64 = "x86_64";
@ -71,43 +93,90 @@
ОперационнаяСистема = MacOS;
Архитектура = x64;
Иначе
ВызватьИсключение "Неподдерживаемый тип платформы";
ЮТИсполнительКлиент.ОбработкаОшибки("Неподдерживаемый тип платформы");
КонецЕсли;
ДанныеФайла = ЮТКомпонентыВызовСервера.ФайлКомпоненты(ИмяМакета, ОперационнаяСистема, Архитектура);
Путь = РабочийКаталогДанныхПользователя();
КорневойКаталог = ЮТФайлы.ОбъединитьПути(Путь, "..", "..", "..");
КаталогКомпонент = ЮТФайлы.ОбъединитьПути(КорневойКаталог, "ExtCompT");
ФайлРеестра = ЮТФайлы.ОбъединитьПути(КаталогКомпонент, "registry.xml");
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(КаталогКомпонент, ДанныеФайла.ИмяФайла);
ДанныеФайла.Данные.Записать(ФайлКомпоненты);
ЗаписатьВРеестр(ФайлРеестра, ДанныеФайла.ИмяФайла);
ПараметрыТихойУстановки.ОперационнаяСистема = ОперационнаяСистема;
ПараметрыТихойУстановки.Архитектура = Архитектура;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки);
КонецПроцедуры
Процедура ЗаписатьВРеестр(ФайлРеестра, ИмяФайла)
Процедура ПрочитатьФайлRegistry(ПараметрыТихойУстановки) Экспорт
Данные = Новый ДвоичныеДанные(ФайлРеестра);
Текст = ПолучитьСтрокуИзДвоичныхДанных(Данные);
#Если ВебКлиент Тогда
ЮТИсполнительКлиент.ОбработкаОшибки(ЮТОбщий.МетодНеДоступен("ЮТКомпонентыКлиент.ПрочитатьФайлRegistry"));
Возврат;
#Иначе
ФайлРеестра = ЮТФайлы.ОбъединитьПути(ПараметрыТихойУстановки.РабочийКаталог, "registry.xml");
Чтение = Новый ЧтениеТекста(ФайлРеестра);
Данные = Чтение.Прочитать();
Чтение.Закрыть();
ПараметрыТихойУстановки.ДанныеРеестра = Данные;
Если СтрНайти(Текст, "<component") = 0 Тогда // Файл пустой
Текст = СтрШаблон("<?xml version=""1.0"" encoding=""UTF-8""?>
#КонецЕсли
КонецПроцедуры
Процедура ЗаписатьФайлRegistry(ПараметрыТихойУстановки) Экспорт
#Если ВебКлиент Тогда
ЮТИсполнительКлиент.ОбработкаОшибки(ЮТОбщий.МетодНеДоступен("ЮТКомпонентыКлиент.ЗаписатьФайлRegistry"));
Возврат;
#Иначе
Если ПараметрыТихойУстановки.ИзмененРеестр Тогда
ФайлРеестра = ЮТФайлы.ОбъединитьПути(ПараметрыТихойУстановки.РабочийКаталог, "registry.xml");
Запись = Новый ЗаписьТекста(ФайлРеестра);
Запись.Записать(ПараметрыТихойУстановки.ДанныеРеестра);
Запись.Закрыть();
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Процедура ТихаяУстановкаВнешнихКомпонент(Результат, ПараметрыТихойУстановки) Экспорт
ПрочитатьФайлRegistry(ПараметрыТихойУстановки);
Для Каждого Компонента Из ПараметрыТихойУстановки.Компоненты Цикл
ТихаяУстановкаВнешнейКомпоненты(Компонента, ПараметрыТихойУстановки);
КонецЦикла;
ЗаписатьФайлRegistry(ПараметрыТихойУстановки);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыТихойУстановки);
КонецПроцедуры
Процедура ТихаяУстановкаВнешнейКомпоненты(Компонента, Параметры) Экспорт
ДанныеФайла = ЮТКомпонентыВызовСервера.ФайлКомпоненты(Компонента.ИмяМакета, Параметры.ОперационнаяСистема, Параметры.Архитектура);
Если ЗаписатьВРеестр(Параметры.ДанныеРеестра, ДанныеФайла.ИмяФайла) Тогда
Параметры.ИзмененРеестр = Истина;
КонецЕсли;
ФайлКомпоненты = ЮТФайлы.ОбъединитьПути(Параметры.РабочийКаталог, ДанныеФайла.ИмяФайла);
ДанныеФайла.Данные.Записать(ФайлКомпоненты);
КонецПроцедуры
Функция ЗаписатьВРеестр(ДанныеРеестра, ИмяФайла)
Если СтрНайти(ДанныеРеестра, "<component") = 0 Тогда // Файл пустой
ДанныеРеестра = СтрШаблон("<?xml version=""1.0"" encoding=""UTF-8""?>
|<registry xmlns=""http://v8.1c.ru/8.2/addin/registry"">
| <component path=""%1"" type=""native""/>
|</registry>", ИмяФайла);
ИначеЕсли СтрНайти(Текст, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрированна
Возврат;
ИначеЕсли СтрНайти(ДанныеРеестра, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрированна
Возврат Ложь;
Иначе // Добавляем компоненту
Запись = СтрШаблон(" <component path=""%1"" type=""native""/>", ИмяФайла);
Текст = СтрЗаменить(Текст, "</registry>", Запись + Символы.ПС + "</registry>");
ДанныеРеестра = СтрЗаменить(ДанныеРеестра, "</registry>", Запись + Символы.ПС + "</registry>");
КонецЕсли;
Данные = ПолучитьДвоичныеДанныеИзСтроки(Текст, КодировкаТекста.UTF8, Истина);
Данные.Записать(ФайлРеестра);
Возврат Истина;
КонецПроцедуры
КонецФункции
#КонецОбласти

View File

@ -85,7 +85,7 @@
ДанныеОтчета.Записать(ИмяФайлаОтчета);
КонецЕсли;
ЮТИсполнительКлиент.ВызватьОбработчик(Параметры.Обработчик);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Параметры.Обработчик);
КонецПроцедуры
@ -98,7 +98,7 @@
ИмяФайла = ПутьКОтчету;
КонецЕсли;
ЮТИсполнительКлиент.ВызватьОбработчик(Параметры.Обработчик, ИмяФайла);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Параметры.Обработчик, ИмяФайла);
КонецПроцедуры

View File

@ -69,7 +69,7 @@
Параметры = ЮТФабрика.ПараметрыЗапуска();
Если Не ЗначениеЗаполнено(ПараметрыЗапускаСтрокой) Тогда
ЮТИсполнительКлиент.ВызватьОбработчик(Обработчик, Параметры);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик, Параметры);
Возврат Параметры;
КонецЕсли;
@ -111,7 +111,7 @@
КонецЕсли;
ЮТИсполнительКлиент.ВызватьОбработчик(Обработчик, Параметры);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик, Параметры);
Возврат Параметры;

View File

@ -165,7 +165,7 @@
Процедура ПолучитьАтрибутФайла(Результат, Параметры) Экспорт
Если НЕ Результат Тогда
ВыполнитьОбработкуОповещения(Параметры.Обработчик, Параметры.ЗначениеПоУмолчанию);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Параметры.Обработчик, Параметры.ЗначениеПоУмолчанию);
Возврат;
КонецЕсли;

View File

@ -49,6 +49,7 @@
<commonModules>CommonModule.МокитоОбучение</commonModules>
<commonModules>CommonModule.МокитоПроверки</commonModules>
<commonModules>CommonModule.МокитоСлужебный</commonModules>
<commonModules>CommonModule.ЮТАсинхроннаяОбработкаСлужебныйКлиент</commonModules>
<commonModules>CommonModule.ЮТест</commonModules>
<commonModules>CommonModule.ЮТЗапросы</commonModules>
<commonModules>CommonModule.ЮТЗапросыВызовСервера</commonModules>

View File

@ -74,6 +74,7 @@
<objectAutonumerationMode>NotAutoFree</objectAutonumerationMode>
<modalityUseMode>DontUse</modalityUseMode>
<synchronousExtensionAndAddInCallUseMode>DontUse</synchronousExtensionAndAddInCallUseMode>
<synchronousPlatformExtensionAndAddInCallUseMode>DontUse</synchronousPlatformExtensionAndAddInCallUseMode>
<compatibilityMode>8.3.21</compatibilityMode>
<defaultConstantsForm>CommonForm.ОбщиеНастройки</defaultConstantsForm>
<languages uuid="d5fb342e-0c73-4410-8517-8ce7ee20e8bd">
@ -91,199 +92,199 @@
<subsystems>Subsystem.Финансы</subsystems>
<subsystems>Subsystem.ТоварныеЗапасы</subsystems>
<subsystems>Subsystem.Интеграция</subsystems>
<styleItems>StyleItem.ЦветТекстаСущественныхИзмененийДанных</styleItems>
<styleItems>StyleItem.ЦветТекстаВажнойИнформации</styleItems>
<styleItems>StyleItem.ЦветТекстаНормальногоСостояния</styleItems>
<styleItems>StyleItem.ЦветТекстаОшибочногоСостояния</styleItems>
<styleItems>StyleItem.ЦветТекстаСущественныхИзмененийДанных</styleItems>
<styleItems>StyleItem.ШрифтВажнойИнформации</styleItems>
<styleItems>StyleItem.ЦветТекстаВажнойИнформации</styleItems>
<commonPictures>CommonPicture.ВыделитьВажное</commonPictures>
<commonPictures>CommonPicture.КоллекцияВидыАктивныхПользователей</commonPictures>
<commonPictures>CommonPicture.КоллекцияВидыСобытийЖурналаРегистрации</commonPictures>
<commonPictures>CommonPicture.КоллекцияДляПомеченныхНаУдалениеОбъектов</commonPictures>
<commonPictures>CommonPicture.ОткрытьХранимыйФайл</commonPictures>
<commonPictures>CommonPicture.ОтправитьСМС</commonPictures>
<commonPictures>CommonPicture.ПодсистемаЗакупки</commonPictures>
<commonPictures>CommonPicture.ПодсистемаПредприятие</commonPictures>
<commonPictures>CommonPicture.ПодсистемаПродажи</commonPictures>
<commonPictures>CommonPicture.ПодсистемаТоварныеЗапасы</commonPictures>
<commonPictures>CommonPicture.ПодсистемаФинансы</commonPictures>
<commonPictures>CommonPicture.КоллекцияВидыАктивныхПользователей</commonPictures>
<commonPictures>CommonPicture.КоллекцияВидыСобытийЖурналаРегистрации</commonPictures>
<commonPictures>CommonPicture.КоллекцияДляПомеченныхНаУдалениеОбъектов</commonPictures>
<commonPictures>CommonPicture.Позвонить</commonPictures>
<commonPictures>CommonPicture.ПолнотекстовыйПоискДалее</commonPictures>
<commonPictures>CommonPicture.ПолнотекстовыйПоискНазад</commonPictures>
<commonPictures>CommonPicture.ОткрытьХранимыйФайл</commonPictures>
<commonPictures>CommonPicture.ВыделитьВажное</commonPictures>
<commonPictures>CommonPicture.ПроверитьПочту</commonPictures>
<commonPictures>CommonPicture.СписокЗаказов</commonPictures>
<commonPictures>CommonPicture.Позвонить</commonPictures>
<commonPictures>CommonPicture.ШтрихКод</commonPictures>
<commonPictures>CommonPicture.ОтправитьСМС</commonPictures>
<sessionParameters>SessionParameter.ТекущийПользователь</sessionParameters>
<sessionParameters>SessionParameter.ЯщикIMAP</sessionParameters>
<roles>Role.Администратор</roles>
<roles>Role.МенеджерПоЗакупкам</roles>
<roles>Role.МенеджерПоПродажам</roles>
<roles>Role.Продавец</roles>
<roles>Role.Помощник</roles>
<roles>Role.Продавец</roles>
<commonTemplates>CommonTemplate.ДрайверСканераШтрихкодов</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодовWindows32</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодовWindows64</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодовLinux32</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодовLinux64</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодовWindows32</commonTemplates>
<commonTemplates>CommonTemplate.КомпонентаПечатиШтрихкодовWindows64</commonTemplates>
<filterCriteria>FilterCriterion.ДокументыКонтрагента</filterCriteria>
<commonModules>CommonModule.РаботаСТорговымОборудованием</commonModules>
<commonModules>CommonModule.РаботаСПолнотекстовымПоиском</commonModules>
<commonModules>CommonModule.РаботаСХранилищемОбщихНастроек</commonModules>
<commonModules>CommonModule.РегламентныеЗаданияАгрегатов</commonModules>
<commonModules>CommonModule.СервисныеМеханизмы</commonModules>
<commonModules>CommonModule.РаботаСПочтой</commonModules>
<commonModules>CommonModule.РаботаСПочтойВызовСервера</commonModules>
<commonModules>CommonModule.ГеопозиционированиеКлиент</commonModules>
<commonModules>CommonModule.ГеопозиционированиеСервер</commonModules>
<commonModules>CommonModule.Интеграция</commonModules>
<commonModules>CommonModule.ИнтеграцияМагазин</commonModules>
<commonModules>CommonModule.ОбменМобильныеОбщее</commonModules>
<commonModules>CommonModule.ОбменМобильныеПереопределяемый</commonModules>
<commonModules>CommonModule.Пользователи</commonModules>
<commonModules>CommonModule.РаботаСПанельюЗадач</commonModules>
<commonModules>CommonModule.Помощник</commonModules>
<commonModules>CommonModule.ПомощникКлиент</commonModules>
<commonModules>CommonModule.РаботаСИсториейДанных</commonModules>
<commonModules>CommonModule.ГеопозиционированиеКлиент</commonModules>
<commonModules>CommonModule.ГеопозиционированиеСервер</commonModules>
<commonModules>CommonModule.РаботаСПанельюЗадач</commonModules>
<commonModules>CommonModule.РаботаСПолнотекстовымПоиском</commonModules>
<commonModules>CommonModule.РаботаСПочтой</commonModules>
<commonModules>CommonModule.РаботаСПочтойВызовСервера</commonModules>
<commonModules>CommonModule.РаботаСТорговымОборудованием</commonModules>
<commonModules>CommonModule.РаботаСХранилищемОбщихНастроек</commonModules>
<commonModules>CommonModule.РегистрацияОшибок</commonModules>
<commonModules>CommonModule.РегламентныеЗаданияАгрегатов</commonModules>
<commonModules>CommonModule.СервисныеМеханизмы</commonModules>
<commonModules>CommonModule.УведомленияКлиент</commonModules>
<commonModules>CommonModule.УведомленияСервер</commonModules>
<commonModules>CommonModule.Интеграция</commonModules>
<commonModules>CommonModule.ИнтеграцияМагазин</commonModules>
<commonModules>CommonModule.РегистрацияОшибок</commonModules>
<exchangePlans>ExchangePlan.Мобильные</exchangePlans>
<xDTOPackages>XDTOPackage.ОбменСМобильнымУстройством</xDTOPackages>
<webServices>WebService.MAExchange</webServices>
<httpServices>HTTPService.Товары</httpServices>
<httpServices>HTTPService.ОписанияТоваров</httpServices>
<scheduledJobs>ScheduledJob.ОбновлениеИндексаППД</scheduledJobs>
<scheduledJobs>ScheduledJob.СлияниеИндексаППД</scheduledJobs>
<httpServices>HTTPService.Товары</httpServices>
<scheduledJobs>ScheduledJob.ОбновлениеАгрегатовПродаж</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеИндексаППД</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеИсторииДанных</scheduledJobs>
<scheduledJobs>ScheduledJob.ПерестроениеАгрегатовПродаж</scheduledJobs>
<scheduledJobs>ScheduledJob.ПомощникНеотработанныеЗаказы</scheduledJobs>
<scheduledJobs>ScheduledJob.ОбновлениеИсторииДанных</scheduledJobs>
<scheduledJobs>ScheduledJob.СлияниеИндексаППД</scheduledJobs>
<settingsStorages>SettingsStorage.ХранилищеВариантовОтчетов</settingsStorages>
<functionalOptions>FunctionalOption.ВалютныйУчет</functionalOptions>
<functionalOptions>FunctionalOption.РаботаСТорговымОборудованием</functionalOptions>
<functionalOptions>FunctionalOption.УчетПоСкладам</functionalOptions>
<functionalOptions>FunctionalOption.ВалютныйУчет</functionalOptions>
<functionalOptionsParameters>FunctionalOptionsParameter.Организация</functionalOptionsParameters>
<commonCommands>CommonCommand.УстановитьСканерШтрихкодов</commonCommands>
<commonCommands>CommonCommand.НастроитьСканерШтрихКодов</commonCommands>
<commonCommands>CommonCommand.УстановитьРасширениеРаботыСФайлами</commonCommands>
<commonCommands>CommonCommand.УстановитьРасширениеРаботыСКриптографией</commonCommands>
<commonCommands>CommonCommand.УстановитьВидимостьОбъектовЧерезODataAPI</commonCommands>
<commonCommands>CommonCommand.ОбщиеНастройки</commonCommands>
<commonCommands>CommonCommand.УстановитьВидимостьОбъектовЧерезODataAPI</commonCommands>
<commonCommands>CommonCommand.УстановитьРасширениеРаботыСКриптографией</commonCommands>
<commonCommands>CommonCommand.УстановитьРасширениеРаботыСФайлами</commonCommands>
<commonCommands>CommonCommand.УстановитьСканерШтрихкодов</commonCommands>
<commandGroups>CommandGroup.Информация</commandGroups>
<commandGroups>CommandGroup.Печать</commandGroups>
<constants>Constant.РаботаСТорговымОборудованием</constants>
<constants>Constant.УчетПоСкладам</constants>
<constants>Constant.АдресSMTPСервера</constants>
<constants>Constant.ПортSMTP</constants>
<constants>Constant.ПользовательSMTP</constants>
<constants>Constant.ПарольSMTP</constants>
<constants>Constant.АдресPOP3Сервера</constants>
<constants>Constant.ПортPOP3</constants>
<constants>Constant.ПользовательPOP3</constants>
<constants>Constant.ПарольPOP3</constants>
<constants>Constant.ТаймаутИнтернетПочты</constants>
<constants>Constant.ИмяОтправителяПочтовогоСообщения</constants>
<constants>Constant.ПользовательIMAP</constants>
<constants>Constant.ПарольIMAP</constants>
<constants>Constant.АдресIMAPСервера</constants>
<constants>Constant.ПортIMAP</constants>
<constants>Constant.SSLIMAP</constants>
<constants>Constant.ИспользоватьIMAP</constants>
<constants>Constant.SSLPOP3</constants>
<constants>Constant.SSLSMTP</constants>
<constants>Constant.АдресIMAPСервера</constants>
<constants>Constant.АдресPOP3Сервера</constants>
<constants>Constant.АдресSMTPСервера</constants>
<constants>Constant.ВоспроизводитьТекстУведомления</constants>
<constants>Constant.ВыборПровайдераГеопозиционирования</constants>
<constants>Constant.ИдентификаторПриложенияWNS</constants>
<constants>Constant.ИмяОтправителяПочтовогоСообщения</constants>
<constants>Constant.ИмяПровайдера</constants>
<constants>Constant.ИспользоватьAPNS</constants>
<constants>Constant.ИспользоватьGCM</constants>
<constants>Constant.ИспользоватьIMAP</constants>
<constants>Constant.ИспользоватьPushУведомления</constants>
<constants>Constant.ИспользоватьWNS</constants>
<constants>Constant.ИспользоватьСетьПередачиДанных</constants>
<constants>Constant.ИспользоватьСотовуюСеть</constants>
<constants>Constant.ИспользоватьСпутники</constants>
<constants>Constant.КлючCервераОтправителяGCM</constants>
<constants>Constant.КлючПриложенияWNS</constants>
<constants>Constant.КодНовогоУзлаПланаОбмена</constants>
<constants>Constant.ЛогинСервисаПередачиPushУведомлений</constants>
<constants>Constant.МаркерДоступаWNS</constants>
<constants>Constant.НомерПриложенияGoogleCloud</constants>
<constants>Constant.ПарольIMAP</constants>
<constants>Constant.ПарольPOP3</constants>
<constants>Constant.ПарольSMTP</constants>
<constants>Constant.ПериодПроверкиНеотработанныхЗаказов</constants>
<constants>Constant.ПользовательIMAP</constants>
<constants>Constant.ПользовательPOP3</constants>
<constants>Constant.ПользовательSMTP</constants>
<constants>Constant.ПортIMAP</constants>
<constants>Constant.ПортPOP3</constants>
<constants>Constant.ПортSMTP</constants>
<constants>Constant.РаботаСТорговымОборудованием</constants>
<constants>Constant.СертификатМобильногоПриложенияIOS</constants>
<constants>Constant.ТаймаутИнтернетПочты</constants>
<constants>Constant.ТолькоБесплатные</constants>
<constants>Constant.ТолькоЗащищеннаяАутентификацияIMAP</constants>
<constants>Constant.ТолькоЗащищеннаяАутентификацияPOP3</constants>
<constants>Constant.ТолькоЗащищеннаяАутентификацияSMTP</constants>
<constants>Constant.КодНовогоУзлаПланаОбмена</constants>
<constants>Constant.ИспользоватьPushУведомления</constants>
<constants>Constant.ИспользоватьAPNS</constants>
<constants>Constant.СертификатМобильногоПриложенияIOS</constants>
<constants>Constant.ИспользоватьGCM</constants>
<constants>Constant.НомерПриложенияGoogleCloud</constants>
<constants>Constant.КлючCервераОтправителяGCM</constants>
<constants>Constant.ИспользоватьWNS</constants>
<constants>Constant.КлючПриложенияWNS</constants>
<constants>Constant.МаркерДоступаWNS</constants>
<constants>Constant.ИдентификаторПриложенияWNS</constants>
<constants>Constant.ЛогинСервисаПередачиPushУведомлений</constants>
<constants>Constant.ПериодПроверкиНеотработанныхЗаказов</constants>
<constants>Constant.ВоспроизводитьТекстУведомления</constants>
<constants>Constant.ВыборПровайдераГеопозиционирования</constants>
<constants>Constant.ИмяПровайдера</constants>
<constants>Constant.ТолькоБесплатные</constants>
<constants>Constant.ИспользоватьСотовуюСеть</constants>
<constants>Constant.ИспользоватьСетьПередачиДанных</constants>
<constants>Constant.ИспользоватьСпутники</constants>
<commonForms>CommonForm.ОбщиеНастройки</commonForms>
<commonForms>CommonForm.НастройкиМобильногоУстройства</commonForms>
<commonForms>CommonForm.НастройкаПочты</commonForms>
<commonForms>CommonForm.ФормаПодбора</commonForms>
<commonForms>CommonForm.НастройкаПомощникаНеотработанныхЗаказов</commonForms>
<commonForms>CommonForm.НастройкаPushУведомлений</commonForms>
<commonForms>CommonForm.ФормаПодбораМобильная</commonForms>
<constants>Constant.УчетПоСкладам</constants>
<commonForms>CommonForm.Звонок</commonForms>
<catalogs>Catalog.Товары</catalogs>
<catalogs>Catalog.Контрагенты</catalogs>
<catalogs>Catalog.Склады</catalogs>
<catalogs>Catalog.Валюты</catalogs>
<catalogs>Catalog.Регионы</catalogs>
<catalogs>Catalog.ВидыЦен</catalogs>
<catalogs>Catalog.РасчетныеСчетаКонтрагентов</catalogs>
<catalogs>Catalog.ЗначенияХарактеристик</catalogs>
<commonForms>CommonForm.НастройкаPushУведомлений</commonForms>
<commonForms>CommonForm.НастройкаПомощникаНеотработанныхЗаказов</commonForms>
<commonForms>CommonForm.НастройкаПочты</commonForms>
<commonForms>CommonForm.НастройкиМобильногоУстройства</commonForms>
<commonForms>CommonForm.ОбщиеНастройки</commonForms>
<commonForms>CommonForm.ФормаПодбора</commonForms>
<commonForms>CommonForm.ФормаПодбораМобильная</commonForms>
<catalogs>Catalog.Банки</catalogs>
<catalogs>Catalog.РасчетныеСчета</catalogs>
<catalogs>Catalog.ХранимыеФайлы</catalogs>
<catalogs>Catalog.НастройкиТорговогоОборудования</catalogs>
<catalogs>Catalog.ХранилищеВариантовОтчетов</catalogs>
<catalogs>Catalog.Организации</catalogs>
<catalogs>Catalog.ВходящиеПисьма</catalogs>
<catalogs>Catalog.ИсходящиеПисьма</catalogs>
<catalogs>Catalog.ПочтовыеВложения</catalogs>
<catalogs>Catalog.Пользователи</catalogs>
<catalogs>Catalog.Валюты</catalogs>
<catalogs>Catalog.ВидыЦен</catalogs>
<catalogs>Catalog.Встречи</catalogs>
<catalogs>Catalog.ВходящиеПисьма</catalogs>
<catalogs>Catalog.ЗначенияХарактеристик</catalogs>
<catalogs>Catalog.ИсходящиеПисьма</catalogs>
<catalogs>Catalog.Контрагенты</catalogs>
<catalogs>Catalog.МобильныеУстройства</catalogs>
<catalogs>Catalog.НастройкиИнтеграции</catalogs>
<documents>Document.ПриходТовара</documents>
<documents>Document.РасходТовара</documents>
<catalogs>Catalog.НастройкиТорговогоОборудования</catalogs>
<catalogs>Catalog.Организации</catalogs>
<catalogs>Catalog.Пользователи</catalogs>
<catalogs>Catalog.ПочтовыеВложения</catalogs>
<catalogs>Catalog.РасчетныеСчета</catalogs>
<catalogs>Catalog.РасчетныеСчетаКонтрагентов</catalogs>
<catalogs>Catalog.Регионы</catalogs>
<catalogs>Catalog.Склады</catalogs>
<catalogs>Catalog.Товары</catalogs>
<catalogs>Catalog.ХранилищеВариантовОтчетов</catalogs>
<catalogs>Catalog.ХранимыеФайлы</catalogs>
<documents>Document.Заказ</documents>
<documents>Document.ОперацияПоУчетуТоваров</documents>
<documents>Document.Оплата</documents>
<documents>Document.ПоступлениеДенег</documents>
<documents>Document.ОперацияПоУчетуТоваров</documents>
<documents>Document.Заказ</documents>
<documentJournals>DocumentJournal.ФинансовыеДокументы</documentJournals>
<documents>Document.ПриходТовара</documents>
<documents>Document.РасходТовара</documents>
<documentJournals>DocumentJournal.ДокументыПродаж</documentJournals>
<enums>Enum.ВидыТоваров</enums>
<enums>Enum.НазначениеХарактеристик</enums>
<enums>Enum.ВидНастройкиАутентификацииSMTP</enums>
<enums>Enum.ВидыМобильныхОтчетов</enums>
<enums>Enum.СостоянияЗаказов</enums>
<enums>Enum.ВидСодержимогоВходящегоПисьма</enums>
<documentJournals>DocumentJournal.ФинансовыеДокументы</documentJournals>
<enums>Enum.PushУведомления</enums>
<enums>Enum.ВидНастройкиАутентификацииSMTP</enums>
<enums>Enum.ВидСодержимогоВходящегоПисьма</enums>
<enums>Enum.ВидыМобильныхОтчетов</enums>
<enums>Enum.ВидыТоваров</enums>
<enums>Enum.ИспользоватьПровайдерГеопозиционирования</enums>
<reports>Report.ОстаткиТоваровНаСкладах</reports>
<reports>Report.ДинамикаПродаж</reports>
<reports>Report.ОтчетПоВзаиморасчетам</reports>
<reports>Report.ДокументыОплата</reports>
<enums>Enum.НазначениеХарактеристик</enums>
<enums>Enum.СостоянияЗаказов</enums>
<reports>Report.ВзаимосвязьПродажТоваров</reports>
<dataProcessors>DataProcessor.УправлениеПолнотекстовымПоиском</dataProcessors>
<reports>Report.ДинамикаПродаж</reports>
<reports>Report.ДокументыОплата</reports>
<reports>Report.ОстаткиТоваровНаСкладах</reports>
<reports>Report.ОтчетПоВзаиморасчетам</reports>
<dataProcessors>DataProcessor.АдминистративныйСервис</dataProcessors>
<dataProcessors>DataProcessor.ЖурналРегистрации</dataProcessors>
<dataProcessors>DataProcessor.НастройкиПользователя</dataProcessors>
<dataProcessors>DataProcessor.ПроведениеДокументов</dataProcessors>
<dataProcessors>DataProcessor.Путеводитель</dataProcessors>
<dataProcessors>DataProcessor.СписокАктивныхПользователей</dataProcessors>
<dataProcessors>DataProcessor.ЖурналРегистрации</dataProcessors>
<dataProcessors>DataProcessor.УдалениеПомеченныхОбъектов</dataProcessors>
<dataProcessors>DataProcessor.УправлениеНастройкамиФорм</dataProcessors>
<dataProcessors>DataProcessor.НастройкиПользователя</dataProcessors>
<dataProcessors>DataProcessor.УправлениеАгрегатамиПродаж</dataProcessors>
<dataProcessors>DataProcessor.ЭлектроннаяПочта</dataProcessors>
<dataProcessors>DataProcessor.УправлениеНастройкамиФорм</dataProcessors>
<dataProcessors>DataProcessor.УправлениеПолнотекстовымПоиском</dataProcessors>
<dataProcessors>DataProcessor.УправлениеСистемойВзаимодействия</dataProcessors>
<dataProcessors>DataProcessor.ЭлектроннаяПочта</dataProcessors>
<informationRegisters>InformationRegister.КурсыВалют</informationRegisters>
<informationRegisters>InformationRegister.Характеристики</informationRegisters>
<informationRegisters>InformationRegister.ЦеныТоваров</informationRegisters>
<informationRegisters>InformationRegister.МобильныеОтчеты</informationRegisters>
<informationRegisters>InformationRegister.СостояниеВходящихПисем</informationRegisters>
<informationRegisters>InformationRegister.СостояниеИсходящихПисем</informationRegisters>
<informationRegisters>InformationRegister.МобильныеОтчеты</informationRegisters>
<accumulationRegisters>AccumulationRegister.ТоварныеЗапасы</accumulationRegisters>
<informationRegisters>InformationRegister.Характеристики</informationRegisters>
<informationRegisters>InformationRegister.ЦеныТоваров</informationRegisters>
<accumulationRegisters>AccumulationRegister.Взаиморасчеты</accumulationRegisters>
<accumulationRegisters>AccumulationRegister.Продажи</accumulationRegisters>
<accumulationRegisters>AccumulationRegister.ТоварныеЗапасы</accumulationRegisters>
<chartsOfCharacteristicTypes>ChartOfCharacteristicTypes.ВидыХарактеристик</chartsOfCharacteristicTypes>
</mdclass:Configuration>