Администрирование · 10 мин
Что значит перечитать данные в 1С
Что означает «перечитать данные» в 1С, зачем и когда это нужно. Как обновить объект формы, избежать конфликтов версий и потери несохранённых изменений.
Фраза «перечитать данные» встречается в 1С повсеместно: в меню формы документа, в сообщениях об ошибках, в инструкциях по работе с программой. При этом новички часто не понимают, что именно произойдёт после нажатия этой кнопки и не пропадут ли введённые сведения. Разберёмся в механизме без лишней теории.
Перечитать данные — значит загрузить в открытую форму актуальную версию объекта из базы данных, отбросив все несохранённые изменения, которые вы внесли на экране. Пока вы редактируете документ или элемент справочника, программа работает с копией объекта в памяти. Записи в базу не происходит, пока вы не нажмёте «Записать» или «Провести». Команда «Перечитать» отменяет правки и подтягивает то, что реально хранится в базе на текущий момент.
Эта операция становится особенно актуальной в многопользовательском режиме, когда один и тот же документ могут открыть несколько сотрудников. Пока вы раздумываете над формой, коллега уже записал свою версию — и ваша копия на экране устарела. Перечитывание синхронизирует форму с реальным состоянием данных.
Что физически происходит при перечитывании объекта
Когда вы открываете документ, элемент справочника или запись регистра, 1С создаёт в оперативной памяти рабочую копию объекта. Всё, что вы вводите в поля формы, меняет только эту копию. База данных о ваших правках «не знает» до момента записи.
Команда «Перечитать» разрушает эту копию и заново выполняет чтение объекта из базы по его уникальной ссылке. На экране появляется именно та версия, которая хранится в информационной базе, включая изменения, внесённые другими пользователями или фоновыми процессами, пока форма была открыта.
Важно понимать: перечитывание не является откатом записанных данных. Если объект уже был записан в базу (вами или кем-то ещё), команда не вернёт его к прежнему состоянию — она лишь покажет текущее сохранённое состояние. Отменить можно только то, что ещё не записано.
Где находится команда и как её вызвать
В типовых конфигурациях на платформе 1С:Предприятие 8 команда доступна в форме объекта через кнопку «Ещё» — пункт «Перечитать». В некоторых конфигурациях она выведена отдельной кнопкой на панель формы. Стандартное сочетание клавиш для обновления содержимого — F5, хотя в ряде форм оно обновляет список, а не сам объект.
Для динамических списков (журналы документов, списки справочников) действует команда «Обновить» — она перечитывает не конкретный объект, а выборку данных списка. Это разные операции: обновление списка не затрагивает открытые формы объектов и не отменяет ничьих изменений.
Разработчики могут вызвать перечитывание программно. Для этого используется метод объекта Прочитать() или метод формы Прочитать(), а также конструкция управляемой формы через стандартную команду перечитывания.
// Перечитать объект программно
ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
ДокументОбъект.Прочитать(); // загружает актуальную версию из базы
// В управляемой форме
ЭтаФорма.Прочитать(); // перечитывает данные текущей формыКогда перечитывать данные действительно нужно
Первая типовая ситуация — сообщение «Данные были изменены другим пользователем» или ошибка конфликта версий при попытке записи. Это значит, что пока форма была открыта, объект в базе изменился. Если ваши правки не важны, перечитайте данные и внесите их заново уже поверх актуальной версии.
Вторая ситуация — вы начали редактировать документ, запутались в изменениях и хотите вернуться к сохранённому состоянию, не закрывая форму. Перечитывание работает как кнопка «отменить всё» для несохранённых правок.
Третий случай — работа с данными, которые меняются внешними механизмами: обменами с другими системами, регламентными заданиями, загрузкой из файлов. Если вы держите форму открытой, а обмен в это время обновил объект, экран показывает устаревшие данные. Перечитывание синхронизирует представление.
Как выбрать действие
Чем перечитывание отличается от обновления, записи и переоткрытия
Пользователи часто путают похожие по смыслу действия. Между ними есть принципиальная разница в том, какие данные затрагиваются и что происходит с несохранёнными изменениями.
| Действие | Что делает | Несохранённые изменения |
|---|---|---|
| Перечитать объект | Загружает сохранённую версию объекта из базы в открытую форму | Теряются безвозвратно |
| Обновить список (F5) | Перечитывает выборку динамического списка | Не затрагиваются |
| Закрыть и открыть форму заново | Полностью пересоздаёт форму с актуальными данными | Теряются, программа спрашивает подтверждение |
| Записать | Сохраняет вашу версию в базу | Сохраняются в базу |
Практический вывод: если нужно обновить только картинку в журнале — достаточно F5. Если нужно отказаться от правок в открытом документе — перечитывайте объект. Если форма «зависла» или ведёт себя странно — надёжнее закрыть её и открыть заново.
Риски и конфликт версий в многопользовательском режиме
Главный риск перечитывания — потеря несохранённых данных. Команда не спрашивает подтверждения в ряде конфигураций: нажали — и введённые за полчаса сведения исчезли. Перед перечитыванием убедитесь, что в форме нет ценных несохранённых правок, либо скопируйте их в отдельный файл или буфер обмена.
Обратная ситуация — конфликт версий при записи. Платформа хранит у каждого объекта номер версии, который увеличивается при каждой записи. Когда вы пытаетесь записать объект, чья версия в базе уже изменилась, 1С блокирует запись и выдаёт ошибку. Это защитный механизм: он не даёт молча затереть чужую работу.
Обходить этот механизм силой — плохая практика. Программные приёмы вроде принудительного перечитывания перед записью решают проблему технически, но при этом чужие изменения могут быть перезаписаны без ведома автора. Правильный путь — выяснить, кто и что менял, и согласовать итоговую версию.
Как проверить, что перечитывание сработало
После выполнения команды форма должна отразить сохранённое состояние объекта. Признаки успешного перечитывания: поля приняли значения из базы, индикатор модифицированности (звёздочка или аналог в заголовке формы) исчез, кнопки записи стали неактивны, если объект не требует изменений.
Если после перечитывания форма по-прежнему показывает старые значения, проверьте, не открыт ли объект в другой форме или не работаете ли вы с копией объекта, созданной программно. В редких случаях помогает полное переоткрытие формы или перезапуск клиентского приложения.
Как проверить результат
После перечитывания признак модифицированности снят
Форма по-прежнему считается изменённой — возможно, сработал обработчик, снова меняющий данные
Поля совпадают с данными, которые видят другие пользователи
На экране старые значения — попробуйте закрыть и открыть форму заново
После перечитывания и повторного ввода правок запись проходит без ошибки версий
Ошибка конфликта версий повторяется — объект активно меняется другим процессом
Типичные ошибки и ограничения
Самая частая ошибка — перечитывание вместо записи. Пользователь вводит данные, нажимает «Перечитать» в надежде «обновить и сохранить», и теряет всё введённое. Запомните: перечитать — это загрузить из базы, записать — это сохранить в базу. Направления противоположные.
Вторая ошибка — ожидание, что перечитывание исправит ошибки в данных. Команда лишь показывает то, что есть в базе. Если в базе записаны некорректные значения, они и отобразятся; исправлять их нужно редактированием и записью.
Третья ошибка касается разработчиков: вызов Прочитать() в обработчиках формы без учёта контекста. Например, перечитывание объекта в обработчике «ПередЗаписью» обнуляет введённые пользователем данные прямо в процессе сохранения. Программное чтение должно быть осознанным и, как правило, выполняться вне момента записи.
Частые вопросы
Вернёт ли «Перечитать» удалённые строки табличной части?
Да, если удаление строк не было записано в базу. Перечитывание загрузит сохранённую версию документа со всеми строками. Но если вы уже нажали «Записать» после удаления, вернуть строки этой командой нельзя — понадобится восстановление из резервной копии или истории изменений, если она ведётся.
Почему F5 не перечитывает открытый документ?
Клавиша F5 в большинстве форм обновляет динамический список, а не объект. Для перечитывания самого объекта используйте команду «Ещё → Перечитать» в форме документа либо закройте и откройте форму заново.
Что делать, если ошибка конфликта версий повторяется постоянно?
Значит, объект регулярно изменяется другим пользователем или фоновым процессом: обменом данными, регламентным заданием, интеграцией. Выясните, какой процесс пишет в объект, и работайте с ним в другое время либо согласуйте порядок правок с коллегами.
Можно ли перечитать сразу несколько документов?
Штатной команды массового перечитывания нет: операция применяется к одной открытой форме. Для списка документов достаточно обновить сам список клавишей F5 — открывать и перечитывать каждый объект не требуется.
Отличается ли перечитывание в файловой и клиент-серверной базе?
Механизм одинаков: в обоих случаях форма заново читает объект из базы. Разница лишь в частоте конфликтов версий — в клиент-серверном режиме при большом числе пользователей одновременное редактирование встречается чаще, поэтому и потребность в перечитывании выше.
Что важно запомнить
Перечитать данные — это загрузить в форму сохранённую версию объекта из базы, отменив несохранённые правки. Команда незаменима при конфликтах версий и устаревших данных, но необратимо удаляет всё, что не было записано. Перед перечитыванием убедитесь, что ценные изменения сохранены.