Имя: Пароль:
1C
1С v8
Монитор готовности заказа - как оповестить пользователя?
,
0 triviumfan
 
23.04.18
14:16
Доброго дня, коллеги!
Конфигурация: Альфа-Авто 4.1
Платформа 8.2

Есть типичная задача по созданию монитора готовности заказа.
В него будут попадать все ЗН за последний час в статусе "закрыт".
Но есть один ньюанс, который нужно знать уже на проектировании - оповещение закрытого заказа!
Есть 2 вида оповещения - 2 минуты мигания или звуковое оповещение.

В голове есть 2 варианта реализации:
1) через табличный документ. Но тут прикол с миганием... нужно найти строку с новым заказом и выполнить "мигание" через цвет текста или фон текста ячейки. Но мне это не особо нравится, т.к. придётся в обработчике ожидания пробегать все строки табличного документа и устанавливать оформление;
2) через html-поле. Но тут не все так просто как кажется, тег <blink> давно не используется, получается, что мне нужно будет писать скрипт на JS... боюсь будут проблемы с отображением страницы ввиду платформы и совместимости ie.

Если делать оповещение звуком.. то есть ли у кого наработки какие с минимальными усилиями? Не хочется скачивать "говорилку" на Гиг и пытаться дружить её с 1с, может есть стандартные средства win10? (типа msspeach) или упрощенное что?
Подскажите, в каком направлении двигаться?
23 triviumfan
 
23.04.18
15:35
(21) Это не работает на 8.2 =)
24 Вафель
 
23.04.18
15:39
вроде мигание и без всяких анимэйшнов можно сделать
25 Вафель
 
23.04.18
15:43
text-decoration: blink;
26 Юрий Лазаренко
 
23.04.18
15:44
(23) Там в 8.2 более старая версия IE. Надо либо версию подтянуть до 9, либо найти стиль  для IE 6 (или какой он там у вас).
27 Вафель
 
23.04.18
15:50
(25) как раз сейчас не поодреживается, а на ie6 наверное в самй раз
28 triviumfan
 
23.04.18
15:55
(26) я даже на 8.3.10 проверил - не пашет.
(25) Тоже не пашет
29 triviumfan
 
23.04.18
15:56
(27) даже в 8.3.10 не пашет
Можешь попробовать https://yadi.sk/d/ycvLDZSd3UgRVo
Там 2 поля - текстовое и html
30 triviumfan
 
23.04.18
15:56
1с и html несовместимы :)
31 Юрий Лазаренко
 
23.04.18
16:00
(30) На 1С даже сайты можно делать. Ты просто не все варианты попробовал.
32 Вафель
 
23.04.18
16:03
еще можно через js видимость менять по таймеру
33 Юрий Лазаренко
 
23.04.18
16:05
(32) Можно не видимость, а цвет текста. Изменение видимости может приводить к изменению размеров соседних элементов и их "дерганью".
34 Вафель
 
23.04.18
16:08
(33) Если внутри дива, то не будет
35 Fragster
 
гуру
23.04.18
16:09
(34) будет, если у дива нефиксированные размеры
36 triviumfan
 
23.04.18
16:20
(32) можно примерчик?)
37 Вафель
 
23.04.18
16:23
var visible=true;
setTimeout(function(){
  getElementById("blink").style.color = visible ? 'black' : 'white' ;
visible = !visible
}, 1000)
38 Вафель
 
23.04.18
16:24
вернее setInterval
39 triviumfan
 
23.04.18
16:27
(37) а какой у него вызов в html будет?
40 Вафель
 
23.04.18
16:31
41 Вафель
 
23.04.18
16:32
вернее в другую сторону
http://catalog.mista.ru/public/338126/
42 triviumfan
 
23.04.18
16:34
43 Fragster
 
гуру
23.04.18
16:39
document.getElementById
44 triviumfan
 
23.04.18
16:42
(43) Да я уже копировал, он всё равно ругается.
В общем, победил)

<html>
<head>
<title>123</title>
<script type='text/javascript'>
function blinker()
    {
        if(document.getElementById("blink"))
        {
            var d = document.getElementById("blink") ;
            d.style.color= (d.style.color=='red'?'black':'red');
            setTimeout('blinker()', 500);
        }
    }
</script>
</head>
<body onload="blinker();">
  <p id="blink">Траллацвфвфцв.</p>
</body>
</html>
45 triviumfan
 
23.04.18
16:50
(44) Правда тут ещё цикл нужен по элементам DOM, а то мигает только первый найденный элемент)
46 Вафель
 
23.04.18
16:51
(45) jquery подключи
47 triviumfan
 
23.04.18
16:53
(46) половина методов JS не пашет, а ты предлагаешь библиотеку?)
48 Fragster
 
