К статье
Практический материал

Разработка и Конфигурация · 12 мин

Неверное имя колонки в 1С: как найти и исправить ошибку

Разбираем ошибку «Неверное имя колонки» в 1С: где возникает, как найти источник в запросе, табличной части или СКД, и как исправить своими силами.

Ошибка «Неверное имя колонки» — одно из самых частых сообщений, с которым сталкиваются разработчики и администраторы 1С. Она появляется, когда программа обращается к колонке таблицы значений, табличной части, результата запроса или набора данных, которой в данный момент не существует. Платформа не умеет «догадываться», что имелось в виду, и сразу прерывает выполнение кода.

Типичные ситуации: в запросе указано поле, которого нет в источнике; код обращается к реквизиту табличной части, переименованному при обновлении конфигурации; в схеме компоновки данных используется поле, отсутствующее в наборе данных; после загрузки данных из файла структура таблицы не совпала с ожидаемой. Во всех этих случаях логика исправления одинакова: найти, где формируется структура колонок, и сопоставить её с местом обращения.

Ниже разобраны основные сценарии возникновения ошибки, способы локализации проблемы через конфигуратор и отладчик, а также методы исправления для запросов, табличных частей, таблиц значений и отчётов на СКД.

Где именно возникает ошибка: основные источники

Сообщение «Неверное имя колонки» платформа выдаёт в нескольких контекстах, и для каждого свой порядок диагностики. Чаще всего источником оказывается обращение к таблице значений в коде: например, строка СтрокаТаблицы.Количество, когда колонка называется КоличествоТовара или вообще не добавлена. Второй частый источник — запрос: поле в секции ВЫБРАТЬ не существует в таблице-источнике, либо псевдоним задан неверно.

Третья группа случаев — табличные части объектов. Если при обновлении конфигурации реквизит табличной части был переименован или удалён, весь старый код, который к нему обращается, начнёт выдавать ошибку. Четвёртый источник — схема компоновки данных: поле указано в настройках отчёта, но отсутствует в наборе данных или на закладке «Вычисляемые поля».

Наконец, ошибка возникает при обмене данными: загрузке из Excel, CSV, при работе правил конвертации. Если структура файла изменилась (удалили или переименовали столбец), а код загрузки остался прежним, обращение по старому имени приведёт к тому же сообщению.

Ошибка в модуле при обращении к таблицеПроблема в коде

Сверить имя колонки с местом создания таблицы значений

Ошибка при выполнении запросаПроблема в тексте запроса

Проверить поля в консоли запросов

Ошибка при открытии отчётаПроблема в СКД

Проверить набор данных и выбранные поля

Ошибка после обновления конфигурацииИзменились метаданные

Найти переименованные реквизиты через поиск по конфигурации

Как локализовать проблему через текст ошибки и отладчик

Первый шаг — внимательно прочитать полный текст сообщения. Платформа обычно указывает имя колонки, которое не удалось найти, и контекст: модуль, номер строки, процедуру. Если ошибка возникает в пользовательском режиме без деталей, включите отладку: откройте конфигуратор, подключитесь к сеансу (Отладка → Подключение) и поставьте точку останова на строке, указанной в сообщении.

В отладчике удобно использовать табло (Вычислить выражение): выполните выражение вида ТаблицаЗначений.Колонки и посмотрите фактический список колонок в момент ошибки. Часто оказывается, что колонка называется иначе, чем предполагал разработчик, — например, с другим регистром букв или с сокращением. Для запросов полезно вывести результат в временную таблицу и проверить состав полей через консоль запросов.

Если ошибка «плавающая» и возникает только при определённых данных, добавьте перед проблемной строкой проверку существования колонки и запись в журнал регистрации. Это позволит собрать фактуру: при каких условиях структура таблицы отличается от ожидаемой.

Порядок диагностики
  1. 1
    Скопируйте полный текст ошибки: имя колонки, модуль, строка
  2. 2
    Откройте указанное место в конфигураторе или поставьте точку останова в отладчике
  3. 3
    В табло вычислите структуру колонок объекта в момент ошибки
  4. 4
    Сравните фактические имена с тем, что используется в коде
  5. 5
    Исправьте имя или добавьте колонку и повторите сценарий

Исправление ошибки в запросе

