Версия для печати темы (https://pro1c.org.ua/index.php?s=d5006f390526e3126fb564f8ed213cd2&showtopic=59527)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ При переходе на клиент-сервер - в рабочем коде появились ошибки

Автор: bizisoft 10.06.20, 9:16

Здравствуйте.
1C 8.2.19.130
Альфа-Авто 4.1.21.01

Наладил SQL Server, создал пустую базу, загрузил базу из файла *.dt.
При запуске вылетают ошибки в процедурах/функциях, которые в файловом режиме работали без замечаний.

Процедура или функция с указанным именем не определена (ПолучитьМакетОформления)Построитель.МакетОформления = <<?>>ПолучитьМакетОформления(СтандартноеОформление.Классика);

Процедура на которую ругается вынесена в общий модуль и выглядит так:
Процедура бсПоказатьРезультатВТаблице(ТЗ) Экспорт
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);
    Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Классика);
    Построитель.Выполнить();
    Для каждого Колонка Из Построитель.ВыбранныеПоля Цикл
        Колонка.Представление = ТЗ.Колонки[Колонка.Имя].Заголовок;        
    КонецЦикла;
    Построитель.Вывести();
КонецПроцедуры


или вот еще одна ошибка
{РегистрСведений.СравнениеПрайсов.Форма.ФормаСписка.Форма(22,12)}: Процедура или функция с указанным именем не определена (КурсЗапросомСервер)
    ТекКурс = <<?>>КурсЗапросомСервер(ВыбрВалюта);


Ругается на эту строку:
ТекКурс = КурсЗапросомСервер(ВыбрВалюта);


Функция выглядит так:
&НаСервере
Функция КурсЗапросомСервер(ВыбрВалюта)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата",ТекущаяДата());
    Запрос.УстановитьПараметр("Валюта",ВыбрВалюта);
    Запрос.Текст = "Выбрать        
            |КурсыВалют.Период,        
            |КурсыВалют.Курс,        
            |КурсыВалют.Кратность        
            |ИЗ        
            |РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта =&Валюта) КАК КурсыВалют";
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда      
        Рез = Выборка.Курс; //Строка(Выборка.Курс)+":"+Строка(Выборка.Кратность);
    КонецЕсли;
    Возврат Рез;
КонецФункции


Это особенность клиент-серверного режима и эти функции/процедуры нужно как-то по особенному переписать?
Подскажите пожалуйста, с чем связано такое поведение и как этого можно избежать?

Автор: sava1 10.06.20, 9:39

общий модуль - свойства - клиент,сервер, ......

а Курс.... Экспорт

Автор: bizisoft 10.06.20, 11:31

sava1 @ Сегодня, 10:39 * ,
У общего модуля установлены следующие свойства:
Глобальный = Истина
Клиент (упр.ф.) = Ложь
Сервер = Истина
Внешн.соед. = Истина
Клиент (об.ф.) = Истина
Вызов серв = Истина
Привелигер. = Ложь

Сделал Курс Экспорт

Но к сожалению ничего не изменилось.

Автор: sava1 10.06.20, 12:16

по первому участку - на сервере не выполнится - там нет макетаОформления - лепите в клиентский модуль или передавайте макетОформления как параметр

второй кусок - должен выполнятся (НаСервере) . единственно - НаСервереБезКонтекста. может вызов неправильный ???

по Построитель.Вывести() - а куда Вы собираетесь выводить ? Создайте ТабДок и передайте на клиент. на сервере ТабДок не покажет.....

Автор: bizisoft 10.06.20, 12:41

Перенес функцию КурсЗапросомСервер(Валюта) из РегистрСведений ФормаСписка в общий модуль и ошибка с получением курса ушла.
Получается в клиент-серверном режиме нельзя прописывать в модуле формы функции с директивой &НаСервере ?


По построителю получилось запустить функцию из общего модуля добавив директиву &НаКлиенте.
После этого ошибка пропала.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua