Как найти колонку в табличной части

Как проверить наличие колонки в ТЧ документа?

Я
   Прекрасный дилетант

13.12.10 — 07:29

Как проверить наличие определенной колонки в ТЧ документа? Используя саму ТЧ, без ссылки на документ.

   Defender aka LINN

1 — 13.12.10 — 07:31

Через метаданные. Или выгрузить структуру в ТЗ и посмотреть в ней.

   6tuf

2 — 13.12.10 — 07:33

еще можно через элементы формы. что-нибудь типа
Если ЭтаФорма.ЭлементыФормы.ТабличнаяЧасть.Колонки.Найти(«НужнаяКолонка») = Неопределено Тогда
Сообщить(«Все плохо»);
КонецЕсли;

   Прекрасный дилетант

3 — 13.12.10 — 07:33

(1) Как через метаданные?

   Генератор

4 — 13.12.10 — 07:38

Функция ЕстьРеквизитТабЧастиДокумента(ИмяРеквизита, МетаданныеДокумента, ИмяТабЧасти) Экспорт

   ТабЧасть = МетаданныеДокумента.ТабличныеЧасти.Найти(ИмяТабЧасти);

   Если ТабЧасть = Неопределено Тогда // Нет такой таб. части в документе
       Возврат Ложь;

   Иначе
       Возврат НЕ (ТабЧасть.Реквизиты.Найти(ИмяРеквизита) = Неопределено);

   КонецЕсли;

КонецФункции

   Генератор

5 — 13.12.10 — 07:40

+(4) Метаданные взять методом Метаданные() у объекта или ссылки, взято из типовой

   Прекрасный дилетант

6 — 13.12.10 — 07:41

(4) у меня есть только сама ТЧ, как по ней получить метаданные документа и имя ТЧ?

   Прекрасный дилетант

7 — 13.12.10 — 07:43

+6 такой код я бы и в типовой подглядел.

   Рэйв

8 — 13.12.10 — 07:44

(6)В каком модуле происходят эти танцы с бубном?

   Прекрасный дилетант

9 — 13.12.10 — 07:45

(8) в общем, а какая разница?

   Рэйв

10 — 13.12.10 — 07:49

(9)Да вобщем то большая. Было бы в модуле объекта или формы было бы проще.

известная ТЧ — это таб часть документа или таб . поле на форме?

   ShoGUN

11 — 13.12.10 — 07:52

(6) Если тебе надо строго БЕЗ ССЫЛКИ, то
ТЗ = ТЧ.ВыгрузитьКолонки();  
ЕстьКолонка = ЗначениеЗаполнено(ТЗ.Колонки.Найти(ИмяКолонки));

   Прекрасный дилетант

12 — 13.12.10 — 07:52

(10) ТЧ это ТЧ

   Рэйв

13 — 13.12.10 — 07:56

(12)Аха. Только в модулях объекта она нафиг бы не нужна была.

ЭтотОбъект.Метаданные() +(4)

   Рэйв

14 — 13.12.10 — 07:57

Вернее нужна но подругому:)

   ShoGUN

15 — 13.12.10 — 07:59

(13) Прозреваю: (0) пишет какую-то универсальную обработку, которая перебирает все документы в базе. Правда что мешает при этом получить ссылку — нипанятна.

   Прекрасный дилетант

16 — 13.12.10 — 08:01

(15) ссылку ладно, как получить имя ТЧ?

   Прекрасный дилетант

17 — 13.12.10 — 08:05

(15) нифига не прозреваешь. В типовой процедура в общем модуле, передается ссылка на документ и ТЧ. Мне надо проверить наличие колонок в ТЧ.

   ShoGUN

18 — 13.12.10 — 08:08

(17) Так ссылка-то передается… Или я чего-то не понимаю?

   ShoGUN

19 — 13.12.10 — 08:09

+(18) И нафига вообще имя ТЧ? Дайте кода уже.

   Прекрасный дилетант

20 — 13.12.10 — 08:11

(18) передается, но как получить имя ТЧ?

   Прекрасный дилетант

21 — 13.12.10 — 08:11

(19) имя ТЧ для
МетаданныеДокумента.ТабличныеЧасти.Найти(ИмяТабЧасти);

   ShoGUN

22 — 13.12.10 — 08:16

(21) Опс… Да, действительно. Вот всегда такое с метаданными :/

   Рэйв

23 — 13.12.10 — 08:18

ну если немного извратиться то можно так:

строчка=СтрЗаменить(Строка(ТЧ),»ДокументТабличнаяЧасть.»,»»);
ТочкаМесто=Найти(строчка,».»);
дл=СтрДлина(строчка);
ИмяТабЧасти=Прав(строчка,(дл-ТочкаМесто));
Сообщить(ИмяТабЧасти);

   Прекрасный дилетант

24 — 13.12.10 — 08:21

Придется выгружать в ТЗ, спасибо за помощь.
Тему можно закрыть.

  

TankerM

25 — 13.12.10 — 08:55

А перебрать все табличные части документа, каждую сравнить с неизвестной ТЧ и таким образом установить ее имя?

Выполняет поиск колонки таблицы значений по имени.

Синтаксис

Метод Найти() имеет следующий синтаксис:

КолонкаТаблицыЗначений Найти(ИмяКолонки)

А также альтернативный англоязычный синтаксис:

ValueTableColumn Find(ColumnName)

Параметры

Описание параметров метода Найти():

Имя параметра* Тип Описание
ИмяКолонки Строка Наименование колонки таблицы значений.
*Жирным шрифтом выделены обязательные параметры

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

КолонкаТаблицыЗначений или Неопределено

Описание

Метод Найти() выполняет поиск колонки в коллекции колонок по имени. Если указанная колонка существует, метод возвращает ее в точку вызова. Если колонка не найдена, возвращает Неопределено.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Найти():

Колонка = тз.Колонки.Найти("Комментарий");
Если НЕ Колонка = Неопределено Тогда
	тз.Колонки.Удалить(Колонка);
КонецЕсли;

Читайте также:

  1. Таблица значений 1с. Описание и примеры использования

Поделиться страницей в соц.сетях

См. также Таблица значений в языке 1С 8 (в примерах)

Таб = Новый ТаблицаЗначений;
Таб.Колонки.Добавить("Фрукт");
Таб.Колонки.Добавить("Цвет");
Таб.Колонки.Добавить("Вкус");

Если Таб.Колонки.Найти("Цвет") <> Неопределено Тогда
    Сообщить("Колонка Цвет существует.");
КонецЕсли;

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Сижу думаю, не могу вспомнить и найти. Есть ли наиболее простой метод буквально в одну строку, чтобы проверить есть ли колонка в ТЧ документа или нет? Есть имя колонки «Номенклатура», Есть ссылка на документы и имя табличной части :) Документы и ТЧ могут меняться, а искать надо всегда номенклатуру. Не выгружать же колонки и искать имя? Как-то можно проще

через ДокументСсылка.Метаданные.ТабличныеЧасти?

ЕстьКолонка = ДокументСсылка.Метаданные.ТабличныеЧасти[«Товары»].Реквизиты.Найти(«Номенклатура») <> Неопределено;

ЕстьРеквизитТабличнойЧасти по моему так называется процедура.

да, спасибо, я уж так сделал проверю

Тэги:

Комментарии доступны только авторизированным пользователям

Опубликовано 9 ноября, 2021

УФ Как найти строку таблицы по значению в колонке и сделать её текущей?

УФ Как найти строку таблицы по значению в колонке и сделать её текущей?

НайтиСтроки( не работает.
в ТаблицаНаФорме.ТекущаяСтрока = полагается записать идентификатор строки.

Как его получить?

(21) найти строки возвращает массив строк.
Ты не можешь массив назначить на текСтроку. это уже разные типы.

ТекущаяСтрока =
значение должно быть равно тоже именно строке. Одной строке.

Либо тогда тебе еще надо массив обойти 7 в нем уже будет тип конертной строки. целой.

(21)
ТаблицаФормы (FormTable)
ДанныеСтроки (RowData)
Синтаксис:

Тип: Произвольный.
Строка таблицы, данные которой необходимо получить. Тип параметра зависит от типа редактируемого значения.
Возвращаемое значение:

Тип: ДанныеФормыСтруктура; ДанныеФормыЭлементДерева; ДанныеФормыЭлементКоллекции.
Для таблиц, связанных с разными типами данных, тип возращаемого значения данного метода может различаться:
Для остальных (таблица значений, табличные части и др.) — ДанныеФормыЭлементКоллекции.
Описание:

Возвращает значение, содержащее данные указанной строки.

Тонкий клиент, веб-клиент, толстый клиент.

Из данных строки получить идентификатор

(29) Да, увы. У реквизита типа таблица на управляемой форме, источником которой является запрос или таб.часть документа, метода НайтиСтроки( почему-то нет, и именно в этом проблема.

буду благодарен если поможете мне его найти.

Источник

Помогите найти колонку табличного поля по ее имени.

Заполнил колонки ТП реквизитами документа, теперь перебираю метаданные.реквизиты этого документа и хочу заполнить эти колонки строками с данными из документа. не могу сообразить как найти нужную колонку которая бы соответствовала текущему реквизиту документа.

Процедура Документ()
Выборка= БазаИсточник.Документы.РеализацияТоваровУслуг.Выбрать(ДатаНач,ДатаКон);
МедаданОле= БазаИсточник.Метаданные.Документы.РеализацияТоваровУслуг;
ТабОбщая = Новый ТаблицаЗначений;
ТабОбщаяТЧ = Новый ТаблицаЗначений;
метадан = Метаданные.Документы.РеализацияТоваровУслуг;
// вывести реквизиты
Для Каждого РеквДок из метадан.Реквизиты Цикл
ТабОбщая.Колонки.Добавить(РеквДок.Имя, Новый ОписаниеТипов(«Строка»));
КонецЦикла;
// вывести ТЧ
Для Каждого РеквДокТЧ из метадан.ТабличныеЧасти Цикл
ТабОбщаяТЧ.Колонки.Добавить(РеквДокТЧ.Имя, Новый ОписаниеТипов(«Строка»));
КонецЦикла;

Пока Выборка.Следующий() Цикл

Для Каждого РеквДок из МедаданОле.Реквизиты Цикл

//ТУТ ЗАПУТАЛСЯ+++++++++++++++++++++++++++++++++++++++++++++++++++ ­++++++
ТекКолонка = ТабОбщая.Колонки.Найти(РеквДок);
НоваяСтрока = ТабОбщая.Добавить();
НоваяСтрока.ТекущаяКолонка = Выборка.РеквДок;
//ТУТ ЗАПУТАЛСЯ+++++++++++++++++++++++++++++++++++++++++++++++++++ ­+++++++
КонецЦикла;
КонецЦикла;

ТпДоки = ТабОбщая;
ТпДокиТЧ = ТабОбщаяТЧ;
ЭлементыФормы.ТпДоки.СоздатьКолонки();
ЭлементыФормы.ТпДокиТЧ.СоздатьКолонки();

Источник

Понравилась статья? Поделить с друзьями:
  • Как правильно составить заявку на финансирование
  • Как найти площадь равнобедренного тре
  • Как найти регистрационный номер сады россии
  • Social club offline как исправить
  • Личинка света как найти