Если ошибка возникает при выполнении запроса, откройте его текст и проверьте каждое поле в секции ВЫБРАТЬ. Поле должно существовать в таблице-источнике с точным именем, включая обращения через точку: Товары.Номенклатура.Код корректно только если у документа есть табличная часть «Товары» с реквизитом «Номенклатура», а у справочника «Номенклатура» есть реквизит «Код» (он есть всегда, но для произвольных реквизитов проверка обязательна).

Частая причина — псевдонимы. Если полю задан псевдоним через КАК, то дальше в коде к результату запроса нужно обращаться именно по псевдониму, а не по исходному имени поля. Например, запрос ВЫБРАТЬ Сумма КАК СуммаДокумента означает, что в выборке доступна колонка «СуммаДокумента», а обращение Выборка.Сумма вызовет ошибку.

Удобный инструмент проверки — консоль запросов (внешняя обработка) или конструктор запроса в конфигураторе. Выполните запрос изолированно: конструктор подсветит несуществующие поля ещё до выполнения. Также проверяйте виртуальные таблицы: у регистров накопления и сведений состав доступных полей зависит от параметров виртуальной таблицы, и поле может «исчезнуть» при определённых настройках.

bsl
ВЫБРАТЬ
	Продажи.Номенклатура КАК Товар,
	СУММА(Продажи.Количество) КАК КоличествоПродано
ИЗ
	РегистрНакопления.Продажи КАК Продажи
СГРУППИРОВАТЬ ПО
	Продажи.Номенклатура

Исправление при работе с таблицами значений и табличными частями

При работе с программно созданной таблицей значений колонка должна быть явно добавлена через ТаблицаЗначений.Колонки.Добавить("ИмяКолонки") до первого обращения. Если таблица создаётся выгрузкой из результата запроса (Запрос.Выполнить().Выгрузить()), состав колонок определяется полями запроса — изменение запроса автоматически меняет и структуру таблицы, о чём легко забыть.

Для табличных частей документов и справочников имя колонки — это имя реквизита табличной части в метаданных. Откройте объект в конфигураторе, перейдите на закладку «Данные» → «Табличные части» и сверьте точное написание. Помните, что платформа частично допускает обращение без учёта регистра, но полагаться на это не стоит: при рефакторинге и поиске ссылок точное имя критично.

Защитный приём — проверка существования колонки перед обращением. Конструкция Если Таблица.Колонки.Найти("Скидка") = Неопределено Тогда ... КонецЕсли; позволяет корректно обработать ситуацию, когда структура таблицы зависит от внешних данных, вместо того чтобы падать с ошибкой.

Ошибка в отчётах на СКД и после обновления конфигурации

В схеме компоновки данных ошибка «Неверное имя колонки» (или родственное «Поле не найдено») появляется, когда поле указано в настройках отчёта, ресурсах или отборе, но отсутствует в наборе данных. Откройте схему компоновки, проверьте текст запроса набора данных и закладку «Вычисляемые поля». Если поле добавлено в настройки вручную пользователем, а в схеме его нет, — удалите его из настроек или добавьте в набор данных.

Отдельный сценарий — сохранённые настройки отчётов. Пользователь мог сохранить вариант отчёта, после чего конфигурацию обновили и поле переименовали. Старая настройка ссылается на несуществующее поле, и отчёт падает при открытии. Решение: сбросить настройки отчёта к стандартным (Ещё → Установить стандартные настройки) или удалить устаревшие пользовательские варианты.

После обновления конфигурации используйте глобальный поиск по всем модулям (Правка → Глобальный поиск) по старому имени реквизита. Так вы найдёте все места обращения, включая те, что не проявляются в типовых сценариях и всплывут только при редких операциях. Дополнительно выполните проверку конфигурации (Конфигурация → Проверка конфигурации) с включённой проверкой логической целостности — она выявит часть битых ссылок на реквизиты ещё до запуска.

Типичные ошибки при исправлении

Самая распространённая ошибка — исправить только одно место обращения, хотя колонка используется в нескольких модулях. После правки одного фрагмента сценарий проходит дальше и падает уже в другом месте, создавая ощущение «неисправимой» ошибки. Всегда выполняйте глобальный поиск по имени колонки по всей конфигурации.

Вторая ошибка — исправление «вслепую» без проверки фактической структуры. Разработчик предполагает, что колонка называется определённым образом, меняет код, а проблема остаётся, потому что реальное имя другое. Проверяйте структуру в отладчике или консоли запросов, а не по памяти.

Третья ошибка — игнорирование регистра и локализации. В коде, формируемом динамически (например, при построении выражений для СКД или обращении через Вычислить() / Выполнить()), имя колонки собирается строкой, и опечатка в ней не видна при статической проверке. Такие места требуют особенно тщательного тестирования.

Типичные ошибки
01
Исправление одного места обращения вместо глобального поиска по имени колонки — ошибка всплывёт в другом модуле
02
Правка кода по предполагаемому имени без проверки фактической структуры в отладчике — проблема останется
03
Игнорирование сохранённых пользовательских настроек отчётов после переименования полей — отчёт будет падать у пользователей
04
Отсутствие резервной копии перед переименованием реквизитов метаданных — риск потери данных при обновлении базы

Проверка результата и профилактика

После исправления пройдите полный сценарий, который вызывал ошибку, от начала до конца — а не только проблемный фрагмент. Убедитесь, что данные корректно заполняются в исправленной колонке: откройте результат запроса, форму документа или отчёт и сверьте значения с ожидаемыми. Если исправлялся запрос, проверьте его на разных наборах данных, включая пустой результат.

Для профилактики полезны три практики. Первая — использование конструктора запросов вместо написания текста вручную: он не даст сослаться на несуществующее поле. Вторая — централизованное задание имён колонок через константы или функции-конструкторы таблиц, чтобы имя существовало в одном месте. Третья — регламентная проверка конфигурации и прогон ключевых сценариев после каждого обновления, особенно если обновление затрагивало структуру метаданных.

Контрольные точки

Как проверить результат

Выполнение сценария, вызывавшего ошибку
Норма

Сценарий завершается без исключений, данные на месте

Тревожный признак

Ошибка повторяется или появляется в другом месте

Состав колонок в отладчике
Норма

Имена колонок совпадают с обращениями в коде

Тревожный признак

Колонка отсутствует или названа иначе

Отчёт после исправления СКД
Норма

Открывается со стандартными и пользовательскими настройками

Тревожный признак

Падает на сохранённом варианте настроек

Глобальный поиск по старому имени
Норма

Совпадений нет или все они осознанно оставлены

Тревожный признак

Найдены необработанные обращения

Частые вопросы

Ошибка появляется только у одного пользователя. В чём причина?

Чаще всего дело в сохранённых пользовательских настройках отчёта или формы, которые ссылаются на переименованное поле. Сбросьте настройки у этого пользователя к стандартным. Реже причина — в правах: если у пользователя нет доступа к объекту, запрос может формироваться иначе.

Можно ли обращаться к колонке, не зная заранее её имени?

Да. Используйте коллекцию колонок: перебор Для Каждого Колонка Из Таблица.Колонки Цикл или обращение по индексу. Для проверки существования применяйте Таблица.Колонки.Найти(ИмяКолонки) — метод вернёт Неопределено вместо ошибки.

После обновления конфигурации ошибка появилась в типовом коде. Что делать?

Убедитесь, что обновление конфигурации базы данных завершилось полностью и без ошибок. Если доработки выполнялись через расширения, проверьте их совместимость с новой версией: расширение может ссылаться на реквизит, изменённый поставщиком. Отключите расширения по очереди, чтобы найти источник.

Запрос в консоли работает, а в коде выдаёт ошибку имени колонки. Почему?

Вероятно, текст запроса в коде отличается от проверенного в консоли — например, собирается динамически с подстановкой параметров или условий. Выведите итоговый текст запроса перед выполнением (например, в журнал регистрации) и сравните с рабочим вариантом посимвольно.

Как найти все места, где используется реквизит табличной части?

В конфигураторе выделите реквизит в дереве метаданных и выполните «Поиск ссылок в объектах» из контекстного меню — это покажет использования в других метаданных. Для поиска в текстах модулей дополнительно используйте глобальный поиск по имени реквизита с областью «Вся конфигурация».

Ошибка возникает при загрузке из Excel. Как её предотвратить?

Перед обращением к данным проверяйте соответствие структуры файла ожидаемой: сверяйте заголовки столбцов или их количество и при несовпадении выдавайте пользователю понятное сообщение вместо обращения к несуществующей колонке. Зафиксируйте требования к шаблону файла в инструкции для пользователей.

Итог

Что важно запомнить

Ошибка «Неверное имя колонки» всегда означает рассогласование между структурой данных и обращением к ней. Локализуйте место через текст ошибки и отладчик, сверьте фактические имена колонок, исправьте все вхождения через глобальный поиск и проверьте полный сценарий. Перед изменением метаданных обязательно делайте резервную копию.