Переменная не определена при вызове процедуры
1С:Зарплата и Управление Персоналом 3.x
8.3.14
Кадровые агентства, подбор персонала
Windows
Россия
Вопрос
Всем привет. Я начинающий программер. Прям совсем.. Еще прохожу обучение.
Пожалуйста помогите с моим вопросом или посоветуйте подходящий форум.
Вопрос:
В динамическом списке справочника Физические лица в ответ на Событие Выбор хочу вызвать процедуру в общем модуле и передать туда ФИО и Вид стажа.
Вот процедура Выбора:
Вот процедура в общем модуле СтажСотрудниковВСпрФизЛицаСпис:
При вызове процедуры СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж")
получаю ошибку:
{Справочник.ФизическиеЛица.Форма.ФормаСписка.Форма(175,2)}: Переменная не определена (СтажСотрудниковВСпрФизЛицаСпис)
<<?>>СтажСотрудниковВСпрФизЛицаСпис.ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж"); (Проверка: Тонкий клиент)
Не могу понять причин этой ошибки. Вызов данной строчки работает в Процедуре ПриСозданииНаСервере(Отказ, СтандартнаяОбработка). Но, та процедура с директивой &НаСервере.
Пожалуйста помогите с моим вопросом или посоветуйте подходящий форум.
Вопрос:
В динамическом списке справочника Физические лица в ответ на Событие Выбор хочу вызвать процедуру в общем модуле и передать туда ФИО и Вид стажа.
Вот процедура Выбора:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, "ОткрытиеФормыЭлементаСправочникаФизическиеЛица");
//Бамб 05.02.2021 В ответ на двойной клик смотрим ФИО и передаем эти данные для
//запроса водительского стажа
//<<<<<
ТекСтр = Элементы.Список.ТекущиеДанные.Наименование;
СтажСотрудниковВСпрФизЛицаСпис.ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж");
//>>>>>
КонецПроцедуры
ПоказатьВот процедура в общем модуле СтажСотрудниковВСпрФизЛицаСпис:
&НаСервере
Процедура ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ФизическоеЛицо, ВидСтажа) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СтажиФизическихЛиц.Период КАК Период,
| СтажиФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
| СтажиФизическихЛиц.ВидСтажа КАК ВидСтажа,
| СтажиФизическихЛиц.ДатаОтсчета КАК ДатаОтсчета,
| СтажиФизическихЛиц.РазмерМесяцев КАК РазмерМесяцев,
| СтажиФизическихЛиц.РазмерДней КАК РазмерДней,
| СтажиФизическихЛиц.ИсчисляетсяСДатыПриема КАК ИсчисляетсяСДатыПриема
|ИЗ
| РегистрСведений.СтажиФизическихЛиц КАК СтажиФизическихЛиц
|ГДЕ
| СтажиФизическихЛиц.ФизическоеЛицо = &ФизическоеЛицо
| И СтажиФизическихЛиц.ВидСтажа = &ВидСтажа";
Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);
Запрос.УстановитьПараметр("ВидСтажа", ВидСтажа);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДатаОтсчета =Выборка.ДатаОтсчета;
КонецЦикла;
ДатаСтажа = ТекущаяДата() - ДатаОтсчета;
КонецПроцедуры
ПоказатьПри вызове процедуры СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж")
получаю ошибку:
{Справочник.ФизическиеЛица.Форма.ФормаСписка.Форма(175,2)}: Переменная не определена (СтажСотрудниковВСпрФизЛицаСпис)
<<?>>СтажСотрудниковВСпрФизЛицаСпис.ПолучаемСтажВРазрезеВидаСтажаИФизЛица(ТекСтр, "Водительский стаж"); (Проверка: Тонкий клиент)
Не могу понять причин этой ошибки. Вызов данной строчки работает в Процедуре ПриСозданииНаСервере(Отказ, СтандартнаяОбработка). Но, та процедура с директивой &НаСервере.
По теме из базы знаний
- Продвинутая технология внешних печатных форм
- Несколько команд печати у одной внешней печатной формы для разных вариантов отчета для документа Поступление товаров конфигурации Розница 2.2
- Что за ? в коде, или Секретный оператор в 1С
- Особенности работы с COM-соединением
- Оперативная отладка и изменение кода, добавление регламентных и HTTP-методов, аналоги констант
Найденные решения
Видимо, в свойствах модуля стоит галочка о выполнении на сервере, что значит, что вызывать методы этого модуля можно только с сервера, а вы на клиенте ее пытаетесь вызвать. Именно поэтому в процедуре ПриСозданииНаСервере все работает.
Вариантов решения два:
1. Добавить галку "На клиенте" в свойства общего модуля - не очень правильно - при этом модуль будет выполняться и на клиенте, и на сервере, придется переписывать модуль, ставить директивы компиляции процедурам и т.п. В общем, заморочки.
2. Вызывать в форме серверный метод и оттуда тянуть эту процедуру. Более правильный вариант. Т.е.
Вариантов решения два:
1. Добавить галку "На клиенте" в свойства общего модуля - не очень правильно - при этом модуль будет выполняться и на клиенте, и на сервере, придется переписывать модуль, ставить директивы компиляции процедурам и т.п. В общем, заморочки.
2. Вызывать в форме серверный метод и оттуда тянуть эту процедуру. Более правильный вариант. Т.е.
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, "ОткрытиеФормыЭлементаСправочникаФизическиеЛица");
//Бамб 05.02.2021 В ответ на двойной клик смотрим ФИО и передаем эти данные для
//запроса водительского стажа
//<<<<<
ТекСтр = Элементы.Список.ТекущиеДанные.Наименование;
СписокВыборНаСервере(ТекСтр )
//>>>>>
КонецПроцедуры
&НаСервере
Процедура СписокВыборНаСервере(Наименование)
СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(Наименование, "Водительский стаж");
КонецПроцедуры
ПоказатьПрикрепленные файлы:
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Видимо, в свойствах модуля стоит галочка о выполнении на сервере, что значит, что вызывать методы этого модуля можно только с сервера, а вы на клиенте ее пытаетесь вызвать. Именно поэтому в процедуре ПриСозданииНаСервере все работает.
Вариантов решения два:
1. Добавить галку "На клиенте" в свойства общего модуля - не очень правильно - при этом модуль будет выполняться и на клиенте, и на сервере, придется переписывать модуль, ставить директивы компиляции процедурам и т.п. В общем, заморочки.
2. Вызывать в форме серверный метод и оттуда тянуть эту процедуру. Более правильный вариант. Т.е.
Вариантов решения два:
1. Добавить галку "На клиенте" в свойства общего модуля - не очень правильно - при этом модуль будет выполняться и на клиенте, и на сервере, придется переписывать модуль, ставить директивы компиляции процедурам и т.п. В общем, заморочки.
2. Вызывать в форме серверный метод и оттуда тянуть эту процедуру. Более правильный вариант. Т.е.
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина, "ОткрытиеФормыЭлементаСправочникаФизическиеЛица");
//Бамб 05.02.2021 В ответ на двойной клик смотрим ФИО и передаем эти данные для
//запроса водительского стажа
//<<<<<
ТекСтр = Элементы.Список.ТекущиеДанные.Наименование;
СписокВыборНаСервере(ТекСтр )
//>>>>>
КонецПроцедуры
&НаСервере
Процедура СписокВыборНаСервере(Наименование)
СтажСотрудниковВСпрФизЛицаСпис.ППолучаемСтажВРазрезеВидаСтажаИФизЛица(Наименование, "Водительский стаж");
КонецПроцедуры
ПоказатьПрикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот