Пропала номенклатура в 1С: способы вернуть справочник
Содержание
Если из справочника пропала позиция, сначала определите, что с ней случилось: элемент всего лишь помечен на удаление или уже стёрт из базы физически. Это два разных состояния, и способы возврата у них разные.
Помеченный на удаление элемент никуда не делся — он лежит в базе с крестиком на значке, и пометку снимают за секунду. Физическое удаление происходит только после запуска процедуры Удаление помеченных объектов, и после него элемент восстанавливают из резервной копии или создают заново. Разберём оба сценария, а заодно — как найти виновника удаления и как закрыть доступ к удалению на будущее.
С чего начать: пометка или физическое удаление
Откройте справочник: Справочники → Номенклатура (в БП 3.0 — Справочники → Товары и услуги → Номенклатура). Попробуйте найти пропавшую позицию через строку поиска по наименованию или артикулу.
Три возможных исхода:
- 🔸 Позиция нашлась с перечёркнутым значком — это пометка на удаление. Самый лёгкий случай, элемент цел.
- 🔸 Позиции нет в списке, но в документах на неё ссылки живые — скорее всего список отфильтрован и прячет помеченные строки. Включите показ помеченных объектов в настройке списка.
- 🔸 Позиции нет, а в документах вместо неё
<Объект не найден> (ссылка недействительна)— элемент удалён физически. Нужна копия базы .
Ссылка в документе вида <Объект не найден> (ссылка недействительна [GUID]) — верный признак, что элемент стёрт физически. Пока на месте читаемое наименование с крестиком, данные целы.
Как узнать, кто и когда удалил номенклатуру
Прежде чем восстанавливать, полезно понять, когда элемент исчез — от этого зависит, какая копия базы подойдёт. Это видно в журнале регистрации.
Откройте Администрирование → Обслуживание → Журнал регистрации (в некоторых конфигурациях — НСИ и администрирование → Журнал регистрации). Нажмите отбор (настройку списка) и задайте условия:
- Период — примерный диапазон, когда позиция ещё была в работе.
- Событие — выберите события удаления данных (в списке событий они идут с пометкой об удалении объекта).
- При желании — пользователь, если подозреваете конкретного сотрудника.
В найденных записях журнал покажет дату, время, имя пользователя и представление удалённого объекта. Так вы узнаете и дату для подбора копии, и кто запустил Удаление помеченных объектов.
Журнал фиксирует удаление только если регистрация событий включена и не настроена «по минимуму». Если журнал пуст — отбор событий отключён, и восстановить картину задним числом не выйдет. Это ещё один довод включить полное логирование.
Снятие пометки на удаление — если элемент ещё в базе
Когда позиция нашлась с крестиком, физического удаления не было. Процедура Удаление помеченных объектов ещё не запускалась, и вернуть элемент можно прямо из списка.
Порядок действий:
- Встаньте на строку с помеченной номенклатурой.
- Нажмите клавишу
Del— она переключает пометку. Либо в командной панели списка откройте менюЕщёи выберите снятие пометки на удаление. - Крестик со значка пропадёт — элемент снова активен и доступен для подбора в документах.
Если помеченных позиций много и их не видно в списке, включите их показ. Нажмите Ещё → Настроить список (или значок настройки над списком) и снимите отбор, который скрывает помеченные строки. После этого перечёркнутые позиции станут видны, и пометку можно снять сразу у нескольких — выделите их мышью с зажатым Ctrl и нажмите Del.
Пока вы не запускали «Удаление помеченных объектов», ни один помеченный элемент физически не потерян — снятие пометки возвращает его полностью, со всеми реквизитами и ссылками.
Это же объясняет, почему удалить номенклатуру, задействованную в документах, «в один клик» нельзя. Процедура удаления проверяет ссылочную целостность: если на позицию ссылается хоть один документ или регистр, она не удалится, а программа покажет список мест, где элемент используется. Поэтому физическое удаление ходовой номенклатуры — почти всегда следствие того, что сначала вычистили ссылки, и только потом удалили сам элемент.
Восстановление номенклатуры из резервной копии базы
Если элемент стёрт физически, его неоткуда «снять пометку» — данных в базе уже нет. Остаётся резервная копия на дату, когда позиция ещё существовала (её вы определили по журналу регистрации).
Варианты, откуда взять копию:
| Источник копии | Где искать | Что это |
|---|---|---|
| Стандартное резервное копирование | Администрирование → Обслуживание → Резервное копирование и восстановление | Копии, которые делает сама программа по расписанию (файловый режим) |
Выгрузка .dt | Конфигуратор → Администрирование → Выгрузить информационную базу | Полный дамп базы одним файлом |
| Копия файла базы | Папка базы, файл 1Cv8.1CD | Прямая копия файловой базы (когда все вышли) |
| Копия от обслуживающей компании или хостинга | У администратора / в облаке (1cfresh) | Регламентные копии на стороне сервера |
Ключевой момент: не загружайте копию или .dt поверх рабочей базы, чтобы достать одну позицию. Загрузка дампа полностью заменяет базу и откатит всю работу, сделанную после даты копии, — потеряете свежие документы.
Правильный путь — развернуть копию как отдельную базу:
- Создайте в списке баз новую пустую информационную базу (
1cv8→Добавить). - В Конфигураторе этой новой базы выполните
Администрирование → Загрузить информационную базуи укажите файл.dt. Либо подключите скопированный1Cv8.1CDкак отдельную базу. - Откройте копию в режиме
1С:Предприятиеи убедитесь, что нужная номенклатура там есть.
Теперь задача — перенести позицию из копии в рабочую базу, не трогая остальное. Об этом следующий раздел.
Разворачивайте копию на отдельном месте и под монопольным доступом. Загрузка .dt требует, чтобы в базе не было активных сеансов, и затирает её целиком — для рабочей базы это недопустимо.
Перенос позиции из копии через выгрузку в XML
Когда копия развёрнута отдельной базой, перенести из неё только справочник номенклатуры (или отдельные элементы) помогает типовая обработка выгрузки и загрузки данных.
Используйте обработку Выгрузка и загрузка данных XML (её берут из поставки ИТС и подключают через Файл → Открыть). Схема такая:
- В базе-копии откройте обработку, в дереве метаданных отметьте
Справочники → Номенклатура. При необходимости задайте отбор, чтобы выгрузить только нужные элементы, а не весь справочник. - Выгрузите данные в файл
.xml. - В рабочей базе откройте ту же обработку и загрузите этот файл.
Обработка переносит элементы по их внутренним идентификаторам. Если удалённый элемент загрузится с тем же GUID, что был раньше, то битые ссылки в документах почнутся сами собой — они снова найдут «свой» объект. Это и есть главное преимущество переноса из копии перед ручным пересозданием: не нужно руками проходить десятки документов.
Вместе с элементом стоит перенести и то, что с ним связано напрямую: единицу измерения, вид номенклатуры, при необходимости — ценовые данные и штрихкоды, если они хранятся отдельными регистрами. Иначе перенесённая позиция окажется неполной, и часть реквизитов придётся дозаполнять вручную. В дереве метаданных обработки отметьте нужные объекты вместе с номенклатурой — выгрузка соберёт их в один файл.
Загрузка данных по XML способна перезаписать существующие элементы с совпадающими идентификаторами. Сначала проверьте перенос на копии рабочей базы, а не на боевой. Операцию выполняйте, когда пользователи вышли.
Для разовой задачи проще бывает не возиться с обработкой, а просто переписать реквизиты из копии вручную — если позиция одна. Но тогда ссылки придётся чинить отдельно (см. ниже), потому что новый элемент получит новый идентификатор.
Расширения конфигурации (появились в платформе 8.3.6) для такой задачи избыточны: перенос данных решается типовой обработкой, менять конфигурацию ради восстановления одной позиции не нужно.
Создание элемента заново и починка битых ссылок
Если копии нет вообще, а позиция нужна — создайте её заново. Это не вернёт старый элемент, но закроет дыру в учёте и уберёт недействительные ссылки.
Порядок:
- В справочнике номенклатуры нажмите
Создатьи заполните карточку: наименование, артикул, единицу измерения, ставку НДС, вид номенклатуры (товар/услуга), группу. - Сохраните элемент.
- Перепроведите или отредактируйте документы, где стояла недействительная ссылка, подставив в них новую позицию.
Главная трудность — найти все документы с битой ссылкой. Удобный способ: встаньте на похожую живую позицию, через меню Ещё вызовите поиск связанных документов и посмотрите, по каким документам обычно проходит такая номенклатура. В самих документах недействительная ссылка подсвечивается как <Объект не найден> — её нужно заменить на новый элемент и перепровести документ
.
Перепроведение задним числом меняет движения по регистрам (остатки, себестоимость, взаиморасчёты). Делайте это осознанно и желательно после резервной копии — при большом числе документов последствия лучше сначала оценить на копии базы.
Если недействительных ссылок много и они однотипные, массовую замену выполняют обработкой Групповое изменение реквизитов (Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов). Но с удалёнными объектами она помогает не всегда — подставить несуществующий объект нельзя, сначала нужен новый элемент-замена.
После восстановления проверьте результат, а не считайте задачу закрытой по факту появления строки в справочнике. Минимум:
- Откройте один-два документа, где раньше была битая ссылка, и убедитесь, что позиция подставилась и читается.
- Сформируйте оборотно-сальдовую ведомость по счёту учёта товаров с отбором по восстановленной номенклатуре — остатки и обороты должны сойтись с ожидаемыми.
- Если перепроводили документы, сверьте, что движения по регистрам не задвоились и не изменились суммы в закрытых периодах.
Как защитить справочник от случайного удаления
Чаще всего номенклатуру теряют не из-за сбоя, а из-за прав: обычный пользователь пометил позицию и кто-то запустил удаление помеченных. Закрывается это настройкой ролей.
Что стоит сделать:
- 🔸 Уберите у рядовых пользователей право на интерактивное удаление помеченных объектов. В типовых конфигурациях запуск
Удаление помеченных объектовоставляют администратору. Настройка — вАдминистрирование → Настройки пользователей и прав. - 🔸 Разделите пометку и удаление. Пусть пользователи могут только помечать на удаление, а решение о физическом удалении принимает ответственный — после проверки, что позиция действительно лишняя.
- 🔸 Включите полное ведение журнала регистрации, чтобы любое удаление было видно постфактум (
Администрирование → Обслуживание → Журнал регистрации → Настройка). - 🔸 Настройте регулярное резервное копирование и проверяйте, что копии реально создаются и открываются. Копия, которую никто ни разу не разворачивал, может оказаться нерабочей в самый нужный момент.
Эта дисциплина дешевле любого восстановления: снять пометку можно за секунду, а собирать справочник из копии и чинить ссылки — это часы работы.