|  | Ошибка регламентного задания в функции, которая в нем не используется | ☑ | 
    
        | 0
    
        Антиквар   05.01.21✎ 14:44 | 
        Всем привет!
В приложении на обычных формах есть регламентное задание, работает по расписанию, загружает данные (база на SQL-сервере).
 Это задание вываливается с ошибкой на функции, в которой есть такой код:
 <Если Вопрос("Текст вопроса?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда>
 Понятно, что интерактивные вызовы в регламентном задании не работают и "РежимДиалогаВопрос" вызовет ошибку. Но данная функция не используется регламентным заданием, оно в эту функцию не заходит ни при каких обстоятельствах, однако ошибка вылезает именно здесь.
 Но эта функция находится в общем модуле, в котором есть другая функция, и последняя используется регламентным заданием.
 Получается, что если регламентное задание вызывает какую-то функцию общего модуля, то во всём этом общем модуле, а точнее ни в какой другой функции этого модуля, не должно быть вызовов диалоговых окон?
 |  | 
    
        | 1
    
        fisher   05.01.21✎ 14:49 | 
        Это ошибка не вызова функции, а компиляции модуля.
При первом обращении к модулю (в данном случае - к серверной версии модуля) выполняется его компиляция.
 А он на сервере скомпилироваться не может, поскольку содержит недоступную на сервере функциональность.
 |  | 
    
        | 2
    
        fisher   05.01.21✎ 14:51 | 
        На обычных формах это типовая ошибка. Поскольку в обычной ситуации разработчик сталкивается с выполнением на сервере почти исключительно в фоновых заданиях. В 99% весь код приложения на ОФ исполняется на клиенте.     |  | 
    
        | 3
    
        fisher   05.01.21✎ 14:53 | 
        Если одна такая проблемная функция и не хочется рефакторить, то можно быстро захачить - просто обрами ее директивами компилятора #Если Клиент Тогда
чтобы она не компилировалась на сервере.
 |  | 
    
        | 4
    
        ДенисЧ   05.01.21✎ 15:10 | 
        Это ошибка погромиста.
Если в модуле есть функции, которые вызываются на сервере, то все диалоговые должны быть в препроцессоре #Если Клиент
 |  | 
    
        | 5
    
        Антиквар   05.01.21✎ 15:20 | 
        "просто обрами ее директивами компилятора #Если Клиент Тогда"
 Ага, я так и сделал, но я не знал, что есть такое требование, думал в функцию не заходит, значит и не сработает
 |  | 
    
        | 6
    
        ДенисЧ   05.01.21✎ 15:58 | 
        (5) А то, что модуль компилируется целиком - ты даже не подозревал? Ты точно не с Чукотки? А то такой наивынй... _)))))     |  | 
    
        | 7
    
        Asmody   05.01.21✎ 18:30 | 
        (6) ты человеку сейчас мозг сломаешь тем, что в 1С что-то "компилируется".     |  | 
    
        | 8
    
        ДенисЧ   05.01.21✎ 18:37 | 
        (7) А... Не жалко. Через пару недель окунётся в прорубь и там видно будет ))     |  |