Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Звуковое оповещение о задачах пользователя 3 страниц V   1 2 3 >          
kosalex Подменю пользователя
сообщение 04.07.13, 8:59
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Добрый День. Мучаюсь с оповещением пользователя при появлении задачи. Написал общий модуль. При его вызове в модуле упр. приложения возникает ошибка.




 ! 

Правила, п.13
 


Общий модуль ОповещениеПользователей:

Процедура ЗадачаИсполнителяПриЗаписи(Источник, Отказ) ЭКСПОРТ
    Если НЕ Источник.Выполнена  Тогда
        
        ПользовательИБДляЗадачи = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Источник.Исполнитель.ИдентификаторПользователяИБ);
        ИспользоватьНапоминания = ХранилищеОбщихНастроек.Загрузить("НастройкиПрограммы", "ОповещатьОНовыхЗадачах",,Строка(ПользовательИБДляЗадачи));
        //
        Если ИспользоватьНапоминания = Истина Тогда
            
            НаборЗаписей = РегистрыСведений.ОповещениеПользователя.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.Пользователь.Установить(Источник.Исполнитель);
            
            СтрокаНабора                 = НаборЗаписей.Добавить();
            СтрокаНабора.Пользователь     = Источник.Исполнитель;
            
            НаборЗаписей.Записать();
            
        КонецЕсли;
        
    КонецЕсли;
КонецПроцедуры

Функция ЕстьНовыеЗадачи() Экспорт
    
    Возврат РегистрыСведений.ОповещениеПользователя.ЕстьЗадачиПоИсполнителю();        

КонецФункции // ЕстьНовыеЗадачи()


Процедура ОчиститьОповещенияОЗадачах () Экспорт

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

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


Функция ИспользоватьОповещениеОсновыхЗадачах() Экспорт

    Использование = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиПрограммы", "ОповещатьОНовыхЗадачах");
    Возврат ?(Использование = Неопределено, Ложь, Использование)

КонецФункции // ИспользоватьОповещениеОновыхЗадачах()


Функция ИнтервалОпросаОНовыхЗадачах() Экспорт

    Интервал = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиПрограммы", "ИнтервалОпросаОНовыхЗадачах");
    Возврат ?(Интервал = Неопределено, 0, Интервал)    

КонецФункции // ИнтервалОпросаОНовыхЗадачах()


Вызов функция и процедур из общего модуля в модуле управл. приложения:

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

&НаКлиенте
Процедура ПроверитьЗадачиПользователя() Экспорт
    Если ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда
        ПоказатьОповещениеПользователя(НСтр("ru = '1С Документооборот'; uk = '1С Документообіг'"),,
                                                                                НСТр("ru = 'У Вас появились новые задачи!!'; uk = 'У Вас з''явились нові задачі!!'"),
                                                                                БиблиотекаКартинок.Информация32);
        ОповещениеПользователей.ОчиститьОповещенияОЗадачах();
    КонецЕсли;
КонецПроцедуры // ПроверитьНапоминанияПользователя()


Ошибки:
{МодульУправляемогоПриложения(120,7)}: Переменная не определена (ОповещениеПользователей)
Если <<?>>ОповещениеПользователей.ИспользоватьОповещениеОсновыхЗадачах() Тогда (Проверка: Тонкий клиент)
{МодульУправляемогоПриложения(121,20)}: Переменная не определена (ОповещениеПользователей)
ИнтервалОпроса = <<?>>ОповещениеПользователей.ИнтервалОпросаОНовыхЗадачах(); (Проверка: Тонкий клиент)
{МодульУправляемогоПриложения(130,7)}: Переменная не определена (ОповещениеПользователей)
Если <<?>>ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда (Проверка: Тонкий клиент)
{МодульУправляемогоПриложения(132,3)}: Переменная не определена (ОповещениеПользователей)
<<?>>ОповещениеПользователей.ОчиститьОповещенияОЗадачах(); (Проверка: Тонкий клиент)


Почему переменная не определена? Я не понимаю....
В 1С не специалист, учусь!


 ! 

Правила, п.6
 


Сообщение отредактировал Vofka - 04.07.13, 13:59

logist Подменю пользователя
сообщение 04.07.13, 9:12
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(kosalex @ 04.07.13, 9:59) *
Почему переменная не определена?

