Если вы только начинаете работать с платформой 1С:Предприятие, то термин «объект» может показаться расплывчатым. В разных контекстах под ним понимают и справочники, и документы, и даже отдельные записи в базе. На практике же объект в 1С — это фундаментальное понятие, без которого невозможно ни программирование, ни администрирование системы. В этой статье мы разберём, что скрывается за этим термином, какие бывают виды объектов, как они взаимодействуют между собой и где их можно встретить в реальных задачах.

Важно отличать объекты от элементов конфигурации (например, от справочника «Номенклатура» как такового). Объект — это конкретный экземпляр: запись в справочнике, документ «Поступление товаров», элемент перечисления. Именно с объектами работают как пользователи (заполняя формы), так и разработчики (пиша код на встроенном языке). Без понимания этой разницы сложно осваивать даже базовые операции — от создания отчётов до написания обработок.

Статья будет полезна и начинающим программистам , и опытным пользователям, которые хотят глубже понять, как устроена система. Мы не будем углубляться в низкоуровневые детали (например, в физическое хранение объектов в базе данных), но дадим чёткое представление о том, какие объекты существуют в 1С, как они классифицируются и где применяются на практике.

Что такое объект в 1С: определение и ключевые признаки

В 1С:Предприятие объект — это любая сущность, которая хранит данные и/или предоставляет методы для работы с ними. Проще говоря, это «вещь», с которой можно взаимодействовать: создать, изменить, удалить или получить её свойства. Объекты делятся на две большие группы:

  • 📄 Объекты конфигурации — шаблоны, заданные в режиме Конфигуратор (например, справочник «Контрагенты» или документ «Реализация»).
  • 📌 Объекты данных — конкретные записи, созданные на основе этих шаблонов (например, карточка контрагента «ООО Ромашка» или документ «Реализация №123 от 10.05.2026»).

Главное отличие объекта от элемента конфигурации — динамичность. Элемент конфигурации (справочник, документ, регистр) существует всегда, пока не удалён разработчиком. Объект же создаётся и уничтожается в процессе работы программы. Например, когда бухгалтер вводит новый документ «Платёжное поручение», он работает именно с объектом данных.

Все объекты в 1С имеют:

  • 🔑 Идентификатор (уникальный код или ссылку).
  • 📋 Свойства (реквизиты, например, «Наименование» или «Дата»).
  • ⚙️ Методы (действия, которые можно выполнить, например, Провести() или Записать()).
⚠️ Внимание: В коде объекты часто путают с коллекциями объектов (например, результат выборки Справочники.Номенклатура.Выбрать()). Коллекция — это набор объектов, а не сам объект. Ошибка в этом различии может привести к ошибкам типа «Недопустимое значение параметра (параметр имеет тип Неопределён)».

Виды объектов в 1С: классификация и примеры

Объекты в 1С:Предприятие можно классифицировать по нескольким критериям. Рассмотрим основные группы, которые встречаются в повседневной работе.

1. По назначению

Тип объекта Примеры Где используется
Справочники Справочник.Контрагенты, Справочник.Номенклатура Хранение постоянной информации (клиенты, товары, сотрудники).
Документы Документ.ПоступлениеТоваров, Документ.Реализация Фиксация хозяйственных операций (приход, расход, перемещение).
Регистры РегистрНакопления.ОстаткиТоваров, РегистрСведений.ЦеныНоменклатуры Аналитика и расчёты (остатки, обороты, цены).
Перечисления Перечисление.ВидыОплат (наличные, безнал) Фиксированные наборы значений (статусы, типы операций).
Отчёты и обработки Отчет.ОборотноСальдоваяВедомость, Обработка.ЗагрузкаДанных Анализ данных и автоматизация задач.

2. По способу хранения

Объекты также делятся на:

  • 💾 Постоянные — хранятся в базе данных (справочники, документы, регистры).
  • 🖥️ Временные — создаются в памяти на время сеанса (например, объект Структура или ТаблицаЗначений).

Пример временного объекта — результат запроса, который существует только пока выполняется процедура. После закрытия сеанса он исчезает.

📊 С какими объектами 1С вы работаете чаще?
Справочники
Документы
Регистры
Отчёты
Другое

Как создать объект в 1С: пошаговая инструкция

Создание объекта зависит от его типа. Рассмотрим два самых распространённых сценария: создание элемента справочника и нового документа.

1. Создание элемента справочника

Чтобы добавить новую запись в справочник (например, «Контрагенты»), можно использовать:

  • 🖱️ Интерактивный режим — через интерфейс программы (меню Справочники → Контрагенты → Создать).
  • 💻 Программный код — с помощью метода СоздатьЭлемент().

