Имя: Пароль:
1C
1С v8
Оповещение о задачах
0 diabol1k
 
20.06.16
16:13
Добрый день. Подскажите, можно ли как-то сделать, чтобы у начальника производства вместе с пересланной ему задачей или поручением вылезало оповещение о их приходе? Работа в crm модуле.
1 Волшебник
 
модератор
20.06.16
16:14
Разрешаю
2 aleks_default
 
20.06.16
16:16
(0) Сколько денех платишь?
3 xxTANATORxx
 
20.06.16
16:19
(0)как пытался сделать? что не получается?
4 diabol1k
 
20.06.16
16:20
(2) Вопрос конечно интересный. Сдам кровь - будет 300 рублей и шоколадка, пойдет?)
Я на прошу мне обработку писать, а подсказать направление, копаться в задачах все же или через бизнес-процессы надо тянуть, али  еще как?
5 polosov
 
20.06.16
16:21
МенеджерРС = РегистрыСведений.НапоминанияПользователя.СоздатьМенеджерЗаписи();
        МенеджерРС.Пользователь = ВыборкаДетальныеЗаписи.Пользователь;
        МенеджерРС.ВремяСобытия = ТекущаяДата();
        МенеджерРС.Источник = Источник;
        МенеджерРС.Описание = Строка(Источник);
        МенеджерРС.СпособУстановкиВремениНапоминания = Перечисления.СпособыУстановкиВремениНапоминания.ОтносительноТекущегоВремени;
        МенеджерРС.ИнтервалВремениНапоминания = 300;
        МенеджерРС.СрокНапоминания  =  ТекущаяДата() + 180;
        МенеджерРС.Записать();
6 diabol1k
 
20.06.16
16:22
(3) Проблема в том, что не могу понять, откуда именно вытянуть задачи его. Из регистра сведений, из безнесс-процесса.. А я,что-то растерялся от этой задачи немного
7 diabol1k
 
20.06.16
16:22
(5) О, спасибо, попробую отсюда и плясать!
8 aleks_default
 
20.06.16
16:23
(6) Попробуй ЗадачиПоИсполнителю
9 vde69
 
20.06.16
16:32
(7) самое главное продумай, что бы ему письмо падало только 1 раз, а то запустит кто перепроведение за год и почтовый сервак упадет :)
10 diabol1k
 
20.06.16
16:37
(8) (9) Тоже спасибо за советы. Огромное
11 aleks_default
 
20.06.16
16:39
(10) Задача вообще-то на час с перекурами. Даже если реализовывать с нуля. Но в CRM, возможно, есть уже готовый функционал, надо просто найти и включить.
12 FIXXXL
 
20.06.16
16:40
(10) изучи для начала типовые механизмы
в СРМ есть механизм напоминаний
может там просто надо галки нужные расставить, а ты уже велосипед собирать пытаешься
13 diabol1k
 
20.06.16
16:44
(12) Да итак все форму излазил и мануалы прочитал. Начальник требует именно допила с такой функцией, и чтоб еще мог целому профилю групп доступа рассылать напоминание, типа "Слесари, общий сбор!"
14 FIXXXL
 
20.06.16
16:55
(13) поищи глобальным поиском и поиском по дереву метаданных что-то типа "Напомин"
15 diabol1k
 
23.06.16
13:30
Спасибо все огромное, кто подсказывал вчера! Но теперь встала другая проблема: если создавать поручения, задачи, бизнес - процессы - все оповещения появляются, а сами задачи приходят нормально и сохраняются в календаре. Но если нажав пкм в календаре создать "телефонный звонок", "личная встреча", "прочее", и в них указать участников - то им уже оповещения не приходят. Откуда можно вытянуть эти данные? Если я правильно понял, то точно не из "ЗадачИсполнителя"
16 FIXXXL
 
23.06.16
13:40
(15) ну по логике: ты ставишь СЕБЕ напоминание "позвонить Васе"
Васе то зачем по сути знать о твоем намерении позвонить ему или встретиться с ним?
тебе надо СООБЩИТЬ Васе о своем намерении встречи, и вот уже это событие идет в напоминания Васе
17 diabol1k
 
