Мерцание строки в форме списка 8.2

1. user1089020 19.02.21 08:36 Сейчас в теме
Добрый день, монстры 1С!

Конфигурация: УПП 1.3

Есть задача, выводить в форме списка некие строки с информацией. Изюминка в том, что люди не сидят за компом (т.е. находятся рядом и смотрят на монитор изредка), но при этом они должны эту информацию сразу заметить и должным образом отреагировать.

Чтобы не издеваться над людьми, я думаю сделать пару вещей: выделение новой строки мерцанием и звуковое оповещение через звуковую карту. Далее человек замечает информацию, нажимает кнопку, звук/мерцание прекращаются.

Собственно у меня вопрос: возможно ли в 8.2 (обычные формы) это реализовать каким-то стандартным способом? Скажу вслух "Спасибо!" каждому ))
Найденные решения
3. SlavaKron 19.02.21 10:37 Сейчас в теме
Пример мигания новых элементов в списке справочника. Модуль формы списка:
Перем ПоследнийКод;
Перем МассивНовыхЭлементов;

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

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

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

Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    НайденнаяСтрока = МассивНовыхЭлементов.Найти(ВыбраннаяСтрока);
    
    Если НайденнаяСтрока <> Неопределено Тогда
        СтандартнаяОбработка = Ложь;
        МассивНовыхЭлементов.Удалить(НайденнаяСтрока);
    КонецЕсли;
КонецПроцедуры

ПоследнийКод = "";
МассивНовыхЭлементов = Новый Массив;
Показать
Прикрепленные файлы:
СписокОФ.epf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. SlavaKron 19.02.21 10:37 Сейчас в теме
Пример мигания новых элементов в списке справочника. Модуль формы списка:
Перем ПоследнийКод;
Перем МассивНовыхЭлементов;

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

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

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

Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    НайденнаяСтрока = МассивНовыхЭлементов.Найти(ВыбраннаяСтрока);
    
    Если НайденнаяСтрока <> Неопределено Тогда
        СтандартнаяОбработка = Ложь;
        МассивНовыхЭлементов.Удалить(НайденнаяСтрока);
    КонецЕсли;
КонецПроцедуры

ПоследнийКод = "";
МассивНовыхЭлементов = Новый Массив;
Показать
Прикрепленные файлы:
СписокОФ.epf
4. user1089020 19.02.21 14:14 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот