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

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

Объект в 1С: что это и как с ним работать

Что такое объект в 1С простыми словами: виды объектов конфигурации и базы данных, чем объект отличается от ссылки, как найти и изменить объект без ошибок.

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

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

Ниже разобраны все значения термина, различие между ссылкой и объектом, типовые операции с объектами в режиме пользователя и в коде, а также частые ошибки и способы их избежать.

Что такое объект конфигурации

Объект конфигурации — это строительный блок прикладного решения, который разработчик создаёт в конфигураторе. Каждый такой объект описывает структуру данных и логику работы с ними. Именно набор объектов конфигурации определяет, какие справочники, документы и отчёты будут доступны пользователю.

Основные группы объектов конфигурации:

  • Справочники — хранят условно-постоянную нормативную информацию: номенклатуру, контрагентов, сотрудников, склады.
  • Документы — фиксируют хозяйственные операции: поступления, реализации, платежи, приказы.
  • Регистры — накапливают данные для учёта и отчётности: остатки товаров, взаиморасчёты, курсы валют.
  • Перечисления — задают фиксированные списки значений (например, виды цен или ставки НДС).
  • Отчёты и обработки — формируют аналитику и выполняют сервисные операции.
  • Планы видов характеристик, планы счетов, планы обмена — специализированные объекты для аналитического и бухгалтерского учёта.

Увидеть полный список объектов конфигурации можно в конфигураторе: меню «Конфигурация» → «Открыть конфигурацию». Дерево слева и есть перечень всех объектов. В пользовательском режиме те же объекты проявляются как пункты меню разделов: «Номенклатура», «Реализация товаров», «Кассовые документы».

Объект как запись в базе данных

Второе значение термина — конкретный экземпляр данных. Когда бухгалтер говорит «открой объект», обычно имеется в виду конкретный документ или элемент справочника: накладная № 152, контрагент «ООО Ромашка», товар «Кабель ВВГ 3×2,5». Каждая такая запись уникальна и идентифицируется внутренним идентификатором (GUID).

У записей есть характерные признаки, по которым их легко отличить от объектов конфигурации:

  • у записи есть реквизиты с конкретными значениями — дата, номер, сумма, наименование;
  • запись можно пометить на удаление, провести (для документа), скопировать;
  • записей одного вида может быть сколь угодно много, тогда как объект конфигурации «Справочник.Номенклатура» в базе один.

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

Ссылка и объект: ключевое различие для разработчика

Во встроенном языке 1С работа с данными строится на паре «ссылка — объект», и путаница между ними — источник большинства ошибок начинающих.

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

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

// Получение объекта из ссылки и изменение данных

СсылкаНаТовар = Справочники.Номенклатура.НайтиПоКоду("000001");

Если Не СсылкаНаТовар.Пустая() Тогда

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

ТоварОбъект.Наименование = "Кабель ВВГнг 3x2,5";

ТоварОбъект.Записать(); // только теперь изменения попали в базу

КонецЕсли;

Три правила, которые исключают большинство проблем: изменять данные можно только через объект; после изменений обязателен вызов Записать() (для документов — Записать(РежимЗаписиДокумента.Проведение), если нужно проведение); вызов ПолучитьОбъект() для большого количества записей в цикле — дорогая операция, для чтения данных лучше использовать запросы.

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

Ссылка

Подходит для чтения реквизитов, передачи в запросы и отборы, сравнения записей. Нельзя изменять данные.

Объект

Нужен для создания, изменения и удаления записей. Требует вызова Записать() и расходует больше ресурсов.

Запрос

Оптимален для массового чтения и анализа данных без загрузки объектов в память. Не предназначен для изменения данных напрямую.

Как найти и открыть нужный объект в пользовательском режиме

Для пользователя «объект» — это то, что открывается в форме. Найти нужную запись можно несколькими способами в зависимости от того, что известно.

Порядок поиска объекта
  1. 1
    Определите вид объекта: справочник, документ или регистр — по названию в письме, задаче или печатной форме.
  2. 2
    Откройте соответствующий список через разделы меню или через «Все функции» (если раздел скрыт).
  3. 3
    Используйте поиск по наименованию, номеру или дате; в списках документов удобно ставить отбор по периоду.
  4. 4
    Если известен уникальный идентификатор или запись не находится — проверьте, не помечена ли она на удаление (включите отображение помеченных).
  5. 5
    Откройте запись двойным щелчком и проверьте ключевые реквизиты перед изменениями.

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

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

Типовые операции с объектами и их ограничения

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

Создание. Новый элемент справочника или документ создаётся кнопкой «Создать» в списке. До нажатия «Записать» или «Провести» запись в базе не существует — закрытие формы без записи потеряет введённые данные.

Изменение. Проведённый документ в типовых конфигурациях часто защищён от редактирования: сначала его нужно распровести. Даты запрета изменения данных (настройка в администрировании) блокируют правку старых периодов даже при наличии прав.

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

Копирование. Кнопка «Скопировать» (F9) создаёт новую запись на основе существующей — удобно для однотипных документов, но требует проверки дат, номеров и сумм, которые копируются из оригинала.

Типичные ошибки
01
Попытка изменить реквизит через ссылку в коде — данные не сохранятся, нужен ПолучитьОбъект() и Записать().
02
Вызов ПолучитьОбъект() в цикле по тысячам записей — резкое падение производительности; для чтения используйте запрос.
03
Пометка на удаление вместо отмены проведения документа — движения по регистрам и связанные отчёты станут некорректными.
04
Редактирование проведённого документа без распроведения — в типовых конфигурациях изменения либо заблокированы, либо создадут рассинхронизацию с движениями.
05
Удаление объекта конфигурации без выгрузки базы — потеря всех данных этого объекта безвозвратно.

Как проверить результат работы с объектом

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

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

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

Запись в списке
Норма

Объект виден в списке, реквизиты соответствуют введённым

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

Записи нет или данные старые — вероятно, Записать() не вызван или транзакция отменена

Проведение документа
Норма

Документ имеет статус проведения, движения видны через «Ещё» → «Движения документа»

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

Значок показывает непроведённый документ, движений нет

Ссылочная целостность
Норма

Нет битых ссылок вида «Объект не найден» в связанных записях

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

В полях ссылок отображается «Объект не найден <...>» — запись была удалена физически

Отчёты по регистрам
Норма

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

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

Отчёт не изменился — документ не проведён или проведён не в том периоде

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

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

Чем объект конфигурации отличается от объекта базы данных?

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

Почему в коде нельзя изменить данные через ссылку?

Ссылка содержит только идентификатор записи и предназначена для чтения и сравнения. Для изменения нужно получить объект методом ПолучитьОбъект(), изменить его свойства и вызвать Записать() — только тогда изменения попадут в базу.

Что означает надпись «Объект не найден» в поле документа?

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

Можно ли восстановить удалённый объект?

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

Почему «Конфликт блокировок» при записи объекта и что делать?

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

Где посмотреть, какие данные породил документ?

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

Итог

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

«Объект» в 1С имеет три значения: элемент конфигурации, запись в базе и программная сущность для изменения данных. Главное практическое правило: читают через ссылку или запрос, изменяют только через объект с вызовом Записать(). Удаление объектов конфигурации и физическое удаление записей — операции, требующие резервной копии.