Записать, Провести, Записать и закрыть: как работают кнопки формы в 1С
Содержание
Кнопка «Записать» в 1С сохраняет объект в базу данных, но не делает документ проведённым. Запись фиксирует сам документ или элемент справочника, а проведение дополнительно формирует движения по регистрам. Частая ошибка новичка: нажал «Записать», увидел, что документ сохранился, и решил, что в учёте он уже есть. Отчёты при этом остаются пустыми.
Разница между записью и проведением видна сразу по значку в списке документов. У непроведённого документа значок без галочки, у проведённого с ней. Ниже разберём, что именно делает кнопка, чем она отличается от соседних, как ведёт себя при ошибках и что с ней происходит на уровне кода.
Что именно сохраняет кнопка «Записать»
При нажатии платформа выполняет несколько действий подряд:
- Проверяет заполнение обязательных реквизитов. Если поле помечено как обязательное и пустое, запись не пройдёт.
- Вызывает обработчики объекта и формы, которые разработчик мог добавить (о них ниже).
- Записывает данные в таблицы информационной базы.
- Присваивает номер документу или код элементу справочника, если они ещё не заданы.
- Обновляет форму: появляется номер, заголовок меняется с «(создание)» на обычный.
Что при записи не происходит:
- ❌ не формируются движения по регистрам накопления, сведений и бухгалтерии;
- ❌ не меняются остатки на складе и в учёте;
- ❌ не создаются проводки.
Если вы создаёте новый элемент справочника, его нужно записывать обязательно: пока объект не записан, на него нельзя сослаться из других документов в некоторых сценариях, а ряд команд формы (например, «Присоединённые файлы») просто предложит сначала сохранить объект.
Для справочников проведения нет вообще, ведь движений по регистрам у них не бывает. Там «Записать» — основное действие, а «Записать и закрыть» — то же самое плюс закрытие формы.
Записать или Провести: в чём разница
Это главный вопрос по теме, поэтому сведём в таблицу.
| Действие | Что делает | Влияет на учёт | Когда использовать |
|---|---|---|---|
| Записать | Сохраняет документ как есть | Нет | Черновик, документ не готов или ждёт данных |
| Провести | Записывает и формирует движения | Да | Документ заполнен и подтверждён |
| Провести и закрыть | Проведение плюс закрытие формы | Да | Обычный финал работы с документом |
| Записать и закрыть | Запись плюс закрытие формы | Нет | В справочниках; в документах для черновиков |
Практический смысл записи без проведения очевиден: вы можете отложить документ на потом и ничего не испортить в учёте. Например, бухгалтер завёл «Поступление» по накладной, а счёт-фактура ещё не пришёл. Документ записан, номер есть, а остатки не искажены.
Проведённый документ можно изменить только после отмены проведения или нажатия «Провести» повторно. При повторном проведении платформа сначала удаляет старые движения документа, затем создаёт новые. Поэтому правка уже проведённого документа безопасна, если после неё нажать «Провести», а не «Записать».
⚠️ Типичная ловушка: открыли проведённый документ, поправили сумму, нажали «Записать». Документ сохранится с новой суммой, а движения останутся прежними или будут сняты, и это зависит от конфигурации. Надёжный порядок один: после правки проведённого документа всегда проводите его.
Что видно в списке
Отличить состояние документа можно без открытия:
- 🟢 галочка на значке — документ проведён;
- ⚪ значок без галочки — только записан;
- 🔴 значок с крестиком — помечен на удаление.
Помеченный на удаление документ не проведён, даже если раньше был проведён: при пометке движения снимаются.
Режимы записи и проведения в коде
Для разработчика запись — это метод объекта Записать(). У документов у него есть параметр режима, и вот здесь заканчивается интерфейс и начинается платформа:
РежимЗаписиДокумента.Запись— обычная запись без движений;РежимЗаписиДокумента.Проведение— запись и формирование движений;РежимЗаписиДокумента.ОтменаПроведения— запись со снятием проведения.
Пример, который проводит документ программно:
Документ = Ссылка.ПолучитьОбъект();
Документ.Записать(РежимЗаписиДокумента.Проведение);
Здесь Ссылка — ссылка на документ. Если проведение не удалось, например сработал контроль остатков, платформа вызовет исключение, а документ останется непроведённым.
Нажатие кнопки «Провести» в форме делает то же самое: вызывает запись в режиме проведения. Кнопка «Записать» вызывает запись в обычном режиме. Отдельной «магии» у формы нет, это обёртка над методом объекта.
Обработчики событий при записи
Разработчик конфигурации может вмешаться в процесс. Основные события модуля объекта, которые срабатывают при записи:
| Событие | Когда срабатывает | Для чего обычно используют |
|---|---|---|
ПередЗаписью | До записи в базу | Проверки, автозаполнение, запрет записи через Отказ = Истина |
ПриЗаписи | Во время записи, в транзакции | Действия, которые должны откатиться вместе с записью |
У формы есть свои события: ПередЗаписью, ПередЗаписьюНаСервере, ПриЗаписиНаСервере и ПослеЗаписи. Порядок таков, что сначала отрабатывают события формы на клиенте, затем серверные, затем события объекта.
Если в ПередЗаписью установить Отказ = Истина, запись остановится, а пользователь увидит сообщение, которое разработчик вывел заранее. Так работают контроли вроде «нельзя записать документ без контрагента».
Для обмена данными и загрузки существует признак ОбменДанными.Загрузка. Если он установлен в Истина, часть проверок в обработчиках пропускают, потому что данные приходят из другой базы уже проверенными. Подробно о нём стоит читать в документации по обмену, а не включать вслепую.
Кнопка «Записать» в режиме Предприятия и в Конфигураторе
Два режима запуска путают чаще всего.
Режим Предприятия — это обычная работа пользователя. Кнопка «Записать» здесь сохраняет данные: документ, элемент справочника, запись регистра сведений. Это то, о чём шла речь выше.
Конфигуратор — среда разработчика. Кнопки «Записать» в привычном смысле у него нет: там работают с конфигурацией и модулями. Сохранить изменения в модуле можно командой сохранения (Ctrl+S), но это сохранение текста модуля, а не запись объекта базы. Чтобы изменения конфигурации дошли до базы данных, их нужно применить отдельным шагом: обновление конфигурации
базы данных (клавиша F7) или запуск в режиме Предприятия из Конфигуратора.
Для разработчика есть и третий момент. Кнопка «Записать» на форме — это стандартная команда формы. В редакторе формы её можно убрать, переименовать или заменить своей командой. Поэтому если в конкретной форме её нет, это решение разработчика, а не сбой платформы.
Блокировки и конфликты при записи
Запись всегда обращается к общей базе, поэтому здесь возможны конфликты. Две самые частые ситуации.
Кто-то изменил объект раньше вас
Вы открыли документ, пока вы его редактировали, коллега сохранил свою версию. При нажатии «Записать» платформа сообщит, что данные были изменены или удалены другим пользователем . Это оптимистичная блокировка: она защищает от затирания чужих правок.
Что делать:
- Не закрывайте форму сразу, если успели внести много данных.
- Запишите изменения себе (запомните, что меняли).
- Закройте форму без сохранения, откройте документ заново и внесите правки поверх свежей версии.
Объект заблокирован
Иногда запись останавливается из-за управляемой блокировки: документ уже проводится другим пользователем или фоновым заданием. Обычно достаточно подождать несколько секунд и повторить. Если ситуация повторяется постоянно, это уже вопрос к администратору или разработчику: длинные транзакции в проведении держат блокировки дольше нужного.
⚠️ Не пытайтесь «лечить» блокировки перезапуском сервера в рабочее время. Это оборвёт сеансы всех пользователей, и несохранённые данные в открытых формах пропадут.
Частые ошибки при нажатии «Записать»
Ниже ситуации, с которыми реально сталкиваются пользователи.
- «Поле не заполнено». Платформа проверяет реквизиты, отмеченные как обязательные. Поле подсвечивается, заполните его и повторите.
- Документ записан, но в отчётах нет. Он не проведён. Нажмите «Провести».
- После правки сумма в отчёте не изменилась. Изменили проведённый документ и нажали «Записать» вместо «Провести». Проведите документ заново.
- Запись запрещена периодом. В базе может быть установлена дата запрета изменений. Документы с датой раньше неё записать нельзя. Ставит запрет администратор, он же и снимает при необходимости.
- Нет прав. У роли пользователя может быть право просмотра без права изменения. Кнопка тогда неактивна или запись завершается ошибкой доступа.
- Дубль элемента справочника. При записи конфигурация может проверить уникальность по ИНН или наименованию. Это настройка конкретной конфигурации.
Если после сообщения об ошибке вы не поняли причину, прочитайте текст целиком: платформа обычно называет поле или правило. Не закрывайте форму, пока не запишете данные куда-нибудь рядом, чтобы не потерять ввод.
Горячие клавиши и настройка кнопок
Сохранить объект можно без мыши: сочетание Ctrl+S вызывает «Записать» в большинстве форм. Это удобно при долгом вводе табличной части: полезно сохраняться каждые несколько минут, чтобы не потерять работу при обрыве связи.
Другие способы:
- ⌨️ точные клавиши для остальных кнопок формы показаны во всплывающей подсказке при наведении курсора;
- 🖱️ в командной панели формы часть команд скрыта в меню «Еще»;
- 🧩 состав кнопок на форме можно настроить через пункт «Изменить форму» в меню «Еще», если у пользователя есть такое право.
Там же можно скрыть редко используемые команды и вынести нужные. Настройки хранятся для пользователя, поэтому у разных сотрудников форма может выглядеть по-разному.
Автосохранение
В управляемых формах новых релизов платформы возможен режим автосохранения пользовательских настроек и черновиков формы, но он не заменяет «Записать»: объект в базу не попадает, пока вы его не сохранили или не провели. Не рассчитывайте на него как на защиту от потери данных.
Пример: от черновика до проведённого документа
Возьмём «Поступление товаров» на 10 позиций. Менеджер вносит данные по накладной в течение дня, поэтому действует так.
- Создаёт документ, заполняет контрагента и первые 4 строки, нажимает
Ctrl+S. Документ получает номер, учёт не затронут. - После обеда добавляет остальные 6 строк и снова записывает. Остатки на складе по-прежнему не изменились.
- Когда пришла накладная и всё сверено, нажимает «Провести и закрыть». Только теперь товар появился в остатках, а движения попали в отчёты.
- Через день выясняется, что в одной строке цена указана неверно. Документ открывают, правят цену и нажимают «Провести». Старые движения заменяются новыми, и отчёты показывают верные суммы.
Если на шаге 4 нажать только «Записать», цена в документе изменится, а отчёты могут продолжить показывать старую. Поэтому в команде стоит договориться, что любая правка проведённого документа заканчивается проведением.
Для крупных документов с сотнями строк записывайте промежуточные версии чаще. Это страхует от обрыва связи и от ситуации, когда сеанс завершили по таймауту простоя.
Что запомнить про выбор кнопки
Правило выбора короткое:
- Справочник: «Записать и закрыть», если дальше форма не нужна.
- Документ, который готов к учёту: «Провести и закрыть».
- Документ-черновик или документ, который ждёт данных: «Записать».
- Правите проведённый документ: после правки снова «Провести».
Если сомневаетесь, нажимайте «Записать»: это безопасное действие, оно ничего не ломает в учёте и всегда обратимо. Проведение влияет на остатки и отчёты, поэтому проводить стоит осознанно.