Получаем реальный реквизит Артикул и его квалификаторы. Показываем, почему нельзя бесконтрольно обрезать входящие строки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Нужен справочник Номенклатура со строковым реквизитом Артикул. Если имя отличается, сначала найдите фактическое поле в Конфигураторе и измените только его имя в примере.
ОписаниеСправочника = Метаданные.Справочники.Найти("Номенклатура");
Если ОписаниеСправочника = Неопределено Тогда
ВызватьИсключение "Нет справочника Номенклатура";
КонецЕсли;
Реквизит = ОписаниеСправочника.Реквизиты.Найти("Артикул");
Если Реквизит = Неопределено Тогда
ВызватьИсключение "Нет реквизита Артикул; выберите существующий строковый реквизит в своей учебной базе";
КонецЕсли;
Сообщить(Реквизит.ПолноеИмя());
Сообщить(Реквизит.Представление());
Сообщить(Реквизит.Родитель());
Сообщить(СтрШаблон("%1 (%2): %3", Реквизит.Имя, Реквизит.Синоним, Реквизит.Тип));
Сообщить(Реквизит.Комментарий);
Сообщить(Реквизит.ПроверкаЗаполнения);
Сообщить(Реквизит.Использование);
Сообщить(Реквизит.МногострочныйРежим);
Сообщить(Реквизит.ЗаполнятьИзДанныхЗаполнения);
ОписаниеТипов = Реквизит.Тип;
Если Не ОписаниеТипов.СодержитТип(Тип("Строка")) Тогда
ВызватьИсключение "Этот реквизит не допускает строку";
КонецЕсли;
Максимум = ОписаниеТипов.КвалификаторыСтроки.Длина;
Сообщить(Максимум);
АртикулИзФайла = "A-01";
Если Максимум > 0 И СтрДлина(АртикулИзФайла) > Максимум Тогда
ВызватьИсключение "Артикул длиннее допустимого. Исправьте исходные данные, не обрезайте идентификатор";
КонецЕсли;
Сообщить("Проверка длины пройдена: " + АртикулИзФайла);Разбор по шагам
Проверяем существование обоих уровней: справочник и его реквизит.
Свойство Тип возвращает ОписаниеТипов. Проверка СодержитТип подтверждает возможность строки.
КвалификаторыСтроки.Длина даёт ограничение; 0 в этом квалификаторе означает неограниченную длину строки.
При превышении предела отклоняем значение, а не обрезаем: два разных внешних артикула иначе могут превратиться в один.
Как проверить результат
Полное имя заканчивается Реквизит.Артикул; длина совпадает с настройкой реквизита в Конфигураторе.
При ограниченной длине задайте входящую строку длиннее предела: должна быть явная ошибка.
Замените имя реквизита на отсутствующее: пример должен остановиться до чтения Тип.
Ожидаемый результат
Входящий артикул проверен по реальной структуре поля без записи номенклатуры.
На что обратить внимание
Проверка длины не проверяет уникальность артикула, бизнес-правила и обязательность поля.
ОписаниеТипов может быть составным: наличие строки не означает, что строка — единственный разрешённый тип.
Свойство ЗначениеЗаполнения не используется как источник рабочих данных: значения по умолчанию и фактические данные — разные вещи.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.