23.06.16
13:44
(16) Ну по логике вещей - да. Напоминалка себе, а участники - просто извещены, что я их собираю на совещание в 5 часов. Но вопрос-то остается: как оповестить Васю о том, что у него совещание в 5, если он не смотрит в календарь?
18 diabol1k
 
23.06.16
13:57
Никто не подскажет, да?
19 FIXXXL
 
23.06.16
14:01
(17) событие добавления встречи в Васин календарь есть? к нему напоминание можно сделать?
20 diabol1k
 
23.06.16
14:12
(19) Событие отображается и в календаре у Васи и в списке событий. К нему можно сделать какое-то стандартное "напоминание", но оно не напоминает в указанное время. А к нему я и хочу как-то сделать напоминание, чтобы у Васи снизу экрана появилось "у вас новое событие"
21 Зая Бусечка
 
23.06.16
14:13
(20) а в чём проблема? Подключить обработчик ожидания и в нём проверять...
22 diabol1k
 
23.06.16
14:16
(21) Проверять что, в этом у меня и был вопрос! Для оповещения пользователя о задачах я прогонял "ЗадачаИсполнителяЗадачиПоИсполнителю". Тут откуда черпать информацию, я этого не понимаю(
23 diabol1k
 
23.06.16
14:37
Господа и дамы, не на что уже надеяться новичку?
24 aleks_default
 
23.06.16
14:49
(23)Ну уж точно не на то что кто-то подскажет верный ответ на форуме. Ищи сам, копай. А то так и останешься "новичком".
Телефонный звонок, Личная встреча - это я так понимаю документы(CRM нет у меня). Вот оттуда и бери, наверное.
25 diabol1k
 
23.06.16
15:06
(24) Ну не знаю, вчера направление подсказали - помогло, да и сам дописал потом, разобрался. Но и за совет спасибо
26 FIXXXL
 
23.06.16
15:33
(24) там в документе Событие есть вроде бы ТЧ СписокЗаинтересованных или что-то в этом роде, где участники лежат
по идее должен быть в конфе механизм их оповещения
27 diabol1k
 
24.06.16
09:51
И вот, начальнику не понравилась идея об автоматическом открытии задач. Что я тут делаю не так :

РезультатМассив = Новый Массив;
    Пока Выборка.Следующий() Цикл
        Попытка
            Объект = Выборка.Ссылка.ПолучитьОбъект();
            Объект.ПринятаКИсполнению = Истина;
            Объект.Записать();
        Исключение
            Продолжить;    
        КонецПопытки;

По идеи же, тут должно всплывать напоминание пока задача не будет принята к исполнению? Я правильно понял же?
28 aleks_default
 
24.06.16
10:15
(27) В этом куске кода никаких напоминаний нет.
29 vde69
 
24.06.16
10:15
(27) я знаю как правильно делать, но Вам не понравится...

должно быть отдельное постоянно открытое окно "Задачи мне" (возможно на отдельной вкладке) где динамический список всех текущих задач конкретного исполнителя, но проблема в том, что при более чем 10 (в идеале не более 6) открытых задачах человек перестает этим пользоваться, то есть нужно разработать фильтры и методики которые не дадут навешивать много задач на одного человека... У нас в компании мне это удалось, а вот как к этому подойти у Вас - это вопрос Вашей специфики....
30 diabol1k
 
24.06.16
10:22
(29) Самое забавное то, что есть такая вкладка, с реализованной фильтрацией по статусу задчи. Но вот хочется народу,чтоб раз в час еще и окошко всплывало
31 diabol1k
 
24.06.16
10:24
(28) Это в общем модуле

&НаСервере
Функция ПолучитьСписокоповещений() Экспорт
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗадачаИсполнителяЗадачиПоИсполнителю.Ссылка,
                   |    ЗадачаИсполнителяЗадачиПоИсполнителю.Автор
                   |ИЗ
                   |    Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю КАК ЗадачаИсполнителяЗадачиПоИсполнителю
                   |ГДЕ
                   |    НЕ ЗадачаИсполнителяЗадачиПоИсполнителю.Выполнена
                   |    И НЕ ЗадачаИсполнителяЗадачиПоИсполнителю.ПометкаУдаления
                   |    И НЕ ЗадачаИсполнителяЗадачиПоИсполнителю.ПринятаКИсполнению
                   |    И ЗадачаИсполнителяЗадачиПоИсполнителю.СостояниеБизнесПроцесса <> ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Остановлен)
                   |    И ЗадачаИсполнителяЗадачиПоИсполнителю.Исполнитель = &Исполнитель";
    
    Запрос.УстановитьПараметр("Исполнитель", ПараметрыСеанса.ТекущийПользователь);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
        
    РезультатМассив = Новый Массив;
    Пока Выборка.Следующий() Цикл
        Попытка
            Объект = Выборка.Ссылка.ПолучитьОбъект();
            Объект.ПринятаКИсполнению = Истина;
            Объект.Записать();
        Исключение
            Продолжить;    
        КонецПопытки;
    
            
        СтруктураСтрока = Новый Структура;
        
        СтруктураСтрока.Вставить("Ссылка", Выборка.Ссылка);
        СтруктураСтрока.Вставить("Автор", Выборка.Автор);
        
        РезультатМассив.Добавить(СтруктураСтрока);
    КонецЦикла;
        
    Возврат РезультатМассив;
