ПроверитьСсылкиНаОбъект (БСП)

Автор: 1С
ОбщийМодуль.ЗапретРедактированияРеквизитовОбъектовКлиент
БСП

Проверить ссылки на объект. Спрашивает у пользователя подтверждение на включение редактирования реквизитов

// Спрашивает у пользователя подтверждение на включение редактирования реквизитов
// и проверяет, есть ли ссылки на объект в информационной базе.
//
// Параметры:
//  ОбработкаПродолжения - ОписаниеОповещения - оповещение, которое вызывается после проверки.
//                         В обработку оповещения передается параметр типа Булево:
//                           Истина - ссылок не обнаружено или пользователь решил разрешить редактирование,
//                           Ложь   - видимых заблокированных реквизитов нет или
//                                    ссылки обнаружены и пользователь отказался от продолжения.
//  МассивСсылок         - Массив - значения:
//                           * Ссылка - искомые ссылки в различных объектах.
//  СинонимыРеквизитов   - Массив - значения:
//                           * Строка - синонимы реквизитов, которые показываются пользователю.
//
Процедура ПроверитьСсылкиНаОбъект(Знач ОбработкаПродолжения, Знач МассивСсылок, Знач СинонимыРеквизитов) Экспорт
	
	ЗаголовокДиалога = НСтр("ru = 'Разрешение редактирования реквизитов'");
	
	РеквизитыПредставление = "";
	Для Каждого СинонимРеквизита Из СинонимыРеквизитов Цикл
		РеквизитыПредставление = РеквизитыПредставление + СинонимРеквизита + "," + Символы.ПС;
	КонецЦикла;
	РеквизитыПредставление = Лев(РеквизитыПредставление, СтрДлина(РеквизитыПредставление) - 2);
	
	Если СинонимыРеквизитов.Количество() > 1 Тогда
		ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Для того чтобы не допустить рассогласования данных в программе,
			           |следующие реквизиты не доступны для редактирования:
			           |%1.
			           |
			           |Перед тем, как разрешить их редактирование, рекомендуется оценить последствия,
			           |проверив все места использования этого элемента в программе.
			           |Поиск мест использования может занять длительное время.'"),
			РеквизитыПредставление);
	Иначе
		Если МассивСсылок.Количество() = 1 Тогда
			ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Для того чтобы не допустить рассогласования данных в программе,
				           |реквизит %1 не доступен для редактирования.
				           |
				           |Перед тем, как разрешить его редактирование, рекомендуется оценить последствия,
				           |проверив все места использования ""%2"" в программе.
				           |Поиск мест использования может занять длительное время.'"),
				РеквизитыПредставление, МассивСсылок[0]);
		Иначе
			ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Для того чтобы не допустить рассогласования данных в программе,
				           |реквизит %1 не доступен для редактирования.
				           |
				           |Перед тем, как разрешить его редактирование, рекомендуется оценить последствия,
				           |проверив все места использования выбранных элементов (%2) в программе.
				           |Поиск мест использования может занять длительное время.'"),
				РеквизитыПредставление, МассивСсылок.Количество());
		КонецЕсли;
	КонецЕсли;
	
	Параметры = Новый Структура;
	Параметры.Вставить("МассивСсылок", МассивСсылок);
	Параметры.Вставить("СинонимыРеквизитов", СинонимыРеквизитов);
	Параметры.Вставить("ЗаголовокДиалога", ЗаголовокДиалога);
	Параметры.Вставить("ОбработкаПродолжения", ОбработкаПродолжения);
	
	Кнопки = Новый СписокЗначений;
	Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Проверить и разрешить'"));
	Кнопки.Добавить(КодВозвратаДиалога.Нет, НСтр("ru = 'Отмена'"));
	
	ПоказатьВопрос(
		Новый ОписаниеОповещения("ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки",
			ЗапретРедактированияРеквизитовОбъектовСлужебныйКлиент, Параметры),
		ТекстВопроса, Кнопки, , КодВозвратаДиалога.Да, ЗаголовокДиалога);
	
КонецПроцедуры

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

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

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

ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования (БСП)

ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки (БСП)

МенеджерОбъектаПоСсылке (БСП)

СсылкаОбъекта (БСП)

СсылкиНаОбъектыСФайлами (БСП)

ВидОбъектаПоСсылке (БСП)

ПроверитьЦиклическиеСсылки (БСП)

ПроверитьПодписи (БСП)

ПроверитьУстранениеПроблемыОбъектаПриЗаписи (БСП)

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