Имя: Пароль:
1C
1С v8
ПередУдалением или ПослеУдаления Регистр сведений
0 shira84
 
20.11.13
15:48
Непериодические независимые регистры сведений "Тарифы" и "СоставТарифа". При удалении первого необходимо найти и удалить записи из второго за тотже период. Обработчик ПередУдалением? Вызывает диалог да/нет и не факт, что пользователь не ответит нет. ПослеУдаления? Запись уже удалена и период неоткуда вытащить. Как еще?
1 shira84
 
20.11.13
15:49
Периодические. Извиняюсь
2 shira84
 
20.11.13
15:50
Как-то можно заткнуть Диалог вопроса?
3 Ненавижу 1С
 
гуру
20.11.13
15:51
мое имхо: состав тарифа должен быть таб. частью справочника тарифы, на который ссылается РС
4 shira84
 
20.11.13
15:54
Тариф не справочник, он РС. В нем уже хранятся значения этих самых тарифов.
5 shira84
 
20.11.13
15:58
А точно в обработчике ПослеУдаления запись уже удалена? Прогонял в отладчике Элемент.ТекущиеДанные.Период он уже не видит удаляемую строку, но в предприятиии она все еще виднеется до конца процедуры.
6 hhhh
 
20.11.13
16:01
(5) используйте не события формы, а события регистра
7 shira84
 
20.11.13
16:12
Процедура СписокИсторияПередУдалением(Элемент, Отказ)
    
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("Удалить тариф и все его составляющие?", Режим, 0);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Отказ = Истина;
        Возврат;
    КонецЕсли;

    НаборСостав = РегистрыСведений.АЮ_СоставляющиеТарифа.СоздатьНаборЗаписей();
    НаборСостав.Отбор.Период.Установить(Элемент.ТекущиеДанные.Период);
    НаборСостав.Отбор.Тариф.Установить(Ссылка);
    НаборСостав.Очистить();
    НаборСостав.Записать(Истина);
    
    НаборТариф = РегистрыСведений.Тарифы.СоздатьНаборЗаписей();
    НаборТариф.Отбор.Период.Установить(Элемент.ТекущиеДанные.Период);
    НаборТариф.Отбор.Тариф.Установить(Ссылка);
    НаборТариф.Очистить();
    НаборТариф.Записать(Истина);
        
    Отказ = Истина;
    
КонецПроцедуры


Всем спасибо. Вот так вот заткнул стандартный диалог.
8 shira84
 
20.11.13
16:14
Т.е перед удалением задал вопрос и удалил программно оба регистра, отклоняя стандартную обработку удаления. не ахти конечно, но хоть так.
9 Ненавижу 1С
 
гуру
20.11.13
16:41
Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("Удалить тариф и все его составляющие?", Режим, 0);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
        Отказ = Истина;
        Возврат;
    КонецЕсли;

что будет когда нажмут Esc?
10 Defender aka LINN
 
20.11.13
16:51
(9) Будет сюрприз :)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.