гуру
23.04.18
16:55
я сразу предложил делать это вне поля html, а просто на html страничке
49 arsik
 
гуру
23.04.18
16:56
Простейшая страница, на сервер скрипт на php + 1С http
50 Fragster
 
гуру
23.04.18
16:57
(49) можно на сервер вообще ничего не класть
51 triviumfan
 
23.04.18
17:07
(48) "сделай http сервис, а на тв браузер в полноэкранном режиме, который через js будет дергать данные раз в минуту", - можешь немного разжевать как это технически выглядит?
52 Юрий Лазаренко
 
23.04.18
17:10
(51) Как http-сервис в 1С, который генерит html-код страницы
53 Вафель
 
23.04.18
17:11
(52) Это прошлый век так писать
54 Fragster
 
гуру
23.04.18
17:16
http сервис, метод генерит генерит данные (для простоты в данном случае - в виде json).
html страница может отдаваться также через http сервис 1с, но может и просто лежать в папке. js со станицы запрашивает данные из http сервиса и визуализирует их, разукрашивая новые, моргая совсем новыми и т.п.
Для работы "от данных" хорошо подходит vuejs, но не обязательно использовать его, вот пример таблички: https://ru.vuejs.org/v2/examples/grid-component.html
55 Вафель
 
23.04.18
17:23
(54) и что vue в 1С работает?
56 Fragster
 
гуру
23.04.18
17:26
(55) а причем тут 1с? 1с только данные отдает в браузер
57 lEvGl
 
гуру
23.04.18
17:28
(56) упорно делают так что бы и по деньгам "нормально" было и что бы геморрой получить
58 lEvGl
 
гуру
23.04.18
17:29
все плюсы в кучу
59 Fragster
 
гуру
23.04.18
17:30
(58) я нифига не понимаю...
60 Fragster
 
гуру
23.04.18
17:31
т.е. специальный человек, который перезапускает 1с в случае чего вместо секретарши, включающей смарт-тв лучше? ну и постоянно висящее соединение с сервером 1с (лицензия), отсутствие возможности нормально забрендировать, элементы управления 1с совершенно не нужные, вот это всё?
61 lEvGl
 
гуру
23.04.18
17:31
(59) кого/чего
62 Fragster
 
гуру
23.04.18
17:32
(91) Родительный падеж
63 Вафель
 
23.04.18
17:33
Цена разработки такого решения конечно будет гораздо выше чем просто на 1с
64 Fragster
 
гуру
23.04.18
17:34
(63) если честно, мы тут уже нафлудили на 2-3 таких решения...
65 lEvGl
 
гуру
23.04.18
17:34
а, ну такая тема - сделать в 1с что бы через хтмл, то есть ветка до сотни наверно дойдет, что бы разобраться со скриптами и полноценное рабочее место "монитор иваныч" будет
66 Fragster
 
гуру
23.04.18
17:35
(65) монитор-иваныч, отличное название для сервиса, кстати
67 Fragster
 
гуру
23.04.18
17:35
можно я его сопру себе?
68 lEvGl
 
гуру
23.04.18
17:37
)) но по факту будет такой пользак в базе
бери)
69 triviumfan
 
23.04.18
17:37
(67) поздно, я уже запатентовал.
Да, ребята, я в думах-раздумьях
70 Вафель
 
23.04.18
17:40
Тут тебя толкают встать на путь js разработчика.
Потом на 1с не захочешь возвращаться. мучаться будешь
71 Fragster
 
гуру
23.04.18
17:45
(70) да, после промисов от одинесных "Новый ОписаниеОповещения" хочется плакать. А если еще покурить babel с webpack, то появится async/await,и становится совсем грустно.
72 Вафель
 
23.04.18
17:50
(71) какие промисы?? async/await уже давно в ходу
73 Вафель
 
23.04.18
17:51
Хотя я наверно к реакту привык уже, там все настроено и курит ьничео не нужно
74 systemstopper
 
23.04.18
17:51
(70) А сам-то чего не спрыгнешь на жс? давно же ковыряешь вроде
75 Fragster
 
гуру
23.04.18
17:52
(73) для реакта просто дофига чего настраивать нужно, а для небольших вещей на vue пару файлов подключить
76 Вафель
 
23.04.18
17:56
(75) ты отстал: create-react-app
77 Вафель
 
23.04.18
17:56
(74) сложно сейчас уходить в джуниоры уходить
78 Fragster
 
