Имя: Пароль:
1C
1С v8
Как определить удаление или добавление записи в РС
0 ShadowMind
 
07.12.12
11:39
Вот возникла у меня задача «Запретить пользователям интерактивно удалять последнюю запись в непериодическом независимом РС». И я столкнулся с проблемой – а как же все-таки отловить именно удаление записи, а не ее изменение? Ведь при изменении РС сначала происходит удаление записи, потом ее добавление. Перерыл Мисту – ничего однозначно определяющего удаление записи не нашел… Поэтому расскажу свое решение, авось кому пригодится, а может, и покритикует кто
Проверку удаления я делаю в модуле набора записей РС, для этого:
1. Завел константу ИзменнениеРС (булево), в которую в событии ОбработкаПроверкиЗаполнения устанавливаю значение Истина. Это событие срабатывает только при интерактивном изменении РС в форме записи, соответственно при удалении записи в списке РС событие не вызывается…

2. В процедуре ПриЗаписи проверяю
Если ЭтотОбъект.Количество() = 0 И Не Константы.ИзменениеРС.Получить() Тогда
//Это именно удаление записи

ЭтотОбъект.Количество() = 0 – означает, что запись удаляется, но такое же значение мы имеем и при «первом прогоне» изменения записи…

3. Дальше в ПриЗаписи проверяю наличие записи в базе с теми же измерениями и меняю константу ИзменениеРС:

Если Не Отказ Тогда
   Если Константы. ИзменениеРС.Получить() И Не РезультатПроверкиИзмЗаписи.Пустой() Тогда
       //Это запись набора записей регистра, значит снимам флаг ИзменениеРС
       Константы. ИзменениеРС.Установить(Ложь);
   КонецЕсли;
КонецЕсли;


Вот как-то так… Работает у меня на платформе 8.2.17.143
1 zak555
 
07.12.12
11:40
что такое "последняя запись в непериодическом независимом РС" ?
2 ShadowMind
 
07.12.12
11:44
(1) У меня это регистр, в котором хранится расписания формирования заказов, и для каждого поставщика должна существовать хотя бы одна запись расписания...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший