Задача такая: при проведении документа "Реализация товаров и услуг (т.е. когда документ проводит какой угодно пользователь) нужно выводить сообщение о его проведении одному конкретному пользователю.
Речь идет о УТ 10.3.
Я создал регистр сведений: ПроведениеДокументов
с двумя измерениями Пользователь - тип строка, Документ - расходная накладная
В модуле обычного приложения написал:
Процедура ПередНачаломРаботыСистемы(Отказ)
Если НРег(ИмяПользователя()) = "Иванов" Тогда
ПодключитьОбработчикОжидания("ПроверкаСообщений",10);
КонецЕсли;
КонецПроцедуры
Процедура ПроверкаСообщений() Экспорт
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(НРег(ИмяПользователя()));
Набор.Прочитать();
Для каждого Стр Из Набор Цикл
Сообщить("Проведен документ: "+Стр.Документ);
КонецЦикла;
Набор.Очистить();
Набор.Записать();
КонецПроцедуры
////////////////////////////////
в обработке проведения накладной (можно так же через подписку)
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить("я");
Набор.Отбор.Документ.Установить(Ссылка);
Стр = Набор.Добавить();
Стр.Пользователь = "Иванов";
Стр.Документ = Ссылка;
Набор.Записать();
//////////////////////////////////
Только вот какую ошибку выдает:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(5430)}: Ошибка при вызове метода контекста (Записать)
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: ПроведениеДокументов: Иванов, Реализация товаров и услуг ЦСК00000928 от 18.02.2013 9:02:15 (Регистр сведений: Проведение документов; Поле: Пользователь)
Никак не могу понять в чем дело...
Речь идет о УТ 10.3.
Я создал регистр сведений: ПроведениеДокументов
с двумя измерениями Пользователь - тип строка, Документ - расходная накладная
В модуле обычного приложения написал:
Процедура ПередНачаломРаботыСистемы(Отказ)
Если НРег(ИмяПользователя()) = "Иванов" Тогда
ПодключитьОбработчикОжидания("ПроверкаСообщений",10);
КонецЕсли;
КонецПроцедуры
Процедура ПроверкаСообщений() Экспорт
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(НРег(ИмяПользователя()));
Набор.Прочитать();
Для каждого Стр Из Набор Цикл
Сообщить("Проведен документ: "+Стр.Документ);
КонецЦикла;
Набор.Очистить();
Набор.Записать();
КонецПроцедуры
////////////////////////////////
в обработке проведения накладной (можно так же через подписку)
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить("я");
Набор.Отбор.Документ.Установить(Ссылка);
Стр = Набор.Добавить();
Стр.Пользователь = "Иванов";
Стр.Документ = Ссылка;
Набор.Записать();
//////////////////////////////////
Только вот какую ошибку выдает:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(5430)}: Ошибка при вызове метода контекста (Записать)
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: ПроведениеДокументов: Иванов, Реализация товаров и услуг ЦСК00000928 от 18.02.2013 9:02:15 (Регистр сведений: Проведение документов; Поле: Пользователь)
Никак не могу понять в чем дело...
По теме из базы знаний
- Вывод сообщений для пользователей при старте 1С 7.7 на определенную дату.
- Как выдать сообщение всем пользователям (для управляемого приложения)
- 1с8.2-8.3.Вывод на экран данных запроса с переданными Параметрами из Документа! 8 различных вариантов:от Сообщений, Таблицы и Отчетов до СКД без объекта-отчета
- Шаблоны сообщений пользователю - подсистема БСП
- Подписки на события для документов и справочников по пользователям и отбору для управляемых форм
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
раз уж вы все равно конфу курочите, проще было повесить на подписку события при проведении, - создание задачи с оповещением данному пользователю. ну и вы должны определить, когда сообщения должны происходить, при каждом проведении, при программном проведении в том числе и т.п. короче все варианты рассмотреть
ну и что будет происходить, если пользователь провел надцать раз документ в короткий промежуток времени? понравится ли это пользователю Иванову (или кто там)? подозреваю, что он просто не будет в конечном счете на эти сообщения обращать внимание.
Процедура ПередНачаломРаботыСистемы(Отказ)
Если НРег(ИмяПользователя()) = "Иванов" Тогда //Нрег - перевод в нижний регистр, код не пашет. Также что //будет если пользователь не Иванов, а Петров или Сидоров впоследствии?
ПодключитьОбработчикОжидания("ПроверкаСообщений",10); // мало типовой системе этих обработок,
КонецЕсли;
КонецПроцедуры
Процедура ПроверкаСообщений() Экспорт // каждые 10 секунд, особенно учитывая, что в этот регистр другие //пользователи пишут, круто
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить(НРег(ИмяПользователя()));
Набор.Прочитать();
Для каждого Стр Из Набор Цикл
Сообщить("Проведен документ: "+Стр.Документ);
КонецЦикла;
Набор.Очистить();
Набор.Записать();
КонецПроцедуры
////////////////////////////////
в обработке проведения накладной (можно так же через подписку)
Набор = РегистрыСведений.ПроведениеДокументов.СоздатьНаборЗаписей();
Набор.Отбор.Пользователь.Установить("я"); // я? это что?
Набор.Отбор.Документ.Установить(Ссылка);
Стр = Набор.Добавить();
Стр.Пользователь = "Иванов";//а это что?
Стр.Документ = Ссылка;
Набор.Записать();
//////////////////////////////////
Показать
Наверное, это был последний раз, когда я что-либо спрашивал на форуме... зачастую все темы на форумах сводятся к одному - сначала доказать тому, кто создал тему, что он идиот, потом поржать над ним, далее ничего дельного не предложить, а потом снова попытаться втоптать в грязь... может это и плюс с точки зрения повышения мотивации самому решать свои проблемы... и лишь несколько человек могут подсказать куда копать и подсказать ошибки...
(14) Прошу не обижаться.
Во первых вы задали вопрос в лайф, раздел по сути который не предполагает серьезного общения.
Во вторых, еще и день такой выбрали :)
По серьезному, советовал бы пройти нормальные курсы. Ошибка не в коде, а в самом принципе данного кода. Это уже теория.
Во первых вы задали вопрос в лайф, раздел по сути который не предполагает серьезного общения.
Во вторых, еще и день такой выбрали :)
По серьезному, советовал бы пройти нормальные курсы. Ошибка не в коде, а в самом принципе данного кода. Это уже теория.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот