Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 ноя 2024, 09:32

Ошибка. Переменная не определена

Автор Franc07, 14 авг 2024, 13:17

0 Пользователей и 1 гость просматривают эту тему.

Franc07

Доброго дня! Прошу помощи... из модуля формы делаю запрос, выдает ошибку {Справочник.ФизическиеЛица.Форма.ВоинскийУчет.Форма(565,22)}: Переменная не определена (Справочники)
ФизическоеЛицо = <<?>>Справочники.ФизическиеЛица.НайтиПоНаименованию(""); (Проверка: Тонкий клиент)

Не пойму где ошибся???
вот код:

&НаСервере
Функция ИнформацияКатегорияЗапасаПриИзмененииНаСервере(ФизическоеЛицо)

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

Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Результат = Новый Структура("ФизическоеЛицо,ДатаРождения,Пол");
Результат.ФизическоеЛицо = ВыборкаДетальныеЗаписи.ФизическоеЛицо;
Результат.ДатаРождения = ВыборкаДетальныеЗаписи.ФизическоеЛицоДатаРождения;
Результат.Пол = ВыборкаДетальныеЗаписи.ФизическоеЛицоПол;
КонецЦикла;

Возврат Результат;
КонецФункции

&НаКлиенте
Процедура ИнформацияКатегорияЗапасаПриИзменении(Элемент)
ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("");
ФизЛицо = ИнформацияКатегорияЗапасаПриИзмененииНаСервере(ФизическоеЛицо);
КонецПроцедуры

Максим75

Franc07, на клиенте сие нельзя делать. только на сервере.

LexaK

Franc07, &НаКлиенте
Процедура ИнформацияКатегорияЗапасаПриИзменении(Элемент)
//эту команду перенесите Функция ИнформацияКатегорияЗапасаПриИзмененииНаСервере
//ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию("");
ФизЛицо = ИнформацияКатегорияЗапасаПриИзмененииНаСервере(ФизическоеЛицоИмя);
КонецПроцедуры
если помогло нажмите: Спасибо!

Franc07

LexaK, такой код получился, выдаешь ошибку
{Справочник.ФизическиеЛица.Форма.ВоинскийУчет.Форма(563,49)}: Переменная не определена (ФизическоеЛицо)
   ИнформацияКатегорияЗапасаПриИзмененииНаСервере(<<?>>ФизическоеЛицо); (Проверка: Тонкий клиент)



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

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

&НаКлиенте
Процедура ИнформацияКатегорияЗапасаПриИзменении(Элемент)
   ИнформацияКатегорияЗапасаПриИзмененииНаСервере(ФизическоеЛицо);
КонецПроцедуры

LexaK

Franc07, задайте переменную, наприер так

&НаКлиенте
Процедура ИнформацияКатегорияЗапасаПриИзменении(Элемент)
   ФизическоеЛицо = "Иванов И.И.";
   ИнформацияКатегорияЗапасаПриИзмененииНаСервере(ФизическоеЛицо);
КонецПроцедуры

 Запрос.УстановитьПараметр("ФизическоеЛицо", Справочники.ФизическиеЛица.НайтиПоНаименованию(""));
 
вот здесь вы ищите физлицо по пустому имени - это так и надо?
если помогло нажмите: Спасибо!

Franc07

LexaK, мне не нужен Иванов,Петров. Задача создать реквизит1 в форме справочника и по изменению реквизита2 (процедура ИнформацияКатегорияЗапасаПриИзменении) , присвоить число (1 или 2) реквизиту1. В запросе нужно выбрать сотрудника с датой рождения,пол в котором нахожусь в форме справочника.

Максим75

Franc07, так ссылку сразу и передавайте, раз в форме справочника находитесь.
главное, чтобы это был не новый пупкин, ну т.е. еще не записанный в базу.

LexaK

Franc07,
Цитироватьмне не нужен Иванов,Петров.
это пример был, задайте нужное значение или передавайте нужный реквизит в параметры процедур.
ни кто-же не знает какие у вас формы и что вы в них уже наделали....
что за реквизиты 1 и 2 какой у них тип, как они связаны друг с другом ....
если помогло нажмите: Спасибо!

Franc07

Максим75, код исправил, точкой остановой прошелся данных нет...


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

Запрос.УстановитьПараметр("ФизическоеЛицо", ЭтотОбъект.ФизическоеЛицоСсылка);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Результат = Новый Структура("ФизическоеЛицо,ДатаРождения,Пол");
Результат.ФизическоеЛицо = ВыборкаДетальныеЗаписи.ФизическоеЛицо;
Результат.ДатаРождения = ВыборкаДетальныеЗаписи.ФизическоеЛицоДатаРождения;
Результат.Пол = ВыборкаДетальныеЗаписи.ФизическоеЛицоПол;
КонецЦикла;

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

&НаКлиенте
Процедура ИнформацияКатегорияЗапасаПриИзменении(Элемент)
ИнформацияКатегорияЗапасаПриИзмененииНаСервере();
КонецПроцедуры останова.jpg

Максим75

Franc07, Вы уверены что так ЭтотОбъект.ФизическоеЛицоСсылка?

Если Вы со справочника ФизическиеЛица это делате, то ЭтотОбъект.Ссылка
Если со справочника Сотрудники - ЭтотОбъект.ФизическоеЛицо.Ссылка (скорее всего должен быть реквизит ФизическоеЛицо)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск