УстановитьСвойстваВидаКонтактнойИнформации (БСП)

Автор: 1С
ОбщийМодуль.УправлениеКонтактнойИнформацией
БСП

Установить свойства вида контактной информации. Устанавливает свойства вида контактной информации.

// Устанавливает свойства вида контактной информации.
// Примечание. При использовании параметра Порядок следует внимательно следить за уникальностью назначаемого значения.
//  Если после выполнения обновления значения порядка окажутся неуникальными в пределах группы, то настройка порядка
//  пользователем будет невозможна.
//  В общем случае рекомендуется не использовать этот параметр (порядок не изменится), либо заполнять его значением
//  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 (БСП)

УстановитьКонтактнуюИнформациюОбъекта (БСП)

ДанныеВидовКонтактнойИнформации (БСП)

НаименованияВидовКонтактнойИнформации (БСП)

ВидКонтактнойИнформацииПоИмени (БСП)

ПредопределенныеВидыКонтактнойИнформации (БСП)

ПроверитьПараметрыВидаКонтактнойИнформации (БСП)

TurboConf 6 - расширение Конфигуратора 1С