КонецФункции


А в модуле управляемого приложения

Процедура ОповещениеВкладыш() Экспорт
    СписокОповещений = Оповещалка.ПолучитьСписокоповещений();    
    Для Каждого Стр Из СписокОповещений Цикл
        Если ЗначениеЗаполнено(Стр.Ссылка) Тогда
            НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Стр.Ссылка);
            ПоказатьОповещениеПользователя(Стр.Автор, НавигационнаяСсылка, Стр.Ссылка, БиблиотекаКартинок.ВыполнитьЗадачу);
        Иначе
            ПоказатьОповещениеПользователя(Стр.Автор, , , БиблиотекаКартинок.ВыполнитьЗадачу);    
        КонецЕсли;
        
    КонецЦикла;
    КонецПроцедуры
32 aleks_default
 
24.06.16
10:24
ищи в глобальным поискомПоказатьОповещениеПользователя(), разбирайся как оно работает
33 aleks_default
 
24.06.16
10:30
(31)Ну а как вызывается процедура ОповещениеВкладыш()?
Где-то должен запускаться обработчик ожидания, который с определенной периодичностью выполняет эту процедуру.
34 vde69
 
24.06.16
10:30
(30) так сделай, что бы при появлении новой задачи эта вкладка активизировалась...
35 diabol1k
 
24.06.16
10:32
(33) ага, есть
//
ПодключитьОбработчикОжидания("ОповещениеВкладыш", 10);

Это я сделал
36 diabol1k
 
24.06.16
10:32
(34) при новой итак появляется
37 aleks_default
 
24.06.16
10:33
У меня это в ПриНачалеРаботыСистемы сделано.
38 vde69
 
24.06.16
10:34
(30) они хотят это по тому, что они могут работать в обход задач, убери весь остальной интерфейс и они будут ждать новые задачи как манну небесную...

я понимаю, что психологически это сложно, но у меня привыкли и бух не печатает ТОРГ-12 пока на это нет отдельной задачи... Это своего рода WMS когда система сама говорит чего делать планктону и по-другому работать не позволяет...

я вот все хочу где-то внедрить по этому принципу управление офисом в целом...
39 aleks_default
 
24.06.16
10:35
Ну еще возможность отключения оповещение нужно сделать
40 diabol1k
 
24.06.16
10:55
(38) Да ну , мое дело - оповещалку, потом жесткие рамки пусть другие вводят.
(32) я вчера весь день просношался с поиском системы оповещений, но так и не нашел, увы.
41 FIXXXL
 
