Имя: Пароль:
1C
 
Изменить ресурс РС при удалении записи
0 Juliette_
Juliette
 
20.09.23
13:00
Надо запретить удаление записи регистра сведений, вместо этого изменить значение ресурса "Актуальность". В менеджере набора

Процедура ПередЗаписью(Отказ, Замещение)
    
    Если ЭтотОбъект.Количество() = 0 Тогда
        Отказ = Истина;
    КонецЕсли;        
    
КонецПроцедуры

А как поменять значение? Менеджер записи использовать?
1 Donkey_hot
 
20.09.23
13:03
Для Каждого Запись Из ЭтотОбъект Цикл
    ....
КонецЦикла
2 Juliette_
Juliette
 
20.09.23
13:04
спасибо!
3 Juliette_
Juliette
 
20.09.23
13:11
не совсем корректно.
Теперь не дает записать и при создании новой записи.
А при удалении
Процедура ПередЗаписью(Отказ, Замещение)
    
    Если ЭтотОбъект.Количество() = 0 Тогда  
        Для Каждого Запись Из ЭтотОбъект Цикл
            Запись.Актуальность = НЕ Запись.Актуальность;
        КонецЦикла;    
        Отказ = Истина;
    КонецЕсли;        
    
КонецПроцедуры

не меняется значение, ведь Отказ = Истина.
Как решить вопрос?
4 lubitelxml
 
20.09.23
13:17
(3) может надо все таки так:
    Если ЭтотОбъект.Количество() = 0 Тогда  
        Отказ = Истина;
    Иначе
        Для Каждого Запись Из ЭтотОбъект Цикл
            Запись.Актуальность = НЕ Запись.Актуальность;
        КонецЦикла;    
    КонецЕсли;
5 lubitelxml
 
20.09.23
13:18
Я бы еще "Запись.Актуальность = НЕ Запись.Актуальность; " заменил на "Запись.Актуальность = ЛОЖЬ", иначе может неактуальные сделать актуальными
6 Juliette_
Juliette
 
20.09.23
13:24
(4) ну так после удаления записи 0 и получается (
7 lubitelxml
 
20.09.23
14:01
(6) если у тебя нет записей, то и цикл не выполнится ведь
8 Juliette_
Juliette
 
20.09.23
14:04
(7) да, и как решить?
Удаляем запись, количество = 0, отказ = истина
И при этом надо изменить значение ресурса
9 lubitelxml
 
20.09.23
14:10
вот так попробуй:
Если ЭтотОбъект.Количество() = 0 И ЭтотОбъект.Модифицированность()  =Истина Тогда

Отказ = Истина;

КонецЕсли;
10 AlexeyKh
 
20.09.23
14:19
Если ЭтотОбъект.Количество() = 0 Тогда
//удаление записей, производится при установленном Отборе!!!!!
//вот по нему и читаем то что хотят удалить!!!!
ЭтотОбъект.Проичитать();
//и а дальше вставляете свой цикл обхода записей

ДЛя каждого ....

//Отказ = Истина; //это убрать!!!!

КонецЕсли;
11 Juliette_
Juliette
 
20.09.23
14:24
(10) Круто! Спасибо большое
12 Juliette_
Juliette
 
20.09.23
14:30
Процедура ПередЗаписью(Отказ, Замещение)
    
    Если ЭтотОбъект.Количество() = 0 И ЭтотОбъект.Модифицированность() Тогда
        ЭтотОбъект.Прочитать();
        Для Каждого Запись Из ЭтотОбъект Цикл
            Запись.Актуальность = Ложь;
        КонецЦикла;  
    КонецЕсли;  
    
КонецПроцедуры


вот так работает корректно, отсеиваются проблемы с дублированием записей