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

Справочники и Данные · 10 мин

Как записать данные в 1С: практическое руководство

Как записать данные в 1С: ввод через формы, метод Записать() в коде, запись документов и регистров, проверка результата, типичные ошибки и FAQ.

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

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

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

Что значит «записать данные» в 1С

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

Важно различать запись и проведение документа. Запись сохраняет сам документ как объект — его реквизиты, табличные части. Проведение дополнительно формирует движения по регистрам: бухгалтерские проводки, записи в регистры накопления и сведений. Документ может быть записан, но не проведён — тогда он существует в базе, но не влияет на учётные остатки и отчёты.

Запись данных вручную через формы

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

При создании документа логика та же: «Создать» → заполнение шапки и табличной части → «Провести» или «Провести и закрыть». Если система выдаёт ошибку при записи, прочитайте текст сообщения внизу окна — платформа указывает, какое именно поле не заполнено или какое условие нарушено. Частая причина — незаполненная организация, дата вне разрешённого периода или пустая табличная часть.

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

Порядок ручной записи элемента справочника
  1. 1
    Откройте справочник и нажмите «Создать»
  2. 2
    Заполните обязательные реквизиты, отмеченные платформой
  3. 3
    Нажмите «Записать» и убедитесь, что сообщений об ошибках нет
  4. 4
    Проверьте, что элемент появился в списке справочника
  5. 5
    При необходимости заполните дополнительные реквизиты и запишите повторно

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

Для записи из встроенного языка используется объектная модель: создаётся или открывается объект, заполняются реквизиты, вызывается метод Записать(). Для нового элемента справочника последовательность такая: НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент(), затем присваиваются значения реквизитам (НовыйЭлемент.Наименование = "Товар"), затем НовыйЭлемент.Записать().

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

Документы записываются с указанием режима: ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение) — сразу с проведением, РежимЗаписиДокумента.Запись — без проведения. Если проведение не удалось (например, не хватает остатков на складе), платформа выдаст сообщение об ошибке, и документ останется непроведённым.

1c
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Праймер товар";
НовыйЭлемент.Записать();
Сообщить("Записан элемент: " + НовыйЭлемент.Ссылка);

Запись в транзакции и массовая обработка

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

Массовая запись (загрузка тысяч позиций номенклатуры, обновление цен) требует контроля производительности. Записывайте порциями, не держите транзакцию открытой на весь массив данных — длинная транзакция блокирует работу других пользователей в клиент-серверном режиме. Для загрузки из Excel или CSV удобнее использовать типовую обработку «Загрузка данных из табличного документа» или универсальный обмен, если он есть в конфигурации.

Обмен данными и внешние способы записи

Данные попадают в 1С не только из форм и кода, но и через механизмы обмена: планы обмена между базами, загрузку из файлов выгрузки, веб-сервисы, HTTP-запросы, COM-соединение. Внешняя система может записывать данные в 1С через опубликованные HTTP-сервисы или OData-интерфейс, если он включён в настройках публикации.

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

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

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

Дополнительная проверка — через запрос или поиск: после записи найдите объект по уникальному реквизиту и сверьте значения полей. Для документов проверьте движения: откройте отчёт по движениям документа и убедитесь, что записи в регистрах сформировались ожидаемо. Журнал регистрации (в режиме конфигуратора или через «Администрирование») помогает отследить, кто, когда и какой объект записал.

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

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

Объект в списке
Норма

Элемент или документ виден в списке с корректными реквизитами

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

Объект отсутствует или поля пустые — запись не выполнилась

Сообщения об ошибках
Норма

Окно сообщений пустое после записи

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

Есть сообщения о незаполненных полях или отказе проведения

Движения документа
Норма

Отчёт по движениям показывает записи в нужных регистрах

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

Движений нет — документ записан, но не проведён

Типичные ошибки и ограничения

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

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

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

Как выбрать способ записи

Нужно ввести один-два объектаИспользуйте ручной ввод через форму — быстрее и безопаснее
Нужно обработать десятки и сотни объектов по правилуПишите обработку с транзакциями и тестируйте на копии базы
Данные регулярно приходят из другой системыНастройте обмен через план обмена, HTTP-сервис или загрузку из файла
Требуется загрузить таблицу из ExcelИспользуйте типовую обработку загрузки из табличного документа

Частые вопросы

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

Запись сохраняет сам документ — его реквизиты и табличные части. Проведение дополнительно создаёт движения по регистрам: проводки, остатки, обороты. Непроведённый документ хранится в базе, но на отчёты и учётные данные не влияет.

Почему 1С выдаёт ошибку «Конфликт блокировок» при записи?

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

Можно ли отменить ошибочную запись?

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

Как записать данные в закрытый период?

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

Как понять, кто и когда записал объект?

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

Итог

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

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