Потому, что модуль, процедуры которого вызываете, не доступен с Клиента. Вам необходимо составить и разместить процедуры для модуля со свойством "Клиент"


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 04.07.13, 9:26
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(logist @ 04.07.13, 10:12) *
Потому, что модуль, процедуры которого вызываете, не доступен с Клиента. Вам необходимо составить и разместить процедуры для модуля со свойством "Клиент"



&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    ОповещениеПользователейНаСервере();    
КонецПроцедуры    


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

&НаКлиенте
Процедура ПроверитьЗадачиПользователя() Экспорт
    ПроверитьЗадачиПользователяНаСервере();
КонецПроцедуры // ПроверитьНапоминанияПользователя()  


&НаСервере
Процедура ПроверитьЗадачиПользователяНаСервере()
    
Если ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда
        ПоказатьОповещениеПользователя(НСтр("ru = '1С Документооборот'; uk = '1С Документообіг'"),, НСТр("ru = 'У Вас появились новые задачи!!'; uk = 'У Вас з''явились нові задачі!!'"),БиблиотекаКартинок.Информация32);
        ОповещениеПользователей.ОчиститьОповещенияОЗадачах();
    КонецЕсли;
    
    
КонецПроцедуры


Всё равно ошибки...можно пример?

logist Подменю пользователя
сообщение 04.07.13, 9:27
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

В свойствах модуля ОповещениеПользователей стоит флаг "Клиент"?

Сообщение отредактировал logist - 04.07.13, 9:28


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 04.07.13, 9:29
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

не стоял.
поставил - ошибка та же

logist Подменю пользователя
сообщение 04.07.13, 9:46
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(kosalex @ 04.07.13, 10:29) *
ошибка та же

Значит вы используете серверные методы в клиентских процедурах. Например код приведенный выше, если я правильно понимаю взят из Модуля управляемого приложения - процедуры &НаСервере работать в нем не будут.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 08.07.13, 10:23
Сообщение #7

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

ЗДРАВСТВУЙТЕ. Получилось написать это оповещение когда у пользователя появляются задачи.

Осталось только одно НО. Когда показывается сообщение "У Вас есть новые задачи" и проиграыется звук. То сообщение остаётся на экране, чрез 5 сек опять вылазит сообщение и проигрывается звук.
Подскажите как сделать чтобы сообщение вылазило только раз, а звук проигрывался каждые 5 сек,пока пользователь не закроет сообщение??

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


&НаКлиенте
Процедура ПроверитьЗадачиПользователя() Экспорт
        
    Если ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда
        Сигнал();
        Предупреждение("У Вас есть новые задачи!");
        
        ОповещениеПользователей.ОчиститьОповещенияОЗадачах();
        
    КонецЕсли;

КонецПроцедуры // ПроверитьНапоминанияПользователя()


logist Подменю пользователя
сообщение 08.07.13, 10:30
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(kosalex @ 08.07.13, 11:23) *
как сделать чтобы сообщение вылазило только раз, а звук проигрывался каждые 5 сек,пока пользователь не закроет сообщение??

Используйте для оповещения отдельную форму, а не Предупреждение. И "сигнальте" пока форма открыта.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 08.07.13, 10:51
Сообщение #9

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(logist @ 08.07.13, 11:30) *
Используйте для оповещения отдельную форму, а не Предупреждение. И "сигнальте" пока форма открыта.



Форма же будет вызываться каждые 5 секунд. ИнтревалОпроса = 5; Как быть?

logist Подменю пользователя
сообщение 08.07.13, 10:55
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Цитата(kosalex @ 08.07.13, 11:51) *
Форма же будет вызываться каждые 5 секунд. ИнтревалОпроса = 5; Как быть?

Проверяйте, если форма открыта, то не открывать повторно.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 08.07.13, 11:23
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

kosalex, вот, как похожее, в типовой реализовано:
// Процедура проверяет Задачи.
//
Процедура ПроверитьНапоминанияПользователя(ВыбПользователь) Экспорт
    
    Запрос = Новый Запрос;
    
    Запрос.Текст = "
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    *
        |ИЗ
        |    Задача.ЗадачиПользователя.ЗадачиПоИсполнителю(&ТекПользователь,
        |        Выполнена = ЛОЖЬ И Оповещение = ИСТИНА И СрокОповещения < &ДатаСреза)
        |";
        
    Запрос.УстановитьПараметр("ТекПользователь", ВыбПользователь);
    Запрос.УстановитьПараметр("ДатаСреза"      , ТекущаяДата());
    
    ФормаОповещения = глЗначениеПеременной("ФормаОповещенияОЗадачах");
    
    РезультатЗапроса = Запрос.Выполнить();
    Если НЕ РезультатЗапроса.Пустой() Тогда
        
        Если НЕ ФормаОповещенияЗадачОткрыта Тогда
            
            ФормаОповещения.Открыть();
            ФормаОповещенияЗадачОткрыта = Истина;
            
        КонецЕсли;
        
        ВыгрузкаДляСверки = РезультатЗапроса.Выгрузить();
        ФормаОповещения.АктивизироватьФорму(ВыгрузкаДляСверки);
        
    Иначе
        
        Если ФормаОповещения.Открыта() Тогда
            ФормаОповещения.Закрыть();
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры // ПроверитьНапоминанияПользователя()

kosalex Подменю пользователя
сообщение 09.07.13, 8:30
Сообщение #12

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Доброе утро.

Есть функция в общем модуле, которая должна вызываться из модуля управляемого приложения:
УПРАВЛ. ПРИЛОЖЕНИЕ:

&НаКлиенте 
Процедура ПроверитьЗадачиПользователя() Экспорт
    Если ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда
        Сигнал();
        Если НЕ ФормаОповещенияОткрыта Тогда
            ОткрытьФормуМодально("ОбщаяФорма.ОповещениеПользователяНовыеЗадачи");
            ОповещениеПользователей.ОчиститьОповещенияОЗадачах();
        КонецЕсли;
    КонецЕсли;
    
        

КонецПроцедуры // ПроверитьНапоминанияПользователя()


ОБЩИЙ МОДУЛЬ:

&НаСервере 
Функция ЕстьНовыеЗадачи() ЭКСПОРТ
    
    Возврат РегистрыСведений.ОповещениеПользователя.ЕстьЗадачиПоИсполнителю();        

КонецФункции // ЕстьНовыеЗадачи()



СВОЙСТВА ОБЩЕГО МОДУЛЯ(отмечены):
Сервер
Вызов сервера
Повторное использование возвращаемых значений = на время сеанса


Почему не вызывается функция с общего модуля
ЕстьНовыеЗадачи()



 ! 

Правила: 13
 


Если в общем модуле включить ещё и Клиент(управл.приложение), то возникает ошибка:
{МодульУправляемогоПриложения(134)}: Метод объекта не обнаружен (ЕстьНовыеЗадачи)
Если ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда

Сообщение отредактировал Vofka - 09.07.13, 8:51

Vofka Подменю пользователя
сообщение 09.07.13, 8:52
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

kosalex, ещё раз (последний) обращаю внимание на 13 пункт правил! И если вам 20 минут никто не ответил - не надо писать с залипшим капсом ПОМОГИТЕ.

kosalex Подменю пользователя
сообщение 09.07.13, 8:53
Сообщение #14

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Сори за п.13

А помощь нужна!

logist Подменю пользователя
сообщение 09.07.13, 9:03
Сообщение #15

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

kosalex,
Зачем Вы страдаете фигней? Открывайте форму на старте, а уже ПриСозданииНаСервере формы проверяйте выводить туда что-то или нет, если нет или форма открыта - делайте отказ открытия, там же очищайте, и все. Делайте все в этой форме, а из модуля упр.прил только вызывайте открытие этой формы.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 09.07.13, 9:14
Сообщение #16

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

В смысле фигнёй?
Мне нужно вызвать из управляемого приложения функцию из общего модуля. Она не вызывается. а должна же.

Если б вы привели пример,кодом...
Я не спец.

logist Подменю пользователя
сообщение 09.07.13, 9:30
Сообщение #17

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Давайте вашу конфигурацию.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 09.07.13, 9:40
Сообщение #18

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

[необходимо зарегистрироваться для просмотра ссылки]

пароль 1234567

logist Подменю пользователя
сообщение 09.07.13, 9:51
Сообщение #19

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

Работает все, или я не понял в чем проблема? Вы же это хотите увидеть:


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kosalex Подменю пользователя
сообщение 09.07.13, 9:54
Сообщение #20

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

да)но работает на файловом варианте без проблем!
не работает на серверном. выше писал.

 Если ОповещениеПользователей.ЕстьНовыеЗадачи() Тогда
вот здесь всё время ЛОЖЬ. Не хочет вызывать функцию
ЕстьНовыеЗадачи()
из общего модуля
ОповещениеПользователей



Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


3 страниц V   1 2 3 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 14.06.25, 23:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!