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

(Значение не является знач объектного типа) И (Проверка мутабельных значений на заполненность)

Автор ferrari314, 20 мар 2015, 11:34

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

ferrari314

Собсно столкнулся с интересной задачей.
В коде мы получаем список складов по подразделениям
СписокСкладов = Новый СписокЗначений;
СписокСкладов.ЗагрузитьЗначения(СкладыОтбор.ВыгрузитьЗначения());
Ответ = СписокСкладов.ВыбратьЭлемент("Выберите новый склад для товаров");
Если ТипЗнч(Ответ.Значение) = Тип("СправочникСсылка.Склады") Тогда
Для Каждого Строка Из Объект.Товары Цикл
Строка.Склад = Ответ.Значение;
КонецЦикла;
ПересчетИтоговыхСумм(Ложь);
КонецЕсли;


и на проверке ТипЗнч(Ответ.Значение) нас может выбить ошибка
ЦитироватьЗначение не является знач объектного типа
, если значение неопределено. Соответственно проверка на  <> Неопределено выкидывае ту же ошибку.
Логично поставить проверку ЗначениеЗаполнено() , однако тк могут передаваться самые разные значения, мы можем нарваться на Проверка мутабельных значений на заполненность не поддерживается.
На такой случай нарыл в дальних углах гугла страшную но рабочую структуру:
ПустаяСтрока(СокрЛП(Ответ))
Она обзывается жутким костылем, но в данном случае выручила, поскольку мы не знаем что за хрень нам выберет пользователь в след. раз. Какахами плз не кидацца.

LexaK

попробуйте там

    Если Ответ <> Неопределено и ТипЗнч(Ответ.Значение) = Тип("СправочникСсылка.Склады") Тогда


Добавлено: 20 мар 2015, 12:14


Цитировать
Логично поставить проверку ЗначениеЗаполнено() , однако тк могут передаваться самые разные значения, мы можем нарваться на Проверка мутабельных значений на заполненность не поддерживается.

там где переменная может быть мутабельной, проверяйте так

    Если МояПеременная <> Неопределено и ЗначениеЗаполнено(МояПеременная) Тогда

отсекаются и неопределенные и все пустые ссылки и значения, в общем читайте СП
если помогло нажмите: Спасибо!

ferrari314

Неправда. на первой части проверки (МояПеременная <> Неопределено) вывалит ошибку "Значение не является знач объектного типа" (если значение выбранное пользователем пустое) а на второй части - Проверка мутабельных (если значение верное но структурное .
Помогает только вышеописанная мной конструкция.
Собсно скинул только для инфы. Вдруг кому поможет

LexaK

Цитировать
Неправда. на первой части проверки (МояПеременная <> Неопределено) вывалит ошибку

какую ошибку выдаст? вы чего? с Неопределено можно сравнивать все что угодно!
подразумевается что данная переменная есть/определена и/или инициализирована

не путайте народ своими глупыми заявлениями, протестируйте сначала все в отладчике.
если помогло нажмите: Спасибо!

cska-fanat-kz

почитайте справку по ".ВыбратьЭлемент(...)"

"Возвращаемое значение:

Тип: ЭлементСпискаЗначений; Неопределено.
Если пользователь отказался от выбора, возвращает Неопределено. "

никаких тут
Цитата: ferrari314 от 20 мар 2015, 11:34поскольку мы не знаем что за хрень нам выберет пользователь в след. раз
нет!

Достаточно условия
Если Ответ = Неопределено Тогда // НЕ "Ответ.Значение"!!!
// ничего не выбрали
Иначе
// вот тут Ответ = элементу списка значений и можно
    Если ТипЗнч(Ответ.Значение)=...
    ...
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

дфтын


cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск