Главная » Статьи » "1С" Програмирование

Скачивать материалы с сайта, могут только зарегистрированные пользователи.
Для регистрации заполните два поля ниже!

Через минуту Вы получите "Гостевой доступ"




Контроль пометки удаления
Контроль пометки удаления
 
  
Маленький инструмент, позволяющий в интерактивном режиме контролировать пометку удаления объектов базы. Контроль обусловлен наличием ссылок на обект, ежели они есть - то предъявляются юзеру, и однозначно не сохраняется "
 
Ситуевина: Достали меня ушастые все подряд метить на удаление... база пухнет а вместе с ней и мозг "идиологов" и мой :(
Пришлось взять это дело под контроль.
Итак:

Делаем общюю форму для показа ссылков юзеру(а показываем по его желанию см. код), а некоторые так обламыватся и успокаиваются :)
ФОрма на ваш вкус и цвет, я слабал с единсвенным полем "Данные", сделал ПолеВвода с кнопкой открытия, и запретил юзать таблицу иначе как: Открыть то что указано в ячейке, ТипЗначения у ПоляВвода: "Любая ссылка"

Фтыкаем Общий модуль (Клиент=Истина,Сервер=Истина,ВнешнееСоединение=Истина);

Делаем Подписку на событие: ПриЗаписиУстановкаПометкиУдаления, цепляем его ко всем видам объектов, которые можно метить на удаление, выбираем единственное предлагаемое событие "ПриЗаписи" и создаем в вышеозначенном модуле обработчик;

Код модуля:
ВНИМАНИЕ! Рисовалось для УПП (это относительно всяких проверок, не на всех конфах могут сгодица ;-) )
 
 
Функция ПолучитьТаблицуСсылокНаОбъект(СсылкаНаОбъект,Отказ)
мСсылок = Новый Массив();
мСсылок.Добавить(СсылкаНаОбъект);
ТаблицаСсылок = НайтиПоСсылкам(мСсылок);
//
мСсылокНаСебя = ТаблицаСсылок.НайтиСтроки(Новый Структура("Данные",СсылкаНаОбъект));
//
Для сч=0 ПО мСсылокНаСебя.ВГраница() Цикл
ОбратныйИндекс = мСсылокНаСебя.ВГраница()-сч;
ТаблицаСсылок.Удалить(мСсылокНаСебя[ОбратныйИндекс]);
КонецЦикла;
//
Отказ = Булево(ТаблицаСсылок.Количество());
Возврат ТаблицаСсылок;
КонецФункции
 
Функция ЭтоИгнорируемыйПользователь()
РезультатПроверки = ПараметрыСеанса.ТекущийПользователь = Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.Получить();
//можно дополнять всякими извратами :)
Возврат РезультатПроверки;
КонецФункции // ()
 
//////////////////////////////////////////////
Процедура ПриЗаписиУстановкаПометкиУдаленияПриЗаписи(Источник, Отказ) Экспорт
#Если НЕ Клиент Тогда
Возврат;
#КонецЕсли
//
Если НЕ Источник.ПометкаУдаления Тогда
Возврат;
КонецЕсли;
//
Если ЭтоИгнорируемыйПользователь() Тогда
возврат;
КонецЕсли;
//
СсылкаИсточника = Источник.Ссылка;
//
ТаблицаСсылок = ПолучитьТаблицуСсылокНаОбъект(СсылкаИсточника,Отказ);
//
#Если Клиент Тогда
Если Отказ И Вопрос("На данный объект существуют ссылки!!!
|Установка пометки удаления не возможна. Желаете просмотреть
|ссылки на обект?",
РежимДиалогаВопрос.ОКОтмена,,
КодВозвратаДиалога.ОК, "ВНИМАНИЕ!!!") = КодВозвратаДиалога.ОК Тогда
ФормаСсылокНаОбъект = ПолучитьОбщуюФорму("ФормаСсылокНаОбъект");
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаСсылок,ФормаСсылокНаОбъект.ТаблицаСсылок);
ФормаСсылокНаОбъект.Открыть();
КонецЕсли;
#КонецЕсли
КонецПроцедуры

статья с сайта: www.infostart.ru



Категория: "1С" Програмирование | Добавил: c1 (2009 Февраль 21)
Просмотров: 1099 | Теги: Контроль пометки удаления | Рейтинг: 0.0/0

Выразить благодарность - Поделиться с друзьями!

 

Здесь все о технической стороне 1С!

 

Узнай, как правильно администрировать 1С Предприятие
Регистрируйся на бесплатный 7-ми дневный курс сейчас:

Ваш E-Mail в безопасности



Всего комментариев: 0
avatar