Разработка и Конфигурация · 12 мин
Что содержится в объекте информационной базы 1С при редактировании
Разбираем, что содержится в объекте информационной базы 1С при редактировании: реквизиты, табличные части, движения, предопределённые данные и типичные ошибки.
В 1С объект информационной базы — это не просто строка в таблице, а структурированная сущность, которая хранит реквизиты, табличные части, ссылки на другие объекты и служебные поля. Когда вы открываете документ, элемент справочника или запись регистра для редактирования, платформа загружает в память полный набор этих данных, и любое изменение фиксируется только после записи объекта.
Понимание внутреннего состава объекта важно и для пользователя, который правит документ вручную, и для разработчика, пишущего обработку или доработку конфигурации. Ошибки вроде потерянных изменений, конфликтов версий или «не сохранившихся» табличных частей почти всегда связаны с непониманием того, что именно содержит объект и когда данные реально попадают в базу.
Ниже разобрано, из каких частей состоит объект при редактировании, чем отличается объект в памяти от объекта в базе, как безопасно вносить изменения и как проверить, что они действительно сохранились.
Из каких частей состоит объект при редактировании
Любой ссылочный объект (документ, элемент справочника, задача, элемент плана видов характеристик) при открытии на редактирование содержит несколько обязательных групп данных. Первая группа — реквизиты шапки: это простые поля объекта, такие как номер, дата, контрагент, склад, комментарий. Каждый реквизит имеет тип, заданный в конфигураторе, и платформа контролирует соответствие вводимых данных этому типу.
Вторая группа — табличные части. Это встроенные в объект таблицы: список товаров в документе, контактная информация у контрагента, этапы в задаче. Каждая строка табличной части — это не отдельный объект базы, а часть родительского объекта: она не существует сама по себе и удаляется вместе с владельцем.
Третья группа — служебные поля, которые платформа ведёт автоматически: уникальная ссылка объекта, признак пометки удаления, признак проведения у документов, версия данных, предопределённость элемента. Эти поля нельзя редактировать напрямую из формы, но они влияют на поведение объекта при записи и обмене данными.
Что содержится в документе: движения и проведение
Документ отличается от справочника тем, что содержит ещё и наборы записей движений по регистрам. Когда документ проводится, платформа формирует записи в регистрах накопления, сведений или бухгалтерии — например, остатки товаров, взаиморасчёты, проводки. Эти движения физически принадлежат документу: при отмене проведения или пометке на удаление они удаляются вместе с ним.
При редактировании проведённого документа важно понимать: пока вы не нажали «Провести» или «Записать», старые движения в базе остаются прежними, а изменённые данные существуют только в открытой форме. Если закрыть форму без записи, база останется в исходном состоянии. Если провести документ заново, движения будут полностью пересозданы по актуальным данным шапки и табличных частей.
Отдельный случай — ручная корректировка движений, если она разрешена в конфигурации (флаг «Ручная корректировка»). Тогда наборы записей редактируются пользователем напрямую, и платформа не перезаписывает их при повторном проведении. Это удобно для разовых исправлений, но опасно: при следующем обычном проведении ручные правки легко потерять или, наоборот, заблокировать автоматическое обновление.
Объект в памяти и объект в базе: где реально живут изменения
Ключевой момент, который вызывает больше всего путаницы: открытая форма редактирования работает с копией объекта в оперативной памяти. Все ваши правки — изменённые реквизиты, добавленные строки, удалённые позиции — существуют только в этой копии. В базе данных в этот момент лежит прежняя версия объекта, и другие пользователи видят именно её.
Изменения попадают в базу в момент записи. Платформа выполняет проверки заполнения, отрабатывают обработчики событий (ПередЗаписью, ПриЗаписи, ОбработкаПроведения), и только затем данные фиксируются транзакцией. Если на любом этапе возникает ошибка — например, не заполнен обязательный реквизит или не хватает остатка на складе — запись откатывается целиком, и объект в базе не меняется.
Для разработчиков это выражается в различии между объектом (программная сущность с методами Записать, Провести) и ссылкой (только идентификатор для чтения реквизитов). Получить объект из ссылки — значит загрузить данные в память; изменить реквизиты ссылки напрямую нельзя.
Как безопасно редактировать объект: порядок действий
Безопасное редактирование начинается с понимания последствий: если объект уже используется в других документах или проведён, правка может изменить связанные данные и отчёты задним числом. Перед изменением проведённого документа закрытого периода убедитесь, что период не закрыт датой запрета редактирования и что вы понимаете, какие регистры затронет перепроведение.
Для элементов справочников главный риск — изменение данных, которые уже попали в проведённые документы как ссылка. Сами документы при этом не перепроводятся, но отчёты, которые читают реквизиты по ссылке (например, наименование или ИНН контрагента), начнут показывать новые значения в старых документах. Это нормально для исправления опечаток, но недопустимо для подмены смысла: в таких случаях правильнее создавать новый элемент.
- 1Откройте объект и проверьте его состояние: проведён ли документ, помечен ли элемент на удаление, есть ли признак предопределённости.
- 2Убедитесь, что период объекта не закрыт датой запрета изменения данных, а у вас есть права на редактирование.
- 3Внесите изменения в реквизиты и табличные части; обязательные поля платформа подсветит при записи.
- 4Нажмите «Записать» или «Провести» и дождитесь завершения без сообщений об ошибках.
- 5Проверьте результат: для документа — через отчёт по движениям (кнопка «Дт/кт» или «Показать движения»), для справочника — повторным открытием элемента.
- 6Если правка затрагивает связанные данные, сформируйте контрольный отчёт за затронутый период и сравните с ожидаемым результатом.
Конфликты версий и блокировки при совместной работе
В многопользовательской базе объект содержит служебное поле версии данных, которое платформа увеличивает при каждой записи. Если два пользователя открыли один объект, а затем первый его записал, то при попытке записи второго возникнет ошибка «Конфликт блокировок» или сообщение о том, что данные были изменены другим пользователем. Это защитный механизм: без него второй пользователь молча затёр бы чужие изменения.
Правильная реакция на такой конфликт — не перезаписывать «вслепую», а переоткрыть объект, посмотреть актуальные данные и повторить свои правки поверх них. В программных сценариях аналогичная ситуация решается через повторное чтение объекта перед записью или через управляемые блокировки (ЗаблокироватьДанныеДляРедактирования) в длительных обработках.
Особые случаи: предопределённые элементы, пометка удаления, обмены
Предопределённые элементы — это элементы справочников или планов счетов, созданные конфигурацией и имеющие имя в метаданных. К ним обращается код программы, поэтому удалять или переименовывать их нельзя: обращение по имени вернёт ошибку, и часть функциональности перестанет работать. При редактировании такой элемент помечен специальной пиктограммой, а платформа ограничивает опасные действия.
Пометка удаления — это тоже содержимое объекта: помеченный элемент остаётся в базе со всеми реквизитами и табличными частями, но исключается из большинства подборов и отчётов. Физическое удаление выполняется отдельной операцией «Удаление помеченных объектов» и возможно только если на объект нет ссылок из других данных. Проверка ссылочной целостности — обязательный этап, иначе в документах появятся «битые ссылки» вида «Объект не найден».
В распределённых базах и при обменах объект дополнительно содержит регистрацию изменений в планах обмена. Редактирование объекта автоматически регистрирует его к выгрузке в узлы обмена. Если правка сделана программно с отключённой регистрацией (например, через параметры записи), изменения не уедут в другие базы — это частая причина расхождений между центральной и периферийной базами.
Как проверить, что изменения сохранились корректно
Минимальная проверка — повторно открыть объект и убедиться, что реквизиты и табличные части содержат новые значения. Для документа этого недостаточно: дополнительно откройте движения документа (стандартная команда в меню «Ещё» или панели навигации) и сверьте записи по регистрам с тем, что должно было сформироваться.
Для массовых обработок и программных изменений контроль строится иначе: до правок фиксируется контрольная точка (остаток, итог отчёта, количество записей), после — результат сравнивается с ожиданием. Расхождение без объяснимой причины — признак того, что часть объектов не записалась или записалась с ошибкой, которую обработка «проглотила».
Как проверить результат редактирования
Реквизиты и табличные части содержат новые значения
Отображаются старые данные — запись не выполнилась
Записи по регистрам соответствуют актуальным данным документа
Движения отсутствуют или устарели — документ не перепроведён
Запись завершилась без ошибок и предупреждений
Есть сообщения о незаполненных реквизитах или конфликте версий
Итоги изменились на ожидаемую величину
Итоги не изменились или изменились непредсказуемо
Как выбрать действие в спорной ситуации
Частые вопросы
Почему изменения в объекте пропали после закрытия формы?
Потому что редактирование происходит в копии объекта в памяти, а в базу данные попадают только при записи. Если форма была закрыта без нажатия «Записать» или «Провести», все правки отбрасываются. Перед закрытием всегда записывайте объект и дожидайтесь завершения операции без ошибок.
Чем отличается «Записать» от «Провести» у документа?
«Записать» сохраняет шапку и табличные части документа, но не формирует движения по регистрам — документ хранится, но не влияет на остатки и отчёты. «Провести» включает запись и дополнительно создаёт движения. Для учётного эффекта документ должен быть именно проведён.
Что будет, если отредактировать элемент справочника, который используется в старых документах?
Сами документы не изменятся и не перепроведутся, но там, где реквизиты элемента читаются по ссылке (наименование, ИНН, адрес), отчёты и печатные формы старых документов начнут показывать новые значения. Для исправления опечаток это допустимо, для изменения смысла — создавайте новый элемент.
Можно ли восстановить объект, удалённый пометкой на удаление?
Да, пока не выполнено физическое удаление. Снимите пометку удаления стандартной командой — объект восстановится со всеми реквизитами, табличными частями и движениями. После операции «Удаление помеченных объектов» восстановление возможно только из резервной копии базы.
Почему при записи появляется ошибка «данные были изменены другим пользователем»?
Это конфликт версий: пока вы редактировали объект, другой пользователь или фоновый процесс уже записал свою версию. Платформа блокирует вашу запись, чтобы чужие изменения не были затёрты. Переоткройте объект, посмотрите актуальные данные и повторите свои правки поверх них.
Чем опасна ручная корректировка движений документа?
При включённом режиме ручной корректировки платформа перестаёт формировать движения автоматически, и ответственность за их правильность ложится на пользователя. При следующем штатном проведении ручные правки могут быть перезаписаны или заблокировать автоматическое обновление. Используйте этот режим только для точечных исправлений и документируйте их.