Переменная не определена при вызове процедуры

1. LittleBig 05.02.21 02:07 Сейчас в теме
Всем привет. Я начинающий программер. Прям совсем.. Еще прохожу обучение.
Пожалуйста помогите с моим вопросом или посоветуйте подходящий форум.
Вопрос:
В динамическом списке справочника Физические лица в ответ на Событие Выбор хочу вызвать процедуру в общем модуле и передать туда ФИО и Вид стажа.
Вот процедура Выбора:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, "ОткрытиеФормыЭлементаСправочникаФизическиеЛица");
	
	//Бамб 05.02.2021 В ответ на двойной клик смотрим ФИО и передаем эти данные для 
	//запроса водительского стажа
	//<<<<<
	ТекСтр = Элементы.Список.ТекущиеДанные.Наименование;
	СтажСотрудниковВСпрФизЛицаСпис.ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж");
	//>>>>>
		
КонецПроцедуры
Показать


Вот процедура в общем модуле СтажСотрудниковВСпрФизЛицаСпис:
&НаСервере
Процедура ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ФизическоеЛицо, ВидСтажа) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	СтажиФизическихЛиц.Период КАК Период,
	|	СтажиФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
	|	СтажиФизическихЛиц.ВидСтажа КАК ВидСтажа,
	|	СтажиФизическихЛиц.ДатаОтсчета КАК ДатаОтсчета,
	|	СтажиФизическихЛиц.РазмерМесяцев КАК РазмерМесяцев,
	|	СтажиФизическихЛиц.РазмерДней КАК РазмерДней,
	|	СтажиФизическихЛиц.ИсчисляетсяСДатыПриема КАК ИсчисляетсяСДатыПриема
	|ИЗ
	|	РегистрСведений.СтажиФизическихЛиц КАК СтажиФизическихЛиц
	|ГДЕ
	|	СтажиФизическихЛиц.ФизическоеЛицо = &ФизическоеЛицо
	|	И СтажиФизическихЛиц.ВидСтажа = &ВидСтажа";
	Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);
	Запрос.УстановитьПараметр("ВидСтажа", ВидСтажа);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		ДатаОтсчета =Выборка.ДатаОтсчета; 
	КонецЦикла;
	ДатаСтажа = ТекущаяДата() - ДатаОтсчета;	 

КонецПроцедуры
Показать


При вызове процедуры СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж")
получаю ошибку:
{Справочник.ФизическиеЛица.Форма.ФормаСписка.Форма(175,2)}: Переменная не определена (СтажСотрудниковВСпрФизЛицаСпис)
<<?>>СтажСотрудниковВСпрФизЛицаСпис.ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж"); (Проверка: Тонкий клиент)
Не могу понять причин этой ошибки. Вызов данной строчки работает в Процедуре ПриСозданииНаСервере(Отказ, СтандартнаяОбработка). Но, та процедура с директивой &НаСервере.
По теме из базы знаний
Найденные решения
2. rule_2 47 05.02.21 04:22 Сейчас в теме
Видимо, в свойствах модуля стоит галочка о выполнении на сервере, что значит, что вызывать методы этого модуля можно только с сервера, а вы на клиенте ее пытаетесь вызвать. Именно поэтому в процедуре ПриСозданииНаСервере все работает.

Вариантов решения два:
1. Добавить галку "На клиенте" в свойства общего модуля - не очень правильно - при этом модуль будет выполняться и на клиенте, и на сервере, придется переписывать модуль, ставить директивы компиляции процедурам и т.п. В общем, заморочки.

2. Вызывать в форме серверный метод и оттуда тянуть эту процедуру. Более правильный вариант. Т.е.
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, "ОткрытиеФормыЭлементаСправочникаФизическиеЛица");

//Бамб 05.02.2021 В ответ на двойной клик смотрим ФИО и передаем эти данные для
//запроса водительского стажа
//<<<<<
ТекСтр = Элементы.Список.ТекущиеДанные.Наименование;
СписокВыборНаСервере(ТекСтр )

//>>>>>

КонецПроцедуры

&НаСервере
Процедура СписокВыборНаСервере(Наименование)
СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(Наименование, "Водительский стаж");
КонецПроцедуры
 
Показать
Прикрепленные файлы:
3. SlavaKron 05.02.21 07:18 Сейчас в теме
(2)
вызывать методы этого модуля можно только с сервера, а вы на клиенте ее пытаетесь вызвать.

Если стоит галка "Вызов сервера", вызывать можно и с клиента.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. rule_2 47 05.02.21 04:22 Сейчас в теме
Видимо, в свойствах модуля стоит галочка о выполнении на сервере, что значит, что вызывать методы этого модуля можно только с сервера, а вы на клиенте ее пытаетесь вызвать. Именно поэтому в процедуре ПриСозданииНаСервере все работает.

Вариантов решения два:
1. Добавить галку "На клиенте" в свойства общего модуля - не очень правильно - при этом модуль будет выполняться и на клиенте, и на сервере, придется переписывать модуль, ставить директивы компиляции процедурам и т.п. В общем, заморочки.

2. Вызывать в форме серверный метод и оттуда тянуть эту процедуру. Более правильный вариант. Т.е.
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, "ОткрытиеФормыЭлементаСправочникаФизическиеЛица");

//Бамб 05.02.2021 В ответ на двойной клик смотрим ФИО и передаем эти данные для
//запроса водительского стажа
//<<<<<
ТекСтр = Элементы.Список.ТекущиеДанные.Наименование;
СписокВыборНаСервере(ТекСтр )

//>>>>>

КонецПроцедуры

&НаСервере
Процедура СписокВыборНаСервере(Наименование)
СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(Наименование, "Водительский стаж");
КонецПроцедуры
 
Показать
Прикрепленные файлы:
3. SlavaKron 05.02.21 07:18 Сейчас в теме
(2)
вызывать методы этого модуля можно только с сервера, а вы на клиенте ее пытаетесь вызвать.

Если стоит галка "Вызов сервера", вызывать можно и с клиента.
4. rule_2 47 05.02.21 11:39 Сейчас в теме
(3) Действительно, вы правы.
(1) - поставьте галочку на общем модуле.
8. user980277 19.10.21 09:01 Сейчас в теме
(2) Где находится этот общий модуль и как добраться до этих настроек? Не слетит поддержка типовая?
5. LittleBig 05.02.21 12:06 Сейчас в теме
Галочка сработала! Большое спасибо.
И еще вопрос, как выкладывать код в вопросе, чтобы сохранилось форматирование Конфигуратора?
6. Hla 82 05.02.21 12:15 Сейчас в теме
(5)
55555555555555555555555555
Прикрепленные файлы:
7. LittleBig 05.02.21 12:17 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот