ДД коллеги, задам может глупый вопрос, но ответа нигде не нашел...
Все знают и пользуются методом НайтиСтроки ТЧ. возвращает Массив, в котором "скопированы" названия колонок ТЧ. Программное обращение к данному массиву сродни обращению к Структуре. Например:
НайденныеСтроки[0].Сумма
Задался вопросом как определить есть ли в массиве условно говоря столбец с нужным названием? В Массиве нет как в Структуре свойство ИмяКлюча.
Кто что знает?
Все знают и пользуются методом НайтиСтроки ТЧ. возвращает Массив, в котором "скопированы" названия колонок ТЧ. Программное обращение к данному массиву сродни обращению к Структуре. Например:
НайденныеСтроки[0].Сумма
Задался вопросом как определить есть ли в массиве условно говоря столбец с нужным названием? В Массиве нет как в Структуре свойство ИмяКлюча.
Кто что знает?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(14) Спасибо навел на хорошую мысль! Получилось не сложно. Вот так:
Для каждого Строчка Из ТаблицаВыб Цикл
ТаблТоваров = Строчка.Документ.Товары;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", Строчка.Номенклатура);
СтрокаНомен = ТаблТоваров.НайтиСтроки(ПараметрыОтбора);
Строчка.Цена = СтрокаНомен[0].Цена;
ИскомаяКолонка = Метаданные.НайтиПоТипу(ТипЗнч(ТаблТоваров)).Реквизиты.СуммаНДС;
Если ИскомаяКолонка <> Неопределено Тогда
Строчка.НДС = СтрокаНомен[0].СуммаНДС;
КонецЕсли;
КонецЦикла;
Показать
(21) для такого кода можно не искать колонку в метаданных. Воспользоваться заполнением свойств.
Для каждого Строчка Из ТаблицаВыб Цикл
ТаблТоваров = Строчка.Документ.Товары;
ПараметрыОтбора = Новый Структура("Номенклатура", Строчка.Номенклатура);
СтрокаНомен = ТаблТоваров.НайтиСтроки(ПараметрыОтбора);
Если СтрокаНомен.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(Строчка,СтрокаНомен[0]);
КонецЕсли;
КонецЦикла;
Показать
(11) "надо изучать и другие языки программирования"(с) spacecraft - в java у вас бы не возникло таких вопросов, т.к. любой объект это прежде всего объект со всеми вытикающими свойствами и методами.
Вот у любого объекта 1С есть косвенный реквизит по которому что то можно сделать еще это его тип.
Вот у любого объекта 1С есть косвенный реквизит по которому что то можно сделать еще это его тип.
(1) Как вариант воспользоваться БСП, есть метод в общем модуле ОбщегоНазначенияКлиентСервер.ЕстьСвойствоОбъекта
Вроде так называется
Там проверка без обращения к метаданным
Условно говоря создается структура с ключом имени вашей проверяемой колонки, заполняется уникальным идентификатором
После этого вызывается ЗаполнитьЗначенияСвойств
И проверка, что значение структуры совпадает с вышеуказанным идентификатором
Если не совпадает, значит заполнение прошло и данная колонка есть у строки
Вроде так называется
Там проверка без обращения к метаданным
Условно говоря создается структура с ключом имени вашей проверяемой колонки, заполняется уникальным идентификатором
После этого вызывается ЗаполнитьЗначенияСвойств
И проверка, что значение структуры совпадает с вышеуказанным идентификатором
Если не совпадает, значит заполнение прошло и данная колонка есть у строки
(17) Метаданные.НайтиПоТипу(ТипЗнч(СтрокаНомен[0])).Родитель().ТабличныеЧасти[ТипЗнч(СтрокаНомен[0].Имя].Реквизиты
писал на вскидку, но догадаешься
ПС. дофига ошибок, так лучше:
КоллекцияКолонок = Мт.ТабличныеЧасти[Метаданные.НайтиПоТипу(типЗначения).Имя].Реквизиты;
писал на вскидку, но догадаешься
ПС. дофига ошибок, так лучше:
типЗначения = ТипЗнч(СтрокаНомен[0]);
Мт = Метаданные.НайтиПоТипу(типЗначения).Родитель();
КоллекцияКолонок = Мт.ТабличныеЧасти[Метаданные.НайтиПоТипу(типЗначения).Имя].Реквизиты;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот