Получить тип реквизита из нескольких типов ссылок из табличной части ДокументСсылка.
Заранее извиняюсь, если вопрос некорректен, я пока только изучаю 1с.
Есть ДокументСсылка. В Документе есть ТабличнаяЧасть. У ТабличнойЧасти есть Реквизит. У Реквизита тип: ДокументСсылка.<Имя документа 1>, ДокументСсылка.<Имя документа 2>, ДокументСсылка.<Имя документа 3>.
Мне нужна функция, которая возвращала бы тип реквизита, в зависимости от того на какой документ ссылается реквизит.
Есть ДокументСсылка. В Документе есть ТабличнаяЧасть. У ТабличнойЧасти есть Реквизит. У Реквизита тип: ДокументСсылка.<Имя документа 1>, ДокументСсылка.<Имя документа 2>, ДокументСсылка.<Имя документа 3>.
Мне нужна функция, которая возвращала бы тип реквизита, в зависимости от того на какой документ ссылается реквизит.
Функция ПолучитьТипРеквизита(ДокументСсылка)
//Волшебный код, который делает что мне надо.
Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ.<Имя документа Х>" или "ДокументСсылка.<Имя документа Х>"
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
В общем сам нашёл решение, оставляю здесь.
БазовыеТипы = "ЧислоБулевоДатаСтрокаХранилищеЗначения";
Для каждого ТабличнаяЧасть из ДокументСсылка.Метаданные().ТабличныеЧасти цикл
Таблица = ДокументСсылка[ТабличнаяЧасть.Имя];
Для каждого Строка из Таблица Цикл
Для каждого Реквизит из ТабличнаяЧасть.Реквизиты Цикл
Если Найти(БазовыеТипы, Реквизит.Тип) = 0 <> Неопределено Тогда
РеквизитТип = Метаданные.НайтиПоТипу(ТипЗнч(Строка[Реквизит.Имя])).ПолноеИмя(); //Здесь я получаю, что мне надо
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)
Взять тот тип документа, которому принадлежит, значение Реквизита ТабличнойЧасти.
Получить массив или первый документ в нужном мне формате, я знаю как, но мне нужен "тот самый документ".
части несколько документов, вы чем хотите заполнить переменную ТипРеквизита ? М
Взять тот тип документа, которому принадлежит, значение Реквизита ТабличнойЧасти.
Получить массив или первый документ в нужном мне формате, я знаю как, но мне нужен "тот самый документ".
Функция ПолучитьТипРеквизита(ДокументСсылка)
ТипРеквизита = Новый Массив;
Для каждого Строка из ДокументСсылка.ТабличнаяЧасть Цикл
ТипРеквизита.Добавить(ТипЗнч(Строка.Документ));
КонецЦикла;
Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ.<Имя документа Х>" или "ДокументСсылка.<Имя документа Х>"
КонецФункции
Показать
(8)
сделай , и сравни с
Функция ПолучитьТипРеквизита(ДокументСсылка)
ТипРеквизита = Новый Массив;
Для каждого Строка из ДокументСсылка.ТабличнаяЧасть Цикл
ТипРеквизита.Добавить(ТипЗнч(Строка.Документ));
КонецЦикла;
Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ." или "ДокументСсылка."
КонецФункции
ТипРеквизита = Новый Массив;
Для каждого Строка из ДокументСсылка.ТабличнаяЧасть Цикл
ТипРеквизита.Добавить(ТипЗнч(Строка.Документ));
КонецЦикла;
Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ." или "ДокументСсылка."
КонецФункции
сделай
Возврат ТипЗнч(ТипРеквизита)
Возврат ТипЗнч("ДокументСсылка.")
В общем сам нашёл решение, оставляю здесь.
БазовыеТипы = "ЧислоБулевоДатаСтрокаХранилищеЗначения";
Для каждого ТабличнаяЧасть из ДокументСсылка.Метаданные().ТабличныеЧасти цикл
Таблица = ДокументСсылка[ТабличнаяЧасть.Имя];
Для каждого Строка из Таблица Цикл
Для каждого Реквизит из ТабличнаяЧасть.Реквизиты Цикл
Если Найти(БазовыеТипы, Реквизит.Тип) = 0 <> Неопределено Тогда
РеквизитТип = Метаданные.НайтиПоТипу(ТипЗнч(Строка[Реквизит.Имя])).ПолноеИмя(); //Здесь я получаю, что мне надо
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот