Проверить ссылки на объект. Спрашивает у пользователя подтверждение на включение редактирования реквизитов
// Спрашивает у пользователя подтверждение на включение редактирования реквизитов
// и проверяет, есть ли ссылки на объект в информационной базе.
//
// Параметры:
// ОбработкаПродолжения - ОписаниеОповещения - оповещение, которое вызывается после проверки.
// В обработку оповещения передается параметр типа Булево:
// Истина - ссылок не обнаружено или пользователь решил разрешить редактирование,
// Ложь - видимых заблокированных реквизитов нет или
// ссылки обнаружены и пользователь отказался от продолжения.
// МассивСсылок - Массив - значения:
// * Ссылка - искомые ссылки в различных объектах.
// СинонимыРеквизитов - Массив - значения:
// * Строка - синонимы реквизитов, которые показываются пользователю.
//
Процедура ПроверитьСсылкиНаОбъект(Знач ОбработкаПродолжения, Знач МассивСсылок, Знач СинонимыРеквизитов) Экспорт
ЗаголовокДиалога = НСтр("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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки (БСП)
ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)