гуру
23.04.18
17:57
(ну да, только вместо notepad еще надо nodejs поставить, в командной строке чего-то писать после каждого обновления, потом на условный прод копировать...
79 Вафель
 
23.04.18
17:57
(78) ты в нотепаде код пишешь чтоли?
80 Вафель
 
23.04.18
17:59
(78) Но если ты хотел бабель подключать, то тоже придется все это делать
81 triviumfan
 
23.04.18
17:59
Опять 1сники замечтались...
82 Fragster
 
гуру
23.04.18
17:59
(79) ну значит еще и ide поставить, кроме 1с :)
я в нетбинз писал в том году последнее для веба, сейчас правлю мелкие вещи в notepad++
если что-то большое надо будет делать, то придется vscode поставить, видимо, а то netbeans издох, а для hidpi поддержка в так и не выпущенной 9 версии, в 8 версии шрифты мутные и не удобно.
83 triviumfan
 
23.04.18
18:38
А если оповещение потребуют звуковое?) Может есть готовый вебсервис (бесплатный) или встроенный спичер, который легко интегрируется с 1с?
84 Fragster
 
гуру
23.04.18
18:42
85 rphosts
 
23.04.18
18:49
Жесть! Дожили до того, что чел не знает ничего кроме 1С даже в общих чертах и пытается решить всё средствами 1С!
86 triviumfan
 
23.04.18
20:40
Причем тут тег аудио. Нужно передавать строку и получать звуковой файл.
87 triviumfan
 
23.04.18
20:41
(85) wtf?!
88 Fragster
 
гуру
23.04.18
23:01
(86) тогда ищи по словам html javascript tts
89 Fragster
 
гуру
23.04.18
23:03
90 Юрий Лазаренко
 
23.04.18
23:09
(53) Для монитора достаточно. Данных мало, нагрузки никакой.
91 triviumfan
 
24.04.18
07:18
Вчера нашёл 2 веб-сервиса синтеза речи: yandex speechkit и voicerss.
Реализация в пару строк кода:

    ВременныйФайл = ПолучитьИмяВременногоФайла("mp3");
    Соединение = Новый HTTPСоединение("api.voicerss.org");
    Запрос     = Новый HTTPЗапрос("?key="+КлючAPI+"&hl=ru-ru&src="+СтрЗаменить(СтрокаТекста, " ", "%20"));
    Ответ      = Соединение.Получить(Запрос, ВременныйФайл);
    Если Ответ.КодСостояния <> 200 Тогда
        Сообщить("Возникла ошибка. Код ответа сервера " + Ответ.КодСостояния);
    Иначе
        ЗапуститьПриложение(ВременныйФайл);
    КонецЕсли;

Но, разумеется, нужно платить за нормальный ключ без ограничений и коммерческую составляющую.
Все остальные "говорилки" по мне оказались полным говном, с такой фонетикой они только уши режут. Сама 1с вроде как рекомендует nvda. Правда я не вижу никакой интеграции. При первом запуске она читает все, на что наводишь курсор) Программной работы с ней я не нашёл.
92 triviumfan
 
24.04.18
08:59
Может у кого-то уже есть что-то похожее и бесплатно?)
93 Vladal
 
24.04.18
09:55
(0) Я выводил форму оповещения в виде прикрепленной к краю панели. Там и моргал всем, чем хотел. А что не моргало, заставлял моргать.
94 triviumfan
 
24.04.18
10:49
(93) оригинально хД
95 Fragster
 
гуру
24.04.18
10:56
(92) LOL
96 triviumfan
 
24.04.18
11:02
(95) в смысле все платно?)
97 lEvGl
 
гуру
24.04.18
11:35
(96) ну там библиотеки стоят не так дорого, где то видел 70-80$. зато купил раз и можно везде юзать, не только на мониторе
98 Fragster
 
гуру
24.04.18
11:54
(97) так ведь "юзать" тоже платно, погромисты не бесплатные
99 lEvGl
 
гуру
24.04.18
12:03
а электричество, а сервис-менеджеры - все это стоит денег
но мы то знаем, за чей счет банкет
как счастлив и платежеохотен клиент, когда слышит голос "кати, алены или юрия"
100 lEvGl
 
гуру
24.04.18
12:05
+99 катя алена - смотрел синтезаторы, так называют голоса, кстати есть совсем бесплатные варианты, правда не углублялся - апи есть нет не увидел
https://nvda.ru/
100
101 Fragster
 
гуру
24.04.18
12:23
на самом деле можно попросить записать секретаршу короткие файлы типа
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
30
40
...

и фразы "заказ номер" и "готов"
и этого будет достаточно для простейшего озвучивания заказа
102 triviumfan
 
24.04.18
12:32
(100) написал разрабу, жду ответа)
Ну, странно, за что платить то, если ты каждый день юзаешь гугл поиск голосом, а мне то всего лишь надо text-to-speach :) ВСЕГО ТО!!!
103 triviumfan
 
24.04.18
12:54
(101) "заказ один три три выполнен", этого тоже хватит) так что цифр достаточно)
104 Fragster
 
гуру
24.04.18
14:21
там до 9999 не так много файлов получается
105 lEvGl
 
гуру
24.04.18
14:44
да, секретарей в образовательном процессе дальше 9999 не учат
нумерацию в пределах дня можно
да херь это все, клиенты кто курит, кто кофе пьет, кто просто пьет, в зале 1-2-3 часа сидеть мало кому по-кайфу, чисто "жест престижа", практически толку от этого 0
106 Fragster
 
гуру
24.04.18
14:46
(105) в ставрополе нет больших юлмартов/ситилинков? нет других мест с электронной очередью?
107 lEvGl
 
гуру
24.04.18
14:48
пропалил уже
есть, в банках актуально, понимаю, но не в автосервисе
108 Fragster
 
гуру
24.04.18
14:52
(107) ну на самом деле если сделать по уму, то когда вместо готовности заказа отображать секущий этап (мойка, ожидание, сервис, приемка, выдача, что там еще) + время до окончания, то может быть прикольно
109 Fragster
 
гуру
24.04.18
14:52
особенно если с реальностью буде сходиться
110 lEvGl
 
гуру
24.04.18
15:06
(108) визуально монитор полезен, т к там информация существует относительно статично, я про звук. ожидая час - два вероятность того, что уши будут "заняты" другим в момент, когда алена изрекает что то, довольно большая. либо человека совсем не будет в зале, либо на телефоне, еще что то, а речь длится 5 секунд. при большой текучке, когда люди сидят и с минуты на минуту ждут своей очереди, смысл есть, а тут не.
кстати, я бы не хотел, чтобы хоть на мониторе, хоть голосом под моей фамилией мелькала операция замены поршневой группы
111 lEvGl
 
гуру
24.04.18
15:07
это я как клиент говорю)
112 triviumfan
 
24.04.18
15:11
(111) почему? чего стесняться то? это ж не монитор приёма врача, а тебе не клизму вставляют.
113 triviumfan
 
24.04.18
15:14
(108) Я тут вижу наряды будущей датой закрывают вообще =)
114 lEvGl
 
гуру
24.04.18
15:15
(112) вот бывал и у тех и у тех, до боли, причем без сарказма, ощущения из за идентичности подходов
115 lEvGl
 
гуру
24.04.18
15:19
а так ничего страшного конечно, если только не встретишь потом соседа по очереди на авто рынке, когда надумаешь продавать, а он покупать, но это утрирую конечно
116 wayss
 
24.04.18
15:23
(0) мы подобную задач реализовали через форму обычной обработки, на которой при открытии создается нужное количество элементов "Панель", на них кидаем надписи и по обработчику ожидания меняем цвет/текст
117 Fragster
 
гуру
24.04.18
15:31
(110) да, мигание и звук нафиг не нужны
118 Юрий Лазаренко
 
24.04.18
16:43
При длительном ожидании надо СМС слать. Причем желательно две: одну за Х минут, а вторую по готовности заказа. Например, если я отдал машину в сервис и знаю, что мне надо погулять два часа, то я прошу прислать мне первую смс за 30 минут. И иду гулять. Получил первую смс - пошел в сторону сервиса, пока дошел - как раз вторая пришла.
119 Юрий Лазаренко
 
24.04.18
16:44
И веб-морду можно еще, чтобы с мобильника можно было в любой момент на страницу сайта зайти и посмотреть, в каком там статусе заказ.
120 Fragster
 
гуру
24.04.18
16:51
(118) да, но автоматом исходя из (113) не получится :)
обычно приемщик звонит по готовности через N времени
121 triviumfan
 
27.04.18
15:50
забыл сказать - все таки пошёл посередине - не табдок и не http-сервис, а просто html-поле :)
мигание сделал как описал выше, правда в цикле все элементы DOM прохожу, потому что поле не поддерживает ни метод getElementsByClassName, ни getElementsByID, ни тем более селекторы jquery. Так что вот такой костыль:

function blinker() {
    var elems = document.getElementsByTagName('*');
    //alert(elems.length);
    for (var i = 0; i < elems.length; i++) {
        var elem = elems[i];
        if (elem.id == "blink") {
            elem.style.color = (elem.style.color=='white'?'black':'white');
        }
    }
    // периодичность моргания 1 секунда
    setTimeout('blinker()', 1000);
}

где текст html генерится динамически, устанавливая id = "blink" необходимых элементов для мигания.
На этом всё. Всем спасибо!
122 Fragster
 
гуру
27.04.18
18:33
(121) был я в налоговой. при появлении нового номера он показывался секунд пять крупно поверх всех и мигал. так вот, это мигание только мешало.