ПредставлениеНачалоВыбораЗавершение (БСП)

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

Представление начало выбора завершение.

Процедура ПредставлениеНачалоВыбораЗавершение(Знач РезультатЗакрытия, Знач ДополнительныеПараметры) Экспорт
	
	Если ТипЗнч(РезультатЗакрытия) <> Тип("Структура") Тогда
		Если ДополнительныеПараметры.Свойство("ОбновитьКонтекстноеМеню") 
			И ДополнительныеПараметры.ОбновитьКонтекстноеМеню Тогда
				Результат = Новый Структура();
				Результат.Вставить("ОбновитьКонтекстноеМеню",  Истина);
				Результат.Вставить("ИмяЭлементаДляРазмещения", ДополнительныеПараметры.ИмяЭлементаРазмещения);
				ОбновитьКонтактнуюИнформациюФормы(ДополнительныеПараметры.Форма, Результат);
		КонецЕсли;
		Возврат;
	КонецЕсли;
	
	ДанныеЗаполнения = ДополнительныеПараметры.ДанныеЗаполнения;
	ДанныеНаФорме    = ДополнительныеПараметры.ДанныеСтроки;
	Результат        = ДополнительныеПараметры.Результат;
	Элемент          = ДополнительныеПараметры.Элемент;
	Форма            = ДополнительныеПараметры.Форма;
	
	ТекстПредставления = РезультатЗакрытия.Представление;
	Комментарий        = РезультатЗакрытия.Комментарий;
	
	Если ДанныеНаФорме.Свойство("ХранитьИсториюИзменений") И ДанныеНаФорме.ХранитьИсториюИзменений Тогда
		КонтактнаяИнформацияОписаниеДополнительныхРеквизитов = ДанныеЗаполнения.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов;
		Отбор = Новый Структура("Вид", ДанныеНаФорме.Вид);
		НайденныеСтроки = КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор);
		Для Каждого СтрокаКонтактнойИнформации Из НайденныеСтроки Цикл
			КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Удалить(СтрокаКонтактнойИнформации);
		КонецЦикла;
		
		Отбор = Новый Структура("Вид", ДанныеНаФорме.Вид);
		НайденныеСтроки = РезультатЗакрытия.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор);
		
		Если НайденныеСтроки.Количество() > 1 Тогда
			
			СтрокаСДействующимАдресом = Неопределено;
			МинимальнаяДата = Неопределено;
			
			Для Каждого СтрокаКонтактнойИнформации Из НайденныеСтроки Цикл
				
				НоваяКонтактнаяИнформация = КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяКонтактнаяИнформация, СтрокаКонтактнойИнформации);
				НоваяКонтактнаяИнформация.ИмяЭлементаДляРазмещения = ДополнительныеПараметры.ИмяЭлементаРазмещения;
				
				Если СтрокаСДействующимАдресом = Неопределено
					ИЛИ СтрокаКонтактнойИнформации.ДействуетС > СтрокаСДействующимАдресом.ДействуетС Тогда
						СтрокаСДействующимАдресом = СтрокаКонтактнойИнформации;
				КонецЕсли;
				Если МинимальнаяДата = Неопределено
					ИЛИ СтрокаКонтактнойИнформации.ДействуетС < МинимальнаяДата Тогда
						МинимальнаяДата = СтрокаКонтактнойИнформации.ДействуетС;
				КонецЕсли;
				
			КонецЦикла;
			
			// Исправление некорректных адресов, без первоначальной даты заполнения
			Если ЗначениеЗаполнено(МинимальнаяДата) Тогда
				Отбор = Новый Структура("ДействуетС", МинимальнаяДата);
				СтрокиСМинимальнойДатой = КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор);
				Если СтрокиСМинимальнойДатой.Количество() > 0 Тогда
					СтрокиСМинимальнойДатой[0].ДействуетС = Дата(1, 1, 1);
				КонецЕсли;
			КонецЕсли;
			
			Если СтрокаСДействующимАдресом <> Неопределено Тогда
				ТекстПредставления = СтрокаСДействующимАдресом.Представление;
				Комментарий        = СтрокаСДействующимАдресом.Комментарий;
			КонецЕсли;
			
		ИначеЕсли НайденныеСтроки.Количество() = 1 Тогда
			НоваяКонтактнаяИнформация = КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяКонтактнаяИнформация, НайденныеСтроки[0],, "ДействуетС");
			НоваяКонтактнаяИнформация.ИмяЭлементаДляРазмещения = ДополнительныеПараметры.ИмяЭлементаРазмещения;
			ДанныеНаФорме.ДействуетС = Дата(1, 1, 1);
		КонецЕсли;
		
	КонецЕсли;
	
	Если ДополнительныеПараметры.ЭтоТабличнаяЧасть Тогда
		ДанныеЗаполнения[Элемент.Имя + "Значение"]      = РезультатЗакрытия.Значение;
		
	Иначе
		Форма.Элементы.Найти(Элемент.Имя).РасширеннаяПодсказка.Заголовок = Комментарий;
		
		Если РезультатЗакрытия.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда
			ТекстПредставления = УправлениеКонтактнойИнформациейКлиентСервер.АдресСайта(ТекстПредставления, РезультатЗакрытия.Адрес);
		КонецЕсли;
		
		ДанныеНаФорме.Представление = ТекстПредставления;
		ДанныеНаФорме.Значение      = РезультатЗакрытия.Значение;
		ДанныеНаФорме.Комментарий   = Комментарий;
	КонецЕсли;
	
	Если РезультатЗакрытия.Свойство("АдресВВидеГиперссылки")
		И РезультатЗакрытия.АдресВВидеГиперссылки
		И НЕ ЗначениеЗаполнено(ТекстПредставления) Тогда
			ДанныеЗаполнения[Элемент.Имя] = УправлениеКонтактнойИнформациейКлиентСервер.ТекстПустогоАдресаВВидеГиперссылки();
	Иначе
		ДанныеЗаполнения[Элемент.Имя] = ТекстПредставления;
	КонецЕсли;
	
	Если РезультатЗакрытия.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
		Результат.Вставить("ОбновитьКонтекстноеМеню", Истина);
	КонецЕсли;
	
	Форма.Модифицированность = Истина;
	ОбновитьКонтактнуюИнформациюФормы(Форма, Результат);
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПредставлениеНачалоВыбора (БСП)

НачатьИнтервьюСВыборомШаблонаЗавершение (БСП)

ПредметНачалоВыбора (БСП)

СертификатНачалоВыбораСПодтверждением (БСП)

ОбработчикВыбораФайловогоКаталогаЗавершение (БСП)

ОбработчикВыбораФайлаЗавершение (БСП)

ЗначениеДоступаНачалоВыбора (БСП)

НачалоВыбораСертификатаПриУстановленномОтборе (БСП)

ОбработчикВыбораЭлементовБазыКорреспондентаНачалоВыбора (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз