Имя: Пароль:
1C
1С v8
v8: Проверка на реквизит в ТЧ документа
0 Dmitrith
 
13.08.12
09:38
Есть ТЧ документа. При этом в функции сам вид документа не определен. Так же не определено название ТЧ. как можно проверить данную ТЧ на нахождение в ней реквизита, ну например "Номенклатура"
1 ДенисЧ
 
13.08.12
09:39
Попытка
 ном = стрДок.Номенклатура;
Исключение
 Сообщить("Нету такого");
КонецПопытки;
2 Dmitrith
 
13.08.12
09:40
Через попытку некошерно как-то. Другие способы есть? )
3 ДенисЧ
 
13.08.12
09:40
Через метаданные...
4 CepeLLlka
 
13.08.12
09:41
(3) А если это просто реквизит на форме.. добавленная, вычисляемая колонка.
5 CepeLLlka
 
13.08.12
09:41
?
6 Dmitrith
 
13.08.12
09:42
Через метаданные насколько я вижу я должен знать вид документа и имя табличной части. А у меня ТЧДокумента как объект передано
7 France
 
13.08.12
09:43
(4) элемент формы
(6) из тчдокумента документ можно получить.
8 PuhUfa
 
13.08.12
09:49
// Позволяет определить есть ли среди реквизитов табличной части документа
// реквизит с переданным именем.
//
// Параметры:
//  ИмяРеквизита - строковое имя искомого реквизита,
//  МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск.
//  ИмяТабЧасти  - строковое имя табличной части документа, среди реквизитов которого производится поиск
//
// Возвращаемое значение:
//  Истина - нашли реквизит с таким именем, Ложь - не нашли.
//
Функция ЕстьРеквизитТабЧастиДокумента(ИмяРеквизита, МетаданныеДокумента, ИмяТабЧасти) Экспорт

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

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

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

   КонецЕсли;

КонецФункции // ЕстьРеквизитТабЧастиДокумента()
9 Dmitrith
 
13.08.12
09:51
(8) Это я уже видел. Я не знаю в функции ИмяТабЧасти и вид документа. Не хотелось бы добавлять.
10 PuhUfa
 
13.08.12
09:52
(9) ты же в (7) пишешь, что "А у меня ТЧДокумента как объект передано"
11 Reset
 
13.08.12
10:08
(0) ЕстьРеквизит=Метаданные.НайтиПоТипу(ТипЗнч(ТЧ)).Реквизиты.Найти(ИмяРеквизита)<>Неопределено