Если вы только начинаете работать с платформой 1С:Предприятие, то термин «объект» может показаться расплывчатым. В разных контекстах под ним понимают и справочники, и документы, и даже отдельные записи в базе. На практике же объект в 1С — это фундаментальное понятие, без которого невозможно ни программирование, ни администрирование системы. В этой статье мы разберём, что скрывается за этим термином, какие бывают виды объектов, как они взаимодействуют между собой и где их можно встретить в реальных задачах.
Важно отличать объекты от элементов конфигурации (например, от справочника «Номенклатура» как такового). Объект — это конкретный экземпляр: запись в справочнике, документ «Поступление товаров», элемент перечисления. Именно с объектами работают как пользователи (заполняя формы), так и разработчики (пиша код на встроенном языке). Без понимания этой разницы сложно осваивать даже базовые операции — от создания отчётов до написания обработок.
Статья будет полезна и начинающим программистам 1С, и опытным пользователям, которые хотят глубже понять, как устроена система. Мы не будем углубляться в низкоуровневые детали (например, в физическое хранение объектов в базе данных), но дадим чёткое представление о том, какие объекты существуют в 1С, как они классифицируются и где применяются на практике.
Что такое объект в 1С: определение и ключевые признаки
В 1С:Предприятие объект — это любая сущность, которая хранит данные и/или предоставляет методы для работы с ними. Проще говоря, это «вещь», с которой можно взаимодействовать: создать, изменить, удалить или получить её свойства. Объекты делятся на две большие группы:
- 📄 Объекты конфигурации — шаблоны, заданные в режиме
Конфигуратор(например, справочник «Контрагенты» или документ «Реализация»). - 📌 Объекты данных — конкретные записи, созданные на основе этих шаблонов (например, карточка контрагента «ООО Ромашка» или документ «Реализация №123 от 10.05.2026»).
Главное отличие объекта от элемента конфигурации — динамичность. Элемент конфигурации (справочник, документ, регистр) существует всегда, пока не удалён разработчиком. Объект же создаётся и уничтожается в процессе работы программы. Например, когда бухгалтер вводит новый документ «Платёжное поручение», он работает именно с объектом данных.
Все объекты в 1С имеют:
- 🔑 Идентификатор (уникальный код или ссылку).
- 📋 Свойства (реквизиты, например, «Наименование» или «Дата»).
- ⚙️ Методы (действия, которые можно выполнить, например,
Провести()илиЗаписать()).
⚠️ Внимание: В коде 1С объекты часто путают с коллекциями объектов (например, результат выборки Справочники.Номенклатура.Выбрать()). Коллекция — это набор объектов, а не сам объект. Ошибка в этом различии может привести к ошибкам типа «Недопустимое значение параметра (параметр имеет тип Неопределён)».
Виды объектов в 1С: классификация и примеры
Объекты в 1С:Предприятие можно классифицировать по нескольким критериям. Рассмотрим основные группы, которые встречаются в повседневной работе.
1. По назначению
| Тип объекта | Примеры | Где используется |
|---|---|---|
| Справочники | Справочник.Контрагенты, Справочник.Номенклатура |
Хранение постоянной информации (клиенты, товары, сотрудники). |
| Документы | Документ.ПоступлениеТоваров, Документ.Реализация |
Фиксация хозяйственных операций (приход, расход, перемещение). |
| Регистры | РегистрНакопления.ОстаткиТоваров, РегистрСведений.ЦеныНоменклатуры |
Аналитика и расчёты (остатки, обороты, цены). |
| Перечисления | Перечисление.ВидыОплат (наличные, безнал) |
Фиксированные наборы значений (статусы, типы операций). |
| Отчёты и обработки | Отчет.ОборотноСальдоваяВедомость, Обработка.ЗагрузкаДанных |
Анализ данных и автоматизация задач. |
2. По способу хранения
Объекты также делятся на:
- 💾 Постоянные — хранятся в базе данных (справочники, документы, регистры).
- 🖥️ Временные — создаются в памяти на время сеанса (например, объект
СтруктураилиТаблицаЗначений).
Пример временного объекта — результат запроса, который существует только пока выполняется процедура. После закрытия сеанса он исчезает.
Как создать объект в 1С: пошаговая инструкция
Создание объекта зависит от его типа. Рассмотрим два самых распространённых сценария: создание элемента справочника и нового документа.
1. Создание элемента справочника
Чтобы добавить новую запись в справочник (например, «Контрагенты»), можно использовать:
- 🖱️ Интерактивный режим — через интерфейс программы (меню
Справочники → Контрагенты → Создать). - 💻 Программный код — с помощью метода
СоздатьЭлемент().
Пример кода для создания нового контрагента:
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = "ООО Весна";
НовыйКонтрагент.ИНН = "1234567890";
НовыйКонтрагент.Записать();
2. Создание документа
Для документов логика аналогична. Например, чтобы создать документ «Поступление товаров»:
НовоеПоступление = Документы.ПоступлениеТоваров.СоздатьДокумент();
НовоеПоступление.Дата = ТекущаяДата();
НовоеПоступление.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Весна");
НовоеПоступление.Записать();
Убедиться, что справочник/документ не заблокирован|Проверить права доступа|Заполнить обязательные реквизиты|Сохранить изменения (Записать())
-->
⚠️ Внимание: При программном создании объектов всегда проверяйте результат операции. Например, послеЗаписать()можно использовать конструкциюЕсли НовоеПоступление.ЭтоГруппа() Тогда..., чтобы избежать ошибок с группами справочников.
Работа с объектами: основные методы и свойства
Каждый объект в 1С имеет набор стандартных методов и свойств. Рассмотрим самые востребованные из них.
Свойства объектов
Свойства (или реквизиты) — это данные, которые хранит объект. Например, у документа «Реализация» могут быть свойства:
- 📅
Дата— дата создания документа. - 🏢
Контрагент— ссылка на элемент справочника. - 💰
СуммаДокумента— рассчитанное значение.
Доступ к свойствам осуществляется через точку:
Сообщить(НовоеПоступление.Дата); // Выведет текущую дату
Методы объектов
Методы — это действия, которые можно выполнить с объектом. Ключевые методы:
- 📝
Записать()— сохраняет изменения в базе. - 🗑️
Удалить()— удаляет объект (требует прав). - 🔄
Провести()— проводит документ (для документов). - 🔍
НайтиПоНаименованию()— ищет объект по имени.
Пример использования метода Провести():
Если НовоеПоступление.Проведен() Тогда
НовоеПоступление.ОтменитьПроведение();
КонецЕсли;
НовоеПоступление.Провести();
Попытка
НовыйДокумент.Записать();
Исключение
Сообщить("Ошибка записи: " + ОписаниеОшибки());
КонецПопытки;
-->
Взаимодействие объектов: ссылки и коллекции
Объекты в 1С редко существуют изолированно — они связаны между собой. Основные способы взаимодействия:
1. Ссылки на объекты
Ссылка — это уникальный идентификатор объекта, по которому к нему можно обратиться. Например, в документе «Реализация» поле Контрагент хранит ссылку на элемент справочника «Контрагенты». Получение ссылки:
СсылкаНаКонтрагента = НовоеПоступление.Контрагент;
По ссылке можно получить сам объект:
КонтрагентОбъект = СсылкаНаКонтрагента.ПолучитьОбъект();
2. Коллекции объектов
Коллекция — это набор объектов одного типа. Например, результат выборки из справочника или табличная часть документа. Примеры коллекций:
- 📋
Справочники.Номенклатура.Выбрать()— выборка всех элементов справочника. - 📦
НовоеПоступление.Товары— табличная часть документа.
Работа с коллекциями обычно ведётся в цикле:
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
⚠️ Внимание: При работе с большими коллекциями (тысячи записей) используйтеВыбратьПакетом()илиУстановитьФильтр(), чтобы избежать перегрузки памяти. Например:Выборка = Справочники.Номенклатура.Выбрать();Выборка.УстановитьФильтр(Новый Структура("ВидыНоменклатуры", Перечисление.ВидыНоменклатуры.Товар));
Типичные ошибки при работе с объектами в 1С
Даже опытные разработчики иногда допускают ошибки при взаимодействии с объектами. Рассмотрим самые распространённые из них и способы их избежать.
1. Пустые ссылки (Неопределён)
Ошибка возникает, когда пытаешься обратиться к свойству или методу объекта, который не существует. Например:
Контрагент = Неопределено;
Сообщить(Контрагент.Наименование); // Ошибка!
Решение: всегда проверяйте объект на Неопределено:
Если Контрагент = Неопределено Тогда
Сообщить("Контрагент не найден!");
Иначе
Сообщить(Контрагент.Наименование);
КонецЕсли;
2. Несохранённые изменения
Если забыть вызвать Записать() после изменения объекта, все правки пропадут. Например:
НовыйКонтрагент.Наименование = "ООО Лето";
// Забыли Записать()!
Решение: используйте транзакции для группировки операций:
НачатьТранзакцию();
Попытка
НовыйКонтрагент.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщить("Ошибка записи!");
КонецПопытки;
3. Блокировки объектов
Если объект заблокирован другим пользователем, попытка его изменить приведёт к ошибке. Например:
НовыйКонтрагент.Записать(); // Ошибка: "Объект заблокирован!"
Решение: используйте метод ПолучитьОбъектДляИзменения() с таймаутом:
Объект = Справочники.Контрагенты.ПолучитьОбъектДляИзменения(Ссылка, 10); // Ждём 10 секунд
Что делать, если объект заблокирован надолго?
Если объект заблокирован более 5 минут, проверьте:
1. Не «завис» ли сеанс другого пользователя (в Администрирование → Активные пользователи).
2. Нет ли длинных транзакций в базе (можно увидеть в Журнале регистрации).
3. Попробуйте перезапустить сервер 1С:Предприятие (если у вас есть права).
Практические примеры использования объектов
Рассмотрим несколько реальных задач, где работа с объектами необходима.
1. Автоматическое создание документа на основании
Допустим, нужно создать документ «Реализация» на основании «Заказа клиента». Код может выглядеть так:
Заказ = Документы.ЗаказКлиента.НайтиПоНомеру("000123");
Если Заказ = Неопределено Тогда
Сообщить("Заказ не найден!");
Иначе
Реализация = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
Реализация.ЗаказКлиента = Заказ;
Реализация.Контрагент = Заказ.Контрагент;
Реализация.ЗаполнитьТоварыПоЗаказу();
Реализация.Записать();
Реализация.Провести();
КонецЕсли;
2. Массовое обновление справочника
Предположим, нужно для всех номенклатур в группе «Канцтовары» установить новый вид номенклатуры. Код:
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа() И Выборка.Наименование = "Канцтовары" Тогда
Подчинённые = Выборка.ПолучитьГруппу();
Пока Подчинённые.Следующий() Цикл
Товар = Подчинённые.ПолучитьОбъект();
Товар.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Товар;
Товар.Записать();
КонецЦикла;
КонецЕсли;
КонецЦикла;
3. Поиск дубликатов в справочнике
Чтобы найти дублирующиеся наименования в справочнике «Контрагенты», можно использовать следующий код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Наименование,
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГРУППИРОВАТЬ ПО
| Наименование
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(*) > 1";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(СтрШаблон("Дубликат: %1 (количество: %2)", Выборка.Наименование, Выборка.Количество));
КонецЦикла;
При массовых операциях с объектами всегда тестируйте код на копии базы. Ошибка в цикле может привести к потере данных или зависанию системы.
FAQ: Частые вопросы об объектах в 1С
🔹 Как отличить объект от элемента конфигурации?
Элемент конфигурации — это шаблон (например, справочник «Номенклатура»), а объект — конкретная запись в этом справочнике (например, товар «Стул офисный»). В коде элемент конфигурации доступен через Мetadata.Справочники.Номенклатура, а объект — через Справочники.Номенклатура.НайтиПоНаименованию("Стул офисный").
🔹 Можно ли удалить объект, если он используется в других документах?
Нет, если объект ссылается на другие данные (например, номенклатура используется в документах), то прямая попытка удаления приведёт к ошибке. В этом случае нужно:
- Найти все ссылки на объект (например, через отчёт «Поиск ссылок»).
- Удалить или переназначить зависимости.
- Только после этого удалять объект.
🔹 Как получить все свойства объекта динамически?
Используйте метод MetaData() для получения метаданных объекта. Пример:
МетаДанные = Справочники.Контрагенты.MetaData();
Для Каждого Реквизит Из МетаДанные.Реквизиты Цикл
Сообщить(Реквизит.Имя);
КонецЦикла;
🔹 Почему при записи объекта возникает ошибка «Объект не найден»?
Эта ошибка появляется, если:
- Вы пытаетесь записать объект, который был удалён другим пользователем.
- Ссылка на объект устарела (например, после восстановления базы из резервной копии).
- Не хватает прав на запись.
Решение: проверьте актуальность ссылки и права доступа.
🔹 Как скопировать объект в 1С?
Для копирования объекта используйте метод Копировать(). Пример для документа:
КопияДокумента = ИсходныйДокумент.Копировать();
КопияДокумента.Дата = ТекущаяДата();
КопияДокумента.Номер = "";
КопияДокумента.Записать();
Для справочников аналогично используется Справочники.ИмяСправочника.СоздатьЭлемент() с последующим копированием свойств.