Пропала номенклатура в 1С: способы вернуть справочник

· 9 мин

Содержание

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

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

С чего начать: пометка или физическое удаление

Откройте справочник: Справочники → Номенклатура (в БП 3.0 — Справочники → Товары и услуги → Номенклатура). Попробуйте найти пропавшую позицию через строку поиска по наименованию или артикулу.

Три возможных исхода:

  • 🔸 Позиция нашлась с перечёркнутым значком — это пометка на удаление. Самый лёгкий случай, элемент цел.
  • 🔸 Позиции нет в списке, но в документах на неё ссылки живые — скорее всего список отфильтрован и прячет помеченные строки. Включите показ помеченных объектов в настройке списка.
  • 🔸 Позиции нет, а в документах вместо неё <Объект не найден> (ссылка недействительна) — элемент удалён физически. Нужна копия базы .
Что произошло с позицией номенклатуры?

Ссылка в документе вида <Объект не найден> (ссылка недействительна [GUID]) — верный признак, что элемент стёрт физически. Пока на месте читаемое наименование с крестиком, данные целы.

Как узнать, кто и когда удалил номенклатуру

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

Откройте Администрирование → Обслуживание → Журнал регистрации (в некоторых конфигурациях — НСИ и администрирование → Журнал регистрации). Нажмите отбор (настройку списка) и задайте условия:

  1. Период — примерный диапазон, когда позиция ещё была в работе.
  2. Событие — выберите события удаления данных (в списке событий они идут с пометкой об удалении объекта).
  3. При желании — пользователь, если подозреваете конкретного сотрудника.

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

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

Снятие пометки на удаление — если элемент ещё в базе

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

Порядок действий:

  1. Встаньте на строку с помеченной номенклатурой.
  2. Нажмите клавишу Del — она переключает пометку. Либо в командной панели списка откройте меню Ещё и выберите снятие пометки на удаление.
  3. Крестик со значка пропадёт — элемент снова активен и доступен для подбора в документах.

Если помеченных позиций много и их не видно в списке, включите их показ. Нажмите Ещё → Настроить список (или значок настройки над списком) и снимите отбор, который скрывает помеченные строки. После этого перечёркнутые позиции станут видны, и пометку можно снять сразу у нескольких — выделите их мышью с зажатым Ctrl и нажмите Del.

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

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

Восстановление номенклатуры из резервной копии базы

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

Варианты, откуда взять копию:

Источник копииГде искатьЧто это
Стандартное резервное копированиеАдминистрирование → Обслуживание → Резервное копирование и восстановлениеКопии, которые делает сама программа по расписанию (файловый режим)
Выгрузка .dtКонфигуратор → Администрирование → Выгрузить информационную базуПолный дамп базы одним файлом
Копия файла базыПапка базы, файл 1Cv8.1CDПрямая копия файловой базы (когда все вышли)
Копия от обслуживающей компании или хостингаУ администратора / в облаке (1cfresh)Регламентные копии на стороне сервера

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

Правильный путь — развернуть копию как отдельную базу:

  1. Создайте в списке баз новую пустую информационную базу (1cv8 → Добавить).
  2. В Конфигураторе этой новой базы выполните Администрирование → Загрузить информационную базу и укажите файл .dt. Либо подключите скопированный 1Cv8.1CD как отдельную базу.
  3. Откройте копию в режиме 1С:Предприятие и убедитесь, что нужная номенклатура там есть.

Теперь задача — перенести позицию из копии в рабочую базу, не трогая остальное. Об этом следующий раздел.

Разворачивайте копию на отдельном месте и под монопольным доступом. Загрузка .dt требует, чтобы в базе не было активных сеансов, и затирает её целиком — для рабочей базы это недопустимо.

Перенос позиции из копии через выгрузку в XML

Когда копия развёрнута отдельной базой, перенести из неё только справочник номенклатуры (или отдельные элементы) помогает типовая обработка выгрузки и загрузки данных.

Используйте обработку Выгрузка и загрузка данных XML (её берут из поставки ИТС и подключают через Файл → Открыть). Схема такая:

  1. В базе-копии откройте обработку, в дереве метаданных отметьте Справочники → Номенклатура. При необходимости задайте отбор, чтобы выгрузить только нужные элементы, а не весь справочник.
  2. Выгрузите данные в файл .xml.
  3. В рабочей базе откройте ту же обработку и загрузите этот файл.

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

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

Загрузка данных по XML способна перезаписать существующие элементы с совпадающими идентификаторами. Сначала проверьте перенос на копии рабочей базы, а не на боевой. Операцию выполняйте, когда пользователи вышли.

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

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

Создание элемента заново и починка битых ссылок

Если копии нет вообще, а позиция нужна — создайте её заново. Это не вернёт старый элемент, но закроет дыру в учёте и уберёт недействительные ссылки.

Порядок:

  1. В справочнике номенклатуры нажмите Создать и заполните карточку: наименование, артикул, единицу измерения, ставку НДС, вид номенклатуры (товар/услуга), группу.
  2. Сохраните элемент.
  3. Перепроведите или отредактируйте документы, где стояла недействительная ссылка, подставив в них новую позицию.

Главная трудность — найти все документы с битой ссылкой. Удобный способ: встаньте на похожую живую позицию, через меню Ещё вызовите поиск связанных документов и посмотрите, по каким документам обычно проходит такая номенклатура. В самих документах недействительная ссылка подсвечивается как <Объект не найден> — её нужно заменить на новый элемент и перепровести документ .

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

Если недействительных ссылок много и они однотипные, массовую замену выполняют обработкой Групповое изменение реквизитов (Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов). Но с удалёнными объектами она помогает не всегда — подставить несуществующий объект нельзя, сначала нужен новый элемент-замена.

После восстановления проверьте результат, а не считайте задачу закрытой по факту появления строки в справочнике. Минимум:

  1. Откройте один-два документа, где раньше была битая ссылка, и убедитесь, что позиция подставилась и читается.
  2. Сформируйте оборотно-сальдовую ведомость по счёту учёта товаров с отбором по восстановленной номенклатуре — остатки и обороты должны сойтись с ожидаемыми.
  3. Если перепроводили документы, сверьте, что движения по регистрам не задвоились и не изменились суммы в закрытых периодах.

Как защитить справочник от случайного удаления

Чаще всего номенклатуру теряют не из-за сбоя, а из-за прав: обычный пользователь пометил позицию и кто-то запустил удаление помеченных. Закрывается это настройкой ролей.

Что стоит сделать:

  • 🔸 Уберите у рядовых пользователей право на интерактивное удаление помеченных объектов. В типовых конфигурациях запуск Удаление помеченных объектов оставляют администратору. Настройка — в Администрирование → Настройки пользователей и прав.
  • 🔸 Разделите пометку и удаление. Пусть пользователи могут только помечать на удаление, а решение о физическом удалении принимает ответственный — после проверки, что позиция действительно лишняя.
  • 🔸 Включите полное ведение журнала регистрации, чтобы любое удаление было видно постфактум (Администрирование → Обслуживание → Журнал регистрации → Настройка).
  • 🔸 Настройте регулярное резервное копирование и проверяйте, что копии реально создаются и открываются. Копия, которую никто ни разу не разворачивал, может оказаться нерабочей в самый нужный момент.
Перед тем как удалять помеченные объекты
Выполнено: 0 / 5

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

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

Можно ли вернуть номенклатуру после «Удаления помеченных объектов»?
Из самой базы — нет, процедура стирает объект физически. Вернуть можно только из резервной копии, снятой до удаления, либо создать элемент заново и перепривязать документы.
Почему номенклатура не удаляется, хотя я пометил её на удаление?
Срабатывает контроль ссылочной целостности: на позицию ссылается документ или регистр. Программа покажет, где она используется. Пока ссылки не убраны, физического удаления не произойдёт — и это защищает от потери данных.
Куда пропала позиция из списка, если в документах она есть?
Список отфильтрован и прячет помеченные на удаление строки. Откройте настройку списка и включите показ помеченных объектов — позиция появится с перечёркнутым значком.
Как перенести из копии только номенклатуру, не затирая рабочую базу?
Разверните копию отдельной базой и используйте типовую обработку выгрузки и загрузки данных XML: выгрузите справочник номенклатуры из копии и загрузите в рабочую базу. Загрузку делайте, когда пользователи вышли, предварительно проверив её на копии.
Что означает «ссылка недействительна» в документе?
Объект, на который ссылался документ, удалён физически. Значение хранится как внутренний идентификатор без читаемого представления. Исправляется либо восстановлением элемента из копии с тем же идентификатором, либо созданием нового элемента и заменой ссылки в документах.