Книга знаний

1С:Предприятие / v8 / Приемы программирования

v8: Как проверить наличие колонки в строке таблицы.

Как проверить, есть ли колонка в таблице без конструкции "Попытка-Исключение"Автор статьи: Гений 1С | Редакторы: Волшебник
Последняя редакция №2 от 26.02.06 | История
URL: http://kb.mista.ru/article.php?id=109

Ключевые слова: колонка,таблица значений,метаданные


Иногда хочется знать есть ли в строке объекта определенная колонка.

Самый простой вариант сделать это - использовать конструкцию "Попытка Исключение", например, попытаться получить значение в строке в указанной колонке и если возникнет исключение - колонки нет:
Попытка
    Тмп=СтрокаТаблицыЗначений[НужноеИмяКолонки];
    флЕстьКолонка=Истина;
Исключение
    флЕстьКолонка=Ложь;
КонецПопытки;


Примечание. Это одно из применений универсального Книга знаний: Метод Рупора

Однако использование попытка исключение не является хорошим тоном в программировании на 1С (это вызывает трудности отладки и крушение внутри транзакций). Поищем другие пути.

Для строки документа или справочника можно проверить наличие колонки через метаданные.
Функция ЕстьРеквизитСтрокиТабличнойЧасти(СтрокаТаблицыЗначений, НужноеИмяКолонки) Экспорт
    МД=Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТаблицыЗначений));
    Если МД.Реквизиты.Найти(НужноеИмяКолонки)=Неопределено Тогда
        Возврат ложь;
    Иначе
        Возврат истина;
    КонецЕсли;
КонецФункции



А для таблиц значений Тюшкин Андрей предложил такой, немного изощренный, способ:

УИД = Новый УникальныйИдентификатор(); 
ВременнаяСтруктура = Новый Структура(НужноеИмяКолонки, УИД); 
ЗаполнитьЗначенияСвойств(ВременнаяСтруктура, СтрокаТаблицыЗначений, НужноеИмяКолонки); 
флЕстьКолонка=ВременнеяСтруктура[НужноеИмяКолонки] <> УИД;


Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2021 | Mista.ru

Яндекс.Метрика