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

Администрирование · 10 мин

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

Что означает «перечитать данные» в 1С, зачем и когда это нужно. Как обновить объект формы, избежать конфликтов версий и потери несохранённых изменений.

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

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

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

Что физически происходит при перечитывании объекта

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

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

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

Где находится команда и как её вызвать

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

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

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

bsl
// Перечитать объект программно
ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокументОбъект.Прочитать(); // загружает актуальную версию из базы

// В управляемой форме
ЭтаФорма.Прочитать(); // перечитывает данные текущей формы

Когда перечитывать данные действительно нужно

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

Вторая ситуация — вы начали редактировать документ, запутались в изменениях и хотите вернуться к сохранённому состоянию, не закрывая форму. Перечитывание работает как кнопка «отменить всё» для несохранённых правок.

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

Маршрут решения

Как выбрать действие

При записи появилась ошибка «данные изменены другим пользователем»Уточните у коллег, кто менял объект. Если ваши правки важнее — скопируйте их, перечитайте форму и введите заново
Вы случайно испортили несохранённый документВыполните «Ещё → Перечитать» — форма вернётся к последней записанной версии
Список документов показывает устаревшие строкиНажмите F5 или «Обновить» в списке — перечитывать сам объект не требуется
После обмена данными форма показывает старые значенияПеречитайте объект, чтобы увидеть загруженные обменом изменения

Чем перечитывание отличается от обновления, записи и переоткрытия

Пользователи часто путают похожие по смыслу действия. Между ними есть принципиальная разница в том, какие данные затрагиваются и что происходит с несохранёнными изменениями.

ДействиеЧто делаетНесохранённые изменения
Перечитать объектЗагружает сохранённую версию объекта из базы в открытую формуТеряются безвозвратно
Обновить список (F5)Перечитывает выборку динамического спискаНе затрагиваются
Закрыть и открыть форму зановоПолностью пересоздаёт форму с актуальными даннымиТеряются, программа спрашивает подтверждение
ЗаписатьСохраняет вашу версию в базуСохраняются в базу

Практический вывод: если нужно обновить только картинку в журнале — достаточно F5. Если нужно отказаться от правок в открытом документе — перечитывайте объект. Если форма «зависла» или ведёт себя странно — надёжнее закрыть её и открыть заново.

Риски и конфликт версий в многопользовательском режиме

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

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

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

Как проверить, что перечитывание сработало

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

Если после перечитывания форма по-прежнему показывает старые значения, проверьте, не открыт ли объект в другой форме или не работаете ли вы с копией объекта, созданной программно. В редких случаях помогает полное переоткрытие формы или перезапуск клиентского приложения.

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

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

Индикатор изменённости формы
Норма

После перечитывания признак модифицированности снят

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

Форма по-прежнему считается изменённой — возможно, сработал обработчик, снова меняющий данные

Значения ключевых полей
Норма

Поля совпадают с данными, которые видят другие пользователи

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

На экране старые значения — попробуйте закрыть и открыть форму заново

Запись объекта
Норма

После перечитывания и повторного ввода правок запись проходит без ошибки версий

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

Ошибка конфликта версий повторяется — объект активно меняется другим процессом

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

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

Вторая ошибка — ожидание, что перечитывание исправит ошибки в данных. Команда лишь показывает то, что есть в базе. Если в базе записаны некорректные значения, они и отобразятся; исправлять их нужно редактированием и записью.

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

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

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

Вернёт ли «Перечитать» удалённые строки табличной части?

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

Почему F5 не перечитывает открытый документ?

Клавиша F5 в большинстве форм обновляет динамический список, а не объект. Для перечитывания самого объекта используйте команду «Ещё → Перечитать» в форме документа либо закройте и откройте форму заново.

Что делать, если ошибка конфликта версий повторяется постоянно?

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

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

Штатной команды массового перечитывания нет: операция применяется к одной открытой форме. Для списка документов достаточно обновить сам список клавишей F5 — открывать и перечитывать каждый объект не требуется.

Отличается ли перечитывание в файловой и клиент-серверной базе?

Механизм одинаков: в обоих случаях форма заново читает объект из базы. Разница лишь в частоте конфликтов версий — в клиент-серверном режиме при большом числе пользователей одновременное редактирование встречается чаще, поэтому и потребность в перечитывании выше.

Итог

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

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