Установить свойства вида контактной информации. Устанавливает свойства вида контактной информации.
// Устанавливает свойства вида контактной информации.
// Примечание. При использовании параметра Порядок следует внимательно следить за уникальностью назначаемого значения.
// Если после выполнения обновления значения порядка окажутся неуникальными в пределах группы, то настройка порядка
// пользователем будет невозможна.
// В общем случае рекомендуется не использовать этот параметр (порядок не изменится), либо заполнять его значением
// 0 (порядок будет назначен автоматически в подсистеме "Настройка порядка элементов" при выполнении процедуры).
// Для размещения видов КИ в определенной последовательности относительно друг друга без явного размещения в начале
// списка достаточно вызывать данную процедуру в нужной последовательности для каждого вида КИ с указанием порядка 0.
// Если добавляется предопределенный вид КИ к уже существующим в ИБ, не рекомендуется назначать порядок в явном виде.
//
// Параметры:
// Параметры - Структура - содержит структуру с полями:
// * Вид - СправочникСсылка.ВидыКонтактнойИнформации, Строка - Ссылка на вид контактной информации или
// идентификатор предопределенного элемента.
// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации - Тип контактной информации или его
// идентификатор.
// * Порядок - Число, Неопределено - Порядок вида контактной информации, положение в
// списке относительно других элементов:
// Неопределено - не переназначать;
// 0 - назначить автоматически;
// Число > 0 - назначить указанный порядок.
// * МожноИзменятьСпособРедактирования - Булево - Истина, если есть возможность изменять способ
// редактирования только в диалоге, Ложь - иначе.
// * РедактированиеТолькоВДиалоге - Булево - Истина, если редактировать только в диалоге,
// Ложь - иначе.
// * ОбязательноеЗаполнение - Булево - Истина, если требуется обязательное
// заполнение поля, Ложь - иначе.
// * РазрешитьВводНесколькихЗначений - Булево - Признак возможности использования дополнительных
// полей ввода для данного вида.
// * ЗапретитьРедактированиеПользователем - Булево - Признак недоступности редактирования
// пользователем свойства вида контактной
// информации.
// * ХранитьИсториюИзменений - Булево - Признак хранения истории изменений вида
// контактной информации.
// Значение по умолчанию Ложь.
// * Используется - Булево - Признак использования вида контактной информации.
// Значение по умолчанию Истина.
// * ВидПоляДругое - Строка - Внешний вид поля типа "Другое". Возможные значения:
// МногострочноеШирокое, ОднострочноеШирокое, ОднострочноеУзкое.
// Значение по умолчанию - ОднострочноеШирокое.
// * НастройкиПроверки - Структура, Неопределено - Настройки проверки вида контактной информации.
// Для типа Адрес - Структура, содержащая поля:
// * ТолькоНациональныйАдрес - Булево - Истина, если возможен ввод только российских адресов.
// * ПроверятьКорректность - Булево - Истина, если требуется запрещать пользователю записывать
// некорректные адреса.
// * ЗапрещатьВводНекорректного - Булево - Устарел. Все переданные значения игнорируются.
// Для запрета пользователю записывать некорректные адреса
// следует использовать параметр ПроверятьКорректность.
// * СкрыватьНеактуальныеАдреса - Булево - Истина, если не требуется показывать неактуальные адреса при
// вводе (только если ТолькоНациональныйАдрес = Истина).
// * ВключатьСтрануВПредставление - Булево - Истина, если требуется включать наименование страны в
// представление адреса.
// Для типа АдресЭлектроннойПочты - Структура, содержащая поля:
// * ПроверятьКорректность - Булево - Истина, если требуется запрещать пользователю записывать
// некорректный адрес электронной почты.
// * ЗапрещатьВводНекорректного - Булево - Устарел. Все переданные значения игнорируются.
// Для запрета пользователю записывать некорректные адреса
// следует использовать параметр ПроверятьКорректность.
// Для остальных типов или для задания настроек по умолчанию используется Неопределено.
//
Процедура УстановитьСвойстваВидаКонтактнойИнформации(Параметры) Экспорт
Если Не ЗначениеЗаполнено(Параметры.Вид) Тогда
Объект = ОбъектВидаКонтактнойИнформации(Параметры.Имя);
ИначеЕсли ТипЗнч(Параметры.Вид) = Тип("Строка") Тогда
Объект = ОбъектВидаКонтактнойИнформации(Параметры.Вид);
Иначе
Объект = Параметры.Вид.ПолучитьОбъект();
КонецЕсли;
ЗаполнитьЗначенияСвойств(Объект, Параметры, "Тип, МожноИзменятьСпособРедактирования,
|РедактированиеТолькоВДиалоге, ОбязательноеЗаполнение, РазрешитьВводНесколькихЗначений,
|ЗапретитьРедактированиеПользователем, Используется, ХранитьИсториюИзменений ,МеждународныйФорматАдреса");
Если ПустаяСтрока(Параметры.Наименование) Тогда
Наименования = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.НаименованияВидовКонтактнойИнформации();
Для каждого Язык Из Метаданные.Языки Цикл
Представление = Наименования[Язык.КодЯзыка][СокрЛП(Объект.ИмяПредопределенногоВида)];
Если ЗначениеЗаполнено(Представление) Тогда
Если ТекущийЯзык() = Метаданные.ОсновнойЯзык Тогда
Объект.Наименование = Представление;
Иначе
НоваяСтрока = Объект.Представления.Добавить();
НоваяСтрока.КодЯзыка = Язык.КодЯзыка;
НоваяСтрока.Наименование = Представление;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Объект.Наименование = Параметры.Наименование;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.Имя) Тогда
Объект.ИмяПредопределенногоВида = Параметры.Имя;
КонецЕсли;
Если ПустаяСтрока(Объект.ИмяПредопределенногоВида) Тогда
Объект.ИмяПредопределенногоВида = Объект.ИмяПредопределенныхДанных;
КонецЕсли;
Если ПустаяСтрока(Объект.Родитель) Тогда
Объект.Родитель = Параметры.Группа;
КонецЕсли;
Объект.ИмяГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Родитель, "ИмяПредопределенногоВида");
Если Параметры.Тип = Перечисления.ТипыКонтактнойИнформации.Другое Тогда
Объект.ВидПоляДругое = Параметры.ВидПоляДругое;
КонецЕсли;
НастройкиПроверки = Параметры.НастройкиПроверки;
ПроверятьНастройки = ТипЗнч(НастройкиПроверки) = Тип("Структура");
Если ПроверятьНастройки И Параметры.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
ЗаполнитьЗначенияСвойств(Объект, НастройкиПроверки);
ИначеЕсли ПроверятьНастройки И Параметры.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
УстановитьЗначенияРеквизитовПроверки(Объект, НастройкиПроверки);
ИначеЕсли ПроверятьНастройки И Параметры.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
Объект.ТелефонCДобавочнымНомером = НастройкиПроверки.ТелефонCДобавочнымНомером;
Иначе
УстановитьЗначенияРеквизитовПроверки(Объект);
КонецЕсли;
Результат = УправлениеКонтактнойИнформациейСлужебный.ПроверитьПараметрыВидаКонтактнойИнформации(Объект);
Если Результат.ЕстьОшибки Тогда
ВызватьИсключение Результат.ТекстОшибки;
КонецЕсли;
Если Параметры.Порядок <> Неопределено Тогда
Объект.РеквизитДопУпорядочивания = Параметры.Порядок;
КонецЕсли;
ЗначениеИспользуетсяУГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Родитель, "Используется");
Если ЗначениеИспользуетсяУГруппы = Ложь И Объект.Используется Тогда
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВидыКонтактнойИнформации");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Объект.Родитель.Ссылка);
Блокировка.Заблокировать();
Родитель = Объект.Родитель.ПолучитьОбъект();
Родитель.Используется = Истина;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Родитель);
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Объект);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Иначе
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Объект);
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
УстановитьСвойстваГруппыВидаКонтактнойИнформации (БСП)
ВидыКонтактнойИнформацияОбъекта (БСП)
ПривестиКонтактнуюИнформациюXML (БСП)
УстановитьКонтактнуюИнформациюОбъекта (БСП)
ДанныеВидовКонтактнойИнформации (БСП)
НаименованияВидовКонтактнойИнформации (БСП)
ВидКонтактнойИнформацииПоИмени (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)