3_1_3_162

This commit is contained in:
Компания 1С committed 2020-06-05 18:29:00 +03:00
1 parent 3e171e7a5e
commit 32b6e70824
1022 files changed
+90267 -30672

No files matched your search

@@ -128,6 +128,7 @@
<key>ru</key>
<value>Состояние</value>
</title>
<verticalStretch>false</verticalStretch>
<extendedTooltip>
<name>ГруппаСостояниеExtendedTooltip</name>
<id>107</id>
@@ -101,6 +101,10 @@
Отложен = (Параметр.Отложен И Параметр.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияПроцессовДляЗапуска.ГотовКСтарту"));
ДатаОтложенногоСтарта = Параметр.ДатаОтложенногоСтарта;
УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
Если Элементы.ГруппаСостояние.Видимость Тогда
ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
КонецЕсли;
КонецЕсли;
// СтандартныеПодсистемы.РаботаСФайлами
@@ -140,6 +144,10 @@
&НаКлиенте
Процедура ОбновитьФорму()
УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
Если Элементы.ГруппаСостояние.Видимость Тогда
ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
КонецЕсли;
ОбновитьДоступностьКомандОстановки();
КонецПроцедуры
@@ -500,6 +508,10 @@
КонецЕсли;
УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
Если Элементы.ГруппаСостояние.Видимость Тогда
ИнфоНадписьЗаголовок = СтроковыеФункции.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
КонецЕсли;
КонецПроцедуры
@@ -573,23 +585,15 @@
КонецЕсли;
КонецЕсли;
УстановитьСвойстваГруппеСостояний(Форма);
Форма.Элементы.ГруппаСостояние.Видимость = Форма.Объект.Завершен Или ОбъектСтартован(Форма);
УстановитьДоступностьПроверяющего(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваГруппеСостояний(Форма)
Функция СообщениеОСтатусеЗадания(Форма)
ОтображатьГруппу = Форма.Объект.Завершен Или ОбъектСтартован(Форма);
Форма.Элементы.ГруппаСостояние.Видимость = ОтображатьГруппу;
Если НЕ ОтображатьГруппу Тогда
Возврат;
КонецЕсли;
МассивСтрок = Новый Массив;
Высота = 1;
ТекстСостояния = "";
Если Форма.Объект.Завершен Тогда
ДатаЗавершенияСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач,
@@ -598,7 +602,6 @@
НСтр("ru = 'Задание выполнено %1.'"),
НСтр("ru = 'Задание отменено %1.'"));
ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаТекста, ДатаЗавершенияСтрокой);
МассивСтрок.Добавить(ТекстСостояния);
Для каждого Элемент Из Форма.Элементы Цикл
Если ТипЗнч(Элемент) <> Тип("ПолеФормы") И ТипЗнч(Элемент) <> Тип("ГруппаФормы") Тогда
@@ -611,21 +614,16 @@
ТекстСостояния = ?(Форма.ИзменятьЗаданияЗаднимЧислом,
НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания вступят в силу немедленно для ранее выданной задачи.'"),
НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания не будут отражены в ранее выданной задаче.'"));
МассивСтрок.Добавить(ТекстСостояния);
Высота = 2;
ИначеЕсли Форма.Отложен Тогда
ДатаОтложенногоСтартаСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач,
Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=DT"), Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=D"));
ТекстСостояния = НСтр("ru = 'Задание будет запущено'") + " ";
МассивСтрок.Добавить(ТекстСостояния);
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ДатаОтложенногоСтартаСтрокой,,,, "ОткрытьНастройкуОтложенногоСтарта"));
ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Задание будет запущено <a href=""ОткрытьНастройкуОтложенногоСтарта"">%1</a>'"),
ДатаОтложенногоСтартаСтрокой);
КонецЕсли;
Форма.ИнфоНадписьЗаголовок = Новый ФорматированнаяСтрока(МассивСтрок);
Форма.Элементы.ИнфоНадписьЗаголовок.МаксимальнаяВысота = Высота;
Возврат ТекстСостояния;
КонецПроцедуры
КонецФункции
&НаСервере
Процедура ПроверитьДатуЗавершенияОтложенногоПроцесса(ПроверяемыйОбъект, Отказ)
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -211,9 +212,9 @@
// Устанавливает состояние элементов формы задачи.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - где:
// * Элементы - ВсеЭлементыФормы - где:
// ** Предмет - РасширениеПоляФормыДляПоляНадписи -
// Форма - ФормаКлиентскогоПриложения:
// * Элементы - ВсеЭлементыФормы:
// ** Предмет - РасширениеПоляФормыДляПоляНадписи
//
Процедура УстановитьСостояниеЭлементовФормыЗадачи(Форма) Экспорт
@@ -127,9 +127,9 @@
// Обработчики событий элементов карты маршрута.
// Параметры:
// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание -
// ФормируемыеЗадачи - Массив из ЗадачаОбъект -
// Отказ - Булево -
// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание
// ФормируемыеЗадачи - Массив из ЗадачаОбъект
// Отказ - Булево
//
Процедура ВыполнитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
@@ -172,11 +172,10 @@
Записать();
КонецПроцедуры
// Параметры:
// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание -
// ФормируемыеЗадачи - Массив из ЗадачаОбъект -
// Отказ - Булево -
// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание
// ФормируемыеЗадачи - Массив из ЗадачаОбъект
// Отказ - Булево
//
Процедура ПроверитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -172,14 +172,14 @@
// Возвращает данные для заполнения дерева разделов.
//
// Возвращаемое значение:
// Структура - где:
// * ОтфильтрованныеВарианты - ТаблицаЗначений - где:
// ** Ссылка - СправочникСсылка.ВариантыОтчетов -
// ** Причина - Число -
// * ВхожденияПодсистем - ТаблицаЗначений - где:
// ** Ссылка - СправочникСсылка.ВариантыОтчетов -
// ** Количество - Число -
// ** Важность - Строка -
// Структура:
// * ОтфильтрованныеВарианты - ТаблицаЗначений:
// ** Ссылка - СправочникСсылка.ВариантыОтчетов
// ** Причина - Число
// * ВхожденияПодсистем - ТаблицаЗначений:
// ** Ссылка - СправочникСсылка.ВариантыОтчетов
// ** Количество - Число
// ** Важность - Строка
//
&НаСервере
Функция ДанныеЗаполненияРазделов()
@@ -347,36 +347,38 @@
// Добавляет рекурсивно строку в дерево подсистем.
//
// Параметры:
// ПриемникРодитель - СтрокаДереваЗначений, ДеревоЗначений - где:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// * Имя - Строка -
// * ПолноеИмя - Строка -
// * Представление - Строка -
// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// * РазделПолноеИмя - Строка -
// * Приоритет - Строка -
// * ПолноеПредставление - Строка -
// * Важность - Строка -
// * Модифицированность - Булево -
// ИсточникРодитель - СтрокаДереваЗначений, ДеревоЗначений - где:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// * Имя - Строка -
// * ПолноеИмя - Строка -
// * Представление - Строка -
// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// * РазделПолноеИмя - Строка -
// * Приоритет - Строка -
// * ПолноеПредставление - Строка -
// * Важность - Строка -
// * Модифицированность - Булево -
// ВхожденияПодсистем - ТаблицаЗначений - где:
// * Ссылка - СправочникСсылка.ВариантыОтчетов -
// * Количество - Число -
// * Важность - Строка -
// ПриемникРодитель - СтрокаДереваЗначений
// - ДеревоЗначений:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// * Имя - Строка
// * ПолноеИмя - Строка
// * Представление - Строка
// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// * РазделПолноеИмя - Строка
// * Приоритет - Строка
// * ПолноеПредставление - Строка
// * Важность - Строка
// * Модифицированность - Булево
// ИсточникРодитель - СтрокаДереваЗначений
// - ДеревоЗначений:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// * Имя - Строка
// * ПолноеИмя - Строка
// * Представление - Строка
// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// * РазделПолноеИмя - Строка
// * Приоритет - Строка
// * ПолноеПредставление - Строка
// * Важность - Строка
// * Модифицированность - Булево
// ВхожденияПодсистем - ТаблицаЗначений:
// * Ссылка - СправочникСсылка.ВариантыОтчетов
// * Количество - Число
// * Важность - Строка
//
&НаСервере
Процедура ДобавитьПодсистемыВДерево(ПриемникРодитель, ИсточникРодитель, ВхожденияПодсистем)
@@ -10,14 +10,14 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.Свойство("Варианты") Или ТипЗнч(Параметры.Варианты) <> Тип("Массив") Тогда
Варианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Варианты"); // Массив из СправочникСсылка.ВариантыОтчетов
Если ТипЗнч(Варианты) <> Тип("Массив") Тогда
ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'");
Возврат;
КонецЕсли;
ОпределитьПоведениеВМобильномКлиенте();
ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты);
ИзменяемыеВарианты.ЗагрузитьЗначения(Варианты);
Отфильтровать();
КонецПроцедуры
@@ -10,20 +10,20 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.Свойство("Варианты") Или ТипЗнч(Параметры.Варианты) <> Тип("Массив") Тогда
Варианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Варианты"); // Массив из СправочникСсылка.ВариантыОтчетов
Если ТипЗнч(Варианты) <> Тип("Массив") Тогда
ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'");
Возврат;
КонецЕсли;
Если Не ЕстьПользовательскиеНастройки(Параметры.Варианты) Тогда
Если Не ЕстьПользовательскиеНастройки(Варианты) Тогда
ТекстОшибки = НСтр("ru = 'Пользовательские настройки выбранных вариантов отчетов (%1 шт) не заданы или уже сброшены.'");
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Формат(Параметры.Варианты.Количество(), "ЧН=0; ЧГ=0"));
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Формат(Варианты.Количество(), "ЧН=0; ЧГ=0"));
Возврат;
КонецЕсли;
ОпределитьПоведениеВМобильномКлиенте();
ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты);
ИзменяемыеВарианты.ЗагрузитьЗначения(Варианты);
КонецПроцедуры
&НаКлиенте
@@ -31,15 +31,19 @@
РежимРаботыФормы = "ВсеОтчетыРаздела";
РодительскиеЭлементы = Новый Массив; // Массив из ДанныеФормыЭлементДерева
РодительскиеЭлементы.Добавить(ДеревоПодсистем.ПолучитьЭлементы()[0]);
Пока РодительскиеЭлементы.Количество() > 0 Цикл
РодительскийЭлемент = РодительскиеЭлементы[0].ПолучитьЭлементы(); // ДанныеФормыКоллекцияЭлементовДерева
РодительскийЭлемент = ЭлементДереваПодсистем(РодительскиеЭлементы);
ДочерниеЭлементы = РодительскийЭлемент.ПолучитьЭлементы();
РодительскиеЭлементы.Удалить(0);
Для Каждого ДочернийЭлемент Из РодительскийЭлемент Цикл
Для Каждого ДочернийЭлемент Из ДочерниеЭлементы Цикл
Если ДочернийЭлемент.Ссылка = Параметры.РазделСсылка Тогда
Элементы.ДеревоПодсистем.ТекущаяСтрока = ДочернийЭлемент.ПолучитьИдентификатор();
РодительскиеЭлементы.Очистить();
Прервать;
КонецЕсли;
РодительскиеЭлементы.Добавить(ДочернийЭлемент);
КонецЦикла;
КонецЦикла;
@@ -339,17 +343,17 @@
// Возвращает параметры перетаскивания.
//
// Параметры:
// ПараметрыПеретаскивания - ПараметрыПеретаскивания -
// Строка - Число -
// ПараметрыПеретаскивания - ПараметрыПеретаскивания
// Строка - Число
//
// Возвращаемое значение:
// Неопределено -
// Структура - где:
// * Варианты - Структура - где:
// ** Массив - Массив из ДанныеФормыЭлементДерева -
// ** Всего - Число -
// ** Представление - Строка -
// * Действие - Строка -
// Неопределено
// Структура:
// * Варианты - Структура:
// ** Массив - Массив из ДанныеФормыЭлементДерева
// ** Всего - Число
// ** Представление - Строка
// * Действие - Строка
// * Приемник - см. СвойстваДанныхСтроки
// * Источник - см. СвойстваДанныхСтроки
//
@@ -421,12 +425,12 @@
// Конструктор свойств данных строки.
//
// Возвращаемое значение:
// Структура - где:
// * Ссылка - Неопределено -
// - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// * ПолноеПредставление - Строка -
// * Идентификатор - Число -
// Структура:
// * Ссылка - Неопределено
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// * ПолноеПредставление - Строка
// * Идентификатор - Число
//
&НаКлиенте
Функция СвойстваДанныхСтроки()
@@ -443,15 +447,15 @@
// Обработчик завершения перетаскивания.
//
// Параметры:
// Ответ - КодВозвратаДиалога -
// ПараметрыРазмещения - Структура - где:
// * Варианты - Структура - где:
// ** Массив - Массив из ДанныеФормыЭлементДерева -
// ** Всего - Число -
// ** Представление - Строка -
// * Действие - Строка -
// * Приемник - ДанныеФормыЭлементДерева -
// * Источник - ДанныеФормыЭлементДерева -
// Ответ - КодВозвратаДиалога
// ПараметрыРазмещения - Структура:
// * Варианты - Структура:
// ** Массив - Массив из ДанныеФормыЭлементДерева
// ** Всего - Число
// ** Представление - Строка
// * Действие - Строка
// * Приемник - ДанныеФормыЭлементДерева
// * Источник - ДанныеФормыЭлементДерева
//
&НаКлиенте
Процедура ДеревоПодсистемПеретаскиваниеЗавершение(Ответ, ПараметрыРазмещения) Экспорт
@@ -638,10 +642,10 @@
// ПараметрыРазмещения - см. ПараметрыРазмещения
//
// Возвращаемое значение:
// Структура - где:
// * Размещено - Число -
// * УжеРазмещены - Строка -
// * НеМогутРазмещаться - Строка -
// Структура:
// * Размещено - Число
// * УжеРазмещены - Строка
// * НеМогутРазмещаться - Строка
//
&НаСервере
Функция РазместитьВариантыВПодсистеме(ПараметрыРазмещения)
@@ -806,4 +810,31 @@
КонецЕсли;
КонецПроцедуры
// Параметры:
// ЭлементыДерева - Массив из ДанныеФормыЭлементДерева:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * Представление - Строка
// * Имя - Строка
// * ПолноеИмя - Строка
// * Приоритет - Строка
// * ПолноеПредставление - Строка
//
// Возвращаемое значение:
// ДанныеФормыЭлементДерева:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * Представление - Строка
// * Имя - Строка
// * ПолноеИмя - Строка
// * Приоритет - Строка
// * ПолноеПредставление - Строка
//
&НаСервере
Функция ЭлементДереваПодсистем(ЭлементыДерева)
Возврат ЭлементыДерева[0];
КонецФункции
#КонецОбласти
@@ -251,14 +251,16 @@
&НаКлиенте
Процедура ПодобратьПользователей(Команда)
ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект);
ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(
ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьГруппыВнешнихПользователей(Команда)
ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект, Истина);
ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(
ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость, Истина);
КонецПроцедуры
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -88,17 +88,7 @@
ИнтерактивнаяПометкаУдаления = ?(Пользовательский, ПометкаУдаления, Ложь);
КонецЕсли;
// Удаление из табличной части подсистем, помеченных на удаление.
УдаляемыеСтроки = Новый Массив;
Для Каждого СтрокаРазмещения Из Размещение Цикл
Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда
УдаляемыеСтроки.Добавить(СтрокаРазмещения);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаРазмещения Из УдаляемыеСтроки Цикл
Размещение.Удалить(СтрокаРазмещения);
КонецЦикла;
ПроверитьРазмещение();
ЗаполнитьПоляДляПоиска();
КонецПроцедуры
@@ -205,6 +195,31 @@
КонецПроцедуры
Процедура ПроверитьРазмещение()
Если ЗначениеЗаполнено(Контекст) Тогда
Размещение.Очистить();
Возврат;
КонецЕсли;
// Удаление из табличной части подсистем, помеченных на удаление.
УдаляемыеСтроки = Новый Массив;
Для Каждого СтрокаРазмещения Из Размещение Цикл
Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда
УдаляемыеСтроки.Добавить(СтрокаРазмещения);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаРазмещения Из УдаляемыеСтроки Цикл
Размещение.Удалить(СтрокаРазмещения);
КонецЦикла;
КонецПроцедуры
// Заполнение реквизитов НаименованияПолей и НаименованияПараметровИОтборов.
Процедура ЗаполнитьПоляДляПоиска()
@@ -261,6 +261,28 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="db28f23f-a771-46c0-96e8-5e4389b28b8b">
<name>Контекст</name>
<synonym>
<key>ru</key>
<value>Контекст</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>430</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Служебный реквизит. Полное имя объекта метаданных, в контексте которого формируется вариант отчета. Используется, как разделитель вариантов отчетов.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="5504f5d1-35d8-4a47-a0e1-003fe00395c1">
<name>НаименованияПараметровИОтборов</name>
<synonym>
@@ -60,7 +60,7 @@
// расширений, независимо от установленных разделителей.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура - со свойствами:
// ФиксированнаяСтруктура:
// * Основные - Строка - контрольная сумма всех расширений, кроме исправительных расширений.
// * Исправления - Строка - контрольная сумма всех исправительных расширений.
//
@@ -131,6 +131,15 @@
УстановленныеРасширения.Вставить("ОсновныеСостояние", КонтрольныеСуммыРасширений(Основные, "Все"));
УстановленныеРасширения.Вставить("ИсправленияСостояние", КонтрольныеСуммыРасширений(Исправления, "Все"));
Если ПриЗапуске
И АктивныеРасширения.Количество() = 0
И НеподключенныеРасширения.Количество() = 0
И РасширенияБазыДанных.Количество() <> 0
И СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда
УстановленныеРасширения.Вставить("РасширенияНедоступны");
КонецЕсли;
Возврат Новый ФиксированнаяСтруктура(УстановленныеРасширения);
КонецФункции
@@ -138,12 +147,16 @@
// Возвращает признак изменения состава расширений после запуска сеанса.
//
// Возвращаемое значение:
// Булево -
// Булево
//
Функция РасширенияИзмененыДинамически() Экспорт
УстановитьПривилегированныйРежим(Истина);
Если ПараметрыСеанса.УстановленныеРасширения.Свойство("РасширенияНедоступны") Тогда
Возврат Ложь;
КонецЕсли;
УстановленныеРасширения = УстановленныеРасширения();
Возврат ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние <> УстановленныеРасширения.ОсновныеСостояние
@@ -151,17 +164,16 @@
КонецФункции
// Структура - со свойствами:
// * Расширения - Структура со свойствами:
// Возвращает информацию по измененным расширениям и исправлениям.
//
// Возвращаемое значение:
// Структура:
// * Расширения - Структура:
// * Добавлено - Число
// * Удалено - Число
// * Изменено - Число
// * СписокНовых - Массив из Строка
// * Исправления - Структура со свойствами:
// * Исправления - Структура:
// * Добавлено - Число
// * Удалено - Число
// * Изменено - Число
// * СписокНовых - Массив из Строка
//
Функция ДинамическиИзмененныеРасширения() Экспорт
@@ -506,7 +518,7 @@
// Для общих форм Расширения, УстановленныеИсправления.
//
// Возвращаемое значение:
// РасширениеКонфигурации, Неопределено -
// РасширениеКонфигурации, Неопределено
//
Функция НайтиРасширение(ИдентификаторРасширения) Экспорт
@@ -527,7 +539,7 @@
// Для общих форм Расширения, УстановленныеИсправления.
//
// Параметры:
// Расширение - РасширениеКонфигурации -
// Расширение - РасширениеКонфигурации
//
Процедура ОтключитьПредупрежденияБезопасности(Расширение) Экспорт
@@ -638,7 +650,7 @@
// Для общих форм Расширения, УстановленныеИсправления.
//
// Возвращаемое значение:
// Массив Из УникальныйИдентификатор -
// Массив Из УникальныйИдентификатор
//
Функция ЗапросыНаОтменуРазрешенийИспользованияВнешнегоМодуля(ИдентификаторыРасширений) Экспорт
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -121,6 +121,7 @@
<lang>ru</lang>
</pages>
</help>
<dataLockFields>Catalog.ВерсииФайлов.StandardAttribute.Owner</dataLockFields>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<objectPresentation>
@@ -14,6 +14,10 @@
ИдентификаторПроверки = Параметры.ИдентификаторПроверки;
УстановитьТекущуюСтраницу(ЭтотОбъект, "Вопрос");
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -101,7 +101,7 @@
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ref</segments>
<segments>Список.Ссылка</segments>
</dataPath>
<extendedTooltip>
<name>СсылкаExtendedTooltip</name>
@@ -139,6 +139,10 @@
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>Selection</event>
<name>СписокВыбор</name>
</handlers>
<handlers>
<event>BeforeAddRow</event>
<name>СписокПередНачаломДобавления</name>
@@ -227,6 +231,32 @@
<contextMenu>
<name>СписокКонтекстноеМеню</name>
<id>2</id>
<items xsi:type="form:Button">
<name>СписокКонтекстноеМенюПерейтиКСписку</name>
<id>57</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокКонтекстноеМенюПерейтиКСпискуРасширеннаяПодсказка</name>
<id>58</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ПерейтиКСписку</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<autoFill>true</autoFill>
</contextMenu>
<representation>Tree</representation>
@@ -272,6 +302,33 @@
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<items xsi:type="form:Button">
<name>ФормаПерейтиКСписку</name>
<id>55</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаПерейтиКСпискуРасширеннаяПодсказка</name>
<id>56</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ПерейтиКСписку</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<locationInCommandBar>InAdditionalSubmenu</locationInCommandBar>
</items>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
@@ -302,15 +359,18 @@
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ИндексПиктограммы</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.РеквизитДопУпорядочивания</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.ЭтоГруппа</segments>
</notDefaultUseAlwaysAttributes>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
@@ -361,22 +421,23 @@
ИНАЧЕ 3
КОНЕЦ
КОНЕЦ КАК ИндексПиктограммы,
СправочникВидыКонтактнойИнформации.Ссылка,
СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка,
ВЫБОР
КОГДА &amp;ЭтоОсновнойЯзык
ТОГДА СправочникВидыКонтактнойИнформации.Наименование
ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150))
КОНЕЦ КАК Наименование,
СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания,
СправочникВидыКонтактнойИнформации.Используется
СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
СправочникВидыКонтактнойИнформации.Используется КАК Используется,
СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа
ИЗ
Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления
ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка)
И ВидыКонтактнойИнформацииПредставления.КодЯзыка = &amp;КодЯзыка
И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &amp;КодЯзыка)
ГДЕ
СправочникВидыКонтактнойИнформации.Используется И ЕстьNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, Истина)
</queryText>
СправочникВидыКонтактнойИнформации.Используется
И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА)</queryText>
<mainTable>Catalog.ВидыКонтактнойИнформации</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -385,6 +446,28 @@
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<formCommands>
<name>ПерейтиКСписку</name>
<title>
<key>ru</key>
<value>Перейти к списку...</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Перейти к списку с контактной информацией</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПерейтиКСписку</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -40,8 +40,33 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные.ЭтоГруппа Тогда
СтандартнаяОбработка = Ложь;
ПерейтиКСписку(Неопределено);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПерейтиКСписку(Команда)
Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ОткрытьФорму(ИмяФормыСписка(Элементы.Список.ТекущиеДанные.Ссылка));
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
@@ -81,4 +106,46 @@
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИмяФормыСписка(ВидКонтактнойИнформацииСсылка)
ЭтоГруппа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидКонтактнойИнформацииСсылка, "ЭтоГруппа,Родитель");
ГруппаВидаСсылка = ?(ЭтоГруппа.ЭтоГруппа, ВидКонтактнойИнформацииСсылка, ЭтоГруппа.Родитель);
Запрос = Новый Запрос(
"ВЫБРАТЬ
|ВЫБОР
| КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """"
| ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида
| ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных
|КОНЕЦ КАК ИмяПредопределенногоВида
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ГДЕ
| ВидыКонтактнойИнформации.Ссылка = &ГруппаВидаСсылка");
Запрос.УстановитьПараметр("ГруппаВидаСсылка", ГруппаВидаСсылка);
ИмяПредопределенногоВида = ВРЕГ(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИмяПредопределенногоВида")[0]);
ИменаБазовыхТипов = Новый Массив;
ИменаБазовыхТипов.Добавить("Справочник");
ИменаБазовыхТипов.Добавить("Документ");
ИменаБазовыхТипов.Добавить("БизнесПроцесс");
ИменаБазовыхТипов.Добавить("Задача");
ИменаБазовыхТипов.Добавить("ПланСчетов");
ИменаБазовыхТипов.Добавить("ПланОбмена");
ИменаБазовыхТипов.Добавить("ПланВидовХарактеристик");
ИменаБазовыхТипов.Добавить("ПланВидовРасчета");
Для каждого ИмяБазовогоТипа Из ИменаБазовыхТипов Цикл
Если СтрНачинаетсяС(ИмяПредопределенногоВида, ВРег(ИмяБазовогоТипа)) Тогда
Возврат ИмяБазовогоТипа + "."
+ Сред(ИмяПредопределенногоВида, СтрДлина(ИмяБазовогоТипа) + 1, СтрДлина(ИмяПредопределенногоВида))
+ ".ФормаСписка";
КонецЕсли;
КонецЦикла;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Невозможно перейти в списку для %1'"), ВидКонтактнойИнформацииСсылка);
КонецФункции
#КонецОбласти
@@ -100,6 +100,10 @@
<segments>Объект.Description</segments>
</dataPath>
<defaultItem>true</defaultItem>
<handlers>
<event>OnChange</event>
<name>НаименованиеПриИзменении</name>
</handlers>
<extendedTooltip>
<name>НаименованиеExtendedTooltip</name>
<id>87</id>
@@ -771,6 +775,169 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>МаскаПриВводеНомераТелефона</name>
<id>178</id>
<title>
<key>ru</key>
<value>Вводить номер по маске:</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ВводитьНомерПоМаске</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>МаскаПриВводеНомераТелефонаРасширеннаяПодсказка</name>
<id>180</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>МаскаПриВводеНомераТелефонаКонтекстноеМеню</name>
<id>179</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormGroup">
<name>МаскаТелефона</name>
<id>184</id>
<items xsi:type="form:Decoration">
<name>ДекорацияОтступМаскаТелефона</name>
<id>186</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекорацияОтступМаскаТелефонаРасширеннаяПодсказка</name>
<id>188</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекорацияОтступМаскаТелефонаКонтекстноеМеню</name>
<id>187</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<width>1</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ШаблонМаскиНомераТелефона</name>
<id>181</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.МаскаНомераТелефона</segments>
</dataPath>
<titleLocation>None</titleLocation>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ШаблонМаскиНомераТелефонаРасширеннаяПодсказка</name>
<id>183</id>
<title>
<key>ru</key>
<value>&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>В строке маски допустимо использование следующих специальных символов:&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>! - любой введенный символ преобразуется в верхний регистр;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>9 - допустимо ввести произвольный символ цифры;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>X (латинского алфавита) - допустимо ввести произвольный символ;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.&lt;/>&lt;/>&lt;/>&lt;/>
&lt;font Arial>&lt;fontsize 8>&lt;bgcolor #ffffff>&lt;color #333333>&lt;/>&lt;/>&lt;/>&lt;/></value>
</title>
<formatted>true</formatted>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ШаблонМаскиНомераТелефонаКонтекстноеМеню</name>
<id>182</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>20</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<dropListButton>true</dropListButton>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
<inputHint>
<key>ru</key>
<value>+9 (999) 999-99-99</value>
</inputHint>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Маска телефона</value>
</title>
<extendedTooltip>
<name>МаскаТелефонаРасширеннаяПодсказка</name>
<id>185</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1094,12 +1261,116 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаИдентификаторДляФормул</name>
<id>171</id>
<items xsi:type="form:FormField">
<name>ИдентификаторДляФормул</name>
<id>173</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ИдентификаторДляФормул</segments>
</dataPath>
<extendedTooltip>
<name>ИдентификаторДляФормулРасширеннаяПодсказка</name>
<id>175</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИдентификаторДляФормулКонтекстноеМеню</name>
<id>174</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ЗаполнитьИдентификаторДляФормул</name>
<id>176</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ЗаполнитьИдентификаторДляФормулРасширеннаяПодсказка</name>
<id>177</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ЗаполнитьИдентификаторДляФормул</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Идентификатор для формул</value>
</title>
<extendedTooltip>
<name>ГруппаИдентификаторДляФормулРасширеннаяПодсказка</name>
<id>172</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
<name>ФормаКоманднаяПанель</name>
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>NotificationProcessing</event>
<name>ОбработкаОповещения</name>
</handlers>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
@@ -1189,6 +1460,32 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ЗаполнитьИдентификаторДляФормул</name>
<title>
<key>ru</key>
<value>Заполнить идентификатор для формул</value>
</title>
<id>2</id>
<toolTip>
<key>ru</key>
<value>Заполнить идентификатор для формул</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.ЗаполнитьФорму</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ЗаполнитьИдентификаторДляФормул</name>
</handler>
</action>
<representation>Picture</representation>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -1202,6 +1499,10 @@
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWrite</event>
<name>ПередЗаписью</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
@@ -30,7 +30,8 @@
<li>
<div>Введите <strong>Наименование</strong>, с которым поле контактной информации появится в списке или документе.</div></li>
<li>
<div>Выберите <strong>Группу</strong>, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.</div></li></ul><h3>Настройки полей контактной информации</h3>
<div>Выберите <strong>Группу</strong>, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.</div></li>
<li>Поле <b>Идентификатор для формул</b> заполняется автоматически по специальным правилам. Не рекомендуется его изменять. Если автоматического заполнения не произошло, можно нажать кнопку <img src="CommonPicture.ЗаполнитьФорму"></img> <b>Заполнить</b>. Данный реквизит будет использоваться для построения и выполнения формул пользователями с разными языками интерфейса.</li></ul><h3>Настройки полей контактной информации</h3>
<ul><li>
<div>Включите флажок <strong>Обязательное заполнение</strong>, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.</div>
</li>
@@ -49,7 +50,8 @@
<ul><li>Включите флажок <strong>Только российский адрес</strong>, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>). Адрес проверяется по ФИАС.
</li>
<li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.</li></ul></li></ul><h3>Особенности настройки поля Телефон и факс</h3>
<li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.</li>
<li><b>Автоматически исправлять устаревшие адреса</b> - можно включить автоматическую проверку и исправление адресов. В этом случае регламентное задание 1 раз в неделю проверяет и исправляет адреса, ставшие устаревшими.</li></ul></li></ul><h3>Особенности настройки поля Телефон и факс</h3>
<ul><li>
<div>Для того чтобы использовать <strong>Телефон с добавочным номером</strong>, включите соответствующий флажок.</div></li>
<li>
@@ -62,7 +64,14 @@
<li>
<div><strong>Однострочное широкое</strong> - длинная строка;</div></li>
<li>
<div><strong>Однострочное узкое</strong> - если вид контактной информации <strong>Другое</strong> используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.</div></li></ul></li></ul><h3>См. также: </h3>
<div><strong>Однострочное узкое</strong> - если вид контактной информации <strong>Другое</strong> используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.</div></li></ul></li></ul><h3>Разрешение редактирования реквизитов</h3>
<p>Для того чтобы не допустить рассогласование данных в программе, следующие реквизиты не доступны для редактирования:</p>
<p></p>
<ul><li><b>Тип</b>;</li>
<li><b>Группа</b>;</li>
<li><b>Идентификатор формул</b>.</li></ul><p></p>
<p>Перед тем, как разрешить их редактирование, рекомендуется оценить последствия, проверив все места использования в программе.</p>
<h3>См. также: </h3>
<ul><li>
<div><a href="Catalog.ВидыКонтактнойИнформации/Help">Виды контактной информации</a>; </div></li></ul><ul><li><a href="DataProcessor.ВводКонтактнойИнформации/Help">Ввод контактной информации</a>;
</li>
@@ -16,6 +16,7 @@
Элементы.Родитель.ТолькоПросмотр = Истина;
Элементы.Тип.ТолькоПросмотр = Истина;
Элементы.ГруппаТипОбщиеДляВсех.ТолькоПросмотр = Объект.ЗапретитьРедактированиеПользователем;
Элементы.ИдентификаторДляФормул.ТолькоПросмотр = Истина;
Иначе
// Обработчик подсистемы запрета редактирования реквизитов объектов.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда
@@ -78,6 +79,13 @@
МультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект);
Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр;
Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
МодульРаботаСАдресами.ЗаполнитьМаскиНомераТелефона(Элементы.ШаблонМаскиНомераТелефона.СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -92,6 +100,46 @@
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ПослеВводаСтрокНаРазныхЯзыках"
И Параметр = ЭтотОбъект Тогда
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбновитьПредлагаемоеЗначениеИдентификатора();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НЕ ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется")
И ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда
// Заполнение идентификатора для формул
// и проверка есть ли свойство с тем же наименованием.
ТекстВопроса = ИдентификаторДляФормулУжеИспользуется(
Объект.ИдентификаторДляФормул, Объект.Ссылка, Объект.Родитель);
Если ЗначениеЗаполнено(ТекстВопроса) Тогда
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'"));
Кнопки.Добавить("ВернутьсяКВводуИдентификатора", НСтр("ru = 'Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи),
ТекстВопроса, Кнопки, , "ПродолжитьЗапись");
ОтказПриЗаписи = Истина;
Отказ = Истина;
Возврат;
Иначе
ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
@@ -99,6 +147,19 @@
Отказ = Истина;
КонецЕсли;
// Формирование идентификатора для формул дополнительного реквизита (сведения).
Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул)
Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда
НаименованиеОбъекта = НаименованиеДляФормированияИдентификатора(ТекущийОбъект.Наименование, ТекущийОбъект.Представления);
ТекущийОбъект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
НаименованиеОбъекта, ТекущийОбъект.Ссылка, ТекущийОбъект.Родитель);
ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена");
КонецЕсли;
Если ПараметрыЗаписи.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаИдентификатораДляФормулВыполнена");
КонецЕсли;
МультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект);
КонецПроцедуры
@@ -114,6 +175,8 @@
КонецЕсли;
КонецЕсли;
Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр;
МультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
@@ -129,6 +192,13 @@
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбновитьПредлагаемоеЗначениеИдентификатора();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТипПриИзменении(Элемент)
@@ -195,6 +265,18 @@
МультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоступностьПолейДляАдреса()
Если Объект.ВидРедактирования = "ПолеВвода" Тогда
Объект.ВключатьСтрануВПредставление = Ложь;
Элементы.ВключатьСтрануВПредставление.Доступность = Ложь;
Иначе
Элементы.ВключатьСтрануВПредставление.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -205,12 +287,22 @@
Если Не Объект.Предопределенный Тогда
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда
МодульЗапретРедактированияРеквизитовОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент");
МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект);
Оповещение = Новый ОписаниеОповещения("РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект);
МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект, Оповещение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат = Неопределено Тогда
Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеНастройкиАдреса(Команда)
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ПослеЗакрытияФормыНастроекАдреса", ЭтотОбъект);
@@ -221,6 +313,11 @@
ОткрытьФорму(ИмяФормыНастройкиАдреса, ПараметрыФормы,,,,, ОповещениеОЗакрытие);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИдентификаторДляФормул(Команда)
ЗаполнитьИдентификаторДляФормулНаСервере();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -234,6 +331,9 @@
Элементы.ДополнительныеНастройкиАдреса.Видимость = ДоступныДополнительныеНастройкиАдреса;
Элементы.ДополнительныеНастройкиАдреса.Доступность = Не Объект.МеждународныйФорматАдреса;
Элементы.ВидРедактирования.Видимость = Истина;
ДоступностьПолейДляАдреса();
Иначе
Элементы.ДополнительныеНастройкиАдреса.Видимость = Ложь;
Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда
@@ -293,5 +393,120 @@
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПредлагаемоеЗначениеИдентификатора()
ПредлагаемыйИдентификатор = "";
Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда
Представление = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления);
ПредлагаемыйИдентификатор = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
Представление, Объект.Ссылка, Объект.Родитель);
Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда
Объект.ИдентификаторДляФормул = ПредлагаемыйИдентификатор;
Модифицированность = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьИдентификаторДляФормулНаСервере()
ЗаголовокДляИдентификатора = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления);
Объект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
ЗаголовокДляИдентификатора, Объект.Ссылка, Объект.Родитель);
КонецПроцедуры
&НаСервереБезКонтекста
Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления)
Если ТекущийЯзык() <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Отбор = Новый Структура();
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Наименование = НайденныеСтроки[0].Наименование;
КонецЕсли;
КонецЕсли;
Возврат Наименование;
КонецФункции
&НаКлиенте
Процедура ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт
Если Ответ <> "ПродолжитьЗапись" Тогда
Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда
ВыполнитьОбработкуОповещения(
Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры,
ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры),
Истина);
КонецЕсли;
Иначе
ПараметрыЗаписи.Вставить("КогдаИдентификаторДляФормулУжеИспользуется");
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИдентификаторДляФормулУжеИспользуется(Знач ИдентификаторДляФормул, Знач ТекущийВидКонтактнойИнформации, Знач Родитель)
ПроверочныйИдентификатор = Справочники.ВидыКонтактнойИнформации.ИдентификаторДляФормул(ИдентификаторДляФормул);
Если ВРег(ИдентификаторДляФормул) <> ВРег(ПроверочныйИдентификатор) Тогда
ТекстВопроса = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных.
|Идентификатор не должен содержать пробелов и специальных символов.
|
|Создать новый идентификатор для формул и продолжить запись?'");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстВопроса,
ИдентификаторДляФормул);
Возврат ТекстВопроса;
КонецЕсли;
РодительВерхнегоУровня = Родитель;
Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл
Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель");
Если ЗначениеЗаполнено(Значение) Тогда
РодительВерхнегоУровня = Значение;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ВидыКонтактнойИнформации.Ссылка
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ГДЕ
| ВидыКонтактнойИнформации.ИдентификаторДляФормул = &ИдентификаторДляФормул
| И ВидыКонтактнойИнформации.Ссылка <> &Ссылка
| И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&Родитель)";
Запрос.УстановитьПараметр("Ссылка", ТекущийВидКонтактнойИнформации);
Запрос.УстановитьПараметр("ИдентификаторДляФормул", ИдентификаторДляФормул);
Запрос.УстановитьПараметр("Родитель", РодительВерхнегоУровня);
Выборка = Запрос.Выполнить().Выбрать();
Если НЕ Выборка.Следующий() Тогда
Возврат "";
КонецЕсли;
ТекстВопроса = НСтр("ru = 'Существует вид контактной информации с идентификатором для формул
|""%1"".
|
|Рекомендуется использовать другой идентификатор для формул,
|иначе программа может работать некорректно.
|
|Создать новый идентификатор для формул и продолжить запись?'");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстВопроса,
ИдентификаторДляФормул);
Возврат ТекстВопроса;
КонецФункции
#КонецОбласти
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -38,6 +39,7 @@
БлокируемыеРеквизиты.Добавить("Тип;Тип");
БлокируемыеРеквизиты.Добавить("Родитель");
БлокируемыеРеквизиты.Добавить("ИдентификаторДляФормул");
Возврат БлокируемыеРеквизиты;
@@ -53,9 +55,9 @@
//
// Параметры:
// ПарыЗамен - Соответствие - Ключ - что будет заменено, значение - на что будет заменено.
// Параметры - Структура - Набор флагов, описывающих действие с заменяемыми элементами.
// Параметры - Структура - набор флагов, описывающих действие с заменяемыми элементами.
// Содержит необязательные реквизиты:
// * СпособУдаления - Строка, может принимать значения:
// * СпособУдаления - Строка - может принимать значения:
// "Непосредственно" - Если после замены ссылка нигде не используется,
// то она будет удалена непосредственно
// "Пометка" - Если после замены ссылка не используется, то
@@ -94,28 +96,28 @@
//
// Параметры:
//
// ПараметрыПоиска - Структура - Предлагаемые параметры поиска. Содержит поля:
// ПараметрыПоиска - Структура - предлагаемые параметры поиска. Содержит поля:
//
// * ПравилаПоиска - ТаблицаЗначений - Предлагаемые правила сравнения для объектов.
// Может быть изменена для установки новых вариантов. Содержит колонки.
// ** Реквизит - Строка - Имя реквизита для сравнения.
// ** Правило - Строка - Правило сравнения: "Равно" - сравнение по равенству, "Подобно" -подобие строк,
// * ПравилаПоиска - ТаблицаЗначений - предлагаемые правила сравнения для объектов.
// Может быть изменена для установки новых вариантов. Содержит колонки:
// ** Реквизит - Строка - имя реквизита для сравнения.
// ** Правило - Строка - правило сравнения: "Равно" - сравнение по равенству, "Подобно" -подобие строк,
// "" - пустая строка - не сравнивать.
//
// * КомпоновщикОтбора - КомпоновщикНастроекКомпоновкиДанных - Инициализированный компоновщик для
// * КомпоновщикОтбора - КомпоновщикНастроекКомпоновкиДанных - инициализированный компоновщик для
// предварительного отбора. Может быть изменен, например, для
// усиления отборов.
//
// * ОграниченияСравнения - Массив - Предназначен для заполнения описания прикладных правил-ограничений.
// * ОграниченияСравнения - Массив - предназначен для заполнения описания прикладных правил-ограничений.
// Должен быть дополнен структурами с полями:
// ** Представление - Строка - Описание правила-ограничения для пользователя.
// ** ДополнительныеПоля - Строка - Список дополнительных реквизитов запятую, необходимых для
// ** Представление - Строка - описание правила-ограничения для пользователя.
// ** ДополнительныеПоля - Строка - список дополнительных реквизитов запятую, необходимых для
// дополнительного анализа.
//
// * КоличествоЭлементовДляСравнения - Число - Количество кандидатов в дубли, передаваемых одним вызовом
// * КоличествоЭлементовДляСравнения - Число - количество кандидатов в дубли, передаваемых одним вызовом
// обработчику.
//
// ДополнительныеПараметры - Произвольный - Значение, переданное при вызове программного интерфейса
// ДополнительныеПараметры - Произвольный - значение, переданное при вызове программного интерфейса
// ОбщегоНазначения.НайтиДублиЭлементов.
// При вызове пользователем из обработки "ПоискИЗаменаДублей" равно Неопределено.
//
@@ -135,18 +137,18 @@
//
// Параметры:
//
// ТаблицаКандидатов - ТаблицаЗначений - Описывает кандидатов в дубли. Содержит колонки:
// - Ссылка1 - ЛюбаяСсылка - Ссылка на элемент первого кандидата.
// - Ссылка2 - ЛюбаяСсылка - Ссылка на элемент второго кандидата.
// - ЭтоДубли - Булево - Флаг того, что кандидаты действительно являются дублями. По умолчанию содержит
// ТаблицаКандидатов - ТаблицаЗначений - описывает кандидатов в дубли. Содержит колонки:
// - Ссылка1 - ЛюбаяСсылка - ссылка на элемент первого кандидата.
// - Ссылка2 - ЛюбаяСсылка - ссылка на элемент второго кандидата.
// - ЭтоДубли - Булево - флаг того, что кандидаты действительно являются дублями. По умолчанию содержит
// значение Ложь, может быть изменено на Истина, если кандидаты - действительно
// дубли.
// - Поля1 - Структура - Содержит поля Код, Наименование и дополнительные поля первого кандидата,
// - Поля1 - Структура - содержит поля Код, Наименование и дополнительные поля первого кандидата,
// указанные в ПараметрыПоискаДублей.
// - Поля2 - Структура - Содержит поля Код, Наименование и дополнительные поля второго кандидата,
// - Поля2 - Структура - содержит поля Код, Наименование и дополнительные поля второго кандидата,
// указанные в ПараметрыПоискаДублей.
//
// ДополнительныеПараметры - Произвольный - Значение, переданное при вызове программного интерфейса
// ДополнительныеПараметры - Произвольный - значение, переданное при вызове программного интерфейса
// ОбщегоНазначения.НайтиДублиЭлементов.
// При вызове пользователем из обработки "ПоискИЗаменаДублей" равно Неопределено.
//
@@ -180,6 +182,271 @@
#Область СлужебныеПроцедурыИФункции
#Область ИдентификаторДляФормул
// Проверяет уникальность идентификатора в рамках объекта метаданных для которого предназначен вид контактной
// информации (родитель) а также соответствие идентификатора правилам написания.
//
// Параметры:
// ИдентификаторДляФормул - Строка - идентификатор для формул.
// Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на текущий объект.
// Родитель - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на родитель текущего объекта.
// Отказ - Булево - флаг отказа при наличии ошибки.
//
Процедура ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, Ссылка, Родитель, Отказ) Экспорт
Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда
ИдентификаторПоПравилам = Истина;
ПроверочныйИдентификатор = ИдентификаторДляФормул(ИдентификаторДляФормул);
Если НЕ ВРег(ПроверочныйИдентификатор) = ВРег(ИдентификаторДляФормул) Тогда
ИдентификаторПоПравилам = Ложь;
ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных.
|Идентификатор не должен содержать пробелов и специальных символов.'");
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),,
"ИдентификаторДляФормул",, Отказ);
КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка);
ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных.
|Идентификатор не должен содержать пробелов и специальных символов.'", КодЯзыка);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
ИдентификаторДляФормул);
ЗаписьЖурналаРегистрации(ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
Ссылка.Метаданные(),
Ссылка,
ТекстОшибки);
КонецЕсли;
Если ИдентификаторПоПравилам Тогда
РодительВерхнегоУровня = Родитель;
Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл
Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель");
Если ЗначениеЗаполнено(Значение) Тогда
РодительВерхнегоУровня = Значение;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ ИдентификаторДляФормулУникален(ИдентификаторДляФормул, Ссылка, РодительВерхнегоУровня) Тогда
Отказ = Истина;
ТекстОшибки = НСтр("ru = 'В базе данных уже содержится вид контактной информации с идентификатором ""%1"" внутри группы ""%2"". Идентификатор должен быть уникальным'");
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
ИдентификаторДляФормул, РодительВерхнегоУровня);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "ИдентификаторДляФормул");
КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ТекстОшибки = НСтр("ru = 'В базе данных уже содержится вид контактной информации с идентификатором ""%1"" внутри группы ""%2"". Идентификатор должен быть уникальным'", КодЯзыка);
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
ИдентификаторДляФормул, РодительВерхнегоУровня);
ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка);
ЗаписьЖурналаРегистрации(ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
Ссылка.Метаданные(),
Ссылка,
ТекстОшибки);
КонецЕсли;
КонецЕсли;
Иначе
ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'");
ОбщегоНазначения.СообщитьПользователю(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),,
"ИдентификаторДляФормул",, Отказ);
КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка);
ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'", КодЯзыка);
ЗаписьЖурналаРегистрации(ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
Ссылка.Метаданные(),
Ссылка,
ТекстОшибки);
КонецЕсли;
КонецПроцедуры
// Возвращает уникальный идентификатора для формул (после проверки на уникальность)
//
// Параметры:
// ПредставлениеОбъекта - Строка - представление, из которого будет сформирован идентификатор для формул.
// СсылкаНаТекущийОбъект - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на текущий элемент.
// Родитель - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на родитель текущего объекта.
// Возвращаемое значение:
// Строка - уникальное значение идентификатора для формул.
//
Функция УникальныйИдентификаторДляФормул(ПредставлениеОбъекта, СсылкаНаТекущийОбъект, Родитель) Экспорт
Идентификатор = ИдентификаторДляФормул(ПредставлениеОбъекта);
Если ПустаяСтрока(Идентификатор) Тогда
// Представление состоит и спецсимволов или цифр.
Префикс = НСтр("ru = 'Идентификатор'");
Идентификатор = ИдентификаторДляФормул(Префикс + ПредставлениеОбъекта);
КонецЕсли;
РодительВерхнегоУровня = Родитель;
Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл
Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель");
Если ЗначениеЗаполнено(Значение) Тогда
РодительВерхнегоУровня = Значение;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВидыКонтактнойИнформации.ИдентификаторДляФормул КАК ИдентификаторДляФормул
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ГДЕ
| ВидыКонтактнойИнформации.ИдентификаторДляФормул = &ИдентификаторДляФормул
| И ВидыКонтактнойИнформации.Ссылка <> &СсылкаНаТекущийОбъект
| И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВидыКонтактнойИнформации.ИдентификаторДляФормул КАК ИдентификаторДляФормул
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|ГДЕ
| ВидыКонтактнойИнформации.ИдентификаторДляФормул ПОДОБНО &ИдентификаторДляФормулПодобие
| И ВидыКонтактнойИнформации.Ссылка <> &СсылкаНаТекущийОбъект
| И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня)";
Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект);
Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня);
Запрос.УстановитьПараметр("ИдентификаторДляФормул", Идентификатор);
Запрос.УстановитьПараметр("ИдентификаторДляФормулПодобие", Идентификатор + "%");
РезультатыЗапроса = Запрос.ВыполнитьПакет();
УникальностьПоТочномуСоответствию = РезультатыЗапроса[0];
Если НЕ УникальностьПоТочномуСоответствию.Пустой() Тогда
// Есть элементы с данным идентификатором.
ИспользованныеИдентификаторы = Новый Соответствие;
ВыборкаПодобных = РезультатыЗапроса[1].Выбрать();
Пока ВыборкаПодобных.Следующий() Цикл
ИспользованныеИдентификаторы.Вставить(ВРЕГ(ВыборкаПодобных.ИдентификаторДляФормул), Истина);
КонецЦикла;
ДобавляемыйНомер = 1;
ИдентификаторБезНомера = Идентификатор;
Пока НЕ ИспользованныеИдентификаторы.Получить(ВРЕГ(Идентификатор)) = Неопределено Цикл
ДобавляемыйНомер = ДобавляемыйНомер + 1;
Идентификатор = ИдентификаторБезНомера + ДобавляемыйНомер;
КонецЦикла;
КонецЕсли;
ИспользованныеИдентификаторы = Новый Соответствие;
Возврат Идентификатор;
КонецФункции
Функция ИдентификаторДляФормулУникален(ПроверяемыйИдентификатор, СсылкаНаТекущийОбъект, Родитель)
РодительВерхнегоУровня = Родитель;
Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл
Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель");
Если ЗначениеЗаполнено(Значение) Тогда
РодительВерхнегоУровня = Значение;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Таблица.Ссылка
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК Таблица
|ГДЕ
| Таблица.Ссылка <> &СсылкаНаТекущийОбъект
| И Таблица.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня)
| И Таблица.ИдентификаторДляФормул = &ИдентификаторДляФормул";
Запрос.УстановитьПараметр("ИдентификаторДляФормул", ПроверяемыйИдентификатор);
Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект);
Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня);
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса.Пустой();
КонецФункции
// Вычисляет значение идентификатора из строки соответствии с правилами именования переменных.
//
// Параметры:
// СтрокаПредставления - Строка - наименование, строка из которой необходимо получить идентификатор.
//
// Возвращаемое значение:
// Строка - идентификатор, соответствующий правилам именования идентификаторов.
//
Функция ИдентификаторДляФормул(СтрокаПредставления) Экспорт
СпецСимволы = СпецСимволы();
Идентификатор = "";
БылСпецСимвол = Ложь;
Для НомСимвола = 1 По СтрДлина(СтрокаПредставления) Цикл
Символ = Сред(СтрокаПредставления, НомСимвола, 1);
Если СтрНайти(СпецСимволы, Символ) <> 0 Тогда
БылСпецСимвол = Истина;
Если Символ = "_" Тогда
Идентификатор = Идентификатор + Символ;
КонецЕсли;
ИначеЕсли БылСпецСимвол
ИЛИ НомСимвола = 1 Тогда
БылСпецСимвол = Ложь;
Идентификатор = Идентификатор + ВРег(Символ);
Иначе
Идентификатор = Идентификатор + Символ;
КонецЕсли;
КонецЦикла;
Возврат Идентификатор;
КонецФункции
Функция СпецСимволы()
Диапазоны = Новый Массив;
Диапазоны.Добавить(Новый Структура("Мин, Макс", 0, 32));
Диапазоны.Добавить(Новый Структура("Мин, Макс", 127, 191));
СпецСимволы = " .,+,-,/,*,?,=,<,>,(,)%!@#$%&*""№:;{}[]?()\|/`~'^_";
Для Каждого Диапазон Из Диапазоны Цикл
Для КодСимвола = Диапазон.Мин По Диапазон.Макс Цикл
СпецСимволы = СпецСимволы + Символ(КодСимвола);
КонецЦикла;
КонецЦикла;
Возврат СпецСимволы;
КонецФункции
Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления)
Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Отбор = Новый Структура();
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Наименование = НайденныеСтроки[0].Наименование;
КонецЕсли;
КонецЕсли;
Возврат Наименование;
КонецФункции
#КонецОбласти
// Регистрирует к обработке виды контактной информации.
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
@@ -208,6 +475,7 @@
ОбъектовОбработано = 0;
Пока ВидКонтактнойИнформацииСсылка.Следующий() Цикл
НачатьТранзакцию();
Попытка
ВидКонтактнойИнформации = ВидКонтактнойИнформацииСсылка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.ВидыКонтактнойИнформации
@@ -234,10 +502,22 @@
ВидКонтактнойИнформации.ВидРедактирования = "ПолеВводаИДиалог";
КонецЕсли;
КонецЕсли;
Если НЕ ВидКонтактнойИнформации.ЭтоГруппа
И НЕ ЗначениеЗаполнено(ВидКонтактнойИнформации.ИдентификаторДляФормул) Тогда
НаименованиеДляИдентификатора = НаименованиеДляФормированияИдентификатора(ВидКонтактнойИнформации.Наименование,
ВидКонтактнойИнформации.Представления);
ВидКонтактнойИнформации.ИдентификаторДляФормул = УникальныйИдентификаторДляФормул(НаименованиеДляИдентификатора,
ВидКонтактнойИнформации.Ссылка, ВидКонтактнойИнформации.Родитель);
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВидКонтактнойИнформации);
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
// Если не удалось обработать какой-либо вид контактной информации, повторяем попытку снова.
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
@@ -30,10 +30,22 @@
Если ПустаяСтрока(ИмяГруппы) Тогда
ИмяГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Родитель, "ИмяПредопределенныхДанных");
КонецЕсли;
ПроверкаИдентификатораДляФормул(Отказ);
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
УстановитьСостояниеРегламентногоЗадания();
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если СтрНачинаетсяС(ИмяПредопределенныхДанных, "Удалить") Тогда
@@ -53,18 +65,56 @@
Процедура ПриКопировании(ОбъектКопирования)
ИмяПредопределенногоВида = "";
Если НЕ ЭтоГруппа Тогда
ИдентификаторДляФормул = "";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПроверкаИдентификатораДляФормул(Отказ)
Если НЕ ДополнительныеСвойства.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда
// Программная запись.
Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда
Справочники.ВидыКонтактнойИнформации.ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул,
Ссылка, Родитель, Отказ);
Иначе
// Установка идентификатора.
ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул(
НаименованиеДляФормированияИдентификатора(), Ссылка, Родитель);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция НаименованиеДляФормированияИдентификатора()
НаименованиеДляИдентификатора = Наименование;
Если ТекущийЯзык() <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда
Отбор = Новый Структура();
Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка());
НайденныеСтроки = Представления.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НаименованиеДляИдентификатора = НайденныеСтроки[0].Наименование;
КонецЕсли;
КонецЕсли;
Возврат НаименованиеДляИдентификатора;
КонецФункции
Процедура ПриЧтенииПредставленийНаСервере() Экспорт
МультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект);
КонецПроцедуры
Процедура УстановитьСостояниеРегламентногоЗадания()
Статус = ?(ИсправлятьУстаревшиеАдреса = Истина, Истина, Неопределено);
УправлениеКонтактнойИнформациейСлужебный.УстановитьИспользованиеРегламентногоЗадания(Статус);
КонецПроцедуры
#КонецОбласти
#Иначе
@@ -588,6 +588,88 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="9cd2fc77-a4b0-457e-a6b0-63dbf521bf90">
<name>ИсправлятьУстаревшиеАдреса</name>
<synonym>
<key>ru</key>
<value>Исправлять устаревшие адреса</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Автоматические исправлять устаревшие адреса на новые</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="8363bd46-1ea5-44f0-858a-05bc03f6020e">
<name>ИдентификаторДляФормул</name>
<synonym>
<key>ru</key>
<value>Идентификатор для формул</value>
</synonym>
<synonym>
<key>en</key>
<value>Идентификатор для формул</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="a321b6db-391b-4c65-8d27-ce486d10055e">
<name>МаскаНомераТелефона</name>
<synonym>
<key>ru</key>
<value>Маска номера телефона</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>150</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Содержит строку маски для интерактивного ввода номера телефона.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="800ef5f0-fdd1-4f8b-8c0b-9744952bfb5b">
<name>ВводитьНомерПоМаске</name>
<synonym>
<key>ru</key>
<value>Вводить номер по маске</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Признак, что ввод номера телефона выполняется по маске.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="99387869-f8b1-4269-bd26-e39380d17b69">
<producedTypes>
<objectType typeId="9cb91b1a-ae31-403c-8c5d-e0fd01955e6c" valueTypeId="74fba94b-4c84-497d-a403-5c2dd8ebbc57"/>
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -132,6 +132,7 @@
<value>Вид проверки</value>
</objectPresentation>
<hierarchical>true</hierarchical>
<hierarchyType>HierarchyOfItems</hierarchyType>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
@@ -669,7 +669,7 @@
</edit>
</attributes>
<attributes>
<name>МассивСсылок</name>
<name>ОбновляемыеКомпоненты</name>
<id>1</id>
<valueType>
<types>ValueList</types>
@@ -688,13 +688,9 @@
<name>ПодключитьИнтернетПоддержку</name>
<title>
<key>ru</key>
<value>Подключить интернет поддержку</value>
<value>Подключить Интернет-поддержку</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value>Подключить интернет поддержку</value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -715,7 +711,7 @@
<id>2</id>
<toolTip>
<key>ru</key>
<value>Загрузить</value>
<value>Загрузить внешнюю компоненту с портала 1С:ИТС</value>
</toolTip>
<use>
<common>true</common>
@@ -729,7 +725,7 @@
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>МассивСсылок</name>
<name>ОбновляемыеКомпоненты</name>
<valueType/>
<keyParameter>true</keyParameter>
</parameters>
@@ -11,10 +11,9 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ТипЗнч(Параметры.МассивСсылок) <> Тип("Массив")
Или Параметры.МассивСсылок.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Должна быть хоть одна ссылка указана.'");
Если ТипЗнч(Параметры.ОбновляемыеКомпоненты) <> Тип("Массив")
Или Параметры.ОбновляемыеКомпоненты.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Некорректное значение параметра формы ОбновляемыеКомпоненты.'");
КонецЕсли;
ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены();
@@ -22,8 +21,9 @@
ТекстПояснения = "";
ПредложитьОбновление = Ложь;
Для Каждого Ссылка Из Параметры.МассивСсылок Цикл
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Идентификатор, Версия, ОбновлятьСПортала1СИТС");
РеквизитыКомпонент = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Параметры.ОбновляемыеКомпоненты, "Идентификатор, Версия, ОбновлятьСПортала1СИТС");
Для Каждого ОбновляемаяКомпонента Из Параметры.ОбновляемыеКомпоненты Цикл
Реквизиты = РеквизитыКомпонент[ОбновляемаяКомпонента];
ТекстПояснения = ТекстПояснения
+ ВнешниеКомпонентыСлужебный.ПредставлениеКомпоненты(Реквизиты.Идентификатор, Реквизиты. Версия)
+ ?(Реквизиты.ОбновлятьСПортала1СИТС, "", " - " + НСтр("ru = 'обновление отключено'") + ".")
@@ -31,7 +31,7 @@
ПредложитьОбновление = ПредложитьОбновление Или Реквизиты.ОбновлятьСПортала1СИТС;
Если Реквизиты.ОбновлятьСПортала1СИТС Тогда
МассивСсылок.Добавить(Ссылка);
ОбновляемыеКомпоненты.Добавить(ОбновляемаяКомпонента);
КонецЕсли;
КонецЦикла;
@@ -140,7 +140,7 @@
КонецЕсли;
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("МассивСсылок", МассивСсылок.ВыгрузитьЗначения());
ПараметрыПроцедуры.Вставить("ОбновляемыеКомпоненты", ОбновляемыеКомпоненты.ВыгрузитьЗначения());
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление внешней компоненты.'");
@@ -130,9 +130,6 @@
&НаКлиенте
Процедура ПослеПолученияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт
// Ответ:
// - Структура - Выполнено - результат в структуре.
// - Неопределено - Отменено пользователем.
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
@@ -98,6 +98,7 @@
Возврат;
КонецЕсли;
Если Не Модифицированность Тогда
СтандартнаяОбработка = Ложь;
ПараметрЗакрытия = ВнешниеКомпонентыСлужебныйКлиент.РезультатЗагрузкиКомпоненты();
@@ -108,6 +109,7 @@
ПараметрЗакрытия.ДополнительнаяИнформация = ДополнительнаяИнформация;
Закрыть(ПараметрЗакрытия);
КонецЕсли;
КонецПроцедуры
@@ -139,7 +141,7 @@
Если Модифицированность Тогда
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаЗаписатьОбъект", ЭтотОбъект);
ПоказатьВопрос(Оповещение,
НСтр("ru = 'Для проверки обновления необходимо записать объект. Записать?'"),
НСтр("ru = 'Для проверки обновления необходимо записать изменения. Записать?'"),
РежимДиалогаВопрос.ДаНет);
Иначе
НачатьОбновлениеКомпонентыСПортала();
@@ -201,7 +203,6 @@
#Область КлиентскаяЛогика
// Строит диалог загрузки компоненты из файла.
&НаКлиенте
Процедура ЗагрузитьКомпонентуИзФайла()
@@ -251,6 +252,7 @@
Результат = ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки);
Если Результат.Загружена И ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты)Тогда
ДополнительнаяИнформация = Результат.ДополнительнаяИнформация;
Модифицированность = Истина;
Иначе
ЗагрузитьКомпонентуПриОтображенииОшибки(Результат.ОписаниеОшибки);
КонецЕсли;
@@ -307,12 +309,11 @@
РазблокироватьДанныеФормыДляРедактирования();
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Объект.Ссылка);
ОбновляемыеКомпоненты = Новый Массив;
ОбновляемыеКомпоненты.Добавить(Объект.Ссылка);
Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентыСПортала", ЭтотОбъект);
ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, МассивСсылок);
ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, ОбновляемыеКомпоненты);
КонецПроцедуры
@@ -332,7 +333,7 @@
Функция ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки)
Если Не Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда
ВызватьИсключение НСтр("ru = 'Недостаточно прав для совершения операции.'");
ВызватьИсключение НСтр("ru = 'Недостаточно прав для загрузки компоненты.'");
КонецЕсли;
ОбъектСправочника = РеквизитФормыВЗначение("Объект");
@@ -353,10 +354,9 @@
Если ОбъектСправочника.Идентификатор <> Информация.Реквизиты.Идентификатор Тогда
Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Текущий идентификатор %1 отличается от загружаемого %2
|Обновление невозможно.'"),
ОбъектСправочника.Идентификатор,
Информация.Реквизиты.Идентификатор);
НСтр("ru = 'Невозможно обновить компоненту, т.к. различаются идентификаторы.
|Ожидался %1, а идентификатор загружаемой внешней компоненты: %2.'"),
ОбъектСправочника.Идентификатор, Информация.Реквизиты.Идентификатор);
Возврат Результат;
КонецЕсли;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -523,7 +523,7 @@
<name>ОбновлениеКомпонентСПортала1СИТС</name>
<synonym>
<key>ru</key>
<value>Обновление компонент с Портала 1С:ИТС</value>
<value>Обновление компонент с портала 1С:ИТС</value>
</synonym>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
@@ -37,7 +37,7 @@
// Начальное значение настройки до загрузки данных из настроек.
ВыбиратьИерархически = Истина;
ЗаполнитьХранимыеПараметры();
НовыйХранимыеПараметры();
МассивПустыхСсылок = Неопределено;
Параметры.Свойство("Назначение", МассивПустыхСсылок);
@@ -597,7 +597,7 @@
МассивПользователей = РезультатВыбора();
ОповеститьОВыборе(МассивПользователей);
ЭтотОбъект.Модифицированность = Ложь;
Закрыть();
Закрыть(МассивПользователей);
КонецЕсли;
КонецПроцедуры
@@ -660,8 +660,18 @@
#Область СлужебныеПроцедурыИФункции
// Возвращаемое значение:
// Структура:
// * ВыборГруппВнешнихПользователей - Булево
// * ОтборОбъектАвторизации - ОпределяемыйТип.ВнешнийПользователь
// * РасширенныйПодбор - Булево
// * ГруппаВсеПользователи - СправочникСсылка.ГруппыВнешнихПользователей
// * ТекущаяСтрока - Число
// * ЗаголовокФормыПодбора - Строка
// * ИспользоватьГруппы - Булево
//
&НаСервере
Процедура ЗаполнитьХранимыеПараметры()
Функция НовыйХранимыеПараметры()
ХранимыеПараметры = Новый Структура;
ХранимыеПараметры.Вставить("ВыборГруппВнешнихПользователей", Параметры.ВыборГруппВнешнихПользователей);
@@ -671,8 +681,9 @@
Иначе
ХранимыеПараметры.Вставить("ОтборОбъектАвторизации", Неопределено);
КонецЕсли;
Возврат ХранимыеПараметры;
КонецПроцедуры
КонецФункции
&НаСервере
Процедура ЗаполнитьПараметрыДинамическихСписков(МассивПустыхСсылок = Неопределено)
@@ -910,6 +921,9 @@
&НаСервере
Процедура ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки)
ПользователиСлужебный.ВыбратьПользователейГруппы(
ВыбранныеЭлементыИКартинки, ХранимыеПараметры, Элементы.ВнешниеПользователиСписок);
Для Каждого СтрокаМассива Из ВыбранныеЭлементыИКартинки Цикл
ВыбранныйПользовательИлиГруппа = СтрокаМассива.ВыбранныйЭлемент;
@@ -1164,11 +1178,11 @@
// Обработчик вопроса.
//
// Параметры:
// Ответ - КодВозвратаДиалога -
// ДополнительныеПараметры - Структура - где:
// * ПараметрыПеретаскивания - ПараметрыПеретаскивания -
// * Строка - СправочникСсылка.ГруппыВнешнихПользователей -
// * Перемещение - ДействиеПеретаскивания -
// Ответ - КодВозвратаДиалога
// ДополнительныеПараметры - Структура:
// * ПараметрыПеретаскивания - ПараметрыПеретаскивания
// * Строка - СправочникСсылка.ГруппыВнешнихПользователей
// * Перемещение - ДействиеПеретаскивания
//
&НаКлиенте
Процедура ГруппыВнешнихПользователейПеретаскиваниеОбработкаВопроса(Ответ, ДополнительныеПараметры) Экспорт
@@ -468,10 +468,10 @@
Если Строка.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1"));
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1"));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
@@ -1353,7 +1353,7 @@
КонецЕсли;
Элементы.СопоставлениеПояснениеНесоответствия.Заголовок =
НСтр("ru = 'Пользователь информационной базы не найден.'") + Рекомендация;
НСтр("ru = 'Несуществующий пользователь информационной базы.'") + Рекомендация;
КонецПроцедуры
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -82,7 +82,7 @@
Блокировка.Добавить("Справочник.ГруппыВнешнихПользователей");
Блокировка.Заблокировать();
ОбъектГруппы = ДополнительныеСвойства.ГруппаНовогоВнешнегоПользователя.ПолучитьОбъект();
ОбъектГруппы = ДополнительныеСвойства.ГруппаНовогоВнешнегоПользователя.ПолучитьОбъект(); // СправочникСсылка.ГруппыВнешнихПользователей
ОбъектГруппы.Состав.Добавить().ВнешнийПользователь = Ссылка;
ОбъектГруппы.Записать();
КонецЕсли;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
@@ -171,10 +171,10 @@
Если Строка.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1"));
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1"));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -123,9 +123,10 @@
КонецЕсли;
КонецЦикла;
Для каждого УдалитьПапку Из УдалитьПапки Цикл
Если УдалитьПапку.Ключ.Индекс(УдалитьПапку.Значение) > -1 Тогда
УдалитьПапку.Ключ.Удалить(УдалитьПапку.Значение);
Для Каждого КлючИЗначение Из УдалитьПапки Цикл
Строки = КлючИЗначение.Ключ; // КоллекцияСтрокДереваЗначений
Если Строки.Индекс(КлючИЗначение.Значение) > -1 Тогда
Строки.Удалить(КлючИЗначение.Значение);
КонецЕсли;
КонецЦикла;
@@ -1319,6 +1319,7 @@
ПараметрыФормы.Вставить("МножественныйВыбор", Истина);
ПараметрыФормы.Вставить("РасширенныйПодбор", Истина);
ПараметрыФормы.Вставить("ПараметрыРасширеннойФормыПодбора", ПараметрыРасширеннойФормыПодбора());
ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина);
ИначеЕсли Объект.Ссылка <> ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда
Если ВыборИПодборВнешнихПользователей Тогда
ПараметрыФормы.Вставить("ВыборГруппВнешнихПользователей", Истина);
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -265,13 +266,15 @@
// Если родитель не найден он будет создан.
//
// Параметры:
// НеСоздавать - Булево, если задан Истина, родитель не будет автоматически создан,
// НеСоздавать - Булево - если задан Истина, родитель не будет автоматически создан,
// а функция вернет Неопределено, если родитель не найден.
//
// НаименованиеГруппыЭлементов - Строка
//
// Возвращаемое значение:
// СправочникСсылка.ГруппыДоступа - ссылка на группу-родителя.
//
Функция РодительПерсональныхГруппДоступа(Знач НеСоздавать = Ложь, НаименованиеГруппыЭлементов = Неопределено) Экспорт
Функция РодительПерсональныхГруппДоступа(Знач НеСоздавать = Ложь, НаименованиеГруппыЭлементов = "") Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -604,6 +607,10 @@
// Только для внутреннего использования.
//
// Параметры:
// ЭлементДанных - СправочникОбъект.ГруппыДоступа
//
Процедура ЗарегистрироватьГруппуДоступаИзмененнуюПриЗагрузке(ЭлементДанных) Экспорт
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлементДанных.Ссылка,
@@ -195,6 +195,14 @@
#Область СлужебныеПроцедурыИФункции
// Параметры:
// НовыеУчастники - СправочникТабличнаяЧасть.ГруппыДоступа.Пользователи
// СтарыеУчастники - РезультатЗапроса
// Возвращаемое значение:
// Структура:
// * ВнешниеПользователи - Булево
// * Пользователи - Булево
//
Функция ТипыИзмененныхУчастников(НовыеУчастники, СтарыеУчастники)
ТипыИзмененныхУчастников = Новый Структура;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -1722,6 +1722,13 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>Заголовок</name>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar>
@@ -16,7 +16,7 @@
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
КонецЕсли;
Если Параметры.Свойство("Заголовок") Тогда
Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда
АвтоЗаголовок = Ложь;
Заголовок = Параметры.Заголовок;
КонецЕсли;
@@ -212,15 +212,6 @@
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьФайлОбработкиОтчетаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = "ФайлЗагружен" Тогда
ПоказатьЗначение(,Элементы.Список.ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
@@ -903,6 +903,10 @@
КонецПроцедуры
// Параметры:
// Ответ - КодВозвратаДиалога
// ДополнительныеПараметры - Структура
//
&НаКлиенте
Процедура ВариантыДополнительногоОтчетаПередУдалениемЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
@@ -1332,7 +1336,7 @@
&НаСервере
Процедура СформироватьСписокРазрешений()
ТаблицаРазрешений = ПолучитьИзВременногоХранилища(АдресРазрешений);
ТаблицаРазрешений = ПолучитьИзВременногоХранилища(АдресРазрешений);// СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Разрешения
Разрешения = Новый Массив();
@@ -1459,7 +1463,7 @@
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
ОтчетМетаданные = ВнешнийОбъект.Метаданные();
СхемаКДМетаданные = ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных;
СхемаКДМетаданные = ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных;// ОбъектМетаданных
Если СхемаКДМетаданные <> Неопределено Тогда
СхемаКД = ВнешнийОбъект.ПолучитьМакет(СхемаКДМетаданные.Имя);
Для Каждого ВариантНастроекКД Из СхемаКД.ВариантыНастроек Цикл
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -221,7 +221,7 @@
Возврат;
КонецЕсли;
ТаблицаКоманд = ДополнительныеСвойства.АктуальныеКоманды;
ТаблицаКоманд = ДополнительныеСвойства.АктуальныеКоманды;// СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Команды
ЗаданияДляОбновления = Новый Соответствие;
@@ -293,7 +293,7 @@
УстановитьПривилегированныйРежим(Истина);
Для Каждого КлючИЗначение Из ДополнительныеСвойства.ЗаданияДляОбновления Цикл
Команда = КлючИЗначение.Ключ;
Команда = КлючИЗначение.Ключ;// СправочникТабличнаяЧастьСтрока.ДополнительныеОтчетыИОбработки.Команды
Задание = КлючИЗначение.Значение;
Изменения = Новый Структура;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -166,7 +167,7 @@
// Только для внутреннего использования.
//
// Параметры:
// Объекты - Массив из СправочникОбъект.ИдентификаторыОбъектовМетаданных -
// Объекты - Массив из СправочникОбъект.ИдентификаторыОбъектовМетаданных
//
Процедура ЗагрузитьДанныеВПодчиненныйУзел(Объекты) Экспорт
@@ -378,8 +379,8 @@
//
// Возвращаемое значение:
// Массив - со значениями:
// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
// СправочникСсылка.ИдентификаторыОбъектовРасширений - найденная ссылка.
// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений - найденная ссылка.
//
Функция ИдентификаторУдаленногоОбъектаМетаданных(ПолноеИмяУдаленного) Экспорт
@@ -582,9 +583,8 @@
Массив = Новый Массив;
Массив.Добавить(ПолноеИмяОбъектаМетаданных);
Идентификатор = ИдентификаторыОбъектовМетаданных(Массив,
ВызыватьИсключение, Истина).Получить(ПолноеИмяОбъектаМетаданных);
Идентификаторы = ИдентификаторыОбъектовМетаданных(Массив, ВызыватьИсключение, Истина);
Идентификатор = Идентификаторы.Получить(ПолноеИмяОбъектаМетаданных);
Если Идентификатор = Неопределено Тогда
Возврат Null;
КонецЕсли;
@@ -891,15 +891,15 @@
// Только для внутреннего использования.
//
// Возвращаемое значение:
// ТаблицаЗначений -
// * ПорядокБиблиотеки - Число -
// * ВерсияЧасть1 - Число -
// * ВерсияЧасть2 - Число -
// * ВерсияЧасть3 - Число -
// * ВерсияЧасть4 - Число -
// * ПорядокДобавления - Число -
// * СтароеПолноеИмя - Строка -
// * НовоеПолноеИмя - Строка -
// ТаблицаЗначений:
// * ПорядокБиблиотеки - Число
// * ВерсияЧасть1 - Число
// * ВерсияЧасть2 - Число
// * ВерсияЧасть3 - Число
// * ВерсияЧасть4 - Число
// * ПорядокДобавления - Число
// * СтароеПолноеИмя - Строка
// * НовоеПолноеИмя - Строка
//
Функция ТаблицаПереименованияДляТекущейВерсии() Экспорт
@@ -1189,8 +1189,8 @@
// Только для внутреннего использования.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - :
// * Список - ДинамическийСписок -
// Форма - ФормаКлиентскогоПриложения:
// * Список - ДинамическийСписок
//
Процедура ФормаСпискаПриСозданииНаСервере(Форма) Экспорт
@@ -1213,9 +1213,10 @@
// Только для внутреннего использования.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - :
// * Объект - ДанныеФормыСтруктура - :
// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений -
// Форма - ФормаКлиентскогоПриложения:
// * Объект - ДанныеФормыСтруктура:
// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
//
Процедура ФормаЭлементаПриСозданииНаСервере(Форма) Экспорт
@@ -1381,29 +1382,31 @@
КонецПроцедуры
// Возвращаемое значение:
// ТаблицаЗначений - :
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений -
// * ИмяПредопределенныхДанных - Строка -
// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений -
// * ПометкаУдаления - Булево -
// * Наименование - Строка -
// * ПорядокКоллекции - Число -
// * Имя - Строка -
// * Синоним - Строка -
// * ПолноеИмя - Строка -
// * ПолныйСиноним - Строка -
// * БезДанных - Булево -
// * ЗначениеПустойСсылки - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// * ХранилищеКлюча - ХранилищеЗначения -
// * НоваяСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных,
// СправочникСсылка.ИдентификаторыОбъектовРасширений -
// * ИмяРасширения - Строка -
// * ХешСуммаРасширения - Строка -
// * КлючОбъектаМетаданных - ХранилищеЗначения -
// * БезКлючаОбъектаМетаданных - Булево -
// * ЭтоКоллекция - Булево -
// * ЭтоНовый - Булево -
// ТаблицаЗначений:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * ИмяПредопределенныхДанных - Строка
// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * ПометкаУдаления - Булево
// * Наименование - Строка
// * ПорядокКоллекции - Число
// * Имя - Строка
// * Синоним - Строка
// * ПолноеИмя - Строка
// * ПолныйСиноним - Строка
// * БезДанных - Булево
// * ЗначениеПустойСсылки - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * ХранилищеКлюча - ХранилищеЗначения
// * НоваяСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * ИмяРасширения - Строка
// * ХешСуммаРасширения - Строка
// * КлючОбъектаМетаданных - ХранилищеЗначения
// * БезКлючаОбъектаМетаданных - Булево
// * ЭтоКоллекция - Булево
// * ЭтоНовый - Булево
//
Функция ВыгрузкаВсехИдентификаторов(ОбъектыРасширений = Ложь)
@@ -2660,7 +2663,7 @@
Попытка
Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(
ПолныеИменаОбъектовМетаданных, Истина, ОдинЭлемент);
ПолныеИменаОбъектовМетаданных, Истина, ОдинЭлемент, Истина);
Исключение
Идентификаторы = Неопределено;
КонецПопытки;
@@ -2678,7 +2681,7 @@
КонецЕсли;
Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(
ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент);
ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент, Не ВызыватьИсключение);
КонецЕсли;
Возврат Идентификаторы;
@@ -2686,7 +2689,8 @@
КонецФункции
// Для функций ИдентификаторыОбъектовМетаданных.
Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент)
Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных,
ВызыватьИсключение, ОдинЭлемент, ПропускатьНеподдерживаемыеОбъекты)
УстановитьПривилегированныйРежим(Истина);
@@ -2752,8 +2756,7 @@
Продолжить;
КонецЕсли;
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных не найден по полному имени:
|""%1"".'"),
НСтр("ru = 'Объект метаданных с именем ""%1"" не существует.'"),
ПолноеИмяОбъектаМетаданных);
Ошибки.Добавить(ОписаниеОшибки);
Продолжить;
@@ -2778,6 +2781,9 @@
И Не Метаданные.Задачи.Содержит(ОбъектМетаданных)
И Не ЭтоПодсистема(ОбъектМетаданных) Тогда
Если ПропускатьНеподдерживаемыеОбъекты Тогда
Продолжить;
КонецЕсли;
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Объект метаданных не поддерживается:
|""%1"".
@@ -2815,9 +2821,9 @@
ШаблонОшибки = ?(Расширение <> Неопределено,
НСтр("ru = 'Для объекта метаданных ""%1""
|не найден идентификатор в регистре сведений ""Идентификаторы объектов версий расширений"".'"),
|не существует идентификатор в регистре сведений ""Идентификаторы объектов версий расширений"".'"),
НСтр("ru = 'Для объекта метаданных ""%1""
|не найден идентификатор в справочнике ""Идентификаторы объектов метаданных"".'"));
|не существует идентификатор в справочнике ""Идентификаторы объектов метаданных"".'"));
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных);
ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина;
Ошибки.Добавить(ОписаниеОшибки);
@@ -2870,12 +2876,12 @@
Если КоличествоОшибок > 0 Тогда
Если ОдинЭлемент Тогда
ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().'");
ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных.'");
ИначеЕсли КоличествоОшибок = 1 Тогда
ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных().'");
ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.'");
Иначе
ЗаголовокОшибки = НСтр("ru = 'Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных().'");
ЗаголовокОшибки = НСтр("ru = 'Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.'");
КонецЕсли;
Разделитель = Символы.ПС + Символы.ПС;
@@ -3089,7 +3095,7 @@
Если ВызыватьИсключение Тогда
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Идентификатор ""%1""
|не найден в справочнике ""%2"".'"),
|не существует в справочнике ""%2"".'"),
Строка(Идентификатор),
НазваниеСправочника(ИдентификаторыРасширений.Найти(Идентификатор) <> Неопределено));
@@ -3260,7 +3266,7 @@
КонецЕсли;
Если ПолноеИмя = Неопределено Тогда
Возврат НСтр("ru = 'Объект не найден.'")
Возврат НСтр("ru = 'Объект не существует.'")
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя);
@@ -3393,15 +3399,13 @@
// АПК:1327-выкл - №783.1.4.1 Во-первых, нетранзакционная операция, так как может быть длительной.
// Во-вторых, выполняется после загрузки данных из главного узла в режиме обновление информационной базы.
// В третьих, выполняется только тогда, когда найдены дубли идентификаторов объектов метаданных (редкий случай).
Параметры = Новый Структура;
Параметры = ПараметрыЗаменыЭлементов();
Для Каждого РегистрБухгалтерии Из Метаданные.РегистрыБухгалтерии Цикл
Параметры.Вставить(РегистрБухгалтерии.Имя + "Субконто", РегистрБухгалтерии.ПланСчетов.МаксКоличествоСубконто);
Параметры.Вставить(РегистрБухгалтерии.Имя + "Корреспонденция", РегистрБухгалтерии.Корреспонденция);
КонецЦикла;
Параметры.Вставить("Объект", Неопределено);
ОбрабатываемаяСсылка = Неопределено;
БылиИсключения = Ложь;
@@ -3614,7 +3618,7 @@
Для Каждого Последовательность Из Метаданные.Последовательности Цикл
Если Последовательность.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда
НадоЗаписывать = Ложь;
НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей();
НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей(); // ПоследовательностьНаборЗаписей
НаборЗаписи.Отбор.Регистратор.Установить(СтрокаТаблицы.Данные);
НаборЗаписи.Прочитать();
@@ -3721,7 +3725,7 @@
СтруктураИзмерений = Новый Структура;
МенеджерРегистра = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтрокаТаблицы.Метаданные.ПолноеИмя());
НаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей();
НаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей
Для Каждого Измерение Из СтрокаТаблицы.Метаданные.Измерения Цикл
НаборЗаписей.Отбор[Измерение.Имя].Установить(СтрокаТаблицы.Данные[Измерение.Имя]);
СтруктураИзмерений.Вставить(Измерение.Имя, СтрокаТаблицы.Данные[Измерение.Имя]);
@@ -3841,6 +3845,20 @@
КонецФункции
// Возвращаемое значение:
// Структура:
// * Объект - СправочникОбъект
// - Неопределено
//
Функция ПараметрыЗаменыЭлементов()
Параметры = Новый Структура;
Параметры.Вставить("Объект", Неопределено);
Возврат Параметры;
КонецФункции
// Процедура из универсальной обработки ПоискИЗаменаЗначений.
// Изменения:
// - заменен метод Сообщить(...) на ЗаписьЖурналаРегистрации(...).
@@ -1163,66 +1163,102 @@
<value></value>
</code>
</items>
<items id="d3273f8d-2ba0-4559-b721-4e5818ffaf97">
<items id="2eba640a-28be-4f83-89ca-6a21b50f5d71">
<name>РегистрСведенийЗапущенныеОбработчикиОчередиЗаданий</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="c536a762-d2d2-4394-8aa9-c84fba772061">
<items id="c9caf969-5c58-4bf1-ae05-471385e310e6">
<name>РегистрСведенийКэшДанныхКлассификаторов</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="daf0bc19-6d8f-471d-9589-c1cb1d22e03c">
<items id="2529e951-336d-4270-9d3b-e5a6148f954e">
<name>РегистрСведенийНеудаленныеОбъекты</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="417f7313-4c12-4a68-8ab3-b391a0a883e2">
<name>РегистрСведенийОбновлениеКлючейДоступаТекущиеЗадания</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="99d736f2-6aba-495b-ab6e-aef2c8b78404">
<items id="87dbaa53-3d37-44c0-a072-021dd7fa3e6f">
<name>РегистрСведенийОбщиеПоставляемыеМакетыПечати</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="184b9b0b-3148-42bd-8f39-4b4835604cdb">
<items id="3a392cc5-8c83-4e58-ad38-95d672fe2e27">
<name>РегистрСведенийОчередьОбновляемыхПоставляемыхРасширенийВОбластяхДанных</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="262b9afe-916f-4321-a336-3f13d503d404">
<items id="042f093a-3ace-411c-b8b8-0236af1631d7">
<name>РегистрСведенийОчередьРасширенийДляОповещений</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="6aecdc48-5c12-4856-93d7-bd9afb1b645f">
<items id="54d0956b-805f-4280-873d-50fc8b7eaded">
<name>РегистрСведенийПоставляемыеДанныеТребующиеОбработкиВОбластях</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="2c7bf5c2-d702-4feb-93aa-8d4c8f690f09">
<items id="e37fd965-5d85-40d2-a60d-4bba0691240e">
<name>РегистрСведенийСвязиАдресныхОбъектов</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="5a16cc94-e57f-4ed8-bd92-6188083e6960">
<items id="0028853c-63d1-4ec8-965d-31f15ad05d7e">
<name>РегистрСведенийСостоянияПроверокВеденияУчета</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="6e19c877-8395-49d3-a4fe-7c12c531ad11">
<items id="245d63d2-f030-408a-9cae-75d2be4d69ee">
<name>РегистрСведенийУдаляемыеОбъекты</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="69ab01bc-899e-46ef-b10a-f695f3a8e35b">
<name>РегистрСведенийПериодыНерабочихДнейКалендаря</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="6e10526d-d55a-417d-a264-2dd079a5870f">
<name>РегистрСведенийОбработчикиОбновления</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="6cf49688-44ad-417f-99cb-c83b261f10f1">
<name>РегистрСведенийОбработчикиОбновленияОбщихДанных</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="e43b6d77-9453-48ea-b01c-c614bdee971e">
<name>РегистрСведенийПотокиОбновления</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
<items id="30c9965b-1763-49b0-b2ec-695a90a849a2">
<name>РегистрСведенийСостоянияОригиналовПервичныхДокументов</name>
<code xsi:type="core:StringValue">
<value></value>
</code>
</items>
</predefined>
<predefinedDataUpdate>DontAutoUpdate</predefinedDataUpdate>
<editType>InDialog</editType>
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.РеквизитыРедактируемыеВГрупповойОбработке();
@@ -2882,6 +2882,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<modifiesStoredData>true</modifiesStoredData>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -363,6 +363,8 @@
УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект);
УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект);
УстановитьДоступностьРучныхИзменений();
КонецПроцедуры
&НаСервере
@@ -1052,4 +1054,13 @@
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьРучныхИзменений()
Если Не ПравоДоступа("Изменение", Метаданные.Справочники.Календари) Тогда
Элементы.ГрафикРаботы.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -879,7 +879,7 @@
| ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления
| ПО Свойства.Ссылка = СвойстваПредставления.Ссылка
| И СвойстваПредставления.КодЯзыка = &КодЯзыка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.[ИмяТаблицы] КАК СоставНабора
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора
| ПО Свойства.Ссылка = СоставНабора.Свойство
|
|ГДЕ
@@ -892,8 +892,6 @@
|ВЫБРАТЬ
| ""ВерсияДанных"" КАК ВерсияДанных";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "[ИмяТаблицы]",
?(ЭтоНаборыДополнительныхСведений, "ДополнительныеСведения", "ДополнительныеРеквизиты"));
Запрос.УстановитьПараметр("ЭтоДополнительноеСведение", (ЭтоНаборыДополнительныхСведений = 1));
КонецЕсли;
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -293,16 +294,16 @@
// Только для внутреннего использования.
//
// Возвращаемое значение:
// Структура - со свойствами:
// * Имя - Строка -
// * ЭтоГруппа - Булево -
// * Используется - Булево -
// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений -
// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений -
// * ДочерниеНаборы - Соответствие - со свойствами:
// ** Ключ - Строка -
// Структура:
// * Имя - Строка
// * ЭтоГруппа - Булево
// * Используется - Булево
// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений
// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений
// * ДочерниеНаборы - Соответствие:
// ** Ключ - Строка
// ** Значение - см. СвойстваНабора
// * Наименование - Строка -
// * Наименование - Строка
//
Функция СвойстваНабора(НаборыСвойств, Набор, Родитель = Неопределено, Наименования = Неопределено) Экспорт
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -167,8 +167,6 @@
РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Объект.Ссылка, РабочийКаталог);
КонецЕсли;
ОбновитьОтображениеДанных();
КонецПроцедуры
#КонецОбласти
@@ -240,7 +238,7 @@
Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'");
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите каталог'");
ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите папку'");
Если ДиалогОткрытияФайла.Выбрать() Тогда
ИмяКаталога = ДиалогОткрытияФайла.Каталог;
@@ -256,7 +254,7 @@
// Нет прав на создание каталога, или такой путь отсутствует.
ТекстОшибки =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный путь или отсутствуют права на запись в каталог ""%1""'"), ИмяКаталога);
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный путь или отсутствуют права на запись в папку ""%1""'"), ИмяКаталога);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "РабочийКаталог");
Возврат;
@@ -267,8 +265,6 @@
КонецЕсли;
ОбновитьОтображениеДанных();
КонецПроцедуры
&НаСервере
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -1,5 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormField">
<name>Владелец</name>
<id>22</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Владелец</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ВладелецПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ВладелецРасширеннаяПодсказка</name>
<id>24</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВладелецКонтекстноеМеню</name>
<id>23</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>Clearing</event>
<name>ВладелецОчистка</name>
</handlers>
<maxWidth>27</maxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПользовательскихНастроек</name>
<id>11</id>
@@ -291,6 +340,23 @@
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<attributes>
<name>Владелец</name>
<title>
<key>ru</key>
<value>Учетная запись</value>
</title>
<id>2</id>
<valueType>
<types>CatalogRef.УчетныеЗаписиЭлектроннойПочты</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -11,6 +11,58 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбработатьПереданныеПараметры();
УстановитьПредопределенныеОтборы();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВладелецПриИзменении(Элемент)
ПриИзмененииВладельцаНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВладелецОчистка(Элемент, СтандартнаяОбработка)
ПриИзмененииВладельцаНаСервере();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбработатьПереданныеПараметры()
УчетнаяЗаписьУказана = Ложь;
Если Параметры.Отбор.Свойство("Владелец")
И ЗначениеЗаполнено(Параметры.Отбор.Владелец) Тогда
УчетнаяЗаписьУказана = Истина;
Владелец = Параметры.Отбор.Владелец;
Элементы.Владелец.Видимость = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(Владелец) Тогда
Владелец = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
ПриИзмененииВладельцаНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПредопределенныеОтборы()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,
"ПометкаУдаления",
Ложь,
@@ -21,4 +73,17 @@
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВладельцаНаСервере()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,
"Владелец",
Владелец,
ВидСравненияКомпоновкиДанных.Равно,
НСтр("ru = 'Отбор по владельцу папок'"),
ЗначениеЗаполнено(Владелец),
РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
КонецПроцедуры
#КонецОбласти
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
File diff suppressed because it is too large. Load diff
@@ -9,17 +9,7 @@
////////////////////////////////////////////////////////////////////////////////
// ИСПОЛЬЗОВАНИЕ ФОРМЫ //
//
// Дополнительные параметры открытия формы подбора:
//
// РасширенныйПодбор - Булево - если Истина - открывается расширенная форма
// подбора пользователей. Используется вместе с параметром.
// ПараметрыРасширеннойФормыПодбора.
// ПараметрыРасширеннойФормыПодбора - Строка - ссылка на структуру,
// содержащую параметры расширенной формы подбора во
// временном хранилище.
// Параметры структуры:
// ЗаголовокФормыПодбора - Строка - заголовок формы подбора.
// ВыбранныеПользователи - Массив - массив уже выбранных пользователей.
// Описание параметров формы см. ПользователиПереопределяемый.ПриОпределенииФормыПодбораПользователей
//
#Область ОписаниеПеременных
@@ -27,6 +17,12 @@
&НаКлиенте
Перем ПоследнийЭлемент;
&НаКлиенте
Перем СтрокаПоискаТекст;
&НаКлиенте
Перем ТекущийПользователь;
#КонецОбласти
#Область ОбработчикиСобытийФормы
@@ -34,8 +30,16 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
// Начальное значение настройки до загрузки данных из настроек.
ВыбиратьИерархически = Истина;
Элементы.ГруппаКоманднаяПанельВыбора.Видимость = Ложь;
ЗаполнитьХранимыеПараметры();
@@ -125,6 +129,11 @@
Если ХранимыеПараметры.РасширенныйПодбор Тогда
СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "РасширенныйПодбор");
ИзменитьПараметрыРасширеннойФормыПодбора();
Элементы.КоманднаяПанель.Видимость = Ложь;
Элементы.ЗавершитьИЗакрытьВыбор.КнопкаПоУмолчанию = Истина;
Элементы.ГруппаКоманднаяПанельВыбора.Видимость = Истина;
Элементы.ПользователиСписок.ПоискПриВводе = ПоискВТаблицеПриВводе.НеИспользовать;
Элементы.ГруппыПользователей.ПоискПриВводе = ПоискВТаблицеПриВводе.НеИспользовать;
КонецЕсли;
Если ХранимыеПараметры.ВыборГруппПользователей Тогда
@@ -175,6 +184,16 @@
Элементы.ЗавершитьИЗакрыть.Отображение = ОтображениеКнопки.Картинка;
КонецЕсли;
ВыборУчастниковОбсуждения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыборУчастниковОбсуждения", Ложь);
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда
Элементы.ВставитьИзБуфераОбмена.Видимость = Ложь;
КонецЕсли;
Фотография = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор);
ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено);
УстановитьЗаголовокВыбранныхПользователейИГрупп();
КонецПроцедуры
&НаКлиенте
@@ -243,6 +262,50 @@
ПереключитьОтображениеНедействительныхПользователей(ПоказыватьНедействительныхПользователей);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаПоискаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
СтрокаПоискаТекст = Текст;
ПодключитьОбработчикОжидания("СтрокаПоискаОчисткаЗавершение", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаПоискаОчисткаЗавершение()
Если НЕ ЗначениеЗаполнено(СтрокаПоискаТекст) Тогда
Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп;
Иначе
Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаПоиск;
КонецЕсли;
Если ХранимыеПараметры.ИспользоватьГруппы Тогда
ОбновитьЗначениеПараметраКомпоновкиДанных(ПользователиСписок,
"ВсеПользователи", Истина);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПользователиСписок,
"Наименование",
СтрокаПоискаТекст,
ВидСравненияКомпоновкиДанных.Содержит,,
ЗначениеЗаполнено(СтрокаПоискаТекст),
РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка)
СтрокаПоискаТекст = "";
Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПользователиСписок,
"Наименование",
СтрокаПоиска,
ВидСравненияКомпоновкиДанных.Содержит,,
Ложь,
РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный);
ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыГруппыПользователей
@@ -438,6 +501,20 @@
Элементы.ФормаУстановитьПароль.Доступность = ВозможноСменитьПароль;
Элементы.ПользователиСписокКонтекстноеМенюУстановитьПароль.Доступность = ВозможноСменитьПароль;
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если НЕ ХранимыеПараметры.РасширенныйПодбор Тогда
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
ОбновитьКонтактнуюИнформациюПользователя(Элемент);
КонецПроцедуры
&НаКлиенте
@@ -509,6 +586,24 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиСписокПоиск
&НаКлиенте
Процедура ПользователиСписокПоискПриАктивизацииСтроки(Элемент)
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
ОбновитьКонтактнуюИнформациюПользователя(Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
@@ -555,7 +650,12 @@
&НаКлиенте
Процедура ВыбратьПользователяКоманда(Команда)
Если Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаПоиск Тогда
МассивПользователей = Элементы.ПользователиСписокПоиск.ВыделенныеСтроки;
Иначе
МассивПользователей = Элементы.ПользователиСписок.ВыделенныеСтроки;
КонецЕсли;
ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивПользователей);
КонецПроцедуры
@@ -606,10 +706,128 @@
КонецПроцедуры
&НаКлиенте
Процедура ВставитьИзБуфераОбмена(Команда)
ПараметрыПоиска = Новый Структура;
ПараметрыПоиска.Вставить("ОписаниеТипов", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));
ПараметрыПоиска.Вставить("ПараметрыВыбора", Новый СписокЗначений);
ПараметрыПоиска.Вставить("ПредставлениеПоля", НСтр("ru='Выбор пользователей'"));
ПараметрыПоиска.Вставить("Сценарий", "ПоискСсылок");
ПараметрыВыполнения = Новый Структура;
Обработчик = Новый ОписаниеОповещения("ВставитьИзБуфераОбменаЗавершение", ЭтотОбъект, ПараметрыВыполнения);
МодульЗагрузкаДанныхИзФайлаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗагрузкаДанныхИзФайлаКлиент");
МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик);
КонецПроцедуры
&НаКлиенте
Процедура ВставитьИзБуфераОбменаЗавершение(НайденныеОбъекты, ПараметрыВыполнения) Экспорт
Если НайденныеОбъекты = Неопределено Тогда
Возврат;
КонецЕсли;
ВставитьИзБуфераОбменаЗавершениеСервер(НайденныеОбъекты);
КонецПроцедуры
&НаСервере
Процедура ВставитьИзБуфераОбменаЗавершениеСервер(НайденныеОбъекты)
Для Каждого Значение Из НайденныеОбъекты Цикл
ВыбранныеПользователиИГруппы.Добавить().Пользователь = Значение;
КонецЦикла;
Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки");
КонецПроцедуры
&НаКлиенте
Процедура Выбрать(Команда)
Если Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп Тогда
ПользователиСписокВыборЗначения(Элементы.ПользователиСписок,
ВыбранныеЗначенияСписка(Элементы.ПользователиСписок),
Ложь);
Иначе
ПользователиСписокВыборЗначения(Элементы.ПользователиСписокПоиск,
ВыбранныеЗначенияСписка(Элементы.ПользователиСписокПоиск),
Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция ВыбранныеЗначенияСписка(Элемент)
Результат = Новый Массив;
ВыбранныеСтроки = ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, Элемент.Имя, "ВыделенныеСтроки");
Если ВыбранныеСтроки <> Неопределено Тогда
Для каждого ИдентификаторСтроки Из ВыбранныеСтроки Цикл
Результат.Добавить(Элемент.ДанныеСтроки(ИдентификаторСтроки).Ссылка);
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ОбновитьКонтактнуюИнформациюПользователя(ЭлементСписок)
ТекущиеДанные = ЭлементСписок.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено);
Возврат;
КонецЕсли;
ТекущийПользователь = ТекущиеДанные.Ссылка;
ПодключитьОбработчикОжидания("ОбновитьКонтактнуюИнформациюПользователяЗавершение", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьКонтактнуюИнформациюПользователяЗавершение()
ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, ТекущийПользователь);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьКонтактнуюИнформацию(Форма, ТекущийПользователь)
Если НЕ ЗначениеЗаполнено(ТекущийПользователь) Тогда
Форма.ПредставлениеКонтактнойИнформации = "";
Возврат;
КонецЕсли;
КонтактнаяИнформацияПользователя = ?(ЗначениеЗаполнено(ТекущийПользователь),
КонтактнаяИнформацияПользователя(ТекущийПользователь, Форма.УникальныйИдентификатор),
Новый Структура);
Форма.Фотография = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Фотография", "");
Шаблон = НСтр("ru='%1
|
|Телефон: %2
|Электронная почта: %3'");
Подразделение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Подразделение", "");
ПредставлениеПользователя = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Наименование", "")
+ ?(ЗначениеЗаполнено(Подразделение), Символы.ПС + Подразделение, "");
Форма.ПредставлениеКонтактнойИнформации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон,
ПредставлениеПользователя,
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Телефон", ""),
ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "АдресЭлектроннойПочты", ""));
КонецПроцедуры
&НаСервереБезКонтекста
Функция КонтактнаяИнформацияПользователя(Пользователь, УникальныйИдентификатор)
КонтактнаяИнформация = ПользователиСлужебный.ОписаниеПользователя(Пользователь);
КонтактнаяИнформация.Фотография = ПоместитьВоВременноеХранилище(КонтактнаяИнформация.Фотография, УникальныйИдентификатор);
Возврат КонтактнаяИнформация;
КонецФункции
&НаСервере
Процедура ЗаполнитьХранимыеПараметры()
@@ -712,7 +930,6 @@
Если УдалитьВсех Тогда
ВыбранныеПользователиИГруппы.Очистить();
ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп();
Возврат;
КонецЕсли;
@@ -721,8 +938,6 @@
ВыбранныеПользователиИГруппы.Удалить(ВыбранныеПользователиИГруппы.НайтиПоИдентификатору(ЭлементСписка));
КонецЦикла;
ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп();
КонецПроцедуры
&НаКлиенте
@@ -747,11 +962,24 @@
&НаСервере
Функция РезультатВыбора()
МассивПользователей = Новый Массив;
ВыбранныеПользователиТаблицаЗначений = ВыбранныеПользователиИГруппы.Выгрузить( , "Пользователь");
МассивПользователей = ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь");
Возврат МассивПользователей;
Если ВыборУчастниковОбсуждения И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда
МодульОбсуждения = ОбщегоНазначения.ОбщийМодуль("Обсуждения");
ИдентификаторыУчастников = МодульОбсуждения.ПользователиСистемыВзаимодействия(ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь"));
Для каждого ПользовательИдентификатор Из ИдентификаторыУчастников Цикл
Если ПользовательИдентификатор.Значение <> Неопределено Тогда
МассивПользователей.Добавить(ПользовательИдентификатор.Значение.Идентификатор);
КонецЕсли;
КонецЦикла;
Иначе
МассивПользователей = ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь");
КонецЕсли;
Возврат МассивПользователей;
КонецФункции
&НаСервере
@@ -808,37 +1036,25 @@
Элементы.ОчиститьСписокВыбранных.Видимость = Истина;
КонецЕсли;
// Добавление количества выбранных пользователей в заголовке выбранных пользователей и групп.
ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп();
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп()
Процедура УстановитьЗаголовокВыбранныхПользователейИГрупп()
Если ХранимыеПараметры.ИспользоватьГруппы Тогда
ЗаголовокВыбранныеПользователиИГруппы = НСтр("ru = 'Выбранные пользователи и группы (%1)'");
Иначе
ЗаголовокВыбранныеПользователиИГруппы = НСтр("ru = 'Выбранные пользователи (%1)'");
КонецЕсли;
КоличествоПользователей = ВыбранныеПользователиИГруппы.Количество();
Если КоличествоПользователей <> 0 Тогда
Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ЗаголовокВыбранныеПользователиИГруппы, КоличествоПользователей);
Иначе
Если ХранимыеПараметры.ИспользоватьГруппы Тогда
Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи и группы'");
Иначе
Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи'");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки)
ПользователиСлужебный.ВыбратьПользователейГруппы(
ВыбранныеЭлементыИКартинки, ХранимыеПараметры, Элементы.ПользователиСписок);
Для Каждого СтрокаМассива Из ВыбранныеЭлементыИКартинки Цикл
ВыбранныйПользовательИлиГруппа = СтрокаМассива.ВыбранныйЭлемент;
@@ -858,7 +1074,6 @@
КонецЦикла;
ВыбранныеПользователиИГруппы.Сортировать("Пользователь Возр");
ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп();
КонецПроцедуры
@@ -959,8 +1174,9 @@
Если ХранимыеПараметры.Свойство("ЗаголовокКнопкиЗавершенияПодбора") Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ЗавершитьИЗакрыть", "Заголовок", ХранимыеПараметры.ЗаголовокКнопкиЗавершенияПодбора);
"ЗавершитьИЗакрытьВыбор", "Заголовок", ХранимыеПараметры.ЗаголовокКнопкиЗавершенияПодбора);
КонецЕсли;
Иначе
Заголовок = НСтр("ru = 'Подбор пользователей'");
КонецЕсли;
@@ -1000,6 +1216,7 @@
ТекущийЭлемент = Элементы.ПользователиСписок;
КонецЕсли;
#КонецЕсли
КонецПроцедуры
&НаСервере
@@ -1023,11 +1240,11 @@
// Обработчик вопроса.
//
// Параметры:
// Ответ - КодВозвратаДиалога -
// ДополнительныеПараметры - Структура - где:
// * ПараметрыПеретаскивания - ПараметрыПеретаскивания -
// * Строка - Строка -
// * Перемещение - ДействиеПеретаскивания -
// Ответ - КодВозвратаДиалога
// ДополнительныеПараметры - Структура:
// * ПараметрыПеретаскивания - ПараметрыПеретаскивания
// * Строка - Строка
// * Перемещение - ДействиеПеретаскивания
//
&НаКлиенте
Процедура ГруппыПользователейПеретаскиваниеЗавершение(Ответ, ДополнительныеПараметры) Экспорт
@@ -1127,4 +1344,30 @@
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.ПользователиСписок);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.ПользователиСписок);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.ПользователиСписок);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
@@ -450,6 +450,64 @@
<items xsi:type="form:FormGroup">
<name>ГруппаШапка</name>
<id>277</id>
<items xsi:type="form:FormField">
<name>Фотография</name>
<id>353</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>АдресФотографии</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ФотографияРасширеннаяПодсказка</name>
<id>355</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ФотографияКонтекстноеМеню</name>
<id>354</id>
<autoFill>true</autoFill>
</contextMenu>
<type>PictureField</type>
<groupVerticalAlign>Center</groupVerticalAlign>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:ImageFieldExtInfo">
<handlers>
<event>Click</event>
<name>ФотографияНажатие</name>
</handlers>
<width>7</width>
<autoMaxWidth>true</autoMaxWidth>
<height>4</height>
<autoMaxHeight>true</autoMaxHeight>
<pictureSize>Proportionally</pictureSize>
<hyperlink>true</hyperlink>
<nonselectedPictureText>
<key>ru</key>
<value>Добавить фото</value>
</nonselectedPictureText>
<border xsi:type="core:BorderDef">
<style>Single</style>
<width>1</width>
</border>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаДанныеШапки</name>
<id>351</id>
<items xsi:type="form:FormGroup">
<name>ГруппаНаименование</name>
<id>329</id>
@@ -656,6 +714,35 @@
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Данные шапки</value>
</title>
<extendedTooltip>
<name>ГруппаДанныеШапкиРасширеннаяПодсказка</name>
<id>352</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Шапка</value>
@@ -672,7 +759,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -2564,6 +2651,10 @@
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnLoadDataFromSettingsAtServer</event>
<name>ПриЗагрузкеДанныхИзНастроекНаСервере</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -3315,6 +3406,25 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>АдресФотографии</name>
<title>
<key>ru</key>
<value>Фотография</value>
</title>
<id>4</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<formCommands>
<name>ПоказатьТолькоВыбранныеРоли</name>
<title>
@@ -20,6 +20,13 @@
УстановитьУсловноеОформление();
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначения.РазделениеВключено() Тогда
ДоступноИзменениеПользователей = Истина;
@@ -196,6 +203,13 @@
МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры
&НаКлиенте
@@ -239,6 +253,18 @@
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
// СтандартныеПодсистемы.ПодключаемыеКоманды
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецЕсли;
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Фотография = ТекущийОбъект.Фотография.Получить();
Если Фотография <> Неопределено Тогда
АдресФотографии = ПоместитьВоВременноеХранилище(Фотография, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -350,6 +376,10 @@
КонецЕсли;
КонецЕсли;
Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда
ТекущийОбъект.Фотография = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресФотографии));
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -392,6 +422,11 @@
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда
МодульОбсуждения = ОбщегоНазначения.ОбщийМодуль("Обсуждения");
МодульОбсуждения.ОбновитьПользователяВСистемеВзаимодействия(ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -460,10 +495,10 @@
Если Строка.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1"));
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1"));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
@@ -719,6 +754,29 @@
ОткрытьФорму("ОбщаяФорма.НастройкиВходаПользователей", , ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ФотографияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОповещениеОЗавершение = Новый ОписаниеОповещения("ФотографияНажатиеЗавершение", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение,ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ФотографияНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда
УдалитьИзВременногоХранилища(АдресФотографии);
КонецЕсли;
АдресФотографии = Результат.Хранение;
Модифицированность = Истина;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Поддержка контактной информации.
@@ -728,7 +786,7 @@
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);
УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект);
@@ -753,8 +811,8 @@
// Подключаемый обработчик очистки.
//
// Параметры:
// Элемент - ПолеФормы -
// СтандартнаяОбработка - Булево -
// Элемент - ПолеФормы
// СтандартнаяОбработка - Булево
//
&НаКлиенте
Процедура Подключаемый_EMailОчистка(Элемент, СтандартнаяОбработка)
@@ -767,7 +825,7 @@
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.Очистка(ЭтотОбъект, Элемент.Имя);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
@@ -777,7 +835,7 @@
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);
УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект);
@@ -838,7 +896,7 @@
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);
КонецПроцедуры
@@ -847,49 +905,50 @@
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтотОбъект, Элемент,, СтандартнаяОбработка);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка);
КонецПроцедуры
// Подключаемый обработчик нажатия.
//
// Параметры:
// Элемент - ДекорацияФормы, РасширениеДекорацииФормыДляНадписи -
// СтандартнаяОбработка - Булево -
// Элемент - ДекорацияФормы
// - РасширениеДекорацииФормыДляНадписи
// СтандартнаяОбработка - Булево
//
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка)
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтотОбъект, Элемент,, СтандартнаяОбработка);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка);
КонецПроцедуры
// Подключаемый обработчик очистки.
//
// Параметры:
// Элемент - ПолеФормы -
// СтандартнаяОбработка - Булево -
// Элемент - ПолеФормы
// СтандартнаяОбработка - Булево
//
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка)
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.Очистка(ЭтотОбъект, Элемент.Имя);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
// Подключаемый обработчик команды.
//
// Параметры:
// Команда - КомандаФормы -
// Команда - КомандаФормы
//
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда)
МодульУправлениеКонтактнойИнформациейКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент");
МодульУправлениеКонтактнойИнформациейКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда.Имя);
МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
@@ -905,9 +964,9 @@
// Подключаемый обработчик выбора.
//
// Параметры:
// Элемент - ПолеФормы -
// ВыбранноеЗначение - Строка -
// СтандартнаяОбработка - Булево -
// Элемент - ПолеФормы
// ВыбранноеЗначение - Строка
// СтандартнаяОбработка - Булево
//
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
@@ -918,6 +977,11 @@
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт
ОбновитьКонтактнуюИнформацию(Результат);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРоли
@@ -1656,11 +1720,9 @@
// Поддержка контактной информации.
&НаСервере
Процедура Подключаемый_ОбновитьКонтактнуюИнформацию(Результат) Экспорт
МодульУправлениеКонтактнойИнформацией =
ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией");
Процедура ОбновитьКонтактнуюИнформацию(Результат)
МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией");
МодульУправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат);
КонецПроцедуры
@@ -2024,7 +2086,7 @@
КонецЕсли;
Элементы.СопоставлениеПояснениеНесоответствия.Заголовок =
НСтр("ru = 'Пользователь информационной базы не найден.'") + Рекомендация;
НСтр("ru = 'Несуществующий пользователь информационной базы.'") + Рекомендация;
КонецПроцедуры
@@ -2219,4 +2281,30 @@
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -103,6 +104,18 @@
КонецПроцедуры
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаВыбора" ИЛИ Параметры.Свойство("РежимВыбора") Тогда
ВыбраннаяФормаПоУмолчанию = ВыбраннаяФорма;
ПользователиПереопределяемый.ПриОпределенииФормыВыбораПользователей(ВыбраннаяФорма, Параметры);
Если ВыбраннаяФормаПоУмолчанию <> ВыбраннаяФорма Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -372,6 +372,21 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="622d6de2-7404-41cc-961b-131d078d7ab4">
<name>Фотография</name>
<synonym>
<key>ru</key>
<value>Фотография</value>
</synonym>
<type>
<types>ValueStorage</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="245f870e-a53a-4d86-aa0a-c0c7709b8acb">
<producedTypes>
<objectType typeId="d775216b-7adc-4b4e-972d-b6ad881e79dd" valueTypeId="16c681bb-1a49-44e1-82a6-4af12b00b701"/>
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -196,7 +196,10 @@
<value>Причина отключения</value>
</synonym>
<type>
<types>EnumRef.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса</types>
<types>String</types>
<stringQualifiers>
<length>10</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -58,7 +59,7 @@
// Применяет правила обработки писем.
//
// Параметры:
// ПараметрыВыгрузки - Структура - содержит следующие поля.
// ПараметрыВыгрузки - Структура:
// - ДляПисемВПапке - Справочник.ПапкиЭлектронныхПисем - письма, которые находятся в этой папке
// будут обработаны.
// - ВключаяПодчиненные - Булево - признак, того что должны обрабатываться письма в подчиненных папках.
@@ -44,7 +44,7 @@
КонецЕсли;
Иначе
Если (ОбщегоНазначения.РазделениеВключено() И ЭтоАдминистраторСистемы) Или Не ОбщегоНазначения.РазделениеВключено() Тогда
ОбщееРасписаниеПредставление = НСтр("ru = 'Не найдено общее регламентное задание'");
ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание не доступно'");
Иначе
ОбщееРасписаниеПредставление = "";
Элементы.ПредставлениеОбщегоРасписания.Видимость = Ложь;
@@ -212,20 +212,6 @@
Список.УсловноеОформление.Элементы.Очистить();
// Отключенные проверки.
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ЭлементОтбораДанных = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Использование");
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДанных.ПравоеЗначение = Ложь;
ЭлементОтбораДанных.Использование = Истина;
ЭлементЦветаОформления = Элемент.Оформление.Элементы.Найти("ЦветТекста");
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение;
ЭлементЦветаОформления.Использование = Истина;
// Не выводить, если не описаны причины возникновения проблемы.
Элемент = Список.УсловноеОформление.Элементы.Добавить();
@@ -365,7 +351,7 @@
КонецЕсли;
Иначе
ОбщееРасписание = Неопределено;
ОбщееРасписаниеПредставление = НСтр("ru = 'Не найдено общее регламентное задание'");
ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание недоступно'");
КонецЕсли;
Если Не ОбщегоНазначения.РазделениеВключено() Тогда
@@ -264,7 +264,7 @@
КонецЕсли;
КонецЕсли;
Иначе
ОбщееРасписаниеПредставление = НСтр("ru = 'Не найдено общее регламентное задание'");
ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание не доступно'");
КонецЕсли;
Элементы.ПредставлениеОбщегоРасписания.Заголовок =
@@ -392,7 +392,7 @@
МетаданныеТекущейПроверки = МетаданныеПроверки(Объект.Идентификатор);
Если МетаданныеТекущейПроверки = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Рассинхронизация проверок учета. Проверка с идентификатором ""%1"" не найдена в метаданных.'"), Объект.Идентификатор);
НСтр("ru = 'Проверка ведения учета с идентификатором ""%1"" не существует.'"), Объект.Идентификатор);
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, МетаданныеТекущейПроверки, , "Идентификатор");
@@ -17,7 +17,7 @@
// Имена реквизитов справочника, значения которых разрешено изменять массово.
//
// Возвращаемое значение:
// Массив Из Строка - Имена реквизитов справочника.
// Массив Из Строка - имена реквизитов справочника.
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
@@ -34,7 +34,7 @@
// Имена реквизитов справочника, в разрезе которых контролируется уникальность элементов.
//
// Возвращаемое значение:
// Массив Из Строка - Имена реквизитов справочника.
// Массив Из Строка - имена реквизитов справочника.
//
Функция ПоляЕстественногоКлюча() Экспорт
@@ -17,7 +17,7 @@
// Имена реквизитов справочника, значения которых разрешено изменять массово.
//
// Возвращаемое значение:
// Массив Из Строка - Имена реквизитов справочника.
// Массив Из Строка - имена реквизитов справочника.
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
@@ -34,7 +34,7 @@
// Имена реквизитов справочника, в разрезе которых контролируется уникальность элементов.
//
// Возвращаемое значение:
// Массив Из Строка - Имена реквизитов справочника.
// Массив Из Строка - имена реквизитов справочника.
//
Функция ПоляЕстественногоКлюча() Экспорт
@@ -206,6 +206,11 @@
КонецПроцедуры
// Параметры:
// ОписаниеОшибки - ДанныеФормыКоллекция:
// * Ошибки - Массив из Структура
// ОшибкаНаСервере - Булево
//
&НаСервере
Процедура ДобавитьОшибки(ОписаниеОшибок, ОшибкаНаСервере = Ложь)
@@ -1,5 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:Decoration">
<name>НадписьНастройкаВЦентральномУзле</name>
<id>55</id>
<title>
<key>ru</key>
<value>Настройка программы электронной подписи и шифрования выполнена в главном узле</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НадписьНастройкаВЦентральномУзлеРасширеннаяПодсказка</name>
<id>57</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НадписьНастройкаВЦентральномУзлеКонтекстноеМеню</name>
<id>56</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
<backColor xsi:type="core:ColorRef">
<color>Style.ToolTipBackColor</color>
</backColor>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Наименование</name>
<id>50</id>
@@ -1,14 +1,21 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.17239"></meta></head><body>
<p>Сведения о программе электронной подписи и шифрования.</p>
<p>Открывается по кнопке <strong>Добавить</strong> в списке <a href="CommonForm.НастройкиЭлектроннойПодписиИШифрования/Help">Настройки электронной подписи и шифрования</a> на вкладке <strong>Программы</strong>.</p>
<p>В случае использования распределенной информационной базы настройки можно изменить только в главном узле.</p>
<h3>Заполнение сведений о программе</h3>
<ul><li>В поле<strong> Представление</strong> выберите нужную программу из списка. В списке представлены часто используемые программы.
<ul><ul><li>Остальные поля заполняются автоматически.</li></ul><li>Если в списке нужной программы нет, выберите значение <strong>&lt;Другая программа&gt;</strong>.
<ul><li>В этом случае остальные поля заполняются вручную. </li></ul></li></ul></li><li>Все поля являются обязательными для заполнения.
</li><li><strong>Имя программы</strong> - полное имя программы;
</li><li><strong>Тип программы</strong> - число, указывающее тип провайдера электронной подписи.
</li><li><strong>Алгоритм подписи</strong> - алгоритм подписи выбирается из списка выбора, предоставляемого провайдером электронной подписи;
</li><li><strong>Алгоритм хеширования</strong> - выбирается из списка выбора, предоставляемого провайдером электронной подписи;
</li><li><strong>Алгоритм шифрования</strong> - выбирается из списка выбора, предоставляемого провайдером электронной подписи.</li></ul><h3>См. также:</h3>
<ul><li>В этом случае остальные поля заполняются вручную. </li></ul></li></ul></li>
<li>Все поля являются обязательными для заполнения.
</li>
<li><strong>Имя программы</strong> - полное имя программы;
</li>
<li><strong>Тип программы</strong> - число, указывающее тип провайдера электронной подписи.
</li>
<li><strong>Алгоритм подписи</strong> - алгоритм подписи выбирается из списка выбора, предоставляемого провайдером электронной подписи;
</li>
<li><strong>Алгоритм хеширования</strong> - выбирается из списка выбора, предоставляемого провайдером электронной подписи;
</li>
<li><strong>Алгоритм шифрования</strong> - выбирается из списка выбора, предоставляемого провайдером электронной подписи.</li></ul><h3>См. также:</h3>
<ul><li>
<div><a href="v8help://frame/form_common">Работа с формами</a>.</div></li></ul></body></html>
@@ -20,6 +20,8 @@
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
ТолькоПросмотр = Истина;
Иначе
Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь;
КонецЕсли;
ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм();
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -205,6 +206,9 @@
КонецПроцедуры
// Параметры:
// Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования
//
Процедура ОбновитьПредставлениеПрограммыОтложенно(Программа, ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки)
Блокировка = Новый БлокировкаДанных;
@@ -109,8 +109,8 @@
// Функция читает данные производственного календаря из регистра.
//
// Параметры:
// ПроизводственныйКалендарь - Ссылка на текущий элемент справочника.
// НомерГода - Номер года, за который необходимо прочитать производственный календарь.
// ПроизводственныйКалендарь - ссылка на текущий элемент справочника.
// НомерГода - номер года, за который необходимо прочитать производственный календарь.
//
// Возвращаемое значение
// ДанныеПроизводственногоКалендаря - таблица значений, в которой хранятся сведения о виде дня на каждую дату календаря.
@@ -498,13 +498,13 @@
// Преобразовывает данные производственных календарей, представленные в виде XML.
//
// Параметры:
// ДанныеXML - структура, извлеченная из файла XML методом ОбщегоНазначения.ПрочитатьXMLВТаблицу.
// ДанныеXML - структура - извлеченная из файла XML методом ОбщегоНазначения.ПрочитатьXMLВТаблицу.
// ТаблицаКалендарей - таблица значений, список производственных календарей, поддерживаемых в конфигурации.
// КодыКалендарей - необязательный, массив, если не задан, то отбор не будет установлен.
// ФормироватьПолныйНабор - необязательный, булево, если ложь, то будут сформированы только данные по отклонениям от календаря по умолчанию.
//
// Возвращаемое значение:
// ТаблицаЗначений - таблица с колонками:
// ТаблицаЗначений:
// * КодПроизводственногоКалендаря
// * ВидДня
// * Год
@@ -616,7 +616,7 @@
// Получает таблицу поставляемых в составе программы производственных календарей.
//
// Возвращаемое значение:
// ТаблицаЗначений - .
// ТаблицаЗначений
//
Функция ПроизводственныеКалендариИзМакета() Экспорт
@@ -697,28 +697,26 @@
| ИзмененияКалендарей.ПроизводственныйКалендарь,
| Год";
Блокировка = Новый БлокировкаДанных();
Блокировка.Добавить("РегистрСведений.ДанныеПроизводственногоКалендаря");
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
ОтменитьТранзакцию();
Возврат;
КонецЕсли;
НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей();
КлючиРегистра = Новый Массив;
КлючиРегистра.Добавить("ПроизводственныйКалендарь");
КлючиРегистра.Добавить("Год");
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("ПроизводственныйКалендарь") Цикл
Пока Выборка.СледующийПоЗначениюПоля("Год") Цикл
НаборЗаписей.Очистить();
НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка);
КонецЦикла;
ЗаполнитьЗначенияСвойств(ИзмененияКалендарей.Добавить(), Выборка);
Для Каждого Ключ Из КлючиРегистра Цикл
НаборЗаписей.Отбор[Ключ].Установить(Выборка[Ключ]);
КонецЦикла;
НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь);
НаборЗаписей.Отбор.Год.Установить(Выборка.Год);
Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда
ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей);
Продолжить;
@@ -726,6 +724,11 @@
НаборЗаписей.Записать();
КонецЦикла;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ИзмененияКалендарей.Свернуть("КодПроизводственногоКалендаря, Год");
@@ -810,7 +813,7 @@
// Определяет источник актуального перечня поддерживаемых производственных календарей (макет или поставка классификатора).
//
// Возвращаемое значение:
// ТаблицаЗначений - .
// ТаблицаЗначений
//
Функция ПроизводственныеКалендариПоУмолчанию() Экспорт
@@ -909,8 +912,8 @@
// Процедура записывает данные одного производственного календаря за 1 год.
//
// Параметры:
// ПроизводственныйКалендарь - Ссылка на текущий элемент справочника.
// НомерГода - Номер года, за который необходимо записать производственный календарь.
// ПроизводственныйКалендарь - ссылка на текущий элемент справочника.
// НомерГода - номер года, за который необходимо записать производственный календарь.
// ДанныеПроизводственногоКалендаря - таблица значений, в которой хранятся сведения о виде дня на каждую дату календаря.
//
// Возвращаемое значение
@@ -453,7 +453,7 @@
</rowsItem>
<drawing>
<drawingType>Picture</drawingType>
<id>2</id>
<id>1</id>
<formatIndex>31</formatIndex>
<beginRow>20</beginRow>
<beginRowOffset>6</beginRowOffset>
@@ -562,7 +562,7 @@
<font faceName="Arial" height="8" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="10" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font ref="style:TextFont" faceName="Arial" bold="true" italic="false" underline="false" strikeout="false" kind="StyleItem"/>
<font faceName="Arial" height="8" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<font faceName="Arial" height="6" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
<format>
<width>19</width>
</format>
@@ -701,7 +701,7 @@
<width>41</width>
</format>
<format>
<height>96</height>
<height>132</height>
</format>
<format>
<font>3</font>
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -201,27 +202,13 @@
//
Процедура ОбновитьПоставляемыеПрофили(ЕстьИзменения = Неопределено) Экспорт
ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей();
ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); // См. ОписаниеПоставляемыхПрофилей
ОписанияПрофилей = ПоставляемыеПрофили.ОписанияПрофилейМассив;
ПараметрыОбновления = ПоставляемыеПрофили.ПараметрыОбновления;
ОбновленныеПрофили = Новый Массив;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор",
ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор());
Запрос.Текст =
"ВЫБРАТЬ
| ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен КАК ПоставляемыйПрофильИзменен,
| ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных КАК ИдентификаторПоставляемыхДанных,
| ПрофилиГруппДоступа.Ссылка КАК Ссылка,
| ЛОЖЬ КАК Найден
|ИЗ
| Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
|ГДЕ
| НЕ ПрофилиГруппДоступа.ЭтоГруппа
| И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор";
ТекущиеПрофили = Запрос.Выполнить().Выгрузить();
ТекущиеПрофили = ТекущиеПрофили();
Для Каждого СвойстваПрофиля Из ОписанияПрофилей Цикл
@@ -354,15 +341,12 @@
// Возвращает строку уникального идентификатора
// поставляемого и предопределенного профиля Администратор.
//
Функция ИдентификаторПрофиляАдминистратор(Строка = Истина) Экспорт
// Возвращаемое значение:
// Строка - строка уникального идентификатора.
//
Функция ИдентификаторПрофиляАдминистратор() Экспорт
Идентификатор = "6c4b0307-43a4-4141-9c35-3dd7e9586d41";
Если Строка Тогда
Возврат Идентификатор;
КонецЕсли;
Возврат Новый УникальныйИдентификатор(Идентификатор);
Возврат "6c4b0307-43a4-4141-9c35-3dd7e9586d41";
КонецФункции
@@ -370,13 +354,18 @@
//
// Параметры:
// Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля.
// ВызыватьИсключениеЕслиНетВБазеДанных - Булево
//
// Возвращаемое значение:
// СправочникСсылка.ПрофилиГруппДоступа
// Неопределено
//
Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор, ВызыватьИсключениеЕслиНетВБазеДанных = Ложь) Экспорт
УстановитьПривилегированныйРежим(Истина);
ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей();
СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(Строка(Идентификатор));
СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(Строка(Идентификатор)); // См. СвойстваПоставляемогоПрофиля
Если СвойстваПрофиля = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -406,7 +395,7 @@
Если ВызыватьИсключениеЕслиНетВБазеДанных Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Поставляемый профиль с идентификатором ""%1""
|не найден в информационной базе.'"),
|не существует в программе.'"),
Строка(Идентификатор));
КонецЕсли;
@@ -417,6 +406,10 @@
// Возвращает строку уникального идентификатора
// данных поставляемого профиля.
//
// Возвращаемое значение:
// Строка
// Неопределено
//
Функция ИдентификаторПоставляемогоПрофиля(Профиль) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -456,7 +449,7 @@
// с описанием в переопределяемом общем модуле).
//
// Возвращаемое значение:
// Булево -
// Булево
//
Функция ПоставляемыйПрофильИзменен(Профиль) Экспорт
@@ -465,7 +458,7 @@
КонецЕсли;
ОписанияПрофилей = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей().ОписанияПрофилей;
СвойстваПрофиля = ОписанияПрофилей.Получить(Строка(Профиль.ИдентификаторПоставляемыхДанных));
СвойстваПрофиля = ОписанияПрофилей.Получить(Строка(Профиль.ИдентификаторПоставляемыхДанных)); // См. СвойстваПоставляемогоПрофиля
Если СвойстваПрофиля = Неопределено Тогда
Возврат Ложь;
@@ -488,8 +481,8 @@
МетаданныеРоли = Метаданные.Роли.Найти(Роль);
Если МетаданныеРоли = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При проверке поставляемого профиля ""%1""
|роль ""%2"" не найдена в метаданных.'"),
НСтр("ru = 'В поставляемом профиле ""%1""
|указана несуществующая роль ""%2"".'"),
СвойстваПрофиля.Наименование,
Роль);
КонецЕсли;
@@ -537,7 +530,7 @@
// Профиль - СправочникСсылка.ПрофилиГруппДоступа.
//
// Возвращаемое значение:
// Булево -
// Булево
//
Функция ЕстьНачальноеЗаполнениеПрофиля(Знач Профиль) Экспорт
@@ -559,7 +552,7 @@
// ДанныеФормыСтруктура созданные по объекту.
//
// Возвращаемое значение:
// Булево -
// Булево
//
Функция ЗапретИзмененияПрофиля(Знач Профиль) Экспорт
@@ -608,7 +601,7 @@
// Если для указанного профиля описание начального заполнения найдено,
// содержимое профиля полностью замещается.
//
// ОбновитьГруппыДоступа - Булево, если Истина, виды доступа групп доступа профиля будут обновлены.
// ОбновитьГруппыДоступа - Булево - если Истина, виды доступа групп доступа профиля будут обновлены.
//
Процедура ЗаполнитьПоставляемыйПрофиль(Знач Профиль, Знач ОбновитьГруппыДоступа) Экспорт
@@ -636,20 +629,7 @@
//
Функция НесовместимыеПрофилиГруппДоступа() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Профили.Ссылка КАК Ссылка,
| Профили.Назначение.(
| ТипПользователей КАК ТипПользователей
| ) КАК Назначение,
| Профили.Роли.(
| Роль КАК Роль
| ) КАК Роли
|ИЗ
| Справочник.ПрофилиГруппДоступа КАК Профили";
Выгрузка = Запрос.Выполнить().Выгрузить();
Выгрузка = НазначениеИРолиПрофилейГруппаДоступа();
НесовместимыеПрофили = Новый Массив;
НедоступныеРолиПоНазначению = Новый Соответствие;
@@ -671,14 +651,15 @@
ОписаниеПрофиля.Роли.ВыгрузитьКолонку("Роль"), Ложь);
Для Каждого ОписаниеРоли Из ОписаниеРолей Цикл
Если ОписаниеРоли.Значение = Неопределено Тогда
ОбъектМетаданных = ОписаниеРоли.Значение; // ОбъектМетаданных
Если ОбъектМетаданных = Неопределено Тогда
// Роль, недоступная до перезапуска, не является проблемой.
Продолжить;
КонецЕсли;
Если ОписаниеРоли.Значение = Null
Или НедоступныеРоли.Получить(ОписаниеРоли.Значение.Имя) <> Неопределено
Или ВРег(Лев(ОписаниеРоли.Значение.Имя, СтрДлина("Удалить"))) = ВРег("Удалить") Тогда
Если ОбъектМетаданных = Null
Или НедоступныеРоли.Получить(ОбъектМетаданных.Имя) <> Неопределено
Или ВРег(Лев(ОбъектМетаданных.Имя, СтрДлина("Удалить"))) = ВРег("Удалить") Тогда
НесовместимыеПрофили.Добавить(ОписаниеПрофиля.Ссылка);
Прервать;
@@ -690,7 +671,20 @@
КонецФункции
// См. Справочники.ПрофилиГруппДоступа.ПоставляемыеПрофили.
// См. ПоставляемыеПрофили.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * ОписанияПрофилей - Соответствие:
// ** Ключ - Строка
// ** Значение - см. СвойстваПоставляемогоПрофиля
// * ОписанияПрофилейМассив - Массив из см. СвойстваПоставляемогоПрофиля
// * ПараметрыОбновления - ФиксированнаяСтруктура:
// ** ОбновлятьИзмененныеПрофили - Булево
// ** ЗапретитьИзменениеПрофилей - Булево
// ** ОбновлятьГруппыДоступа - Булево
// ** ОбновлятьГруппыДоступаСУстаревшимиНастройками - Булево
//
Функция ОписаниеПоставляемыхПрофилей() Экспорт
ПоставляемыеПрофили = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы(
@@ -756,6 +750,10 @@
// Процедуры и функции для поддержки обмена данными в РИБ.
// Только для внутреннего использования.
//
// Параметры:
// ЭлементДанных - СправочникОбъект.ПрофилиГруппДоступа
//
Процедура ВосстановитьСоставРолейРасширений(ЭлементДанных) Экспорт
УдалитьРолиРасширений(ЭлементДанных);
@@ -823,6 +821,10 @@
КонецПроцедуры
// Только для внутреннего использования.
//
// Параметры:
// ЭлементДанных - СправочникОбъект.ПрофилиГруппДоступа
//
Процедура ЗарегистрироватьПрофильИзмененныйПриЗагрузке(ЭлементДанных) Экспорт
// Регистрация профилей, для групп доступа которых нужно обновить регистры сведений
@@ -963,6 +965,9 @@
КонецПроцедуры
// Возвращаемое значение:
// см. ОписаниеПоставляемыхПрофилей
//
Функция ПоставляемыеПрофили()
ЗаполненныеПоставляемыеПрофили = ЗаполненныеПоставляемыеПрофили();
@@ -1008,6 +1013,13 @@
ОписаниеПрофиля.Идентификатор);
КонецЕсли;
СвойстваПрофиля = Новый Структура;
СвойстваПрофиля.Вставить("Имя", "");
СвойстваПрофиля.Вставить("Идентификатор", "");
СвойстваПрофиля.Вставить("Наименование", "");
СвойстваПрофиля.Вставить("Роли", Новый Массив);
ЗаполнитьЗначенияСвойств(СвойстваПрофиля, ОписаниеПрофиля);
// Назначение профиля.
Если ОписаниеПрофиля.Назначение.Количество() = 0 Тогда
ОписаниеПрофиля.Назначение.Добавить(Тип("СправочникСсылка.Пользователи"));
@@ -1042,10 +1054,10 @@
МассивНазначений.Добавить(Значение);
КонецЦикла;
КонецЦикла;
ОписаниеПрофиля.Назначение = МассивНазначений;
СвойстваПрофиля.Вставить("Назначение", МассивНазначений);
// Проверка ролей.
НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(ОписаниеПрофиля);
НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(СвойстваПрофиля);
НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеПрофиля, Ложь);
ПроверенныеРоли = Новый Соответствие;
ИндексРоли = ОписаниеПрофиля.Роли.Количество();
@@ -1056,7 +1068,7 @@
Если ВсеРоли.Получить(Роль) = Неопределено Тогда
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В описании профиля ""%1 (%2)""
|роль ""%3"" не найдена в метаданных.'"),
|указана несуществующая роль ""%3"".'"),
ОписаниеПрофиля.Имя,
ОписаниеПрофиля.Идентификатор,
Роль);
@@ -1083,24 +1095,24 @@
Если ОбщегоНазначения.РазделениеВключено() Тогда
// Заполнение списка недоступных ролей в модели сервиса
// для определения необходимости обновления поставляемых профилей.
ОписаниеПрофиля.Вставить("РолиНедоступныеВСервисе",
СвойстваПрофиля.Вставить("РолиНедоступныеВСервисе",
РолиПрофиляНедоступныеВСервисе(ОписаниеПрофиля, НазначениеПрофиля));
КонецЕсли;
Если СвойстваПрофилей.Получить(ОписаниеПрофиля.Идентификатор) <> Неопределено Тогда
Если СвойстваПрофилей.Получить(СвойстваПрофиля.Идентификатор) <> Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Профиль с идентификатором ""%1"" уже существует.'"),
ОписаниеПрофиля.Идентификатор);
СвойстваПрофиля.Идентификатор);
КонецЕсли;
СвойстваПрофилей.Вставить(ОписаниеПрофиля.Идентификатор, ОписаниеПрофиля);
ОписанияПрофилейМассив.Добавить(ОписаниеПрофиля);
Если ЗначениеЗаполнено(ОписаниеПрофиля.Имя) Тогда
Если СвойстваПрофилей.Получить(ОписаниеПрофиля.Имя) <> Неопределено Тогда
СвойстваПрофилей.Вставить(СвойстваПрофиля.Идентификатор, СвойстваПрофиля);
ОписанияПрофилейМассив.Добавить(СвойстваПрофиля);
Если ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда
Если СвойстваПрофилей.Получить(СвойстваПрофиля.Имя) <> Неопределено Тогда
ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Профиль с именем ""%1"" уже существует.'"),
ОписаниеПрофиля.Имя);
СвойстваПрофиля.Имя);
КонецЕсли;
СвойстваПрофилей.Вставить(ОписаниеПрофиля.Имя, ОписаниеПрофиля);
СвойстваПрофилей.Вставить(СвойстваПрофиля.Имя, СвойстваПрофиля);
КонецЕсли;
// Преобразование СпискаЗначений к Соответствию для фиксации.
ВидыДоступа = Новый Соответствие;
@@ -1154,7 +1166,7 @@
КонецЕсли;
ВидыДоступа.Вставить(ИмяВидаДоступа, УточнениеВидаДоступа);
КонецЦикла;
ОписаниеПрофиля.ВидыДоступа = ВидыДоступа;
СвойстваПрофиля.Вставить("ВидыДоступа", ВидыДоступа);
// Удаление повторяющихся значений.
ЗначенияДоступа = Новый Массив;
@@ -1230,7 +1242,7 @@
КонецЕсли;
ТипЗначенияДоступа = ТипЗнч(ПустаяСсылкаЗначенияДоступа);
СвойстваВидаДоступаПоТипу = СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипЗначенияДоступа);
СвойстваВидаДоступаПоТипу = СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипЗначенияДоступа); // См. УправлениеДоступомСлужебный.СвойстваВидаДоступа
Если СвойстваВидаДоступаПоТипу = Неопределено
ИЛИ СвойстваВидаДоступаПоТипу.Имя <> ВидДоступа Тогда
@@ -1259,7 +1271,7 @@
КонецЕсли;
ЗначенияДоступа.Добавить(Отбор);
КонецЦикла;
ОписаниеПрофиля.ЗначенияДоступа = ЗначенияДоступа;
СвойстваПрофиля.Вставить("ЗначенияДоступа", ЗначенияДоступа);
КонецЦикла;
ПоставляемыеПрофили = Новый Структура;
@@ -1271,6 +1283,42 @@
КонецФункции
// Возвращает свойства профиля, указанные в переопределяемом модуле,
// преобразованные в фиксированный формат сохранения в базе данных.
// Подробное описание свойств см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа.
//
// Параметры:
// Идентификатор - Строка - имя или идентификатор поставляемого профиля.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * Имя - Строка
// * Идентификатор - Строка
// * Наименование - Строка
// * Роли - ФиксированныйМассив из Строка
// * Назначение - ФиксированныйМассив из ОпределяемыйТип.Пользователь
// * ВидыДоступа - ФиксированноеСоответствие:
// * Ключ - Строка
// * Значение - Строка
// * ЗначенияДоступа - ФиксированныйМассив из Структура:
// * ВидДоступа - Строка
// * ЗначениеДоступа - Строка
//
// Неопределено - профиль не существует.
//
Функция СвойстваПоставляемогоПрофиля(Идентификатор) Экспорт
ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей();
Возврат ПоставляемыеПрофили.ОписанияПрофилей.Получить(Идентификатор);
КонецФункции
// Возвращаемое значение:
// ФиксированноеСоответствие:
// * Ключ - Строка - строковый идентификатор поставляемого профиля
// * Значение - Строка - описание поставляемого профиля
//
Функция ПояснениеПоставляемыхПрофилей() Экспорт
ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили().ОписанияПрофилей;
@@ -1324,8 +1372,7 @@
// Замещает имеющийся или создает новый поставляемый профиль групп доступа по его описанию.
//
// Параметры:
// СвойстваПрофиля - ФиксированнаяСтруктура - свойства профиля, как в структуре возвращаемой
// функцией НовоеОписаниеПрофиляГруппДоступа общего модуля УправлениеДоступом.
// СвойстваПрофиля - см. СвойстваПоставляемогоПрофиля
//
// Возвращаемое значение:
// Булево - Истина - профиль изменен.
@@ -1359,7 +1406,7 @@
КонецЕсли;
Если ПрофильСсылка = Неопределено Тогда
// Поставляемый профиль не найден, нужно создать новый.
// Поставляемый профиль не существует, нужно создать новый.
ПрофильОбъект = СоздатьЭлемент();
Иначе
// Поставляемый профиль связан с предопределенным элементом.
@@ -1391,7 +1438,7 @@
Если МетаданныеРоли = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При обновлении поставляемого профиля ""%1""
|роль ""%2"" не найдена в метаданных.'"),
|обнаружена несуществующая роль ""%2"".'"),
СвойстваПрофиля.Наименование,
Роль);
КонецЕсли;
@@ -1477,6 +1524,62 @@
КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений:
// * ПоставляемыйПрофильИзменен - Булево
// * ИдентификаторПоставляемыхДанных - УникальныйИдентификатор
// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа
//
Функция ТекущиеПрофили()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор",
ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор());
Запрос.Текст =
"ВЫБРАТЬ
| ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен КАК ПоставляемыйПрофильИзменен,
| ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных КАК ИдентификаторПоставляемыхДанных,
| ПрофилиГруппДоступа.Ссылка КАК Ссылка,
| ЛОЖЬ КАК Найден
|ИЗ
| Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа
|ГДЕ
| НЕ ПрофилиГруппДоступа.ЭтоГруппа
| И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор";
ТекущиеПрофили = Запрос.Выполнить().Выгрузить();
Возврат ТекущиеПрофили;
КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений:
// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа
// * Назначение - ТаблицаЗначений:
// ** ТипПользователей - ОпределяемыйТип.Пользователь
// * Роли - ТаблицаЗначений:
// ** Роль - СправочникСсылка.ИдентификаторыОбъектовРасширений
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных
//
Функция НазначениеИРолиПрофилейГруппаДоступа()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Профили.Ссылка КАК Ссылка,
| Профили.Назначение.(
| ТипПользователей КАК ТипПользователей
| ) КАК Назначение,
| Профили.Роли.(
| Роль КАК Роль
| ) КАК Роли
|ИЗ
| Справочник.ПрофилиГруппДоступа КАК Профили";
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#КонецЕсли
@@ -10,8 +10,7 @@
#Область ОписаниеПеременных
Перем СтарыеЗначения; // Значения некоторых реквизитов и табличных частей профиля
// до его изменения для использования в обработчике события ПриЗаписи.
Перем СтарыеЗначения; // см. СтарыеЗначения
#КонецОбласти
@@ -30,8 +29,7 @@
СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы();
РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра();
СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
"Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа");
СтарыеЗначения = СтарыеЗначения();
// Проверка ролей.
РолиАдминистратора = Новый Массив;
@@ -84,7 +82,7 @@
НачатьТранзакцию();
Попытка
ИзмененныеГруппыДоступа = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
ИзмененныеГруппыДоступа = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); // Массив из СправочникСсылка.ПрофилиГруппДоступа
Если ИзмененныеГруппыДоступа.Количество() > 0 Тогда
Блокировка = Новый БлокировкаДанных;
@@ -412,6 +410,25 @@
КонецПроцедуры
// Значения некоторых реквизитов и табличных частей профиля
// до его изменения для использования в обработчике события ПриЗаписи.
//
// Возвращаемое значение:
// Структура:
// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа
// * ПометкаУдаления - Булево
// * Роли - РезультатЗапроса
// * Назначение - РезультатЗапроса
// * ВидыДоступа - РезультатЗапроса
// * ЗначенияДоступа - РезультатЗапроса
//
Функция СтарыеЗначения()
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
"Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа");
КонецФункции
#КонецОбласти
#Иначе
@@ -1351,13 +1351,13 @@
НайденныеИдентификаторыОбъектовМетаданных = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки));
Если НайденныеИдентификаторыОбъектовМетаданных.Количество() <> 1 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'"));
ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип получателей.'"));
Возврат;
КонецЕсли;
МассивТипов = НайденныеИдентификаторыОбъектовМетаданных[0].ОсновнойТип.Типы();
Если МассивТипов.Количество() <> 1 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'"));
ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип получателей.'"));
Возврат;
КонецЕсли;
@@ -1492,7 +1492,7 @@
ПолеКД = ОпределитьПолеИзКомпоновщика(ИдентификаторНастройки, ПользовательскиеНастройки.Элементы);
КонецЕсли;
Если ПолеКД = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для настройки отчета не найдено описание доступного поля'"));
ПоказатьПредупреждение(, НСтр("ru = 'Для настройки отчета не существует описания доступного поля.'"));
Возврат Неопределено;
КонецЕсли;
@@ -1861,17 +1861,18 @@
// Обработчик закрытия формы ПолучателиРассылки.
//
// Параметры:
// Результат - Структура - где:
// * Получатели - ТаблицаЗначений - где:
// Результат - Структура:
// * Получатели - ТаблицаЗначений:
// * Получатель - СправочникСсылка.ГруппыПользователей,
// - СправочникСсылка._ДемоКонтрагенты,
// - СправочникСсылка._ДемоПартнеры,
// - СправочникСсылка.Пользователи -
// * Исключен - Булево -
// * Адрес - Строка -
// * ИндексКартинки - Число -
// * ВидПочтовогоАдресаПолучателей - СправочникСсылка.ВидыКонтактнойИнформации -
// Параметр - Структура, Неопределено -
// - СправочникСсылка.Пользователи
// * Исключен - Булево
// * Адрес - Строка
// * ИндексКартинки - Число
// * ВидПочтовогоАдресаПолучателей - СправочникСсылка.ВидыКонтактнойИнформации
// Параметр - Структура
// - Неопределено
//
&НаКлиенте
Процедура ПолучателиРассылкиНажатиеЗавершение(Результат, Параметр) Экспорт
@@ -2025,8 +2026,8 @@
// Обработчик закрытия диалога форматной строки.
//
// Параметры:
// СтрокаРезультат - Строка -
// Переменные - Структура -
// СтрокаРезультат - Строка
// Переменные - Структура
//
&НаКлиенте
Процедура ДобавитьИзменитьШаблонДатыРассылкиЗавершение(СтрокаРезультат, Переменные) Экспорт
@@ -2653,10 +2654,10 @@
// Формирует представление расписания регламентного задания.
//
// Параметры:
// Расписание - РасписаниеРегламентногоЗадания - Расписание.
// Расписание - РасписаниеРегламентногоЗадания - расписание.
//
// Возвращаемое значение:
// Строка - Представление расписания.
// Строка - представление расписания.
//
&НаКлиентеНаСервереБезКонтекста
Функция ПредставлениеРасписания(Расписание)
@@ -3010,14 +3011,14 @@
// Выполняет проверку выбранного отчета.
//
// Параметры:
// СтруктураВыбора - Структура - где:
// * Выбрано - Структура - Строки, выбранные пользователем.
// * Успешно - Структура - Строки, инициализированные и добавленные в список.
// * СОшибками - Структура - Строки, не добавленные в список из-за ошибок, где:
// ** МассивСтрок - Массив - Массив идентификаторов строк.
// ** Количество - Число - Количество строк.
// ** ПредставлениеОтчетов - Строка - Представление всех отчетов указанных строк.
// ** Текст - Строка - Текст возникших ошибок.
// СтруктураВыбора - Структура:
// * Выбрано - Структура - строки, выбранные пользователем.
// * Успешно - Структура - строки, инициализированные и добавленные в список.
// * СОшибками - Структура - строки, не добавленные в список из-за ошибок, где:
// ** МассивСтрок - Массив - массив идентификаторов строк.
// ** Количество - Число - количество строк.
// ** ПредставлениеОтчетов - Строка - представление всех отчетов указанных строк.
// ** Текст - Строка - текст возникших ошибок.
//
&НаСервере
Процедура ПроверитьДобавленныеСтрокиОтчетов(СтруктураВыбора)
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -87,7 +88,7 @@
// Параметры:
// Объект - СправочникОбъект.РолиИсполнителей - заполняемый объект.
// Данные - СтрокаТаблицыЗначений - данные заполнения.
// ДополнительныеПараметры - Структура - Дополнительные параметры.
// ДополнительныеПараметры - Структура
//
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
@@ -344,25 +344,6 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ec44f92a-06bf-4a53-a7ba-fbe9846a68a6">
<name>ВключатьДатуВИмяФайла</name>
<synonym>
<key>ru</key>
<value>Включать дату в имя файла</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Признак добавления к имени файла отчета даты рассылки</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="86760ecb-2ddd-40ce-bc4f-94c23027a55e">
<name>ВыполнятьПоРасписанию</name>
<synonym>
@@ -840,6 +821,25 @@
<fillValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="ec44f92a-06bf-4a53-a7ba-fbe9846a68a6">
<name>ВключатьДатуВИмяФайла</name>
<synonym>
<key>ru</key>
<value>Включать дату в имя файла</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Признак добавления к имени файла отчета даты рассылки</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="9b7051d5-abc4-416c-a0e6-515d120d78e4">
<producedTypes>
<objectType typeId="3d05c612-65b6-4bbd-9095-0265d41422e1" valueTypeId="a84664df-b060-48e0-a237-fff4f9ea5046"/>
@@ -18,7 +18,8 @@
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив Из Строка -
// Массив Из Строка
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -145,7 +146,7 @@
Элемент.ИспользуетсяСОбъектамиАдресации = Истина;
Элемент.ВнешняяРоль = Ложь;
Элемент.Код = "000000001";
Элемент.КраткоеПредставление = НСтр("ru = '000000001'");
Элемент.КраткоеПредставление = НСтр("ru = '000000001'", ОбщегоНазначения.КодОсновногоЯзыка());
Элемент.ТипыОсновногоОбъектаАдресации = ПланыВидовХарактеристик.ОбъектыАдресацииЗадач.ВсеОбъектыАдресации;
Элемент.Назначение = ТабличныеЧасти.Назначение.Скопировать();
@@ -161,7 +162,7 @@
// Параметры:
// Объект - СправочникОбъект.РолиИсполнителей - заполняемый объект.
// Данные - СтрокаТаблицыЗначений - данные заполнения.
// ДополнительныеПараметры - Структура - Дополнительные параметры.
// ДополнительныеПараметры - Структура
//
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
@@ -1449,86 +1449,13 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПарольПояснение</name>
<id>741</id>
<title>
<key>ru</key>
<value>(для проверки)</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПарольПояснениеРасширеннаяПодсказка</name>
<id>743</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПарольПояснениеКонтекстноеМеню</name>
<id>742</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<textColor xsi:type="core:ColorRef">
<color>Style.ПоясняющийТекст</color>
</textColor>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Горизонтальная группа 2</value>
</title>
<extendedTooltip>
<name>ГоризонтальнаяГруппа2РасширеннаяПодсказка</name>
<id>836</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ВертикальнаяГруппа3</name>
<id>852</id>
<items xsi:type="form:FormGroup">
<name>ВертикальнаяГруппа2</name>
<id>843</id>
<items xsi:type="form:FormGroup">
<name>Страницы</name>
<id>816</id>
<items xsi:type="form:FormGroup">
<name>СтраницаЗапоминаниеПароля</name>
<id>818</id>
<items xsi:type="form:FormField">
<name>ЗапомнитьПароль</name>
<id>820</id>
<title>
<key>ru</key>
<value>Запомнить на время сеанса</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -1576,11 +1503,11 @@
</userVisible>
<title>
<key>ru</key>
<value>Страница запоминание пароля</value>
<value>Горизонтальная группа 2</value>
</title>
<extendedTooltip>
<name>СтраницаЗапоминаниеПароляРасширеннаяПодсказка</name>
<id>819</id>
<name>ГоризонтальнаяГруппа2РасширеннаяПодсказка</name>
<id>836</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1588,13 +1515,25 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ВертикальнаяГруппа3</name>
<id>852</id>
<items xsi:type="form:FormGroup">
<name>ВертикальнаяГруппа2</name>
<id>843</id>
<items xsi:type="form:FormGroup">
<name>Страницы</name>
<id>816</id>
<items xsi:type="form:FormGroup">
<name>СтраницаПояснениеУсиленногоПароля</name>
<id>823</id>
@@ -22,7 +22,7 @@
Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.Имя,
Элементы.ПояснениеУсиленногоПароля.Имя);
СертификатПараметрыРеквизитов = Новый Структура;
СертификатПараметрыРеквизитов = СертификатПараметрыРеквизитов();
Если Параметры.Свойство("Организация") Тогда
СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация);
КонецЕсли;
@@ -93,6 +93,16 @@
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Наименование - Строка
//
&НаКлиентеНаСервереБезКонтекста
Функция СертификатПараметрыРеквизитов()
Возврат Новый Структура;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
@@ -637,6 +647,11 @@
КонецПроцедуры
// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата.
//
// Параметры:
// РезультатПоиска - СертификатКриптографии
// Контекст
//
&НаКлиенте
Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификата(РезультатПоиска, Контекст) Экспорт
@@ -653,12 +668,20 @@
Контекст.Вставить("СертификатКриптографии", РезультатПоиска);
Контекст.СертификатКриптографии.НачатьВыгрузку(Новый ОписаниеОповещения(
РезультатПоиска.НачатьВыгрузку(Новый ОписаниеОповещения(
"ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата.
//
// Параметры:
// РезультатПоиска - Структура:
// * Выполнено - Булево
// * ОписаниеОшибки - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачномСервисе(РезультатПоиска, Контекст) Экспорт
@@ -708,7 +731,8 @@
Процедура ПерейтиКВыборуТекущегоСертификатаПослеЗаполненияСвойствСертификата(Контекст)
Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда
Если СертификатПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда
ПараметрыРеквизитов = СертификатПараметрыРеквизитов; // см. СертификатПараметрыРеквизитов
Если ПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда
Элементы.СертификатНаименование.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
@@ -11,7 +11,7 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СертификатПараметрыРеквизитов = Новый Структура;
СертификатПараметрыРеквизитов = СертификатПараметрыРеквизитов();
Если Параметры.Свойство("Организация") Тогда
СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация);
КонецЕсли;
@@ -55,6 +55,17 @@
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Организация
//
&НаКлиентеНаСервереБезКонтекста
Функция СертификатПараметрыРеквизитов()
ПараметрыРеквизитов = Новый Структура;
Возврат ПараметрыРеквизитов;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
@@ -280,6 +291,13 @@
КонецПроцедуры
// Продолжение процедуры Далее.
//
// Параметры:
// Результат - Структура:
// * ОписаниеОшибки - Структура:
// ** Описание - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ДалееПослеПоискаСертификатаВОблачномСервисе(Результат, Контекст) Экспорт
@@ -362,22 +380,24 @@
ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата(
Форма.СертификатОписаниеДанных, СвойстваСертификата);
СертификатПараметрыРеквизитов = Форма.СертификатПараметрыРеквизитов; // см. ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатПараметрыРеквизитов
СохраненныеСвойства = СохраненныеСвойстваСертификата(
Форма.СертификатОтпечаток,
Форма.СертификатАдрес,
Форма.СертификатПараметрыРеквизитов);
СертификатПараметрыРеквизитов);
Если Форма.СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда
Если Форма.СертификатПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда
Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда
НаименованиеСертификата = СертификатПараметрыРеквизитов.Наименование;
Если НаименованиеСертификата.ТолькоПросмотр Тогда
Элементы.СертификатНаименование.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
Если Форма.ОпределяемыйТипОрганизацияНастроен Тогда
Если Форма.СертификатПараметрыРеквизитов.Свойство("Организация") Тогда
Если Не Форма.СертификатПараметрыРеквизитов.Организация.Видимость Тогда
Если СертификатПараметрыРеквизитов.Свойство("Организация") Тогда
Если Не СертификатПараметрыРеквизитов.Организация.Видимость Тогда
Элементы.СертификатОрганизация.Видимость = Ложь;
ИначеЕсли Форма.СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда
ИначеЕсли СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда
Элементы.СертификатОрганизация.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
Loaded 100 of 1022 files, more files were not shown because too many files have changed in this diff. Show more