Вывод сообщения определенному пользователю

1. maksimkonkov 01.04.13 13:52 Сейчас в теме
Задача такая: при проведении документа "Реализация товаров и услуг (т.е. когда документ проводит какой угодно пользователь) нужно выводить сообщение о его проведении одному конкретному пользователю.
Речь идет о УТ 10.3.

Я создал регистр сведений: ПроведениеДокументов
с двумя измерениями Пользователь - тип строка, Документ - расходная накладная

В модуле обычного приложения написал:
Процедура ПередНачаломРаботыСистемы(Отказ)
Если НРег(ИмяПользователя()) = "Иванов" Тогда
ПодключитьОбработчикОжидания("ПроверкаСообщений",10);
КонецЕсли;
КонецПроцедуры

Процедура ПроверкаСообщений() Экспорт
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(НРег(ИмяПользователя()));
Набор.Прочитать();
Для каждого Стр Из Набор Цикл
Сообщить("Проведен документ: "+Стр.Документ);
КонецЦикла;
Набор.Очистить();
Набор.Записать();
КонецПроцедуры

////////////////////////////////
в обработке проведения накладной (можно так же через подписку)

Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить("я");
Набор.Отбор.Документ.Установить(Ссылка);
Стр = Набор.Добавить();
Стр.Пользователь = "Иванов";
Стр.Документ = Ссылка;
Набор.Записать();

//////////////////////////////////


Только вот какую ошибку выдает:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(5430)}: Ошибка при вызове метода контекста (Записать)

по причине:
Запись не верна! Значение поля не соответствует установленному отбору: ПроведениеДокументов: Иванов, Реализация товаров и услуг ЦСК00000928 от 18.02.2013 9:02:15 (Регистр сведений: Проведение документов; Поле: Пользователь)

Никак не могу понять в чем дело...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ягг 497 01.04.13 14:19 Сейчас в теме
(1) maksimkonkov, вот эти две строки не смущают:

Набор.Отбор.Пользователь.Установить("я");
...
Стр.Пользователь = "Иванов";

?
11. tango 546 01.04.13 14:44 Сейчас в теме
(1) maksimkonkov, посмотрите, как в типовых пишется инфа для планов обмена
3. AlexInqMetal 78 01.04.13 14:23 Сейчас в теме
у вас тут целая куча ошибок, при проведении отбор делаете по полю "я" а добавляете строку "Иванов". И еще почитайте в синтаксис-помощнике для чего используется функция нРег() перед тем как ее использовать.
4. maksimkonkov 01.04.13 14:23 Сейчас в теме
В общем, если и там и там стоит "Иванов", тогда сообщение выводится только когда сам Иванов проводит документ...
5. AlexInqMetal 78 01.04.13 14:27 Сейчас в теме
это реальный рабочий код или подправленный для инфостарта?
6. maksimkonkov 01.04.13 14:34 Сейчас в теме
7. cool.vlad4 2 01.04.13 14:37 Сейчас в теме
раз уж вы все равно конфу курочите, проще было повесить на подписку события при проведении, - создание задачи с оповещением данному пользователю. ну и вы должны определить, когда сообщения должны происходить, при каждом проведении, при программном проведении в том числе и т.п. короче все варианты рассмотреть
8. AlexInqMetal 78 01.04.13 14:41 Сейчас в теме
уберите нрег при проверке сообщений и отборы при проведении документа, кое как должно бы заработать.
9. cool.vlad4 2 01.04.13 14:41 Сейчас в теме
ну и что будет происходить, если пользователь провел надцать раз документ в короткий промежуток времени? понравится ли это пользователю Иванову (или кто там)? подозреваю, что он просто не будет в конечном счете на эти сообщения обращать внимание.
10. maksimkonkov 01.04.13 14:43 Сейчас в теме
Так вроде я и так подписку на событие сделал. ПодключитьОбработчикОжидания("ПроверкаСообщений",10);
да и разобрался я...))) Просто условие отбора чуть не правильно были сформулированы...

Спасибо, тема закрыта!
12. cool.vlad4 2 01.04.13 14:45 Сейчас в теме
Процедура ПередНачаломРаботыСистемы(Отказ) 
Если НРег(ИмяПользователя()) = "Иванов" Тогда //Нрег - перевод в нижний регистр, код не пашет. Также что //будет если пользователь не Иванов, а Петров или Сидоров впоследствии?
ПодключитьОбработчикОжидания("ПроверкаСообщений",10); // мало типовой системе этих обработок, 
КонецЕсли; 
КонецПроцедуры 

Процедура ПроверкаСообщений() Экспорт  // каждые 10 секунд, особенно учитывая, что в этот регистр другие //пользователи пишут, круто
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей(); 
Набор.Отбор.Пользователь.Установить(НРег(ИмяПользователя())); 
Набор.Прочитать(); 
Для каждого Стр Из Набор Цикл 
Сообщить("Проведен документ: "+Стр.Документ); 
КонецЦикла; 
Набор.Очистить(); 
Набор.Записать(); 
КонецПроцедуры 

//////////////////////////////// 
в обработке проведения накладной (можно так же через подписку) 

Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей(); 
Набор.Отбор.Пользователь.Установить("я"); // я? это что?
Набор.Отбор.Документ.Установить(Ссылка); 
Стр = Набор.Добавить(); 
Стр.Пользователь = "Иванов";//а это что? 
Стр.Документ = Ссылка; 
Набор.Записать(); 

////////////////////////////////// 
Показать
13. СергейКа 670 01.04.13 15:10 Сейчас в теме
Спасибо, поржал.
(0) Вы случаем, не опубликуете свои разработки на сайте? Сегодня самое время.
14. maksimkonkov 01.04.13 16:03 Сейчас в теме
Наверное, это был последний раз, когда я что-либо спрашивал на форуме... зачастую все темы на форумах сводятся к одному - сначала доказать тому, кто создал тему, что он идиот, потом поржать над ним, далее ничего дельного не предложить, а потом снова попытаться втоптать в грязь... может это и плюс с точки зрения повышения мотивации самому решать свои проблемы... и лишь несколько человек могут подсказать куда копать и подсказать ошибки...
15. СергейКа 670 01.04.13 16:40 Сейчас в теме
(14) Прошу не обижаться.
Во первых вы задали вопрос в лайф, раздел по сути который не предполагает серьезного общения.
Во вторых, еще и день такой выбрали :)
По серьезному, советовал бы пройти нормальные курсы. Ошибка не в коде, а в самом принципе данного кода. Это уже теория.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот