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