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

1С7.7: ПустоеЗначение для агрегатной переменной

Автор Smoleu, 23 фев 2020, 12:48

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

Smoleu

Проблема при получении элементов справочника в переменную Контрагент, созданную как Контрагент = СоздатьОбъект("Справочник.Контрагенты"):
1) Метод ПустоеЗначение(Контрагент) выдает, что значение переменной пустое (хотя оно заведомо не пустое);
2) Метод Контрагент.Выбран() выдает, что Контрагент таки выбран (что очевидно).

Контрагент = СоздатьОбъект("Справочник.Контрагенты");
Контрагент.ВыбратьЭлементы();
Контрагент.ПолучитьЭлемент();
Сообщить("Получили первый элемент справочника.");
Сообщить("Значение переменной Контрагент2:");
Сообщить(Контрагент);
Сообщить("Метод ""ПустоеЗначение(Контрагент2)"" возвращает значение:");
Сообщить(ПустоеЗначение(Контрагент));
Сообщить("Метод ""Контрагент.Выбран()"" возвращает значение:");
Сообщить(Контрагент.Выбран());


______
Всевозможные Гуглы и форумы показали мне лишь одно:
Функция ПустоеЗначение() определяет, является ли пустым переданное значение. При этом применяются следующие правила:
а) значение неопределенного типа — всегда пустое;
б) значения следующих типов: «Справочник», «Перечисление», «Документ», «Счет», «Вид субконто», «План счетов», «Календарь» проверяются как в методах Выбран() для соответствующего типа объекта;
Переменная Контрагент таки объявлена: СоздатьОбъект("Справочник.Контрагенты");
_______
Просим помощи.

Smoleu

Цитата: Smoleu от 23 фев 2020, 12:481) Метод ПустоеЗначение(Контрагент) выдает, что значение переменной пустое (хотя оно заведомо не пустое);
Да, если аргумент = выборка из справочника через элемент формы Реквизит диалога, то метод возвращает непустое значение, т.е. корректное. Если Реквизит диалога присваивать любой переменной - всё тоже работает прекрасно.
___
Как только выборка делается переменной - всё наперекосяк.
Вариант "не использовать Метод ПустоеЗначение" (т.е. заменить на др. метод) не рассматривается - он размещен в Глобальном модуле, и редактировать ее нельзя.

alexandr_ll

Цитата: Smoleu от 23 фев 2020, 12:48
Проблема при получении элементов справочника в переменную Контрагент, созданную как Контрагент = СоздатьОбъект("Справочник.Контрагенты"):
1) Метод ПустоеЗначение(Контрагент) выдает, что значение переменной пустое (хотя оно заведомо не пустое);
2) Метод Контрагент.Выбран() выдает, что Контрагент таки выбран (что очевидно).

Контрагент = СоздатьОбъект("Справочник.Контрагенты");
Контрагент.ВыбратьЭлементы();
Контрагент.ПолучитьЭлемент();
Сообщить("Получили первый элемент справочника.");
Сообщить("Значение переменной Контрагент2:");
Сообщить(Контрагент);
Сообщить("Метод ""ПустоеЗначение(Контрагент2)"" возвращает значение:");
Сообщить(ПустоеЗначение(Контрагент));
Сообщить("Метод ""Контрагент.Выбран()"" возвращает значение:");
Сообщить(Контрагент.Выбран());


______
Всевозможные Гуглы и форумы показали мне лишь одно:
Функция ПустоеЗначение() определяет, является ли пустым переданное значение. При этом применяются следующие правила:
а) значение неопределенного типа — всегда пустое;
б) значения следующих типов: «Справочник», «Перечисление», «Документ», «Счет», «Вид субконто», «План счетов», «Календарь» проверяются как в методах Выбран() для соответствующего типа объекта;
Переменная Контрагент таки объявлена: СоздатьОбъект("Справочник.Контрагенты");
_______
Просим помощи.
Попробуйте
Контрагент = СоздатьОбъект("Справочник.Контрагенты");   
Контрагент.ВыбратьЭлементы();
Контрагент.ПолучитьЭлемент();
Сообщить("Получили первый элемент справочника.");
Сообщить("Значение переменной Контрагент2:");
Сообщить(Контрагент);
Сообщить("Метод ""ПустоеЗначение(Контрагент2)"" возвращает значение:");
Сообщить(ПустоеЗначение(Контрагент.ТекущийЭлемент()));
Сообщить("Метод ""Контрагент.Выбран()"" возвращает значение:");
Сообщить(Контрагент.Выбран());

Smoleu


Теги:

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

Рейтинг@Mail.ru

Поиск