Имя: Пароль:
1C
1С v8
УФ Отследить установку пометки на удаление элемента справочника
0 Rounder
 
11.09.12
13:08
Справочник Контрагенты. В форме есть динамический список банковские счета. Суть вопроса - отказать пользователю в установке пометки удаления если счет обозначен как основной у контрагента.
Программно отключить доступность стандартной команды нельзя.
Как вариант отключить стандартную команду и сделать свою, но это на крайняк. Может есть более "красивые" способы?
1 SUA
 
11.09.12
13:11
подписка на событие? (пофигу вообще откуда вызывается динамический список - событие пометки удаления)
2 Rounder
 
11.09.12
13:15
(1) По идее не подойдет. Есть ситуация когда счет помечен как основной - но контрагент еще не записан и на этот же счет в этой же форме контрагента ставят пометку. Т.е. в таком случае я не смогу корректно в ПередЗаписью банковского счета (не важно в подписке или в модуле объекта) определить является ли счет основным или нет у кого-либо.
3 Rounder
 
11.09.12
13:30
Единственное событие ДинамическогоСписка реагирующее на установку пометки удаления - ПриИзменении(), но оно срабатывает уже по факту установки пометки удаления, однако тут я могу либо принудительно снять "Основной" со счета, либо принудительно снять пометку удаления со счета. Но хотелось бы не допустить ее установки.
4 Rounder
 
11.09.12
13:49
Может есть другие варианты?
5 Asmody
 
11.09.12
13:55
(2) БанковскиеСчета немножко подчиненный справочник, не?
6 Rounder
 
11.09.12
13:59
(5) и?
7 Rounder
 
11.09.12
14:00
(5) как это помогает решить мою проблему? Не допустить установки пометки на удаление на банковский счет, если он помечен в форме контрагента как "Основной", но при этом контрагент еще не записан?
8 Asmody
 
11.09.12
14:01
(6) как он может существовать без объекта-владельца?
9 Asmody
 
11.09.12
14:02
Если БанковскийСчёт=БанковскийСчёт.Владелец.ОсновнойБанковскийСчет Тогда
   Сообщить("Пошёл нафиг");
КонецЕсли;
10 Rounder
 
11.09.12
14:07
(9) А кто сказал что он существует без владельца?
Поясняю еще раз:
Открыли форму контрагента. Перешли на закладку банковские счета - видим все счета сего контрагента: счет1, счет2 и счет3.  Счет2 является основным. Пользователь поставил указатель на счет1 и нажал кнопку "Сделать основным". Объект.ОсновнойБанковскийСчет стал равным счет1. Но Объект мы еще не записывали. Т.е. Объект.Ссылка.ОсновнойБанковскийСчет по прежнему равен счет2.
И теперь пользователь решил счет1 еще и пометить на удаление. Как ему не дать это сделать?
11 Rounder
 
11.09.12
14:08
Стоп. Походу туплю.
Сча посмотрю.
12 Defender aka LINN
 
11.09.12
14:14
(10) Бить по рукам и прочим выступающим частям тела.
13 Rounder
 
11.09.12
14:16
(12) Ну понятно что бить - но лучше не допустить, чем допустить, а потом бить.
Как не допустить в принципе понятно - но не хочется лишних дерганий сервера.
14 Rounder
 
11.09.12
14:18
(9) все-таки не туплю. (9) не отработает ситуацию описанную в (11)
15 FIXXXL
 
11.09.12
14:23
Объект.Ссылка.ОсновнойБанковскийСчет по прежнему равен счет2

а Объект.ОсновнойБанковскийСчет чему равен?
16 Rounder
 
11.09.12
14:25
(15) счет1
Только речь идет об объекте в форме элемента справочника контрагент. Пока еще не записанного.
17 Defender aka LINN
 
11.09.12
15:09
(13) Если делать программу, которой может пользоваться даже дурак - то только дурак ей воспользоваться и сможет.
Ну пометят на удаление счет, и что? Камни посыпятся с неба и трубный глас возвестит Арамегеддон?
18 olegves
 
11.09.12
15:26
(16) проверяй при попытке удалить счет форму на модифицированность и посылай нах, если модифицирована.
19 zladenuw
 
11.09.12
15:30
(18) ага взяли в наименование просто пробел убрали и все.
20 zladenuw
 
11.09.12
15:31
у нас же объект измен. то если сделать запрос к бд. то мы получим ссылку без изменения или нет ?
21 Rovan
 
гуру
11.09.12
15:35
(10) " Но Объект мы еще не записывали..."
Если не записывали, значит пользователь РАБОТАЕТ с данными....т.е. думает то ли записать новые данные в базу, то ли нет.... - так что ориентироваться на это дело не кошерно !
22 zladenuw
 
11.09.12
15:37
ну тогда хранить где то в переменной значение до модифицирование и проверять счет. если не совпадает отказ и лесом. если нет даем добро
23 SUA
 
11.09.12
16:12
да, есть еще один классический вариант

"Вы не хотели бы этого делать"
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн