Имя: Пароль:
1C
1С v8
Выдать сообщение в модуле регистра накопления при отмене записи.
,
0 Snikers_OLD
 
25.12.13
04:38
Доброго времени.

УПП , MSSQL

Необходимо проверять записи регистра на определенное условие и в случае невыполнения  Отказ = Истина, а также Выдавать сообщение о причине отказа.

Столкнулся с проблемой - сообщение выводится только если Отказ не равен ИСТИНА, т.е. если отказ = истина сообщения не выводятся, хотя в отладчике строки с сообщениями проходит.

На регистрах сведений и бухгалтерии все прокатывает.
1 Wobland
 
25.12.13
05:44
какая интересная особенность одного из видов регистров
2 kosts
 
25.12.13
06:19
(0) Хотя бы код выложил для затравки...
3 Snikers_OLD
 
25.12.13
13:17
Процедура _РегистрыНакопленияПередЗаписьюПриЗаписи(Источник, Отказ, Замещение) Экспорт
    Если Отказ Тогда
        Возврат;
    КонецЕсли;
    Если ТипЗнч(Источник) = Тип("РегистрНакопленияНаборЗаписей.ЗатратыБухгалтерскийУчет") или
         ТипЗнч(Источник) = Тип("РегистрНакопленияНаборЗаписей.НезавершенноеПроизводствоБухгалтерскийУчет")Тогда
        
         #Если НЕ ВнешнееСоединение Тогда

         тзДвижений = Источник.Выгрузить();
         мПодразделений_НеМВЗ = ПроверитьПодразделениеНа_Условие(тзДвижений,Отказ);
         Если Отказ Тогда
             Для каждого Подразделение Из мПодразделений_НеМВЗ Цикл
                
                 Сообщить("Подразделение затрат "+СокрЛП(Подразделение)+" не относится к МВЗ.", СтатусСообщения.Важное);
             КонецЦикла;
            
         КонецЕсли;
         #КонецЕсли

    КонецЕсли;

КонецПроцедуры


Просто мне кажется это малр
4 Snikers_OLD
 
25.12.13
13:17
Просто мне кажется это мало что даст.
5 dj_serega
 
25.12.13
13:19
(4) Попробуй через "Новый СообщениеПользователю".
6 ale-sarin
 
25.12.13
13:20
Уже сначала это стоит. Дальше то не пойдет.
    Если Отказ Тогда
        Возврат;
    КонецЕсли;
7 1Сергей
 
25.12.13
13:22
Надо не сообщить, а ВызватьИсключение
8 ale-sarin
 
25.12.13
13:24
+6 туплю
9 Галахад
 
гуру
25.12.13
13:29
(8) Почему?
10 ale-sarin
 
25.12.13
13:34
(9) Если сначала отказ ложь, то ниже истиной может стать.
11 Галахад
 
гуру
25.12.13
13:37
(10) Да нету же ниже отказов. Или это не ве
12 Галахад
 
гуру
25.12.13
13:37
сь код?
13 Defender aka LINN
 
25.12.13
13:39
В мПодразделений_НеМВЗ пусто, че тут думать?
14 ale-sarin
 
25.12.13
13:46
(11) Тут может поменяться
мПодразделений_НеМВЗ = ПроверитьПодразделениеНа_Условие(тзДвижений,Отказ);
15 ale-sarin
 
25.12.13
13:48
+14 Видимо там отказ в истину ставится, а мПодразделений_НеМВЗ  пустой, как (13) говорит.
16 Snikers_OLD
 
25.12.13
15:28
(15)(14) не внимательно читали первый пост. Я отладчиком прохожу. Все строки проходит. Так вот если отказ(искуственно) поставить в ложь то сообщения вываливаются, а если отказ = истина вываливается только ошибка что не могу записать.
17 Kvestin
 
25.12.13
15:34
(0), (7) все верно написал. Используйте ВызватьИсключение.
18 Snikers_OLD
 
25.12.13
17:22
(17) использовал тоже самое
19 Snikers_OLD
 
25.12.13
17:24
Точнее ошибку можно посмотреть в диалоге ошибки (по кнопке подробнее), а хотелось бы, чтоб внизу.
20 Kvestin
 
25.12.13
17:28
(19) С Сообщить() на стороне сервера сплошные костыли стали начиная с какой-то версии 8.2.
Долго копал в свое время и нашел рекомендацию 1С по поводу ВызватьИсключение.
21 Snikers_OLD
 
25.12.13
18:34
(20) Спасибо.

Но мне это не подходит, даже не знаю теперь что делать. Думал простенько замутить проверку, чтоб во всех документах не лопатить, буду через косвенные регистры бухгалтерии наверно делать.
22 dj_serega
 
25.12.13
18:35
(21) А вместо "Сообщить()" пробовал "СообщениеПользователю"?
23 Snikers_OLD
 
25.12.13
22:29
(22) Разве "СообщениеПользователю" это не управляемые формы?
24 dj_serega
 
25.12.13
22:36
(23) Где-то с год назад на ОП использовал. Правда только свойство "текст".
25 dj_serega
 
25.12.13
22:37
(23) Ну и вырезка с СП:
"В управляемых формах, в случае выполнения просмотра сообщения, выполняется следующий механизм обработки: "
Скорее всего не писали бы первыые три слова, если бы было только для УП. Ну и примечания нет :) А вообще лучше проверить =)
26 Kvestin
 
26.12.13
09:01
(0) Проверил на (8.2.18.104) в режиме УФ и обычного приложения сообщение при записи регистра накопления выводится и в случае Отказ = Истина и Отказ = Ложь.
В случае отказа дополнительно выводится сообщение, что не удалось сделать запись в регистре.
Поэтому остается 2 варианта:
- глюк конкретного релиза
- проверяйте код
Я за 1 вариант.