Имя: Пароль:
1C
 
V8 Метод объекта не обнаружен ГлобальныйМодуль
0 andrewrocker
 
naïve
05.10.25
18:28
Не могу понять, почему из модуля формы функция работает, а из глобального модуля - нет.

&НаКлиенте
Процедура АвтомобилиЦенаПриИзменении(Элемент)
    
    СтрокаАнализаТЧ = Элементы.Автомобили.ТекущиеДанные;
    АнализСтавкиНДС = СтрокаАнализаТЧ.СтавкаНДС;
    ДатаСтавкиНДС = Объект.Дата;
    ПроцентНДС = 0;
    ПроцентНДС = РасчетСтавкиНДС(АнализСтавкиНДС, ДатаСтавкиНДС);
    СтрокаАнализаТЧ.Сумма = СтрокаАнализаТЧ.Цена * СтрокаАнализаТЧ.Количество;
    СтрокаАнализаТЧ.СуммаНДС = СтрокаАнализаТЧ.Сумма / (100+ПроцентНДС) * ПроцентНДС;
    
КонецПроцедуры

/// Целевая функция:

&НаСервере
Функция РасчетСтавкиНДС(АнализСтавкиНДС, ДатаСтавкиНДС) Экспорт

    Если НЕ ЗначениеЗаполнено(АнализСтавкиНДС) Тогда
        Если ДатаСтавкиНДС > Дата("20260101") Тогда АнализСтавкиНДС = Перечисления.СтавкиНДС.НДС22
        Иначе АнализСтавкиНДС = Перечисления.СтавкиНДС.НДС20
        КонецЕсли;
    КонецЕсли;
    
    Если АнализСтавкиНДС = Перечисления.СтавкиНДС.НДС22 Тогда ПроцентНДС = 22
    ИначеЕсли АнализСтавкиНДС = Перечисления.СтавкиНДС.НДС20 Тогда ПроцентНДС = 20 Иначе ПроцентНДС = 0;
    КонецЕсли;
    
    Возврат ПроцентНДС;
    
КонецФункции
1 Волшебник
 
05.10.25
18:31
расширения, да?
2 Волшебник
 
05.10.25
18:32
кстати, у Вашего ГлобальныйМодуль стоит флаг "ВызовСервера"?
3 andrewrocker
 
naïve
05.10.25
18:37
(1) 1с:Нетленка.
(2) не стояла галочка. Поставил.
4 andrewrocker
 
naïve
05.10.25
18:38
Ошибка остаётся:

Метод объекта не обнаружен (РасчетСтавкиНДС)
{Документ.СделкаПродажаСпецтехники.Форма.ФормаДокумента.Форма(212)}:    ПроцентНДС = ОсновнойОбщийМодуль.РасчетСтавкиНДС(АнализСтавкиНДС, ДатаСтавкиНДС);
5 vicof
 
05.10.25
18:43
Сделай два модуля
6 vicof
 
05.10.25
18:44
Или директивы компиляции используй
7 andrewrocker
 
naïve
05.10.25
18:45
(5) Сделать второй общий модуль? Попробую сейчас, просто не понимаю причин
8 andrewrocker
 
naïve
05.10.25
18:46
(5) Странно, сработало.
9 vicof
 
05.10.25
19:00
10 Волшебник
 
05.10.25
19:09
Кстати, у него стоит флаг Глобальный?
11 Волшебник
 
05.10.25
19:10
Кстати, очень плохо размещать процедуры в модуле Глобальный. Это же явно специальные процедуры. Сделайте им свой общий модуль, назовите Налоги
12 kubik_live
 
05.10.25
22:49
(0) Тут ошибка:

Если ДатаСтавкиНДС > Дата("20260101") Тогда АнализСтавкиНДС = Перечисления.СтавкиНДС.НДС22;

Надо:

Если ДатаСтавкиНДС >= Дата("20260101") Тогда АнализСтавкиНДС = Перечисления.СтавкиНДС.НДС22;