КолонкиТабличногоПоля.Найти

Методы · Find

Осуществляет поиск колонки с заданным именем.

Синтаксис

Найти(<Наименование>)

Примеры платформы

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

КолонкиТабличногоПоля.Найти (TableBoxColumns.Find)

КолонкиТабличногоПоля (TableBoxColumns)

Найти (Find)

Доступен, начиная с версии 8.0.

Синтаксис:
Найти(<Наименование>)
Параметры:

<Наименование> (обязательный)
Тип: Строка.
Наименование колонки.
Возвращаемое значение:
Тип: КолонкаТабличногоПоля, Неопределено.
Если колонки с таким именем нет, то возвращается значение Неопределено.
Описание:

Осуществляет поиск колонки с заданным именем.

Доступность:

Толстый клиент.

Пример:

Функция СравнитьТаблицыЗначений(ТЗ1, ТЗ2)
Если ТипЗнч(ТЗ1) <> Тип("ТаблицаЗначений") ИЛИ
ТипЗнч(ТЗ2) <> Тип("ТаблицаЗначений") Тогда
Возврат Ложь;
КонецЕсли;
Если ТЗ1.Количество() <> ТЗ2.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Если ТЗ1.Колонки.Количество() <> ТЗ2.Колонки.Количество() Тогда
Возврат Ложь;
КонецЕсли;

Для каждого Колонка Из ТЗ1.Колонки Цикл
Если ТЗ2.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Для каждого СтрокаТаблицы Из ТЗ1 Цикл
// сравнение строк таблиц

// ...

КонецЦикла;
КонецЦикла;
Возврат Истина;
КонецФункции // СравнитьТаблицыЗначений()

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Развернуть и свернуть собственное дерево товаров

Один раздел содержит книгу и ручку. Операции раскрытия относятся к интерфейсу; текущий родитель — строка дерева, не ссылка рабочего справочника.

Где и как запускать

Полный модуль новой обычной формы внешней обработки. Только толстый клиент с обычными формами, не сервер и не управляемая форма.

Подготовка

  1. В отдельной внешней обработке создайте обычную форму с реквизитом ДеревоТоваров типа ДеревоЗначений. Добавьте табличное поле ТаблицаДерева, Данные=ДеревоТоваров, и кнопку УчебнаяКоманда.

  2. Свяжите события ПриОткрытии формы и действие кнопки с одноимёнными процедурами. Запускайте только толстым клиентом в режиме обычных форм.

  3. Полный код модуля создаёт своё дерево в памяти. Данные рабочего иерархического справочника не читаются и не меняются.

Процедура ПриОткрытии()
    ДеревоТоваров = Новый ДеревоЗначений;
    ДеревоТоваров.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    ДеревоТоваров.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Раздел = ДеревоТоваров.Строки.Добавить();
    Раздел.Наименование = "Учебные товары";
    Раздел.Количество = 0;
    Книга = Раздел.Строки.Добавить();
    Книга.Наименование = "Книга";
    Книга.Количество = 3;
    Ручка = Раздел.Строки.Добавить();
    Ручка.Наименование = "Ручка";
    Ручка.Количество = 1;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаДерева;
    Таблица.СоздатьКолонки();
    Таблица.АвтоВводНовойСтроки = Ложь;
    Таблица.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
    КолонкаИмени = Таблица.Колонки.Найти("Наименование");
    Если КолонкаИмени = Неопределено Тогда
        ВызватьИсключение "Нет колонки собственного дерева";
    КонецЕсли;
    КолонкаИмени.ОтображатьИерархию = Истина;
    Таблица.ТекущаяСтрока = Раздел;
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Если ДеревоТоваров.Строки.Количество() <> 1 Тогда
        ВызватьИсключение "Ожидался один собственный раздел";
    КонецЕсли;
    Раздел = ДеревоТоваров.Строки[0];
    Если Раздел.Строки.Количество() <> 2 Тогда
        ВызватьИсключение "Ожидались две собственные дочерние строки";
    КонецЕсли;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаДерева;
    Таблица.Свернуть(Раздел);
    Сообщить(Не Таблица.Развернут(Раздел));
    Таблица.Развернуть(Раздел, Истина);
    Сообщить(Таблица.Развернут(Раздел));
    Таблица.ТекущийРодитель = Раздел;
    Сообщить(Таблица.ТекущийРодитель = Раздел);
    Сообщить(Раздел.Строки[0].Количество + Раздел.Строки[1].Количество = 4);
КонецПроцедуры

Разбор по шагам

  1. Раздел, книга и ручка создаются в собственном дереве. Колонки формируются только из его полей.

  2. НачальноеОтображениеДерева задаёт первоначальное состояние. Кнопка проверяет раскрытие отдельно после Свернуть и Развернуть.

  3. СПодчиненными=Истина раскрывает также подчинённые уровни, если они есть.

  4. ТекущийРодитель задаётся собственным объектом строки, не числом индекса и не строкой имени.

  5. Перед каждым индексным доступом проверено ожидаемое число своих строк. После операций количество книг и ручек в сумме 4.

Как проверить результат

  1. Четыре сообщения Истина.

  2. После кнопки раздел раскрыт, два товара сохранены; повторное нажатие повторяет сворачивание и раскрытие.

Ожидаемый результат

Проверен цикл отображения собственного дерева без модификации иерархии данных.

На что обратить внимание

  1. ТабличноеПоле не равно ТаблицаФормы управляемого клиента: этот код туда не подходит.

  2. Сворачивание не удаляет дочерние строки.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Использовать собственную PNG-картинку в колонке

Небольшая учебная картинка включена прямо в код в Base64. Ею оформляем шапку и подвал; коллекция картинок строк задаётся отдельно.

Где и как запускать

Модуль новой обычной формы внешней обработки. Только толстый клиент, обычные формы; не серверный модуль и не управляемая форма.

Подготовка

  1. Это обычная форма, не управляемая: используйте толстый клиент с обычными формами в отдельной учебной базе. Создайте новую внешнюю обработку, обычную форму и её реквизит Товары типа ТаблицаЗначений. Рабочие документы и справочники не нужны.

  2. В редакторе формы добавьте табличное поле ТаблицаТоваров, свойство Данные свяжите с реквизитом Товары. Добавьте обычную кнопку УчебнаяКоманда, её действие свяжите с процедурой УчебнаяКоманда. ПриОткрытии свяжите с одноимённым событием формы.

  3. Каждый урок — отдельный полный модуль этой учебной формы. Он заново создаёт в памяти Книгу (3) и Ручку (1), а СоздатьКолонки удаляет прежние колонки только своего табличного поля. Не вставляйте код в рабочую форму с настроенными колонками.

  4. Откройте форму, затем нажмите учебную кнопку. Изменения данных и оформления относятся только к реквизиту внешней обработки в памяти. Здесь нет Записать, обращения к рабочим данным или проверки интерфейса реальной УТ 10.3.

Процедура ПриОткрытии()
    Товары = Новый ТаблицаЗначений;
    Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
    Книга = Товары.Добавить();
    Книга.Код = "A-01";
    Книга.Наименование = "Книга";
    Книга.Количество = 3;
    Книга.Выбран = Ложь;
    Ручка = Товары.Добавить();
    Ручка.Код = "B-02";
    Ручка.Наименование = "Ручка";
    Ручка.Количество = 1;
    Ручка.Выбран = Ложь;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
    Таблица.СоздатьКолонки();
    Таблица.АвтоВводНовойСтроки = Ложь;
    Если Товары.Количество() <> 2 Тогда
        ВызватьИсключение "Ожидались два собственных учебных товара";
    КонецЕсли;
    Таблица.ТекущаяСтрока = Товары[0];
    Колонка = Таблица.Колонки.Найти("Количество");
    Если Колонка = Неопределено Тогда
        ВызватьИсключение "В своей таблице не найдена колонка количества";
    КонецЕсли;
    БайтыКартинки = Base64Значение("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAArklEQVR4nO3VOxKAIAxF0SzEtbgk99/FRhuE8F4+0lCkc3LPCDOIqsrKWRrfADfguE7tTSlgFI1iSuIMoiyOIkrjD8BE/BE3/0R5/AWMEFXn/om7Ae0SbxwGWOcYiY8QMGCGIL7jAMhyNO4GTC4We0w+QC/GxsOANsrGIQCLiMTDACaeDmDjFCDrPZjFTUAmwmqYgKSHSUKACALZDQE8CHQvDEAwnl0uQOZsgKwG3AxgSxA9ZssYAAAAAElFTkSuQmCC");
    КартинкаУчебная = Новый Картинка(БайтыКартинки);
    Колонка.КартинкаШапки = КартинкаУчебная;
    Колонка.ДополнительнаяКартинкаШапки = КартинкаУчебная;
    Колонка.КартинкаПодвала = КартинкаУчебная;
    Колонка.КартинкиСтрок = КартинкаУчебная;
    Таблица.Шапка = Истина;
    Таблица.Подвал = Истина;
    Колонка.ОтображатьВПодвале = Истина;
    Колонка.ТекстПодвала = "Всего: " + Строка(Товары.Итог("Количество"));
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
    Колонка = Таблица.Колонки.Найти("Количество");
    Если Колонка = Неопределено Тогда
        ВызватьИсключение "В своей таблице не найдена колонка количества";
    КонецЕсли;
    Сообщить(Колонка.КартинкаШапки.Ширина() = 32 И Колонка.КартинкаШапки.Высота() = 32);
    Сообщить(Колонка.ДополнительнаяКартинкаШапки.Ширина() = 32);
    Сообщить(Колонка.КартинкаПодвала.Высота() = 32);
    Сообщить(Колонка.КартинкиСтрок.Ширина() = 32);
    Сообщить(Товары.Итог("Количество") = 4);
КонецПроцедуры

Разбор по шагам

  1. Base64 содержит только собственную PNG-картинку 32×32 с учебной отметкой, без путей, скачивания и внешних ресурсов.

  2. Base64Значение возвращает двоичные данные. Конструктор Картинка читает эти данные.

  3. КартинкаШапки и ДополнительнаяКартинкаШапки — разные позиции: дополнительная пиктограмма справа от шапки.

  4. КартинкаПодвала используется при включённых подвале таблицы и отображении подвала колонки.

  5. КартинкиСтрок задаёт картинку для данных колонки, но числовые значения 3/1 не считаем индексами 0/1. Этот урок не обещает значки в строках: он проверяет присвоенный ресурс и реальные картинки шапки/подвала.

Как проверить результат

  1. Пять сравнений Истина.

  2. Картинка включена в текст примера, отдельный PNG-файл не нужен; количества 3/1 остаются прежними.

Ожидаемый результат

Показаны три позиции картинки и отдельный ресурс строк с честной границей проверки.

На что обратить внимание

  1. Из картинки нельзя выводить деловой статус товара: здесь это только учебный ресурс.

  2. КартинкиСтрок не гарантирует отображение значка при произвольном типе данных колонки.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.