Имя: Пароль:
1C
1С v8
Как убрать это сообщение "Редактирование данных этого периода запрещено."
0 mvgfirst
 
10.02.12
01:32
Написал обработчик события "ПередЗаписью" для документа.
Подписался на одноименное событие в документа РеализацияТоваровУслуг. В процессе обработки события устанавливаю Отказ = Истина.
В результате получаю сообщение "Редактирование данных этого периода запрещено. Изменения не могут быть записаны..."

Предположительно возникает из-за того что мой обработчик этого события срабатывает раньше чем обработчик проверяющий дату запрета. В итоге принимая на вход "Отказ = Истина" тот обработчик считает что сработала проверка по дате запрета.

Теперь вот вопрос - как это убрать?! Я знаю что влиять на порядок срабатывания обработчиков "практически невозможно" (тем более что фирма 1С этого и не рекомендует).
Но и вводить пользователя в заблуждение я тоже не хочу!

Помогите обойти этот "глюк"
1 Господин ПЖ
 
10.02.12
02:01
>Я знаю что влиять на порядок срабатывания обработчиков "практически невозможно"

не обработчиков а подписок
2 mvgfirst
 
10.02.12
02:49
(1) Убедил. Если я изменю текст своего вопроса - проблема в нем озвученная исчезнет сама собой?
3 ZanderZ
 
10.02.12
05:51
сделай свой обработчик "ПриЗаписи"
4 Восточный Парень
 
10.02.12
05:52
А если посмотреть что там на подписку повешано и привести в порядок процедуру?
5 mvgfirst
 
10.02.12
06:14
(3) А зачем? Как это решает проблему? Тем более в обработчике ПриЗаписи - запись уже происходит. Мне же этого не нужно. Мне нужно проверить (если документ проводят) и не проверять если просто записывают.
6 Explorer1c
 
10.02.12
06:18
(0)Сожги монитор
7 mvgfirst
 
10.02.12
06:19
(4) Это типовая конфигурация "УТП для Украины". Там таких "Обработчиков" 4 штуки не считая моего. И ни в одном из них нет анализа какое значение параметра приходит на вход обработчика. Т.е. если ранее какой-то из обработчиков уже сработал (как например мой) - все равно выполняется проверка, хоть смысла уже особо нет, и это понятно уже на входе в процедуру.

И кстати, одна из причин почему я написал обработчик используя механизм Подписок - это невмешательство в конфигурацию на поддержке. Или, скажем так, вмешательство с минимальными последствиями для будущих обновлений.

Поэтому я считаю, что лезть и править чужой обработчик - это как минимум неэтично, а как максимум нарушает принципы инкапсуляции :)))

Хотя если общественность не подскажет иного более безопасного способа видимо придется так и поступить
8 mvgfirst
 
10.02.12
06:19
(6) Ты уже нашел друзей в Астане? Если нет... то с такими шуточками точно не найдешь ;)
9 ZanderZ
 
10.02.12
06:21
(5) в обработчике "ПриЗаписи" так же можно отказаться от записи.
и обработчики и подписки призаписи отрабатывают после передзаписью
10 mvgfirst
 
10.02.12
06:22
(5) поправочка.... под фразой " Тем более в обработчике ПриЗаписи - запись уже происходит" имелось ввиду " Тем более обработчик ПриЗаписи срабатывает после записи... т.е. запись уже произведена"
11 mvgfirst
 
10.02.12
06:23
(9) Как в "ПриЗаписи" я буду различать "Проведение" от "Записи"?
12 mvgfirst
 
10.02.12
06:24
(9) Т.е. это как-то в Подписке "ПередЗаписью" в документе сохраняем флаг "Не сохранять"... а потом уже подпиской на "ПриЗаписи" выводим сообщение, и отказываемся от записи?
13 mvgfirst
 
10.02.12
06:26
Кстати до меня только что дошло, что я в своем то обработчике тоже не проверяю значение параметра Отказ перед выполнением проверок заполнения.
Полез исправляться.
14 shuhard
 
10.02.12
08:03
(0) ключница УТП писала, в УПП всё О'К
Процедура ПередЗаписьюДокументаПроверкаДоступностиПериода(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
   
   Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
       Возврат;
   КонецЕсли;
   
   ПроверкаПериодаДокумента(Источник, Отказ, РежимЗаписи);
   #Если НЕ ВнешнееСоединение Тогда
       Если Отказ Тогда
           Сообщить("Редактирование данных этого периода запрещено. Изменения не могут быть записаны...", СтатусСообщения.Важное);
       КонецЕсли;
   #КонецЕсли
КонецПроцедуры    // ПередЗаписьюДокументовПроверкаДоступностиПериода
15 mvgfirst
 
10.02.12
12:01
(14) И не говори, вот сиди и думай потом...
Реально в у меня в УТП 1.2.6.1 такого нет.... а ведь должно быть.
16 shuhard
 
10.02.12
12:30
(15) а чё тут думать,
нужно впендюрить в типовую код, написать в хотлайн и не забыть при обновлении
17 mvgfirst
 
10.02.12
13:02
(16) я не могу писать в хотлайн... я не благлословлен Нуралиевым на такие деяния.
Впиндюрить то я впиндюрю... но было бы здоров если кто-то из Благословленных написал ;)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс