Получает тип по его строковому имени.
Синтаксис
Тип(<ИмяТипа>)Примеры платформы
Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда
...
КонецЕсли;Полное описание, параметры и ограничения
Глобальный контекст.Тип (Global context.Type)
Глобальный контекст (Global context)
Тип (Type)
Доступен, начиная с версии 8.0.
Синтаксис:
Тип(<ИмяТипа>)
Параметры:
<ИмяТипа> (обязательный)
Тип: Строка.
Имя получаемого типа.
Возвращаемое значение:
Тип: Тип.
Полученный тип значения.
Описание:
Получает тип по его строковому имени.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:
Если ТипЗнч(ТекОбъект) = Тип("СправочникСсылка.Номенклатура") Тогда
...
КонецЕсли;
См. также:
ОписаниеТипов
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Проверить булевый тип признака и отдельные коллекции
В XML оба Валютный имеют тип xs:boolean. Это признаки использования механизма, а не ссылки на валюту. Число описаний признаков не является числом счетов или аналитик.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
План = Метаданные.ПланыСчетов.Найти("Хозрасчетный");
Если План = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует ПланыСчетов.Хозрасчетный";
КонецЕсли;
ПризнакСчета = План.ПризнакиУчета.Найти("Валютный");
ПризнакСубконто = План.ПризнакиУчетаСубконто.Найти("Валютный");
Если ПризнакСчета = Неопределено Или ПризнакСубконто = Неопределено Тогда
ВызватьИсключение "В учебной копии нет обоих признаков Валютный; проверьте XML Хозрасчетный";
КонецЕсли;
Сообщить(ПризнакСчета.Тип.СодержитТип(Тип("Булево")));
Сообщить(ПризнакСубконто.Тип.СодержитТип(Тип("Булево")));
Сообщить(Не ПризнакСчета.Тип.СодержитТип(Тип("Число")));
Сообщить(Не ПризнакСубконто.Тип.СодержитТип(Тип("Число")));
Сообщить(План.ПризнакиУчета.Количество() = 5);
Сообщить(План.ПризнакиУчетаСубконто.Количество() = 3);Разбор по шагам
ОписаниеТипов читается у объекта метаданных. СодержитТип проверяет именно допустимый тип значения.
Булево означает флаг, не валютную сумму или конкретную валюту операции.
В исходном XML пять AccountingFlag и три ExtDimensionAccountingFlag; проверяем разные коллекции отдельно.
Если активное расширение добавляет признаки, количество может измениться. Тогда сверяйте текущие метаданные, не исправляйте базу под числа урока.
Как проверить результат
Шесть сравнений Истина в учебной копии исходной конфигурации без изменяющих расширений.
В XML у обоих полей Type содержит xs:boolean, а не xs:decimal или ссылочный тип.
Ожидаемый результат
Уточнены типы двух признаков и размеры разных контейнеров схемы.
На что обратить внимание
СодержитТип не читает текущее значение признака у конкретного счёта/субконто.
Подсчёт метаданных не рассчитывает количество проводок или валютных остатков.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Проверить независимость выгрузки и загрузить три флага оборотов
Полный снимок таблицы и массив одной колонки меняются отдельно от исходных строк. Проверим загрузку по именам полей и импорт Булево по позиции, не записывая счёт.
Где и как запускать
Полный обычный клиентский общий модуль УчебныеСубконто85, только толстый клиент; все помощники включены, полный модуль Пульта отдельно. Не выполнялся.
Подготовка
Создайте НОВУЮ отдельную файловую базу 8.5.1.1343, имя конфигурации УчебныеСубконто85, совместимость НеИспользовать, обычное приложение и толстый клиент. Не рабочую БП/КА2 и не её копию. Здесь база и код не запускались: runtimeVerifiedScenarios=0.
Планы видов характеристик → УчебныеАналитики85: тип значений только Строка(30), переменная длина. В Предопределённые создайте три собственных элемента НЕ группы: имя АналитикаА, код A, наименование Учебная аналитика A; АналитикаБ, код B, наименование Учебная аналитика B; АналитикаВ, код C, наименование Учебная аналитика C. Их тип значения — Строка(30). Дополнительные значения, свои реквизиты и табличные части не создавайте.
Планы счетов → УчебныеСчета85: ДлинаКода=10, ДлинаНаименования=100, ВидыСубконто=УчебныеАналитики85, МаксКоличествоСубконто=3. Признаки учёта субконто и обычные признаки учёта отсутствуют, собственные реквизиты/табличные части и предопределённые счета отсутствуют. Все объектные и менеджерские модули пустые.
Никаких регистров бухгалтерии, документов, подписок и расширений. Предопределённые аналитики — подготовленные элементы своего стенда; 1С может создать их при обновлении своей базы. Это не создание нами рабочих аналитик и не записи счёта из примера.
Создайте неглобальный общий модуль УчебныеСубконто85: Клиент (обычное приложение)=Да, Сервер=Нет, Привилегированный=Нет, другие клиентские флаги=Нет. Вставляйте полный основной модуль выбранного урока целиком. Все три имеют ВыполнитьПример; для другого урока заменяйте весь текст.
Создайте обработку УчебныеСубконто85, обычную основную форму Пульт с кнопкой Выполнить, действие ВыполнитьНажатие. Полный отдельный модуль этой формы приведён ниже. Дайте своему учебному пользователю доступ к своим планам, предопределённым аналитикам и обработке.
F7, сохранение и обновление только своего нового стенда. В будущем толстом клиенте запустите Пульт. Каждый вызов создаёт новый незаписанный счёт в памяти; Код, Наименование и остальные обязательные поля счёта для записи здесь не заполняются, поскольку Записать не вызывается.
Итог и Свернуть у ВидыСубконто оставлены для совместимости и, по справке, не имеют прикладного смысла. Третий урок — контролируемая демонстрация границы API, не вычисление бухгалтерских итогов и не способ изменить виды аналитики в рабочем учёте.
Процедура ВыполнитьПример() Экспорт
Счет = СоздатьСвойСчет();
Аналитики = ПолучитьСвоиАналитики();
Субконто = Счет.ВидыСубконто;
Для Индекс = 0 По 2 Цикл
ЗаполнитьСвоюСтроку(Субконто.Добавить(), Аналитики[Индекс], Индекс = 1);
КонецЦикла;
ПроверитьСвоиСтроки(Субконто, Аналитики, СвоиФлаги(Ложь, Истина, Ложь));
Снимок = Субконто.Выгрузить();
Если Снимок.Колонки.Найти("НомерСтроки") = Неопределено Или Снимок.Количество() <> 3 Тогда
ВызватьИсключение "Выгрузка должна содержать три строки и колонку НомерСтроки";
КонецЕсли;
Снимок[0].ТолькоОбороты = Истина;
Если Субконто[0].ТолькоОбороты Тогда
ВызватьИсключение "Изменение таблицы выгрузки не должно менять исходный черновик";
КонецЕсли;
Субконто.Загрузить(Снимок);
ПроверитьСвоиСтроки(Субконто, Аналитики, СвоиФлаги(Истина, Истина, Ложь));
Снимок[1].ТолькоОбороты = Ложь;
Если Не Субконто[1].ТолькоОбороты Тогда
ВызватьИсключение "После загрузки таблица-снимок не должна стать живой ссылкой на строки";
КонецЕсли;
Колонка = Субконто.ВыгрузитьКолонку("ТолькоОбороты");
Колонка[0] = Ложь;
Колонка[1] = Ложь;
Колонка[2] = Истина;
Если Не Субконто[0].ТолькоОбороты Или Не Субконто[1].ТолькоОбороты Или Субконто[2].ТолькоОбороты Тогда
ВызватьИсключение "Изменение массива выгрузки не должно менять исходную колонку";
КонецЕсли;
Если Колонка.Количество() <> Субконто.Количество() Тогда
ВызватьИсключение "Свой полный импорт требует столько же флагов, сколько строк";
КонецЕсли;
Для Каждого Флаг Из Колонка Цикл
Если ТипЗнч(Флаг) <> Тип("Булево") Тогда
ВызватьИсключение "В свою колонку оборотов допускаем только Булево";
КонецЕсли;
КонецЦикла;
Субконто.ЗагрузитьКолонку(Колонка, "ТолькоОбороты");
ПроверитьСвоиСтроки(Субконто, Аналитики, СвоиФлаги(Ложь, Ложь, Истина));
Колонка[2] = Ложь;
Если Не Субконто[2].ТолькоОбороты Тогда
ВызватьИсключение "После импорта массив не должен управлять исходной строкой";
КонецЕсли;
Сообщить("Проверены отдельный снимок, загрузка по именам колонок и полный импорт трёх флагов по позиции. Счёт не записывался.");
КонецПроцедуры
Процедура ПроверитьСвойКонтекст()
Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
ВызватьИсключение "Нужен собственный стенд УчебныеСубконто85 платформы 8.5.1.1343";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Учебный вывод не должен выполняться внутри чужой транзакции";
КонецЕсли;
КонецПроцедуры
Функция СоздатьСвойСчет()
ПроверитьСвойКонтекст();
МДПлана = Метаданные.ПланыСчетов.Найти("УчебныеСчета85");
МДАналитик = Метаданные.ПланыВидовХарактеристик.Найти("УчебныеАналитики85");
Если МДПлана = Неопределено Или МДАналитик = Неопределено Тогда
ВызватьИсключение "Подготовьте собственные планы счетов и аналитик";
КонецЕсли;
Если МДПлана.ВидыСубконто <> МДАналитик Или МДПлана.МаксКоличествоСубконто <> 3
Или МДПлана.ПризнакиУчетаСубконто.Количество() <> 0 Тогда
ВызватьИсключение "Нужен свой план с тремя субконто без дополнительных флагов";
КонецЕсли;
Счет = ПланыСчетов.УчебныеСчета85.СоздатьСчет();
Если Счет.ВидыСубконто.Количество() <> 0 Тогда
ВызватьИсключение "Новый собственный счет должен иметь пустую таблицу";
КонецЕсли;
Возврат Счет;
КонецФункции
Функция ПолучитьСвоиАналитики()
Аналитики = Новый Массив;
Аналитики.Добавить(ПланыВидовХарактеристик.УчебныеАналитики85.АналитикаА);
Аналитики.Добавить(ПланыВидовХарактеристик.УчебныеАналитики85.АналитикаБ);
Аналитики.Добавить(ПланыВидовХарактеристик.УчебныеАналитики85.АналитикаВ);
Для Каждого Аналитика Из Аналитики Цикл
Если Аналитика.Пустая() Тогда
ВызватьИсключение "Предопределенные аналитики должны иметь непустые ссылки своего плана";
КонецЕсли;
КонецЦикла;
Если Аналитики[0] = Аналитики[1] Или Аналитики[0] = Аналитики[2] Или Аналитики[1] = Аналитики[2] Тогда
ВызватьИсключение "Три свои аналитики должны различаться";
КонецЕсли;
Возврат Аналитики;
КонецФункции
Процедура ЗаполнитьСвоюСтроку(СтрокаСубконто, Аналитика, ТолькоОбороты)
СтрокаСубконто.ВидСубконто = Аналитика;
СтрокаСубконто.ТолькоОбороты = ТолькоОбороты;
СтрокаСубконто.Предопределенное = Ложь;
КонецПроцедуры
Функция СвоиФлаги(Первый, Второй, Третий = Неопределено)
Флаги = Новый Массив;
Флаги.Добавить(Первый);
Флаги.Добавить(Второй);
Если Третий <> Неопределено Тогда
Флаги.Добавить(Третий);
КонецЕсли;
Возврат Флаги;
КонецФункции
Процедура ПроверитьСвоиСтроки(Субконто, Аналитики, Флаги)
Если Субконто.Количество() <> Аналитики.Количество() Или Флаги.Количество() <> Аналитики.Количество() Тогда
ВызватьИсключение "Не совпал полный размер своей таблицы";
КонецЕсли;
Для Индекс = 0 По Аналитики.Количество() - 1 Цикл
СтрокаСубконто = Субконто.Получить(Индекс);
Если СтрокаСубконто <> Субконто[Индекс] Или Субконто.Индекс(СтрокаСубконто) <> Индекс
Или СтрокаСубконто.НомерСтроки <> Индекс + 1
Или СтрокаСубконто.ВидСубконто <> Аналитики[Индекс]
Или СтрокаСубконто.ТолькоОбороты <> Флаги[Индекс] Или СтрокаСубконто.Предопределенное Тогда
ВызватьИсключение "Не совпали порядок, вид, флаг оборотов или принадлежность собственной строки";
КонецЕсли;
КонецЦикла;
КонецПроцедурыУчебныеСубконто85.Пульт
УчебныеСубконто85 → Обработки → УчебныеСубконто85 → Формы → Пульт → Модуль
Полный модуль собственной обычной формы, не выполнялся.
Процедура ВыполнитьНажатие(Кнопка)
УчебныеСубконто85.ВыполнитьПример();
КонецПроцедурыРазбор по шагам
СоздатьСвойСчет проверяет платформу и свой стенд, связь с планом аналитик, предел три вида и отсутствие дополнительных флагов. СоздатьСчет создаёт новый объект, не получает записанный счёт по ссылке.
Три ссылки берутся из своих предопределённых АналитикаА/Б/В, заданных в подготовке. Непустая ссылка не подменяется произвольным UUID или неизвестным входным объектом.
Строки специальной таблицы имеют ВидСубконто как ссылку на план характеристик и два отдельных Булево. Предопределенное=Ложь относится к строке счёта, не к тому, является ли сама аналитика предопределённым элементом плана.
Индекс начинается с 0, НомерСтроки — с 1 и readonly. Полный валидатор сверяет обе адресации, принадлежность строки, вид и оба флага; НомерСтроки не присваивается вручную.
Мутирующие методы допустимы у таблицы объекта. У таблицы ссылки или выборки они вызовут ошибку: ни ссылку на записанный счёт, ни неизвестную таблицу урок не принимает.
Выгрузить создаёт ТаблицуЗначений; она содержит также НомерСтроки. Изменение снимка не меняет строку исходного объекта, что проверяется перед загрузкой.
Загрузить удаляет прежние строки таблицы памяти и переносит значения колонок по именам. Старые ссылки на строки после этого не используем; получаем строки заново полным валидатором.
После загрузки меняем снимок повторно и убеждаемся, что он не стал живым управляющим объектом исходной таблицы.
ВыгрузитьКолонку возвращает Массив в порядке индексов. Меняем его на Ложь,Ложь,Истина и проверяем, что исходные флаги ещё Истина,Истина,Ложь.
До ЗагрузитьКолонку своим правилом требуем ровно три значения и тип Булево у каждого. Это правило полного импорта данного урока, а не выдуманное обещание поведения платформы для короткого массива.
ЗагрузитьКолонку сопоставляет по позиции, не по ссылке вида. Последний вид В становится оборотным; последующее изменение массива не меняет уже импортированную строку.
Как проверить результат
Будущий тест: F7 и запуск Пульта только в своём новом стенде. Каждый вызов начинается с нового счёта и пустой таблицы; здесь BSL не выполнялся.
Если не созданы свои предопределённые имена, подготовьте их и обновите только свой стенд. Не заменяйте их чужими ссылками из БП или КА2.
В коде нет Записать счёта, проводок или регистров бухгалтерии. Удаление/очистка затрагивает только новые строки памяти, не записи базы.
Контроль флагов: Ложь,Истина,Ложь → снимок изменён, исходник прежний → загрузка Истина,Истина,Ложь → импорт колонки Ложь,Ложь,Истина.
НомерСтроки readonly, но выгрузка его содержит. Код не назначает номера вручную; после загрузки валидатор вновь требует номера 1,2,3 и те же ссылки видов.
Для будущего негативного опыта укоротите массив до двух элементов или поставьте строку вместо Булево: наш валидатор должен отказать до импорта.
Таблица-снимок и массив не являются глубокими копиями произвольных объектов. Здесь изменяются скалярные флаги; сами ссылки на аналитики остаются ссылками.
Ожидаемый результат
Будущий опыт сверяет полный состав собственного незаписанного счёта в памяти и границы специальной таблицы. Рабочая база, проводки и счета не меняются. runtimeVerifiedScenarios=0.
На что обратить внимание
ВидыСубконто — специальная таблица счёта, не таблица сумм бухгалтерского регистра. Изменение её порядка влияет на позиции аналитик, не на остатки.
ТолькоОбороты и Предопределенное — разные флаги. Ссылка на предопределённый вид не делает автоматически предопределённой добавленную нами строку счёта.
Методы объекта памяти не сохраняют счёт. Этот черновик намеренно не подготовлен к записи; не добавляйте Записать ради проверки примера.
Статические Python/HTML-проверки и сверка установленной справки не являются компиляцией и запуском в 1С. runtimeVerifiedScenarios остаётся 0.
После Загрузить прежние объекты строк не следует использовать как актуальные строки. Массив загрузки не умеет сам сопоставлять значения по ВидСубконто.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.