1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2025-01-26 03:52:13 +02:00

Added automatic creation of predefined elements (#144)

* Добавлена автоматическая генерация/изменение предопределенных элементов, оповещения о конфликтах предопределенных элементов и документация
This commit is contained in:
Denis Ushakov 2024-11-20 13:32:05 +03:00 committed by GitHub
parent 9b2965af5a
commit 2b99cf108d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 614 additions and 83 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -19,6 +19,71 @@
КонецПроцедуры
```
## Уникальность предопределенных элементов
Для обеспечения целостности данных и управления предопределёнными значениями реализован механизм контроля изменений. Он основан на вычислении хеша с использованием алгоритма **MD5**, учёте пометки на удаление, ручных изменений и проверке уникальности идентификаторов.
### Основные этапы проверки
1. **Первоначальная проверка уникальности идентификаторов:**
- На этапе инициализации идентификаторы всех элементов проверяются на уникальность.
- Если обнаружены коллизии (дублирующиеся идентификаторы), будет выдано сообщение об ошибке, и такие элементы будут пропущены.
2. **Хеш и состояние элемента:**
- Хеш вычисляется для каждого элемента и сохраняется в регистре **состояний предопределённых элементов**.
- **Ключи хеша:**
- ИдентификаторНастройки
- Наименование
- Родитель (если включена иерархия)
- ЭтоГруппа (если включена иерархия групп и элементов)
- Изменяемые реквизиты при расчете не учитываются
- Остальные ключи опционально, зависят от типа объекта метаданных (см. [область Структуры колонок таблиц](../src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#247-343) и [исключаемые поля для расчета хеша](../src/cf/CommonModules/пбп_ПредопределенныеЗначенияПереопределяемый/Ext/Module.bsl#345-381))
- Если элемент изменяется в пользовательском режиме, устанавливается флаг **ручное изменение:**
- Такой элемент исключается из проверки хеша при последующих обновлениях.
3. **Обработка элементов с пометкой на удаление:**
- Если элемент помечен на удаление и его хеш отличается от нового:
- Значения элемента обновляются данными из кода.
- Пометка на удаление снимается автоматически.
- Если элемент не помечен на удаление и его хеш отличается от нового:
- Формируется уведомление о конфликте для дальнейшего разрешения.
**Пример решения конфликтов при создании/обновлении предопределенных элементов**
![image](images/ФормаРазрешенияКонфликтов.png)
Виды ошибок:
- Коллизии идентификаторов
- Эта ошибка не решается в пользовательском режиме, для ее устранения необходимо перейти в общий модуль ``пбп_ПредопределенныеЗначенияПереопределяемый`` и исправить конфликтующие элементы.
- Расхождение элемента с кодом
- Для элемента установлен флаг обновления: Элемент будет обновлен данными из программного кода, а также обновится хеш элемента в регистре сведений **``пбп_СостоянияПредопределенныхЭлементов``**.
- Для элемента не установлен флаг обновления: Элемент не будет обновлен. В записи регистра сведений **``пбп_СостоянияПредопределенныхЭлементов``** будет установлен флаг **``Ручное изменение``**, указывающий на то, что элемент был изменен вручную и не подлежит автоматическому обновлению в будущем.
**Примечание** - Флаг ``Заменить элементом из кода`` активен только для элементов с видом ошибки ``Расхождение элемента с кодом``
## Автоматическое создание новых элементов
Для автоматизации процесса заполнения предопределенных элементов необходимо модифицировать/добавить в расширение общий модуль **``ОбщегоНазначенияПереопределяемый``**. В процедуре **``ПриДобавленииСерверныхОповещений``** требуется добавить новое серверное оповещение.
**Пример кода для подключения через расширение**
```BSL
&После("ПриДобавленииСерверныхОповещений")
Процедура пбп_ПриДобавленииСерверныхОповещений(Оповещения)
// Создаем новое серверное оповещение для предопределённых значений
Оповещение = СерверныеОповещения.НовоеСерверноеОповещение("пбп_ПредопределенныеЗначения");
// Указываем модуль для получения и отправки сообщений
Оповещение.ИмяМодуляОтправки = ""; // В данном случае используется рег. задание для отправки
Оповещение.ИмяМодуляПолучения = "пбп_ПредопределенныеЗначенияСлужебныйКлиент";
// Настраиваем периодичность проверки (в секундах)
Оповещение.ПериодПроверки = 300;
// Добавляем новое оповещение в список оповещений
Оповещения.Вставить(Оповещение.Имя, Оповещение);
КонецПроцедуры
```
## Добавление новых элементов
В модуле **пбп_ПредопределенныеЗначенияПереопределяемый** значения добавляются через метод **Добавить()** коллекции **Результат**, которая представляет собой таблицу предопределённых значений. Каждая новая запись в этой таблице может быть настроена как группа путём установки свойства ЭтоГруппа в значение Истина.

View File

@ -116,6 +116,14 @@
<ContextMenu name="ТаблицаКонфликтовЗаменитьЭлементомИзКодаКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ТаблицаКонфликтовЗаменитьЭлементомИзКодаРасширеннаяПодсказка" id="28"/>
</CheckBoxField>
<InputField name="ТаблицаКонфликтовКоллизииИдентификатора" id="36">
<DataPath>ТаблицаКонфликтов.Ошибка</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ТаблицаКонфликтовКоллизииИдентификатораКонтекстноеМеню" id="37"/>
<ExtendedTooltip name="ТаблицаКонфликтовКоллизииИдентификатораРасширеннаяПодсказка" id="38"/>
</InputField>
<ColumnGroup name="ГруппаЭлементВБазе" id="19">
<Title>
<v8:item>
@ -176,6 +184,17 @@
<v8:Type>xs:boolean</v8:Type>
</Type>
</Column>
<Column name="Ошибка" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ошибка</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>cfg:EnumRef.пбп_ВидыОшибокПредопределенныхЭлементов</v8:Type>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="ОбработатьЭлементы" id="4">

View File

@ -14,6 +14,8 @@
ОбработатьКонфликтныеЭлементы(АдресТаблицы);
КонецЕсли;
УстановитьУсловноеОформление();
КонецПроцедуры
&НаКлиенте
@ -76,13 +78,14 @@
ДобавляемыеРеквизиты = Новый Структура;
Для Каждого Колонка Из Таблица.Колонки Цикл
Если ИсключаемыеПоля.Свойство(Колонка.Имя)
Или СтрНачинаетсяС(Колонка.Имя, "Служеб_") Тогда
Или СтрНачинаетсяС(Колонка.Имя, "Служебный_") Тогда
Продолжить;
КонецЕсли;
ДобавляемыеРеквизиты.Вставить(ПрефиксКод + Колонка.Имя, Колонка.ТипЗначения);
ДобавляемыеРеквизиты.Вставить(ПрефиксБаза + Колонка.Имя, Колонка.ТипЗначения);
Поля.Добавить(Колонка.Имя, Колонка.Имя);
КонецЦикла;
пбп_РаботаСФормами.СоздатьРеквизитыТаблицы(ЭтотОбъект, "ТаблицаКонфликтов", ДобавляемыеРеквизиты);
ШиринаКолонки = 5;
@ -121,7 +124,7 @@
МенеджерОбъекта = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца);
СписокПредопределенных = Таблица.ВыгрузитьКолонку("Служеб_ПредопределенныйЭлемент");
СписокПредопределенных = Таблица.ВыгрузитьКолонку("Служебный_ПредопределенныйЭлемент");
Запрос = Новый Запрос;
Запрос.Текст =
@ -150,14 +153,18 @@
нСтрока[ПрефиксКод + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;
Если Строка.Служебный_ДублированиеИдентификаторов Тогда
нСтрока.Ошибка = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов;
Иначе
нСтрока.Ошибка = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.РасхождениеЭлементаСКодом;
КонецЕсли;
Выборка.Сбросить();
Если Выборка.НайтиСледующий(Строка.Служеб_ПредопределенныйЭлемент, "Ссылка") Тогда
Если Выборка.НайтиСледующий(Строка.Служебный_ПредопределенныйЭлемент, "Ссылка") Тогда
ЗаполнитьЗначенияСвойств(БазоваяСтруктура, Выборка);
Для Каждого КлючЗначение Из БазоваяСтруктура Цикл
нСтрока[ПрефиксБаза + КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЦикла;
Иначе
СообщитьОбОтсутствииЭлемента(Строка.ИдентификаторНастройки);
КонецЕсли;
КонецЦикла;
@ -181,13 +188,23 @@
Таблица.Индексы.Добавить(ИдентификаторНастройки);
Для Каждого Строка Из ТаблицаКонфликтов Цикл
Стр = Таблица.Найти(Строка[ПрефиксКод + ИдентификаторНастройки], ИдентификаторНастройки);
Если Строка.Ошибка = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов Тогда
Таблица.Удалить(Стр);
Продолжить;
КонецЕсли;
Если Строка.ЗаменитьЭлементомИзКода Тогда
Стр.Служеб_ОбновитьЭлемент = Истина;
Стр.Служебный_ОбновитьЭлемент = Истина;
Иначе
Стр.Служеб_УстановитьФлагРучноеИзменение = Истина;
Стр.Служебный_УстановитьФлагРучноеИзменение = Истина;
КонецЕсли;
КонецЦикла;
Если Не ЗначениеЗаполнено(Таблица) Тогда
Возврат;
КонецЕсли;
Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца);
ДопПараметры = пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов(
Таблица, Менеджер);
@ -199,24 +216,31 @@
Процедура ЗаполнитьОтметки(ЗначениеОтметки)
Модифицированность = Истина;
Для Каждого Строка Из ТаблицаКонфликтов Цикл
Если Строка.Ошибка =
ПредопределенноеЗначение("Перечисление.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов") Тогда
Продолжить;
КонецЕсли;
Строка.ЗаменитьЭлементомИзКода = ЗначениеОтметки;
КонецЦикла;
КонецПроцедуры
#Область СообщенияОСобытии
&НаСервере
Процедура СообщитьОбОтсутствииЭлемента(Идентификатор)
Процедура УстановитьУсловноеОформление()
ТекстСообщения = НСтр("ru = 'Элемент '%1' отсутствуют в базе!';
|en = 'The element '%1' is missing from the database!'");
ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстСообщения,
Идентификатор);
пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения);
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТаблицаКонфликтовЗаменитьЭлементомИзКода.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаКонфликтов.Ошибка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.пбп_ВидыОшибокПредопределенныхЭлементов.ДублированиеИдентификаторов;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -48,4 +48,15 @@
КонецПроцедуры
// Заполнение предопределенных элементов, с выводом серверного оповещения при возникновении конфликтов.
//
Процедура ЗаполнениеПредопределенныхЭлементов() Экспорт
пбп_ОбщегоНазначенияСлужебный.ПриНачалеВыполненияРегламентногоЗадания(
Метаданные.РегламентныеЗадания.пбп_ЗаполнениеПредопределенныхЭлементов);
пбп_ПредопределенныеЗначения.ЗаполнениеПредопределенныхЭлементов(Истина);
КонецПроцедуры
#КонецОбласти

View File

@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
Описание.Версия = "1.0.3.12";
Описание.Версия = "1.0.4.13";
// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
@ -126,14 +126,7 @@
Процедура НачальноеЗаполнениеПредопределенныхЭлементов() Экспорт
Типы = Метаданные.ОпределяемыеТипы.пбп_ПредопределенныеВсеСсылкиПереопределяемый.Тип.Типы();
Для Каждого Тип Из Типы Цикл
ПолноеИмя = Метаданные.НайтиПоТипу(Тип).ПолноеИмя();
Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Менеджер);
КонецЦикла;
пбп_ПредопределенныеЗначения.ЗаполнениеПредопределенныхЭлементов();
КонецПроцедуры

View File

@ -33,8 +33,8 @@
ТЗПредопределенныхЗначений = пбп_ПредопределенныеЗначенияПереопределяемый
.ТаблицаПредопределенныхЭлементов(МенеджерОбъекта);
Если ТЗПредопределенныхЗначений = Неопределено Тогда
Возврат Неопределено;
Если Не ЗначениеЗаполнено(ТЗПредопределенныхЗначений) Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
ТаблицаКонфликтныхЭлементов = ОбработатьПредопределенныеЗначения(ТЗПредопределенныхЗначений, МенеджерОбъекта);
@ -62,7 +62,7 @@
ЗаполнитьРодителейЭлементов(ТаблицаПредопределенных, Параметры);
ЗаполнитьКонтрольныеСуммыТаблицы(ТаблицаПредопределенных, Параметры);
ТаблицаКонфликтныхЭлементов = УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, Параметры.ПолноеИмя);
ТаблицаКонфликтныхЭлементов = УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, Параметры);
СоздатьОбновитьПредопределенныеЗначения(ТаблицаПредопределенных, Параметры);
Возврат ТаблицаКонфликтныхЭлементов;
@ -129,7 +129,7 @@
Для Каждого Поле Из Поля Цикл
Если ИсключаемыеПоля.Свойство(Поле)
Или СтрНачинаетсяС(Поле, "Служеб_") Тогда
Или СтрНачинаетсяС(Поле, "Служебный_") Тогда
Продолжить;
КонецЕсли;
мКлючи.Добавить(Поле);
@ -245,24 +245,25 @@
//
// Параметры:
// ТаблицаПредопределенных - ТаблицаЗначений - см.пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенных
// ПолноеИмяОбъекта - Строка - Полное имя объекта метаданных.
// ДополнительныеПараметры - Структура - см.пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов
//
// Возвращаемое значение:
// ТаблицаЗначений - Таблица с конфликтными элементами
//
Функция УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, ПолноеИмяОбъекта = "") Экспорт
Функция УдалитьИзТаблицыСуществующиеЭлементы(ТаблицаПредопределенных, ДополнительныеПараметры) Экспорт
ТаблицаКонфликтныхЭлементов = ТаблицаПредопределенных.СкопироватьКолонки();
ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначенияПереопределяемый
.ТаблицаКонфликтныхЭлементов(ДополнительныеПараметры.Менеджер, ТаблицаПредопределенных.СкопироватьКолонки());
Если Не ЗначениеЗаполнено(ТаблицаПредопределенных) Тогда
Возврат ТаблицаКонфликтныхЭлементов;
КонецЕсли;
ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ПолноеИмяОбъекта);
ПолноеИмяОбъекта = ИмяОбъектаМетаданных(ДополнительныеПараметры.ПолноеИмя);
ТаблицаПредопределенных.Сортировать("ЭтоГруппа УБЫВ, УровеньИерархии");
ОбработатьДублиИдентификаторов(ТаблицаПредопределенных);
ОбработатьДублиИдентификаторов(ТаблицаПредопределенных, ТаблицаКонфликтныхЭлементов);
ИдентификаторыНастроек = ТаблицаПредопределенных.ВыгрузитьКолонку("ИдентификаторНастройки");
@ -327,18 +328,19 @@
Родители = Новый Соответствие;
Для Каждого СтрокаТаблицы Из ТаблицаПредопределенных Цикл
СтрокаТаблицы.Служеб_Иерархический = ДополнительныеПараметры.Иерархический;
СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов;
СтрокаТаблицы.Служебный_Иерархический = ДополнительныеПараметры.Иерархический;
СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов = ДополнительныеПараметры.ИерархияГруппИЭлементов;
ЭтоГруппа = СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов И СтрокаТаблицы.ЭтоГруппа;
ЭтоГруппа = СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов И СтрокаТаблицы.ЭтоГруппа;
КлючиХеша = ?(ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент);
Если СтрокаТаблицы.Служеб_ОбновитьЭлемент Тогда
Если СтрокаТаблицы.Служебный_ОбновитьЭлемент Тогда
ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители);
ИначеЕсли СтрокаТаблицы.Служеб_УстановитьФлагРучноеИзменение Тогда
УстановитьФлагРучноеИзменение(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент);
ИначеЕсли СтрокаТаблицы.Служеб_СоздатьЗаписьРегистра Тогда
СоздатьЗаписьСостоянияПредопределенногоЭлемента(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент, ЭтоГруппа, КлючиХеша);
ИначеЕсли СтрокаТаблицы.Служебный_УстановитьФлагРучноеИзменение Тогда
УстановитьФлагРучноеИзменение(СтрокаТаблицы.Служебный_ПредопределенныйЭлемент);
ИначеЕсли СтрокаТаблицы.Служебный_СоздатьЗаписьРегистра Тогда
СоздатьЗаписьСостоянияПредопределенногоЭлемента(
СтрокаТаблицы.Служебный_ПредопределенныйЭлемент, ЭтоГруппа, КлючиХеша);
Иначе
СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители);
КонецЕсли;
@ -371,13 +373,55 @@
РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.СоздатьЗаписьРегистра(Объект, ЭтоГруппа, КлючиХеша);
КонецПроцедуры
// Заполнение предопределенных элементов, с возможностью серверного оповещения
// о существующих конфликтах при создании элементов.
//
// Параметры:
// ОтправитьСерверноеОповещение - Булево - В случае необходимости оповещения пользователей, установить флаг в Истину.
//
Процедура ЗаполнениеПредопределенныхЭлементов(ОтправитьСерверноеОповещение = Ложь) Экспорт
Типы = Метаданные.ОпределяемыеТипы.пбп_ПредопределенныеВсеСсылкиПереопределяемый.Тип.Типы();
Для Каждого Тип Из Типы Цикл
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
Если Не ОтправитьСерверноеОповещение Тогда
ИнициализироватьПредопределенныеЗначения(Менеджер);
Продолжить;
КонецЕсли;
ПредставлениеОбъекта = ?(ПустаяСтрока(ОбъектМетаданных.ПредставлениеОбъекта),
ОбъектМетаданных.Синоним,
ОбъектМетаданных.ПредставлениеОбъекта);
ТаблицаКонфликтныхЭлементов = ИнициализироватьПредопределенныеЗначения(Менеджер);
Если ЗначениеЗаполнено(ТаблицаКонфликтныхЭлементов) Тогда
Результат = Новый Структура;
Результат.Вставить("ИмяОбъектаМетаданных", ПолноеИмя);
Результат.Вставить("ПредставлениеОбъекта", ПредставлениеОбъекта);
пбп_СерверныеОповещенияСлужебный.ОтправитьСерверноеОповещение(
"пбп_ПредопределенныеЗначения",
Результат,
Неопределено);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура СоздатьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители)
Если СтрокаТаблицы.Служеб_Иерархический И СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов И СтрокаТаблицы.ЭтоГруппа Тогда
Если СтрокаТаблицы.Служебный_Иерархический И СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов
И СтрокаТаблицы.ЭтоГруппа Тогда
СоздатьПредопределеннуюГруппу(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители);
Иначе
СоздатьПредопределенныйЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители);
@ -412,9 +456,9 @@
НовыйЭлемент = МенеджерОбъекта.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(НовыйЭлемент, СтрокаТаблицы, , "Родитель");
ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НовыйЭлемент, СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов);
ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, НовыйЭлемент, СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов);
Если СтрокаТаблицы.Служеб_Иерархический И ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда
Если СтрокаТаблицы.Служебный_Иерархический И ЗначениеЗаполнено(СтрокаТаблицы.ИдентификаторРодитель) Тогда
Родитель = ?(ЗначениеЗаполнено(СтрокаТаблицы.Родитель),
СтрокаТаблицы.Родитель,
Родители[СтрокаТаблицы.ИдентификаторРодитель]);
@ -427,7 +471,7 @@
пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки());
КонецПопытки;
Если СтрокаТаблицы.Служеб_Иерархический И Не СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов Тогда
Если СтрокаТаблицы.Служебный_Иерархический И Не СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов Тогда
Родители.Вставить(СтрокаТаблицы.ИдентификаторНастройки, НовыйЭлемент.Ссылка);
КонецЕсли;
@ -435,17 +479,17 @@
Процедура ОбновитьЭлемент(МенеджерОбъекта, СтрокаТаблицы, КлючиХеша, Родители)
Если Не ЗначениеЗаполнено(СтрокаТаблицы.Служеб_ПредопределенныйЭлемент) Тогда
Если Не ЗначениеЗаполнено(СтрокаТаблицы.Служебный_ПредопределенныйЭлемент) Тогда
Возврат;
КонецЕсли;
Элемент = СтрокаТаблицы.Служеб_ПредопределенныйЭлемент.ПолучитьОбъект();
Элемент = СтрокаТаблицы.Служебный_ПредопределенныйЭлемент.ПолучитьОбъект();
Если Элемент.ПометкаУдаления Тогда
Элемент.УстановитьПометкуУдаления(Ложь, Ложь);
КонецЕсли;
РодительОтличается = Ложь;
Если СтрокаТаблицы.Служеб_Иерархический
Если СтрокаТаблицы.Служебный_Иерархический
И (Не ПустаяСтрока(СтрокаТаблицы.ИдентификаторРодитель) Или ЗначениеЗаполнено(Элемент.Родитель)) Тогда
НовыйРодитель = ?(ЗначениеЗаполнено(СтрокаТаблицы.Родитель),
СтрокаТаблицы.Родитель,
@ -456,10 +500,10 @@
Элемент.Родитель = НовыйРодитель;
КонецЕсли;
Свойства = ЗаполняемыеИсключаемыеСвойства(СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов, Элемент.ЭтоГруппа);
Свойства = ЗаполняемыеИсключаемыеСвойства(СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов, Элемент.ЭтоГруппа);
ЗаполнитьЗначенияСвойств(Элемент, СтрокаТаблицы, Свойства.СписокСвойств, Свойства.ИсключаяСвойства);
ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент, СтрокаТаблицы.Служеб_ИерархияГруппИЭлементов);
ЗаполнитьЗначениеПоУмолчанию(МенеджерОбъекта, Элемент, СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов);
Попытка
ЗаписатьЭлементИСвязанныеДанные(Элемент, КлючиХеша, Истина);
@ -604,12 +648,12 @@
КонецФункции
Процедура ОбработатьСтроку(Строка, Выборка, ТаблицаКонфликтныхЭлементов, СтрокиДляУдаления)
Строка.Служеб_ПредопределенныйЭлемент = Выборка.Ссылка;
Строка.Служебный_ПредопределенныйЭлемент = Выборка.Ссылка;
Если Выборка.ХешОтсутствует Тогда
Строка.Служеб_СоздатьЗаписьРегистра = Истина;
Строка.Служебный_СоздатьЗаписьРегистра = Истина;
ИначеЕсли Выборка.ПометкаУдаления Тогда
Строка.Служеб_ОбновитьЭлемент = Истина;
Строка.Служебный_ОбновитьЭлемент = Истина;
Иначе
СтрокиДляУдаления.Добавить(Строка);
СтрокаКонфликт = ТаблицаКонфликтныхЭлементов.Добавить();
@ -631,40 +675,41 @@
КонецФункции
Процедура ОбработатьДублиИдентификаторов(Таблица)
Процедура ОбработатьДублиИдентификаторов(ТаблицаПредопределенных, ТаблицаКонфликтныхЭлементов)
Просмотренные = Новый Соответствие;
СтрокиДляУдаления = Новый Массив;
Для Каждого Строка Из Таблица Цикл
Для Каждого Строка Из ТаблицаПредопределенных Цикл
Если ПустаяСтрока(Строка.ИдентификаторНастройки) Тогда
СтрокиДляУдаления.Добавить(Строка);
СообщитьОНезаполненностиИдентификатора(Строка.Наименование);
Продолжить;
КонецЕсли;
ИндексСтроки = Таблица.Индекс(Строка);
Стр = Просмотренные[Строка.ИдентификаторНастройки];
Если Стр <> Неопределено Тогда
Если Стр.Первый Тогда
СтрокиДляУдаления.Добавить(Таблица[Стр.Индекс]);
КонецЕсли;
Если Просмотренные[Строка.ИдентификаторНастройки] <> Неопределено Тогда
Просмотренные[Строка.ИдентификаторНастройки] = Просмотренные[Строка.ИдентификаторНастройки] + 1;
Иначе
Просмотренные.Вставить(Строка.ИдентификаторНастройки, 1);
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из ТаблицаПредопределенных Цикл
Количество = Просмотренные[Строка.ИдентификаторНастройки];
Если Количество <> Неопределено И Количество > 1 Тогда
СтрокиДляУдаления.Добавить(Строка);
Стр.Индекс = ИндексСтроки;
Стр.Первый = Ложь;
СтрокаКонфликт = ТаблицаКонфликтныхЭлементов.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаКонфликт, Строка);
СтрокаКонфликт.Служебный_ДублированиеИдентификаторов = Истина;
СообщитьОДублированииИдентификаторов(Строка.ИдентификаторНастройки);
Иначе
Стр = Новый Структура;
Стр.Вставить("Индекс", ИндексСтроки);
Стр.Вставить("Первый", Истина);
Просмотренные.Вставить(Строка.ИдентификаторНастройки, Стр);
КонецЕсли;
КонецЦикла;
Для Каждого Строка Из СтрокиДляУдаления Цикл
Таблица.Удалить(Строка);
ТаблицаПредопределенных.Удалить(Строка);
КонецЦикла;
КонецПроцедуры

View File

@ -15,12 +15,13 @@
Выражение = пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов()
.Получить(ТипЗнч(Менеджер));
Таблица = Новый ТаблицаЗначений;
Если Не ЗначениеЗаполнено(Выражение) Тогда
Возврат Неопределено;
Возврат Таблица;
КонецЕсли;
Таблица = Новый ТаблицаЗначений;
СоздатьКолонкиТаблицыПредопределенныхЭлементов(Колонки, Таблица);
Параметры = Новый Массив;
@ -32,6 +33,30 @@
КонецФункции
// Инициализирует таблицу значений для конфликтных элементов.
//
// Параметры:
// Менеджер - СправочникМенеджер, ПланВидовХарактеристикМенеджер - менеджер объекта.
// ИсходнаяТаблица - ТаблицаЗначений - Пустая таблица каркас,
// см. пбп_ПредопределенныеЗначенияПереопределяемый.ТаблицаПредопределенныхЭлементов
//
// Возвращаемое значение:
// ТаблицаЗначений - Таблица конфликтных элементов.
//
Функция ТаблицаКонфликтныхЭлементов(Менеджер, ИсходнаяТаблица = Неопределено) Экспорт
Если ИсходнаяТаблица = Неопределено Тогда
ИсходнаяТаблица = ТаблицаПредопределенныхЭлементов(Менеджер);
КонецЕсли;
ИсходнаяТаблица.Колонки.Добавить("Служебный_ДублированиеИдентификаторов", Новый ОписаниеТипов("Булево"));
Возврат ИсходнаяТаблица;
КонецФункции
#Область ЗаполнениеДанных
// Заполняет таблицу предопределенных элементов справочника
// ПланыВидовХарактеристикСсылка.пбп_ПредопределенныеЗначения.
//
@ -191,6 +216,8 @@
КонецПроцедуры
#КонецОбласти
// Возвращает колонки таблицы предопределенных элементов.
//
// Параметры:
@ -319,6 +346,8 @@
#КонецОбласти
#Область ИсключаемыеПоляДляРасчетаХеша
// Возвращает исключаемые поля для расчета хеша элемент
//
// Возвращаемое значение:
@ -355,6 +384,8 @@
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ОбщиеКолонки(Менеджер)
@ -377,12 +408,12 @@
Колонки.Вставить("ИдентификаторРодитель", ОписаниеСтрока);
Колонки.Вставить("ХешСумма", Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(32)));
Колонки.Вставить("Служеб_ОбновитьЭлемент", ОписаниеБулево);
Колонки.Вставить("Служеб_УстановитьФлагРучноеИзменение", ОписаниеБулево);
Колонки.Вставить("Служеб_ПредопределенныйЭлемент", ОписаниеТиповЭлемента);
Колонки.Вставить("Служеб_СоздатьЗаписьРегистра", ОписаниеБулево);
Колонки.Вставить("Служеб_Иерархический", ОписаниеБулево);
Колонки.Вставить("Служеб_ИерархияГруппИЭлементов", ОписаниеБулево);
Колонки.Вставить("Служебный_ОбновитьЭлемент", ОписаниеБулево);
Колонки.Вставить("Служебный_УстановитьФлагРучноеИзменение", ОписаниеБулево);
Колонки.Вставить("Служебный_ПредопределенныйЭлемент", ОписаниеТиповЭлемента);
Колонки.Вставить("Служебный_СоздатьЗаписьРегистра", ОписаниеБулево);
Колонки.Вставить("Служебный_Иерархический", ОписаниеБулево);
Колонки.Вставить("Служебный_ИерархияГруппИЭлементов", ОписаниеБулево);
Возврат Колонки;

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="adfac3a1-5e05-4ed6-bb3c-9b1cb6533f85">
<Properties>
<Name>пбп_ПредопределенныеЗначенияСлужебныйКлиент</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенные значения служебный клиент</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Working with dialogues server</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>false</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,61 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT 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.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
//
#Область СлужебныйПрограммныйИнтерфейс
// См. СтандартныеПодсистемыКлиент.ПриПолученииСерверногоОповещения.
Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Текст = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Существуют конфликты предопределенных элементов ''%1'''"),
Результат.ПредставлениеОбъекта);
Пояснение = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Разрешить конфликты предопределенных элементов ''%1'''"),
Результат.ПредставлениеОбъекта);
ПоказатьОповещениеПользователя(
Текст,
НавигационнаяСсылкаОбъекта(Результат.ИмяОбъектаМетаданных),
Пояснение,
БиблиотекаКартинок.ДиалогВосклицание,
СтатусОповещенияПользователя.Важное,
"КонфликтыПредопределенныхЭлементов_" + Результат.ИмяОбъектаМетаданных);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращает навигационную ссылку для оповещений.
//
// Параметры:
// ИмяОбъекта - Строка - Полное имя объекта метаданных
//
// Возвращаемое значение:
// Строка - навигационная ссылка
//
Функция НавигационнаяСсылкаОбъекта(ИмяОбъекта)
Возврат "e1cib/list/" + ИмяОбъекта;
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="24649f7c-7f4c-4bd4-af89-56164a1d2963">
<Properties>
<Name>пбп_СерверныеОповещения</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Серверные оповещения (пбп)</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,57 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT 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.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
//
////////////////////////////////////////////////////////////////////////////////
// серверные оповещения: аналог модуля БСП
#Область ПрограммныйИнтерфейс
#Область МетодыАналогиБСП
// Аналог метода БСП. Добавляет серверное оповещение в очередь для доставки на клиент.
// Оповещение доставляется через систему взаимодействия,
// либо забирается в рамках общего серверного вызова.
//
// Параметры:
// ИмяОповещения - Строка - смотри НовоеСерверноеОповещение.Имя.
//
// Результат - Произвольный - произвольное сериализуемое значение,
// которое будет отправлено в составе оповещения на клиент
// (должны быть как можно меньшего размера, желательно не более 1 Кб).
//
// Адресаты - Неопределено - все пользователи (и соответственно все сеансы).
// Если указано незаполненное соответствие, тогда возврат.
// - Соответствие из КлючИЗначение:
// * Ключ - УникальныйИдентификатор - идентификатор пользователя ИБ.
// * Значение - Массив из см. СерверныеОповещения.КлючСеанса
//
// ОтправитьСразу - Булево - если Истина, попытаться сразу отправить сообщение
// через систему взаимодействия перед добавлением в очередь.
// Отправка сразу не допускается из обработчиков ПриОтправкеСерверногоОповещения.
// Следует учесть (особенно при вызове в транзакции), что неудачное обращение
// к системе взаимодействия может занимать (3-5 сек)*2, а удачное не менее (50 мс)*2.
//
Процедура ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу = Ложь) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="eb123c50-72c8-4219-b70f-71b4e9203dc4">
<Properties>
<Name>пбп_СерверныеОповещенияСлужебный</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Серверные оповещения служебный (пбп)</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -0,0 +1,46 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT 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.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
//
////////////////////////////////////////////////////////////////////////////////
// серверные оповещения служебный: аналог модуля БСП
#Область ПрограммныйИнтерфейс
#Область ПереадресацияМетодов
// См. пбп_СерверныеОповещения.ОтправитьСерверноеОповещение.
Процедура ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу = Ложь) Экспорт
Модуль = ПолучитьМодуль();
Модуль.ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьМодуль()
Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля("СерверныеОповещения", "пбп_СерверныеОповещения");
КонецФункции
#КонецОбласти

View File

@ -57,7 +57,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</xr:Item>
</DefaultRoles>
<Vendor>Первый БИТ</Vendor>
<Version>1.0.3.12</Version>
<Version>1.0.4.13</Version>
<UpdateCatalogAddress/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
@ -313,12 +313,15 @@
<CommonModule>пбп_ПредопределенныеЗначенияКлиент</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияПереопределяемый</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияПовтИсп</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияСлужебныйКлиент</CommonModule>
<CommonModule>пбп_РаботаСДиалогамиКлиент</CommonModule>
<CommonModule>пбп_РаботаСДиалогамиСервер</CommonModule>
<CommonModule>пбп_РаботаСКоллекциямиКлиентСервер</CommonModule>
<CommonModule>пбп_РаботаСФормами</CommonModule>
<CommonModule>пбп_РегламентныеЗаданияСервер</CommonModule>
<CommonModule>пбп_РегламентныеЗаданияСлужебныйСервер</CommonModule>
<CommonModule>пбп_СерверныеОповещения</CommonModule>
<CommonModule>пбп_СерверныеОповещенияСлужебный</CommonModule>
<CommonModule>пбп_СправочникиОбработкаСобытий</CommonModule>
<CommonModule>пбп_СтандартныеПодсистемыКлиент</CommonModule>
<CommonModule>пбп_СтандартныеПодсистемыПовтИсп</CommonModule>
@ -345,6 +348,7 @@
<EventSubscription>пбп_СправочникиПриКопировании</EventSubscription>
<ScheduledJob>пбп_ВыполнениеПользовательскихФункцийФайловыхОбменов</ScheduledJob>
<ScheduledJob>пбп_ОчисткаИсторииИнтеграции</ScheduledJob>
<ScheduledJob>пбп_ЗаполнениеПредопределенныхЭлементов</ScheduledJob>
<FunctionalOption>пбп_ИспользоватьПользовательскиеФункции</FunctionalOption>
<DefinedType>пбп_Пользователи</DefinedType>
<DefinedType>пбп_ТипыОбъектовСоответствийИБ</DefinedType>
@ -370,6 +374,7 @@
<Enum>пбп_ТипыАвторизации</Enum>
<Enum>пбп_ФорматыИнтеграций</Enum>
<Enum>пбп_НаправленияИнтеграционныхПотоков</Enum>
<Enum>пбп_ВидыОшибокПредопределенныхЭлементов</Enum>
<InformationRegister>пбп_СоответствияОбъектовИБ</InformationRegister>
<InformationRegister>пбп_СостоянияПредопределенныхЭлементов</InformationRegister>
<ChartOfCharacteristicTypes>пбп_ПредопределенныеЗначения</ChartOfCharacteristicTypes>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<Enum uuid="82c0a4bc-ec79-46ff-a515-4253a2c8f23d">
<InternalInfo>
<xr:GeneratedType name="EnumRef.пбп_ВидыОшибокПредопределенныхЭлементов" category="Ref">
<xr:TypeId>d19e6cd7-a544-4af2-a923-97366bdf778a</xr:TypeId>
<xr:ValueId>c2a6df89-c776-4b13-97f9-db414d6510ec</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="EnumManager.пбп_ВидыОшибокПредопределенныхЭлементов" category="Manager">
<xr:TypeId>8d3ca197-5a33-43dd-8f27-cff772250a15</xr:TypeId>
<xr:ValueId>2ce00242-bd5a-4bd6-9648-272db55dbda4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="EnumList.пбп_ВидыОшибокПредопределенныхЭлементов" category="List">
<xr:TypeId>7e48d43a-4700-4cb2-a04b-cf86b777eee5</xr:TypeId>
<xr:ValueId>943081b5-f331-4cee-8e81-440c2754cf47</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>пбп_ВидыОшибокПредопределенныхЭлементов</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Виды ошибок предопределенных элементов</v8:content>
</v8:item>
</Synonym>
<Comment/>
<UseStandardCommands>false</UseStandardCommands>
<Characteristics/>
<QuickChoice>true</QuickChoice>
<ChoiceMode>BothWays</ChoiceMode>
<DefaultListForm/>
<DefaultChoiceForm/>
<AuxiliaryListForm/>
<AuxiliaryChoiceForm/>
<ListPresentation/>
<ExtendedListPresentation/>
<Explanation/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
<ChildObjects>
<EnumValue uuid="a4d8d3b8-89cb-4273-9edd-81fa9bcb007d">
<Properties>
<Name>ДублированиеИдентификаторов</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дублирование идентификаторов</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="62f8cc45-9836-41ec-98d3-fd595ffe2941">
<Properties>
<Name>РасхождениеЭлементаСКодом</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Расхождение элемента с кодом</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
</ChildObjects>
</Enum>
</MetaDataObject>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<ScheduledJob uuid="7835a81c-7570-4f43-8ea7-0ec9a8e71169">
<Properties>
<Name>пбп_ЗаполнениеПредопределенныхЭлементов</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнение предопределенных элементов</v8:content>
</v8:item>
</Synonym>
<Comment/>
<MethodName>CommonModule.пбп_МетодыРегламентныхЗаданийСервер.ЗаполнениеПредопределенныхЭлементов</MethodName>
<Description>Заполнение предопределенных элементов</Description>
<Key>пбп_ЗаполнениеПредопределенныхЭлементов</Key>
<Use>true</Use>
<Predefined>true</Predefined>
<RestartCountOnFailure>3</RestartCountOnFailure>
<RestartIntervalOnFailure>10</RestartIntervalOnFailure>
</Properties>
</ScheduledJob>
</MetaDataObject>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<JobSchedule xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<Schedule BeginDate="0001-01-01" EndDate="0001-01-01" BeginTime="00:00:00" EndTime="00:00:00" CompletionTime="00:00:00" CompletionInterval="0" RepeatPeriodInDay="300" RepeatPause="0" WeekDayInMonth="0" DayInMonth="0" WeeksPeriod="1" DaysRepeatPeriod="1">
<ent:WeekDays>1 2 3 4 5 6 7</ent:WeekDays>
<ent:Months>1 2 3 4 5 6 7 8 9 10 11 12</ent:Months>
</Schedule>
</JobSchedule>

View File

@ -61,6 +61,8 @@
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ФайловаяСистемаКлиент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ФайловаяСистемаКлиентПереадресация</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ФайловаяСистемаСлужебныйКлиент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_СерверныеОповещения</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_СерверныеОповещенияСлужебный</xr:Item>
</Content>
</Properties>
<ChildObjects/>

View File

@ -35,6 +35,9 @@
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ПредопределенныеЗначенияВызовСервера</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ПредопределенныеЗначенияКлиент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ПредопределенныеЗначенияПовтИсп</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ПредопределенныеЗначенияСлужебныйКлиент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">ScheduledJob.пбп_ЗаполнениеПредопределенныхЭлементов</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Enum.пбп_ВидыОшибокПредопределенныхЭлементов</xr:Item>
</Content>
</Properties>
<ChildObjects/>