24.06.16
10:56
(39) и раскраску строк задач. с привязкой палитры к пользователю :)
42 FIXXXL
 
24.06.16
10:57
(40) в СРМ Рарус за это отвечает регистр сведений и рег.задание его опрашивающее по расписанию
т.е. добавил запись в РС, дальше оно само

посмотри в своей, может так же реализовано
43 aleks_default
 
24.06.16
11:00
(42) ПоказатьОповещениеПользователю() регламентным заданием не сделать. Это клиентская процедура.
44 vde69
 
24.06.16
11:01
(43) регламентным - нет, фоновым - да
45 aleks_default
 
24.06.16
11:03
(44) нет
46 vde69
 
24.06.16
11:11
(45)
СообщениеПользователю (UserMessage)
Свойства:

ИдентификаторНазначения (TargetID)
КлючДанных (DataKey)
Поле (Field)
ПутьКДанным (DataPath)
Текст (Text)

Методы:

Сообщить (Message)
УстановитьДанные (SetData)

Конструкторы:

По умолчанию

Описание:

Предназначен для хранения параметров сообщения, которые необходимо вывести пользователю.
Если сообщение еще не было показано пользователю (такое может быть при работе на стороне сервера, в фоновом задании, внешнем соединении или Web-сервисах), можно получить накопленные сообщения методом ПолучитьСообщенияПользователю.

В управляемых формах, в случае выполнения просмотра сообщения, выполняется следующий механизм обработки:
Если у сообщения свойство КлючДанных заполнено и не совпадает с ключевым значением основного реквизита текущей формы (ссылкой объекта или ключом записи регистра сведений), то:
открывается новая форма объекта, соответствующая значению свойства КлючДанных;
если у сообщения свойство ПутьКДанным не заполнено, то в него проставляется имя основного реквизита открытой формы объекта;
вызывается показ сообщения в только что открытой форме;
выполняется перенос всех соответствующих сообщений из окна первой формы в новую форму (с таким же значением свойств КлючДанных, как у выбранного сообщения). При этом перенесенным сообщениям аналогичным образом проставляется свойство ПутьКДанным, если оно не установлено.


Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

Процедура ДействиеСОбъектом(ОбъектДанных)
    ...
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = НСтр("ru = 'В строке 11 табличной части Номенклатура не хватает "
     + "; en = 'In line 11 of tabular section Nomenclature is missing' ")
     + НедостающееКоличество + " " + ЕдиницаИзмеренияНоменклатуры;
    Сообщение.Поле = "Номенклатура[10].Количество";
    Сообщение.УстановитьДанные(ОбъектДанных);
    Сообщение.Сообщить();

КонецПроцедуры;
47 vde69
 
24.06.16
11:12
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
    Если Задание = Неопределено Тогда
        Возврат Результат;
    КонецЕсли;
    
    МассивСообщений = Задание.ПолучитьСообщенияПользователю(Истина);
48 aleks_default
 
24.06.16
11:25
Речь о всплывающем (и пропадающем) окошке с оповещением, а не о СообщениеПользователю(). Оно не мешает работе пользователя.
Хотя что ТС надо я не знаю.
49 diabol1k
 
24.06.16
11:33
Да все, реализовал я напоминалку эту. Проблема того, что цикл не отрабатывал постоянно в том, что я кодом задал  Объект.ПринятаКИсполнению = Истина;
И туплю, почему приходит один раз. А вот новая веселуха в том, что напоминалка показывает только последнюю задачу, а не все доступные. Тяжело быть тугодумом(
50 diabol1k
 
24.06.16
11:50
Умные товарищи, как сделать вывод всех сообщений?(
51 aleks_default
 
24.06.16
12:00
(50) Потому что ты сначала отбираешь задачи не принятые к исполнению а потом проставляешь у них этот признак. Соответственно во второй раз, когда выполняешь запрос, задачи с проставленным в первом цикле признаком в запрос уже не попадают. Ну, думай давай, шевели шариками.