Пример кода для создания нового контрагента:

НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();

НовыйКонтрагент.Наименование = "ООО Весна";

НовыйКонтрагент.ИНН = "1234567890";

НовыйКонтрагент.Записать();

2. Создание документа

Для документов логика аналогична. Например, чтобы создать документ «Поступление товаров»:

НовоеПоступление = Документы.ПоступлениеТоваров.СоздатьДокумент();

НовоеПоступление.Дата = ТекущаяДата();

НовоеПоступление.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Весна");

НовоеПоступление.Записать();

Убедиться, что справочник/документ не заблокирован|Проверить права доступа|Заполнить обязательные реквизиты|Сохранить изменения (Записать())

-->

⚠️ Внимание: При программном создании объектов всегда проверяйте результат операции. Например, после Записать() можно использовать конструкцию Если НовоеПоступление.ЭтоГруппа() Тогда..., чтобы избежать ошибок с группами справочников.

Работа с объектами: основные методы и свойства

Каждый объект в имеет набор стандартных методов и свойств. Рассмотрим самые востребованные из них.

Свойства объектов

Свойства (или реквизиты) — это данные, которые хранит объект. Например, у документа «Реализация» могут быть свойства:

  • 📅 Дата — дата создания документа.
  • 🏢 Контрагент — ссылка на элемент справочника.
  • 💰 СуммаДокумента — рассчитанное значение.

Доступ к свойствам осуществляется через точку:

Сообщить(НовоеПоступление.Дата); // Выведет текущую дату

Методы объектов

Методы — это действия, которые можно выполнить с объектом. Ключевые методы:

  • 📝 Записать() — сохраняет изменения в базе.
  • 🗑️ Удалить() — удаляет объект (требует прав).
  • 🔄 Провести() — проводит документ (для документов).
  • 🔍 НайтиПоНаименованию() — ищет объект по имени.

Пример использования метода Провести():

Если НовоеПоступление.Проведен() Тогда

НовоеПоступление.ОтменитьПроведение();

КонецЕсли;

НовоеПоступление.Провести();

Попытка

НовыйДокумент.Записать();

Исключение

Сообщить("Ошибка записи: " + ОписаниеОшибки());

КонецПопытки;

-->

Взаимодействие объектов: ссылки и коллекции

Объекты в редко существуют изолированно — они связаны между собой. Основные способы взаимодействия:

1. Ссылки на объекты

Ссылка — это уникальный идентификатор объекта, по которому к нему можно обратиться. Например, в документе «Реализация» поле Контрагент хранит ссылку на элемент справочника «Контрагенты». Получение ссылки:

СсылкаНаКонтрагента = НовоеПоступление.Контрагент;

По ссылке можно получить сам объект:

КонтрагентОбъект = СсылкаНаКонтрагента.ПолучитьОбъект();

2. Коллекции объектов

Коллекция — это набор объектов одного типа. Например, результат выборки из справочника или табличная часть документа. Примеры коллекций:

  • 📋 Справочники.Номенклатура.Выбрать() — выборка всех элементов справочника.
  • 📦 НовоеПоступление.Товары — табличная часть документа.

Работа с коллекциями обычно ведётся в цикле:

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Наименование);

КонецЦикла;

⚠️ Внимание: При работе с большими коллекциями (тысячи записей) используйте ВыбратьПакетом() или УстановитьФильтр(), чтобы избежать перегрузки памяти. Например:
Выборка = Справочники.Номенклатура.Выбрать();

Выборка.УстановитьФильтр(Новый Структура("ВидыНоменклатуры", Перечисление.ВидыНоменклатуры.Товар));

Типичные ошибки при работе с объектами в 1С

Даже опытные разработчики иногда допускают ошибки при взаимодействии с объектами. Рассмотрим самые распространённые из них и способы их избежать.

1. Пустые ссылки (Неопределён)

Ошибка возникает, когда пытаешься обратиться к свойству или методу объекта, который не существует. Например:

Контрагент = Неопределено;

Сообщить(Контрагент.Наименование); // Ошибка!

Решение: всегда проверяйте объект на Неопределено:

Если Контрагент = Неопределено Тогда

Сообщить("Контрагент не найден!");

Иначе

Сообщить(Контрагент.Наименование);

КонецЕсли;

2. Несохранённые изменения

Если забыть вызвать Записать() после изменения объекта, все правки пропадут. Например:

НовыйКонтрагент.Наименование = "ООО Лето";

// Забыли Записать()!

Решение: используйте транзакции для группировки операций:

НачатьТранзакцию();

Попытка

НовыйКонтрагент.Записать();

ЗафиксироватьТранзакцию();

Исключение

ОтменитьТранзакцию();

Сообщить("Ошибка записи!");

КонецПопытки;

3. Блокировки объектов

Если объект заблокирован другим пользователем, попытка его изменить приведёт к ошибке. Например:

НовыйКонтрагент.Записать(); // Ошибка: "Объект заблокирован!"

Решение: используйте метод ПолучитьОбъектДляИзменения() с таймаутом:

Объект = Справочники.Контрагенты.ПолучитьОбъектДляИзменения(Ссылка, 10); // Ждём 10 секунд
Что делать, если объект заблокирован надолго?

Если объект заблокирован более 5 минут, проверьте:

1. Не «завис» ли сеанс другого пользователя (в Администрирование → Активные пользователи).

2. Нет ли длинных транзакций в базе (можно увидеть в Журнале регистрации).

3. Попробуйте перезапустить сервер 1С:Предприятие (если у вас есть права).

Практические примеры использования объектов

Рассмотрим несколько реальных задач, где работа с объектами необходима.

1. Автоматическое создание документа на основании

Допустим, нужно создать документ «Реализация» на основании «Заказа клиента». Код может выглядеть так:

Заказ = Документы.ЗаказКлиента.НайтиПоНомеру("000123");

Если Заказ = Неопределено Тогда

Сообщить("Заказ не найден!");

Иначе

Реализация = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

Реализация.ЗаказКлиента = Заказ;

Реализация.Контрагент = Заказ.Контрагент;

Реализация.ЗаполнитьТоварыПоЗаказу();

Реализация.Записать();

Реализация.Провести();

КонецЕсли;

2. Массовое обновление справочника

Предположим, нужно для всех номенклатур в группе «Канцтовары» установить новый вид номенклатуры. Код:

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.ЭтоГруппа() И Выборка.Наименование = "Канцтовары" Тогда

Подчинённые = Выборка.ПолучитьГруппу();

Пока Подчинённые.Следующий() Цикл

Товар = Подчинённые.ПолучитьОбъект();

Товар.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Товар;

Товар.Записать();

КонецЦикла;

КонецЕсли;

КонецЦикла;

3. Поиск дубликатов в справочнике

Чтобы найти дублирующиеся наименования в справочнике «Контрагенты», можно использовать следующий код:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Наименование,

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник.Контрагенты КАК Контрагенты

|ГРУППИРОВАТЬ ПО

| Наименование

|ИМЕЮЩИЕ

| КОЛИЧЕСТВО(*) > 1";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(СтрШаблон("Дубликат: %1 (количество: %2)", Выборка.Наименование, Выборка.Количество));

КонецЦикла;

💡

При массовых операциях с объектами всегда тестируйте код на копии базы. Ошибка в цикле может привести к потере данных или зависанию системы.

FAQ: Частые вопросы об объектах в 1С

🔹 Как отличить объект от элемента конфигурации?

Элемент конфигурации — это шаблон (например, справочник «Номенклатура»), а объект — конкретная запись в этом справочнике (например, товар «Стул офисный»). В коде элемент конфигурации доступен через Мetadata.Справочники.Номенклатура, а объект — через Справочники.Номенклатура.НайтиПоНаименованию("Стул офисный").

🔹 Можно ли удалить объект, если он используется в других документах?

Нет, если объект ссылается на другие данные (например, номенклатура используется в документах), то прямая попытка удаления приведёт к ошибке. В этом случае нужно:

  1. Найти все ссылки на объект (например, через отчёт «Поиск ссылок»).
  2. Удалить или переназначить зависимости.
  3. Только после этого удалять объект.
🔹 Как получить все свойства объекта динамически?

Используйте метод MetaData() для получения метаданных объекта. Пример:

МетаДанные = Справочники.Контрагенты.MetaData();

Для Каждого Реквизит Из МетаДанные.Реквизиты Цикл

Сообщить(Реквизит.Имя);

КонецЦикла;

🔹 Почему при записи объекта возникает ошибка «Объект не найден»?

Эта ошибка появляется, если:

  • Вы пытаетесь записать объект, который был удалён другим пользователем.
  • Ссылка на объект устарела (например, после восстановления базы из резервной копии).
  • Не хватает прав на запись.

Решение: проверьте актуальность ссылки и права доступа.

🔹 Как скопировать объект в 1С?

Для копирования объекта используйте метод Копировать(). Пример для документа:

КопияДокумента = ИсходныйДокумент.Копировать();

КопияДокумента.Дата = ТекущаяДата();

КопияДокумента.Номер = "";

КопияДокумента.Записать();

Для справочников аналогично используется Справочники.ИмяСправочника.СоздатьЭлемент() с последующим копированием свойств.