Разработка и Конфигурация · 10 мин
Что значит точка в 1С: оператор доступа к объектам и другие значения
Что значит точка в 1С: обращение к свойствам и методам объектов, точка в числах и запросах, типичные ошибки и примеры кода для начинающих разработчиков.
Точка в 1С — один из самых часто встречающихся символов, и новички нередко путаются, потому что у неё несколько разных значений в зависимости от контекста. Чаще всего вопрос «что значит точка» возникает при чтении кода на встроенном языке 1С, где точка разделяет объект и его свойство или метод: например, Документ.Номер или Запрос.Выполнить().
Помимо языка программирования, точка встречается в числовых литералах, в тексте запросов, в путях к реквизитам при построении выражений и даже в именах файлов поставки конфигурации. Понимание всех этих контекстов избавляет от ошибок синтаксиса и помогает быстрее читать чужой код.
Ниже разобраны основные сценарии использования точки в 1С: оператор доступа к свойствам и методам, разделитель в запросах, десятичный разделитель в числах, а также типичные ошибки, которые приводят к сообщениям «Поле объекта не обнаружено» и «Ожидается идентификатор».
Точка как оператор доступа к свойствам и методам
Основное значение точки во встроенном языке 1С — оператор доступа к членам объекта. Слева от точки стоит объект (переменная, реквизит, элемент коллекции), справа — имя свойства или метода этого объекта. Так работает большинство конструкций прикладного кода.
ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДатаСеанса();
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
В этом примере точка используется трижды с разным смыслом: Документы.РеализацияТоваровУслуг — обращение к менеджеру конкретного вида документов через глобальную коллекцию, ДокументОбъект.Дата — чтение и запись свойства, ДокументОбъект.Записать() — вызов метода. Визуально синтаксис одинаков, но за ним стоят разные механизмы платформы.
Точки могут идти цепочкой: СтрокаТаблицы.Номенклатура.Наименование. Каждая точка означает переход на уровень глубже — от строки табличной части к ссылке на элемент справочника, а от ссылки к реквизиту этого элемента. Важно понимать, что обращение «через точку» к реквизитам ссылки в цикле приводит к множеству обращений к базе данных и замедляет код — в таких случаях правильнее использовать запрос.
Точка в тексте запроса
В языке запросов 1С точка — разделитель между псевдонимом таблицы и именем поля. Конструкция Товары.Ссылка означает поле «Ссылка» из источника данных с псевдонимом «Товары». Без точки запрос с несколькими таблицами был бы неоднозначным: платформа не смогла бы понять, из какой таблицы брать поле.
ВЫБРАТЬ
Реализация.Номенклатура КАК Номенклатура,
Реализация.Номенклатура.Артикул КАК Артикул,
СУММА(Реализация.Количество) КАК Количество
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Реализация
СГРУППИРОВАТЬ ПО
Реализация.Номенклатура,
Реализация.Номенклатура.Артикул
Здесь видно ещё одно применение точки — «разыменование» ссылки: Реализация.Номенклатура.Артикул обращается к реквизиту элемента справочника через поле ссылочного типа. В запросах это допустимо и удобно, но каждая такая цепочка неявно добавляет соединение с таблицей справочника, что влияет на производительность при больших объёмах данных.
Отдельный случай — обращение к табличной части документа: Документ.РеализацияТоваровУслуг.Товары. Точка отделяет имя вида документа от имени табличной части. Ошибка в имени табличной части или лишняя точка приведут к ошибке исполнения запроса с указанием позиции в тексте.
Точка в числах и датах
В литералах встроенного языка точка — десятичный разделитель: Ставка = 0.2; или Коэффициент = 1.5;. При этом региональные настройки Windows, где разделителем может быть запятая, на код не влияют: в тексте модуля всегда используется точка. Если написать 1,5, компилятор выдаст синтаксическую ошибку, поскольку запятая в языке — разделитель параметров и элементов списка.
Обратная ситуация возникает при вводе чисел пользователем в формы: там десятичный разделитель зависит от региональных настроек сеанса, и в одних базах принимается запятая, в других — точка. При программном преобразовании строки в число функцией Число() нужно учитывать, какой разделитель ожидается, иначе получите либо ошибку, либо неожиданное значение.
В литералах даты точка тоже допустима как разделитель: '01.01.2026' — корректный литерал даты наряду с '20260101'. Однако формат с точками чувствителен к порядку «день.месяц.год», и в переносимом коде надёжнее использовать формат ГГГГММДД без разделителей.
Как читать выражения с точками: практический подход
Чтобы уверенно читать код с точками, полезно мысленно заменять точку словом «у» или «из»: Заказ.Контрагент.ИНН читается как «ИНН у контрагента у заказа». Такой приём сразу показывает направление движения по данным — от конкретного объекта к его деталям.
Определить тип того, что стоит слева от точки, помогает контекстная подсказка конфигуратора: поставьте курсор после точки и нажмите Ctrl+Пробел — платформа покажет список доступных свойств и методов. Если список пуст или неожиданный, значит, тип переменной отличается от предполагаемого, и стоит проверить код выше по тексту.
- 1Найдите, где объявлена или заполняется переменная слева от точки — это покажет её тип.
- 2Поставьте курсор после точки и нажмите Ctrl+Пробел, чтобы увидеть доступные свойства и методы.
- 3Откройте синтакс-помощник (Ctrl+F1) на имени свойства или метода и прочитайте описание.
- 4Если точек несколько, разбирайте цепочку слева направо, определяя тип результата каждого шага.
Типичные ошибки, связанные с точкой
Самая частая ошибка — «Поле объекта не обнаружено». Она возникает, когда справа от точки указано имя, которого нет у объекта: опечатка в имени реквизита, обращение к реквизиту, удалённому из конфигурации, или обращение к свойству у значения неподходящего типа. Проверьте точное написание имени в конфигураторе и тип значения в отладчике.
Вторая группа ошибок — обращение через точку к значению Неопределено или к пустой ссылке. Выражение Строка.Номенклатура.Наименование упадёт с ошибкой, если переменная Строка не инициализирована. Перед разыменованием проверяйте значение: Если ЗначениеЗаполнено(Ссылка) Тогда ... КонецЕсли;.
Третья типичная ситуация — точка вместо запятой или наоборот при перечислении параметров метода: Записать(РежимЗаписиДокумента.Проведение. Истина) вместо запятой. Компилятор сообщит «Ожидается символ ')'» или подобную ошибку, которая указывает на строку, но не всегда очевидно — на точку.
Когда точка влияет на производительность
Каждое обращение через точку к реквизиту ссылочного значения в серверном коде — это обращение к базе данных. Цикл по тысяче строк с выражением Строка.Товар.Артикул выполнит тысячу отдельных чтений из СУБД. Такой код работает, но медленно, и проблема проявляется только на реальных объёмах.
Правильная альтернатива — один запрос с выборкой нужных полей через разыменование в тексте запроса: запрос получит все данные за одно обращение к базе. Правило простое: точка в запросе — нормально, массовое разыменование точкой в коде внутри цикла — повод для оптимизации.
Как выбрать действие
Другие места, где встречается точка
Точка используется и вне кода. В полном имени объекта метаданных она разделяет вид объекта и его имя: Справочник.Номенклатура, Документ.ЗаказКлиента — такие строки передаются, например, в метод Метаданные.НайтиПоПолномуИмени() или используются при настройке прав доступа в ролях.
В расширениях файлов поставки и выгрузки точка отделяет имя от расширения: .cf, .dt, .epf, .erf. В настройках СКД и построителя выражений точка обозначает путь к полю: Номенклатура.ОсновнойПоставщик. Во всех этих случаях смысл един — точка отделяет уровень вложенности от следующего уровня.
Что важно запомнить
Точка в 1С — универсальный разделитель уровней: объект и его свойство в коде, псевдоним и поле в запросе, вид метаданных и имя объекта, целая и дробная часть числа. Читайте точку как «у» — и структура любого выражения станет понятной.
Часто задаваемые вопросы
Что означает запись вида «Документы.РеализацияТоваровУслуг»?
Это обращение к менеджеру конкретного вида документов через глобальную коллекцию «Документы». Точка отделяет имя коллекции от имени вида документа, заданного в конфигураторе. Через менеджер доступны методы СоздатьДокумент(), НайтиПоНомеру(), ПустаяСсылка() и другие.
Почему возникает ошибка «Поле объекта не обнаружено»?
Справа от точки указано имя, которого нет у объекта: опечатка, удалённый из конфигурации реквизит или значение не того типа, который ожидался. Проверьте тип переменной в отладчике и сверьте имя реквизита с метаданными в конфигураторе.
Какой десятичный разделитель использовать в коде 1С — точку или запятую?
В тексте модулей всегда точка: 0.2, 1.5. Запятая в числе вызовет синтаксическую ошибку. В пользовательских полях ввода разделитель зависит от региональных настроек сеанса и может отличаться от правил кода.
Опасно ли использовать цепочки через точку в цикле?
Не опасно, но медленно: каждое обращение к реквизиту ссылки через точку — отдельное чтение из базы. Для обработки коллекций строк правильнее написать запрос с разыменованием полей, который получит всё за одно обращение к СУБД.
Что значит точка в выражении «Справочник.Номенклатура»?
Это полное имя объекта метаданных: слева вид объекта, справа его имя в конфигурации. Такие строки используются в методах работы с метаданными, при настройке прав и в универсальных механизмах обмена.
Как быстро узнать, какие свойства доступны после точки?
Поставьте курсор после точки в модуле и нажмите Ctrl+Пробел — конфигуратор покажет список свойств и методов объекта. Для подробного описания выделите имя и нажмите Ctrl+F1, чтобы открыть синтакс-помощник.