Odin | База знаний 1С

Как проверить, что ...
 

Как проверить, что тип значения реквизита — документ в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Тип значения реквизита составной (документ и строка). Как проверить что тип значения реквизита документ



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Если тип значения реквизита составной (например, может быть и ДокументСсылка, и Строка), и нужно проверить, что именно в данный момент в реквизите хранится значение типа "ДокументСсылка", то в 1С используется функция ТипЗнч() и сравнение с Тип("ДокументСсылка.").

Пример кода:

Если ТипЗнч(Реквизит) = Тип("ДокументСсылка.РеализацияТоваров") Тогда
    // Значение реквизита - ссылка на документ РеализацияТоваров
КонецЕсли;

Если нужно проверить, что значение — ссылка на любой документ (не конкретно на "РеализацияТоваров", а на любой документ), то можно проверить, что тип значения — это ссылка на объект типа "ДокументСсылка", например, так:

Если ТипЗнч(Реквизит)  Неопределено Тогда
    ТипЗначения = ТипЗнч(Реквизит);
    Если СтрНачинаетсяС(ТипЗначения, "ДокументСсылка.") Тогда
        // Значение реквизита — ссылка на документ
    КонецЕсли;
КонецЕсли;

Или более универсально, если нужно проверить, что значение — ссылка на объект типа "Документ", можно использовать метод ТипЗнч() и сравнивать с Тип("ДокументСсылка.") для конкретного документа, либо проверять префикс строки типа.

Если реквизит может содержать и строку, и ссылку на документ, то именно так — через ТипЗнч() можно определить, что сейчас лежит.

---

**Итог:**

- Используйте `ТипЗнч(Реквизит)` для получения типа значения.
- Сравнивайте с `Тип("ДокументСсылка.ИмяДокумента")` для конкретного документа.
- Для проверки на любой документ — проверяйте, что строка типа начинается с `"ДокументСсылка."`.

---

Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/10.html
https://helpf.pro/faq/view/798.html



   
ОтветитьЦитата