Имя: Пароль:
1C
1С v8
Всплывающее уведомление
0 lirt82
 
21.12.21
11:03
Необходимо реализовать всплывающее уведомление при создании документа ПКО, через расширение.
В расширение заимствовал процедуру из модуля объекта документа ПКО с директивой
&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Если ЭтоНовый() Тогда
        ПоказатьПользователю();
    КонецЕсли;    
    
    
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьПользователю()
    
    ПоказатьОповещениеПользователя("Поступило наличные/безналичные средства от контрагент на сумму ");
    
КонецПроцедуры

но Документ.ПоступлениеБезналичныхДенежныхСредств.МодульОбъекта(6,3)}: Процедура или функция с указанным именем не определена (ПоказатьПользователю)
        <<?>>ПоказатьПользователю(); (Проверка: Сервер)
как побороть?
1 Смотрящий
 
21.12.21
11:05
Модуль объекта - на сервере, ты с сервера пытаешься дернуть клиентскую процедуру
2 lirt82
 
21.12.21
11:06
(0) т.е. в расширении я нахожусь в модуле объекта естественно на сервере, не получается перейти на клиент чтоб использовать ПоказатьОповещениеПользователя().
принципиально выводить на экран всплывающие уведомления и не Сообщить()
3 lirt82
 
21.12.21
11:07
(1) но я же указал директиву &НаКлиенте
Процедура ПоказатьПользователю()
4 Смотрящий
 
21.12.21
11:09
Вызвать клиента с сервера - нельзя
5 Жан Пердежон
 
21.12.21
11:09
(3) УФ вчера осваивать начал?
6 Мультук
 
гуру
21.12.21
11:13
(3)

Надо было сразу

&ИменемБорисаНуралиеваВыполнисьГдеБыНиБыл

P.S.
Можно спамить пользователя через "НапоминанияПользователя", но решение -- "очень не очень"
Можно читать про взаимодействия, но у тебя неизвестная конфа на неизвестном движке 1С, так что...
7 Смотрящий
 
21.12.21
11:18
(3) Нельзя но можно.
Убери предикат &НаКлиенте перед ПоказатьПользователю
8 Мультук
 
гуру
21.12.21
11:21
(7)

ПоказатьОповещениеПользователя(...)

Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

Сервер же нет. Пошлет ведь
9 Смотрящий
 
21.12.21
11:23
А ты попробуй
10 lirt82
 
21.12.21
11:35
(7) нет так тоже нельзя
11 lirt82
 
21.12.21
11:36
проблема в том что свойство ЭтоНовый() можно поймать в обработчике ПередЗаписью, в ПриЗаписи уже это свойство не сработает
12 lirt82
 
21.12.21
11:40
(6) Бухгалтерия 3
13 Мультук
 
гуру
21.12.21
11:44
(11)

в "передЗаписью"

Если ЭтоНовый Тогда
     ДополнительныеСвойства.Вставить("ЭтоСцукоНовый", Истина);
КонецЕсли;

В "при записи"

Если ДополнительныеСвойства.Свойство("ЭтоСцукоНовый") Тогда
КонецЕсли;

P.S.
Что такое "ДополнительныеСвойства" гуглим, ищем в конфигурации
14 acht
 
21.12.21
11:47
Я бы начал с вопроса - какому именно из 100500 пользователей, работающих в базе, надо это все показать?
15 lirt82
 
21.12.21
11:47
(13) оригинально))
16 lirt82
 
21.12.21
11:48
попробую поработать в ПриЗаписи
17 END
 
21.12.21
11:48
(0) А что, показывать нужно именно тому пользователю, кто создал/проводит? Пользователь, который создал/провел и так в курсе, что он сделал. Странный тест. А вот если другому/другим показывать, тогда есть где разгуляться :)
18 acht
 
21.12.21
11:51
(17) Конечно. Вот я как кладовщик на складе двумя руками за то, чтобы мне показывали - кто кому что на какую сумму оплатил. Вечером за кружкой с соседом дворником будем обсуждать.
19 END
 
21.12.21
11:55
(18) Так видно же, что это тестовое задание. Но, какое то непродуманное.
20 END
 
21.12.21
11:59
Можно менеджеру показывать, что оплатили его заказ, к примеру. Но что бы показывать тому, кто сделал документ, ну, не знаю. Рыбка Дори там сидит, что ли? Через 2 секунды забывает, что сделала?
21 acht
 
21.12.21
12:01
(20) Ну хз. В голову приходит только длительная операция какая-то, когда он крутит бублик, и дает возможность переключится в другое окно. Ну и чтобы в истории действий это сообщение осталось.

А так да, может от подопытного вообще ждут бспшного НапоминанияПользователя на минималках.
22 lirt82
 
21.12.21
12:41
(13) неа тоже не работает, потому что эти процедуры ПередЗаписью, ПриЗаписи находятся в модуле объекта

https://fex.net/ru/s/vrfea8r

https://fex.net/ru/s/mfzsbkn
23 Мультук
 
гуру
21.12.21
12:47
(22)

Ты спросил: как в "При записи" понять новый это объект или нет.
Я ответил.

Свои идеи я изложил в (6)
То что ПоказатьОповещениеПользователя(..) (7)  не будет работать на сервере написано в синтакс-помощнике. (8)
24 END
 
21.12.21
13:20
А не кто не обратил внимание, что в задании "при создании нового"? Тогда почему ТС использует событие "Перед записью"? (0) Можешь привести точное описание задания, как выдали?
25 lirt82
 
21.12.21
13:45
(24) При создании нового документа ПКО, необходимо всплывающее уведомление (с текстом "Создан док....на сумму ХХХХ") для конкретного пользователя если тот естественно в активном сеансе. Конфа на замке.
26 lirt82
 
21.12.21
14:24
короче отбой, убедил заказчика:)

&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Если ЭтоНовый() Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Поступило наличные/безналичные средства от контрагента " + ЭтотОбъект.Контрагент.Наименование + " на сумму " + ЭтотОбъект.СуммаДокумента + ".";
        Сообщение.Сообщить();
    КонецЕсли;    
    
КонецПроцедуры
осталось только вывести в активный сеанс конкретному пользаку
27 acht
 
21.12.21
14:31
(26) > в активный сеанс конкретному пользаку
А вдруг нет такого. Что, получатеся, все зря?
28 Asmody
 
21.12.21
14:37
(26) завтра кто-нибудь захочет, чтобы эти документы создавались программно из какого-нибудь сервиса. и куда ты тогда свое сообщение засунешь?
весь интерактив должен быть в клиентском коде.
29 Kassern
 
21.12.21
14:40
(26) научите юзверей пользоваться корпоративной почтой, на нее и шлите письма нужным пользователям
30 Мультук
 
гуру
21.12.21
14:43
(27)

Главное, чтобы бабки заплатили

P.S.
А я бы слал СМС нужно пользователю. Типа так и так Вася таки заплатил
Ну или телеграмм.

Это сарказъм, правда основанный на горьком опыте
31 Мультук
 
гуру
21.12.21
14:44
(29)

Ну вот, опять будет тема: я посылал письма при записи документа, и вот в конце месяца решили перепровести все документы ...
32 Kassern
 
21.12.21
14:47
(31) ну так с умом надо привязывать рассылку к документам
33 lirt82
 
24.12.21
12:49
апну тему, подскажите как получать данные из общей формы? не через метод ПолучитьФорму(). пробовал в расширении создать свой справочник, регистр сведений ругается на несовместимость режима 8.3.10, режим не могу поднять так как конфа на замке, а вот в расширении в своей общей форме дает сохранить данные.
&После("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Пользаки = ПолучениеСпискаАктивныхПользователей();
    Ф = ПолучитьОбщуюФорму("СписокУведомителей");
    
    Если ЭтоНовый() Тогда
        
        Для Каждого Стр Из Пользаки Цикл
            Нашли = Ф.ПользователиДляУведомления.НайтиПоЗначению(Строка(Стр.Пользователь));
            Если Нашли <> Неопределено Тогда
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Поступило наличные/безналичные средства от контрагента " + ЭтотОбъект.Контрагент.Наименование + " на сумму " + ЭтотОбъект.СуммаДокумента + ".";
                Сообщение.Сообщить();
            КонецЕсли;
        КонецЦикла;
        
    КонецЕсли;    
    
КонецПроцедуры
Инреактивные операции запрещены
34 Kassern
 
24.12.21
13:14
(33) а что мешает воспользоваться ХранилищеОбщихНастроек и там хранить нужный вам перечень?
35 Kassern
 
24.12.21
13:16
(34) Если уж очень приспичит, то можно воспользоваться реквизитом ХранилищемНастроек в ДополнительныеОтчетыИОбработки
36 lirt82
 
24.12.21
14:36
(35) в конфе есть только БуферыОбменаНовостей, НастройкиНовостей, НастройкиОблачногоАрхива и ХранилищеВариантовОтчетов. В самом расширении нельзя создать собственный объект Хранилище настроек.
37 hhhh
 
24.12.21
14:39
(33) зачем этот странный велосипед? Почему не пользоваться типовыми средствами? Есть же регистр сведений НапоминанияПОльзователю, в нем есть имя пользователя, текст напоминания и время, когда напомнить. Просто добавляешь строчки в этот регистр и напоминания волшебным образом сами вдруг появляются у нужных пользователей.
38 lirt82
 
24.12.21
14:45
(37) снимаю шляпу....реально круто знаешь возможности типовых.
39 lirt82
 
24.12.21
14:54
(37) НО...из справки "При этом можно ввести только одно напоминание для одного объекта."
а у меня доки создаются, т.е. нужно связать регистр с расширением, а понял создам пустую задачу с определенным именем на нужного пользака и все:-)
доработка была оценена на 1500 рублей изначально, теперь и вовсе особо и кодить не нужно:-)
40 Kassern
 
24.12.21
15:11
(39) Вы уже потратили времени тысяч на 10 не меньше))
41 Kesim
 
24.12.21
15:18
(40) а- ха- ха !  в точку))
Ошибка? Это не ошибка, это системная функция.