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

Значение не является значением объектного типа (Организация)

Автор sokoff, 14 авг 2025, 10:17

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

sali

ой тупой......
ты в запросе выбираешь руководителя и организацию, а возвращаешь ТОЛЬКО руководителя. поэтому у тебя появляется ошибка об организации, что ее там просто нет.

sali

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

Максим75

sokoff, вот так же найдите функцию ДанныеСотрудника(РуководительОрганизации).
руководитель организации пока непонятно к чему, вообще то должны браться данные сотрудника по некой организации, причем здесь руководитель.
короче говоря, найдите эту функцию и код ее сюда.

sali


sokoff

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

Максим75

sokoff, смущает дата конца, возможно ничего не возвращает.
вот станьте точкой на Если РезультатЗапроса.Пустой() Тогда и посмотрите, что в результатеЗапроса
и еще смущает что у Вас и это ДанныеДляПодбораСотрудников.Сотрудник = &Сотрудник
и это ДанныеДляПодбораСотрудников.ФизическоеЛицо = &Сотрудник. Разберитесь что за данные в регистре сведений в этих реквизитах, там скорее всего в одном справочник сотрудники, а в другом справочник физлица, это разное, запрос выдаст пустоту.

похоже возвращает эта функция Неопределено, а в основой процедуре нет проверки на это. потому на организации и спотыкается.

sokoff

Максим75, как я уже писал, что эта обработка рабочая, на демо версии зуп отчет печатается и вычислить выражение там все есть, делаю вывод - что что то не заполнено, надо искать пустой регистр видимо, поправьте если не прав

Максим75

Цитата: sokoff от 19 авг 2025, 14:59Максим75, как я уже писал, что эта обработка рабочая, на демо версии зуп отчет печатается и вычислить выражение там все есть, делаю вывод - что что то не заполнено, надо искать пустой регистр видимо, поправьте если не прав
не правы.
рабочую версию могли и переделывать.
в конфигураторе посмотрите в регистре сведений что за данные хранятся. вот тупо откройте его, отберите по нужному одному пупкину и посмотрите, что в реквизитах. у Вас скорее всего запрос ничего не возвращает.

sokoff

Максим75, прошу прощения,"посмотрите, что в реквизитах. у Вас скорее всего запрос ничего не возвращает." можно про это по подробней

Максим75

Цитата: sokoff от Вчера в 15:57Максим75, прошу прощения,"посмотрите, что в реквизитах. у Вас скорее всего запрос ничего не возвращает." можно про это по подробней
можно.
в конфигураторе находите нужный регистр сведений и смотрите, какой тип Сотрудник и ФизическоеЛицо, далее смотрите в параметр запроса Сотрудник какой тип передается.
вот здесь Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
в самом предприятии откройте этот регистр со всеми записями и посмотрите, что в Окончание находится, какая дата стоит. Может там просто пустая дата, а не вот это Дата("39991231"). В запросе проверяют на дату 31.12.3999 (ну вот такой год придумали), может в демо версии такое в регистре и заполнено, а у Вас может просто пустое поле, тогда условие по дате в запросе не сработает и выборка результата запроса будет пустой.

ну скачайте себе в конце концов консоль запросов, текст запроса туда запихните и в параметры задайте нужного пупкина и посмотрите, будет в выборке что-то или нет.

Теги:

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

Рейтинг@Mail.ru

Поиск