Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не работает система оповещения
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kanibal23
может кто то скажет почему так происходит

Даю кода

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


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


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

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



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

уберите в проверке на клиенте НЕ - посмотрите как работает
kanibal23
sava1 @ Сегодня, 15:26 необходимо зарегистрироваться для просмотра ссылки ,
по идеи код должин был таким

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


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


если НЕ убрать постоянно спамит пустое сообщение
Vidocq05
Цитата(kanibal23 @ 30.05.18, 16:02) необходимо зарегистрироваться для просмотра ссылки
Вот только заковырка если так написать то ошибка в ВЫБРАТЬ

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

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

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

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

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

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

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

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


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

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

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

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


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


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

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

конечна интересная тема но ставить для мой базы не вижу смысла и самому интересно довести что то до ума
Установка системы взаимодействия
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.