Разработка и Конфигурация · 11 мин
Объект в 1С: что это и как с ним работать
Что такое объект в 1С простыми словами: виды объектов конфигурации и базы данных, чем объект отличается от ссылки, как найти и изменить объект без ошибок.
Термин «объект» в 1С используется сразу в нескольких значениях, и именно это чаще всего путает новичков. В одном случае под объектом понимают элемент конфигурации — справочник, документ, регистр, отчёт, который виден в дереве конфигуратора. В другом — конкретную запись в базе данных: конкретный товар, конкретную накладную, конкретного сотрудника. В третьем — программный объект встроенного языка, через который код читает и изменяет данные.
Понимание этой тройственности важно практически: от того, какой именно «объект» имеется в виду, зависит, как его найти, как изменить и какие ошибки могут возникнуть. Например, типичная ошибка начинающего разработчика — попытаться записать данные через ссылку там, где требуется объект, или наоборот.
Ниже разобраны все значения термина, различие между ссылкой и объектом, типовые операции с объектами в режиме пользователя и в коде, а также частые ошибки и способы их избежать.
Что такое объект конфигурации
Объект конфигурации — это строительный блок прикладного решения, который разработчик создаёт в конфигураторе. Каждый такой объект описывает структуру данных и логику работы с ними. Именно набор объектов конфигурации определяет, какие справочники, документы и отчёты будут доступны пользователю.
Основные группы объектов конфигурации:
- Справочники — хранят условно-постоянную нормативную информацию: номенклатуру, контрагентов, сотрудников, склады.
- Документы — фиксируют хозяйственные операции: поступления, реализации, платежи, приказы.
- Регистры — накапливают данные для учёта и отчётности: остатки товаров, взаиморасчёты, курсы валют.
- Перечисления — задают фиксированные списки значений (например, виды цен или ставки НДС).
- Отчёты и обработки — формируют аналитику и выполняют сервисные операции.
- Планы видов характеристик, планы счетов, планы обмена — специализированные объекты для аналитического и бухгалтерского учёта.
Увидеть полный список объектов конфигурации можно в конфигураторе: меню «Конфигурация» → «Открыть конфигурацию». Дерево слева и есть перечень всех объектов. В пользовательском режиме те же объекты проявляются как пункты меню разделов: «Номенклатура», «Реализация товаров», «Кассовые документы».
Объект как запись в базе данных
Второе значение термина — конкретный экземпляр данных. Когда бухгалтер говорит «открой объект», обычно имеется в виду конкретный документ или элемент справочника: накладная № 152, контрагент «ООО Ромашка», товар «Кабель ВВГ 3×2,5». Каждая такая запись уникальна и идентифицируется внутренним идентификатором (GUID).
У записей есть характерные признаки, по которым их легко отличить от объектов конфигурации:
- у записи есть реквизиты с конкретными значениями — дата, номер, сумма, наименование;
- запись можно пометить на удаление, провести (для документа), скопировать;
- записей одного вида может быть сколь угодно много, тогда как объект конфигурации «Справочник.Номенклатура» в базе один.
Важное следствие: когда пользователь говорит «удали объект», нужно уточнить, что именно требуется. Удаление записи — штатная операция в пользовательском режиме. Удаление объекта конфигурации — изменение структуры базы, требующее режима конфигуратора, обновления конфигурации базы данных и понимания последствий для связанных данных.
Ссылка и объект: ключевое различие для разработчика
Во встроенном языке 1С работа с данными строится на паре «ссылка — объект», и путаница между ними — источник большинства ошибок начинающих.
Ссылка — это лёгкий указатель на запись. Она содержит только идентификатор и позволяет обращаться к реквизитам для чтения, но не позволяет изменять данные. Ссылку можно получить из другой ссылки, из выборки запроса, по GUID.
Объект (в смысле встроенного языка) — это полная копия данных записи в памяти, которую можно модифицировать и затем записать в базу. Объект получают вызовом метода ПолучитьОбъект() у ссылки или созданием нового через менеджер соответствующего типа.
// Получение объекта из ссылки и изменение данных
СсылкаНаТовар = Справочники.Номенклатура.НайтиПоКоду("000001");
Если Не СсылкаНаТовар.Пустая() Тогда
ТоварОбъект = СсылкаНаТовар.ПолучитьОбъект();
ТоварОбъект.Наименование = "Кабель ВВГнг 3x2,5";
ТоварОбъект.Записать(); // только теперь изменения попали в базу
КонецЕсли;
Три правила, которые исключают большинство проблем: изменять данные можно только через объект; после изменений обязателен вызов Записать() (для документов — Записать(РежимЗаписиДокумента.Проведение), если нужно проведение); вызов ПолучитьОбъект() для большого количества записей в цикле — дорогая операция, для чтения данных лучше использовать запросы.
Ссылка или объект
Подходит для чтения реквизитов, передачи в запросы и отборы, сравнения записей. Нельзя изменять данные.
Нужен для создания, изменения и удаления записей. Требует вызова Записать() и расходует больше ресурсов.
Оптимален для массового чтения и анализа данных без загрузки объектов в память. Не предназначен для изменения данных напрямую.
Как найти и открыть нужный объект в пользовательском режиме
Для пользователя «объект» — это то, что открывается в форме. Найти нужную запись можно несколькими способами в зависимости от того, что известно.
- 1Определите вид объекта: справочник, документ или регистр — по названию в письме, задаче или печатной форме.
- 2Откройте соответствующий список через разделы меню или через «Все функции» (если раздел скрыт).
- 3Используйте поиск по наименованию, номеру или дате; в списках документов удобно ставить отбор по периоду.
- 4Если известен уникальный идентификатор или запись не находится — проверьте, не помечена ли она на удаление (включите отображение помеченных).
- 5Откройте запись двойным щелчком и проверьте ключевые реквизиты перед изменениями.
Если объект не находится, типовые причины таковы: запись помечена на удаление и скрыта отбором, у пользователя нет прав на этот вид объектов, поиск ведётся не в том разделе (например, документ «Поступление товаров и услуг» ищут среди «Поступлений услуг»), либо база работает в режиме обмена и данные ещё не загружены.
Форма объекта обычно содержит кнопку «Ещё», через которую доступны служебные действия: «Изменить форму», «Вывести список», а в типовых конфигурациях — переход к связанным объектам (движения документа, связанные документы). Это удобный способ проверить, какие данные породил конкретный документ.
Типовые операции с объектами и их ограничения
Над записями в базе доступен стандартный набор операций, но у каждой есть условия и ограничения, которые стоит знать заранее.
Создание. Новый элемент справочника или документ создаётся кнопкой «Создать» в списке. До нажатия «Записать» или «Провести» запись в базе не существует — закрытие формы без записи потеряет введённые данные.
Изменение. Проведённый документ в типовых конфигурациях часто защищён от редактирования: сначала его нужно распровести. Даты запрета изменения данных (настройка в администрировании) блокируют правку старых периодов даже при наличии прав.
Удаление. Штатно записи не удаляются физически, а помечаются на удаление. Окончательное удаление выполняется специальной обработкой «Удаление помеченных объектов» с контролем ссылочной целостности: если на запись ссылаются другие объекты, удалить её не получится, пока ссылки не устранены.
Копирование. Кнопка «Скопировать» (F9) создаёт новую запись на основе существующей — удобно для однотипных документов, но требует проверки дат, номеров и сумм, которые копируются из оригинала.
Как проверить результат работы с объектом
После создания или изменения записи стоит убедиться, что операция прошла корректно, особенно если изменения выполнялись обработкой или кодом.
Как проверить результат
Объект виден в списке, реквизиты соответствуют введённым
Записи нет или данные старые — вероятно, Записать() не вызван или транзакция отменена
Документ имеет статус проведения, движения видны через «Ещё» → «Движения документа»
Значок показывает непроведённый документ, движений нет
Нет битых ссылок вида «Объект не найден» в связанных записях
В полях ссылок отображается «Объект не найден <...>» — запись была удалена физически
Остатки и обороты изменились ожидаемо после проведения
Отчёт не изменился — документ не проведён или проведён не в том периоде
Если изменения делались программно, дополнительно проверьте журнал регистрации: там видны ошибки записи, конфликты блокировок и отказы в правах. Конфликт блокировок — частая ситуация при одновременной работе пользователей с одним объектом: второй получит ошибку «Конфликт блокировок при выполнении транзакции», и операцию нужно повторить позже.
Частые вопросы об объектах в 1С
Чем объект конфигурации отличается от объекта базы данных?
Объект конфигурации — это описание структуры (например, справочник «Номенклатура»), он один на базу и создаётся разработчиком в конфигураторе. Объект базы данных — конкретная запись этого вида (конкретный товар), таких записей могут быть миллионы, и создают их пользователи в режиме предприятия.
Почему в коде нельзя изменить данные через ссылку?
Ссылка содержит только идентификатор записи и предназначена для чтения и сравнения. Для изменения нужно получить объект методом ПолучитьОбъект(), изменить его свойства и вызвать Записать() — только тогда изменения попадут в базу.
Что означает надпись «Объект не найден» в поле документа?
Это «битая ссылка»: запись, на которую ссылалось поле, была физически удалена из базы. Восстановить её можно только из резервной копии. Чтобы избежать таких ситуаций, удаляйте записи только через штатную обработку «Удаление помеченных объектов» с контролем ссылок.
Можно ли восстановить удалённый объект?
Если запись только помечена на удаление — да: снимите пометку через стандартную команду в списке. Если запись удалена физически, восстановление возможно только из архивной копии базы. Поэтому перед массовыми удалениями всегда делайте выгрузку информационной базы.
Почему «Конфликт блокировок» при записи объекта и что делать?
Ошибка возникает, когда другой пользователь или сеанс уже изменяет эту же запись. Обычно достаточно повторить операцию через несколько секунд. Если конфликты постоянные, проверьте фоновые задания и обмены данными, которые могут удерживать объект продолжительное время.
Где посмотреть, какие данные породил документ?
Откройте документ и в меню «Ещё» выберите «Движения документа» (в типовых конфигурациях) — отобразятся записи по всем регистрам, которые сформировал документ при проведении. Это основной способ проверить корректность проведения.
Что важно запомнить
«Объект» в 1С имеет три значения: элемент конфигурации, запись в базе и программная сущность для изменения данных. Главное практическое правило: читают через ссылку или запрос, изменяют только через объект с вызовом Записать(). Удаление объектов конфигурации и физическое удаление записей — операции, требующие резервной копии.