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

Хранилище

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

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



> не работает система оповещения , система оповещения          
kanibal23 Подменю пользователя
сообщение 30.05.18, 14:19
Сообщение #1

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

может кто то скажет почему так происходит

Даю кода

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


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    
    ПодключитьОбработчикОжидания("ОбработатьОжидание",5,);


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

    Возврат ТекстСообщения;  
  
КонецФункции




sava1 Подменю пользователя
сообщение 30.05.18, 14:26
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

и как часто датаВремя сообщения совпадает с текущейДатой ?

уберите в проверке на клиенте НЕ - посмотрите как работает

kanibal23 Подменю пользователя
сообщение 30.05.18, 15:02
Сообщение #3

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

sava1 @ Сегодня, 15:26 * ,
по идеи код должин был таким

 |    СообщенияЧата.НачалоПериод <= &ТекущаяДата   
        |    И СообщенияЧата.КонецПериода >= &ТекущаяДата";


Вот только заковырка если так написать то ошибка в ВЫБРАТЬ


если НЕ убрать постоянно спамит пустое сообщение

Vidocq05 Подменю пользователя
сообщение 30.05.18, 18:03
Сообщение #4

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Цитата(kanibal23 @ 30.05.18, 16:02) *
Вот только заковырка если так написать то ошибка в ВЫБРАТЬ

Телепатирую. У регистре нету реквизитов "НачалоПериод" и "КонецПериода".

kanibal23 @ Сегодня, 15:19 * ,
В модуле управляемого приложения определяете переменную
Перем глПоследняяДатаВремяЧата Экспорт

Далее
&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
  
    глПоследняяДатаВремяЧата = ТекущаяДата();

    ПодключитьОбработчикОжидания("ОбработатьОжидание",5,);

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

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

    глПоследняяДатаВремяЧата = ТекущаяДата()+1;

    Возврат ТекстСообщения;  
  
КонецФункции


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

    глПоследняяДатаВремяЧата = ДатаОкончания + 1;

    Возврат ТекстСообщения;  
  
КонецФункции

kanibal23 Подменю пользователя
сообщение 31.05.18, 8:41
Сообщение #5

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

Vidocq05 @ Вчера, 19:03 * ,
Ну почти все руль только во так заработало
     Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    СообщенияЧата.Текст
                   |ИЗ
                   |    РегистрСведений.СообщенияЧата КАК СообщенияЧата
                   |ГДЕ
                   |    СообщенияЧата.ДатаВремя МЕЖДУ &ДатаНачала И &ДатаОкончания
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    СообщенияЧата.ДатаВремя УБЫВ
                   |АВТОУПОРЯДОЧИВАНИЕ";
                  
    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
    ДатаОкончания = КонецДня(ТекущаяДата());
    Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);    
    Выборка = Запрос.Выполнить().Выбрать();    
       ТекстСообщения = "";
    Если Выборка.Следующий() Тогда
        ТекстСообщения = Выборка.Текст;
    КонецЕсли;

     Возврат ТекстСообщения;


Только один нюанс как остановить спам (спамит последнюю запись)
я понимаю что отработку модуля можно поставить и дольше 5 секунд (я предполагал поставить 120) но все ровно нужно чтоб новое сообщение выдавало аа старое нет как тут лучше поступить

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

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Цитата(kanibal23 @ 31.05.18, 9:41) *
Только один нюанс как остановить спам (спамит последнюю запись)
я понимаю что отработку модуля можно поставить и дольше 5 секунд (я предполагал поставить 120) но все ровно нужно чтоб новое сообщение выдавало аа старое нет как тут лучше поступить


Теперь Вам нужно знать кто какое сообщение получил, следовательно в этот регистр должны попадать записи в разрезе каждого пользователя и когда он получает сообщение, то в регистре должна ставиться отметка что запись получена (или просто удаляться)
Идея чата в 1С это древняя идея, многие делали и по разному.
Самый простой вариант (ИМХО) это просто обработка с этим регистром сведений (автообновляемым).
Кто хочет, тот открыл обработку и всё видит, но это всё в прошлом.
1С же поняла необходимость в этом функционале внутри системы и поэтому реализовала это на глобальном уровне
Вы рассматривали в виде варианта решения чата в 1С систему взаимодействия?
[необходимо зарегистрироваться для просмотра ссылки]
[необходимо зарегистрироваться для просмотра ссылки]
Я лично не ставил ))) но если стоит такая задача. то может стоит развернуть и посмотреть как оно работает.


kanibal23 Подменю пользователя
сообщение 31.05.18, 11:29
Сообщение #7

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

Batchir @ Сегодня, 10:02 * ,
Проще сделал
Ужал временными рамками
Может конечно не верно сделал но работает и не флудит

конечна интересная тема но ставить для мой базы не вижу смысла и самому интересно довести что то до ума
Установка системы взаимодействия

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


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

 

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