Имя: Пароль:
1C
1С v8
Подписка на событие
, , ,
0 Gusarm
 
17.01.14
16:30
Есть подписка на событие проведения документа. Распологается в общем модуле (Клиент, сервер). Почему нельзя использовать функцию РежимДиалогаВопрос в подписке на событие?
1 Maxus43
 
17.01.14
16:31
можно, в обычном приложении. У тебя наверняка УФ, там только на сервере
2 Maxus43
 
17.01.14
16:32
надо обрамить это ещё #Если ТолстыйКлиентОбычноеПриложение Тогла
3 Gusarm
 
17.01.14
16:32
обычное приложение. УПП
4 zladenuw
 
17.01.14
16:32
(0) а зачем там ? все операции нужно делать до записи
5 Gusarm
 
17.01.14
16:33
Ошибся. ПередЗаписью нового элемента спраочника
6 Maxus43
 
17.01.14
16:33
(3) тогда см (2)
7 Maxus43
 
17.01.14
16:33
пофиг. в клиент-серверных модулях надо разделять контекст выполнения диалоговых плюшек
8 alexbosh
 
17.01.14
16:34
Есть суровая рекомендация - не спрашивать в диалогах при проведениях документов. Это главная ошибка программеров. Все вопросы до проведения!
9 Gusarm
 
17.01.14
16:35
(8) Запись справочника. Не туда посмотрел. Просто делал кучу подписок, вынося лишний код из модуля объекта.
10 Gusarm
 
17.01.14
16:36
(7) Так значит мой ДиалогВопрос будет проигнорирован
11 Maxus43
 
17.01.14
16:38
(10) Если запись будет идти на сервере. В обычном приложении это всегда происходит на клиенте, если специально ничего не мутить
12 Maxus43
 
17.01.14
16:38
в обычном приложении даже обработка проведения на клиенте, что уж говорить о ПередЗаписью...
13 Asmody
 
17.01.14
16:39
(0) потому что эти события будут работать не только в интерактивном режиме
14 Gusarm
 
17.01.14
16:40
(12) ТО есть ДиалогВопрос должен работать без дополнительных телодвижений?
15 Maxus43
 
17.01.14
16:41
(14) чтобы не было ошибок только надо сделать (2)
16 Gusarm
 
17.01.14
16:43
(15) только получается, что все, что будет у меня заключено между #Если ТолстыйКлиентОбычноеПриложение и #КонецЕсли будет проигнорировано, т.к. сейчас выдает ошибку
17 Maxus43
 
17.01.14
16:47
(16) да, будет проигнорировано. Дак кому ты на сервере вопрос задать хочешь? никто не увидит.

Что за ошибка?
18 Gusarm
 
17.01.14
16:50
(17) Функция не обнаружена.

Модуль же еще разрешает "Использование в клиенте обычного приложения".
Только видим он сначала пытается выполнить это на сервере?
19 Maxus43
 
17.01.14
16:52
(18) у тебя юзер в каком режиме работает? в УФ небось, врёшь ты про обычное.
Неважно что разрешает модуль, важно в каком контексте вызывается процедура
20 Gusarm
 
17.01.14
16:54
УПП 1.3
Толстый клиент
Обычное приложение

О каком вранье можно говорить))))
21 Адский плющ
 
17.01.14
16:54
В этом и есть преимущество УФ - оно не позволит такой давнокод написать, как обычное.
22 Gusarm
 
17.01.14
16:55
(21) - см. (20)
23 Maxus43
 
17.01.14
16:55
(20) в обычном приложении бы не ругалось, у меня так половина подписок работает
24 Адский плющ
 
17.01.14
16:55
Пятнично
25 Gusarm
 
17.01.14
16:58
Процедура gsrКонтрагентыПередЗаписьюПередЗаписью(Источник, Отказ) Экспорт
    
    #Если ТолстыйКлиентОбычноеПриложение
    Если Отказ тогда
        Возврат;
    КонецЕсли;
        
    Если Источник.ЭтоНовый() и Источник.ЭтоГруппа=Ложь Тогда
        Режим = РежимДиалогаВопрос.ДаНет;
        Ответ = Вопрос("Вы уверены в правильности введенной информации? Текущий пользователь будет записан как автор этого контрагента!", Режим);
        Если Ответ = КодВозвратаДиалога.Нет Тогда
            Отказ = Истина;
        Иначе
            Источник.gsrАвтор=глЗначениеПеременной("глТекущийПользователь");
        КонецЕсли;    
    КонецЕсли;
    #КонецЕсли
    
КонецПроцедуры
26 Maxus43
 
17.01.14
16:58
#Если ТолстыйКлиентОбычноеПриложение Тогда
27 Gusarm
 
17.01.14
16:58
Не то (25)

Процедура gsrКонтрагентыПередЗаписьюПередЗаписью(Источник, Отказ) Экспорт
    

    Если Отказ тогда
        Возврат;
    КонецЕсли;
        
    Если Источник.ЭтоНовый() и Источник.ЭтоГруппа=Ложь Тогда
        Режим = РежимДиалогаВопрос.ДаНет;
        Ответ = Вопрос("Вы уверены в правильности введенной информации? Текущий пользователь будет записан как автор этого контрагента!", Режим);
        Если Ответ = КодВозвратаДиалога.Нет Тогда
            Отказ = Истина;
        Иначе
            Источник.gsrАвтор=глЗначениеПеременной("глТекущийПользователь");
        КонецЕсли;    
    КонецЕсли;
    
КонецПроцедуры
28 Maxus43
 
17.01.14
16:59
Если Отказ тогда
        Возврат;
    КонецЕсли;

   #Если Клиент Тогда
29 Gusarm
 
17.01.14
16:59
что я делаю не так.
У модуля стоят галочки Клиент и Сервер.
И ещё Вызов сервера
30 Gusarm
 
17.01.14
17:00
(28) ??
31 Maxus43
 
17.01.14
17:04
вместо #Если ТолстыйКлиентОбычноеПриложение Тогда пробуй
#Если Клиент Тогда

платформа какая? покажи код в котором присходит ошибка, в (27) у тебя нет #Если
32 hhhh
 
17.01.14
17:06
(30) ну нельзя на сервере задавать вопросы. Читай (17)
33 Gusarm
 
17.01.14
17:13
(31) Вопрос снят. Всем спасибо.
34 hhhh
 
17.01.14
17:18
(33) файловая УПП что ли?
35 Gusarm
 
17.01.14
17:21
(33) Нефига не снят
Ошибка то вылезла при проведении ТребованияНакладной, оторую вообще не трогал.
и Вылезли ошибки
{ОбщийМодуль.gsr_ОбщийМодульКлиентСервер.Модуль(464,11)}: Процедура или функция с указанным именем не определена (Вопрос)
        Ответ = <<?>>Вопрос("Вы уверены в правильности введенной информации? Текущий пользователь будет записан как автор этого контрагента!", Режим);
{ОбщийМодуль.gsr_ОбщийМодульКлиентСервер.Модуль(398,9)}: Процедура или функция с указанным именем не определена (ВвестиЧисло)
            Если <<?>>ВвестиЧисло(Количество, "Введите количество", 2, 0) Тогда


Это код из подписки, которая никак не связана с документом
36 Gusarm
 
17.01.14
17:22
(34) Клиент-сервер
37 hhhh
 
17.01.14
17:24
(35) про синтаксический контроль модуля слышал? Модуль целиком контролируется.
38 Gusarm
 
17.01.14
17:25
(37) синтаксический контроль модуля в рамках СЕРВЕРА?
39 Maxus43
 
17.01.14
17:25
(35) ещё раз, все Интерактивные вещи обрамляй #Если Клиент Тогда, почему не понятно то?
40 Gusarm
 
17.01.14
17:25
в коде ошибок нет
41 Maxus43
 
17.01.14
17:26
(38) конфигурация - проверка конфигурации - галки Сервер, Клиент (обычное приложение, режим Клиент-Сервер)
42 hhhh
 
17.01.14
17:27
(38) ну да. Сервер берет модуль, проверяет его на синтаксис. Это же элементарно.

видит в нем идиотскую функцию ВвестиЧисло выдает ошибку.

Вы эти все функции обозначьте #Если Клиент Тогда
43 Gusarm
 
17.01.14
17:29
(42) (41) (39)
Все разобрался.
Я не понимал сначала, почему не ругается на метод Сообщить в других подписках.
Там вроде тоже некому сообщать, как и спрашивать ДиалогВопрос.
44 Gusarm
 
17.01.14
17:32
"Сообщить" ведь тоже интерактивная фича или нет?