TGViewer
Антон Дорошкевич | маяк в мире 1С и СУБД Антон Дорошкевич | маяк в мире 1С и СУБД @explorer1c · 2.02K subscribers
Post #16 2.52K
1️⃣🔤 + 🔤🔤🔤 Запись не найдена в менеджере имён базы данных

Достаточно редкая, но очень "противная" и непонятная ошибка.
Что только не делают чтобы её убрать:
▫️Удаляют базу с кластера 1С и регистрируют заново.
▫️Добавляют базу в другой кластер 1С.
▫️Останавливают службу 1С с очисткой сеансовых данных.

Все эти способы почти никогда не помогают.

❗️Что было замечено?
▫️Эта ошибка практически в 100% случаев возникает только с базами PostgreSQL.
▫️Так же практически всегда она возникает после того как базу восстановили из дампа с помощью pg_restore.

Давайте разбираться в чём же проблема? Неужели виновата "православная" СУБД?

Проблема в том, что по умолчанию pg_restore НЕ УДАЛЯЕТ базу перед восстановлением в неё дампа.
Т.е. в восстановленной базе есть "ошмётки" от старой базы и новые данные из дампа.

Именно это и приводит к появлению ошибки "Запись не найдена в менеджере имён базы данных".

Почему ошибка не всегда и не у всех?
Потому что если вы восстанавливаете базу в её же "старый вариант", то возможно вам повезёт и платформа не обнаружит нарушений в своих системных данных и всё будет работать.

Как сделать так чтобы ошибка возникла с вероятностью 99%?
▫️На СУБД не должно быть нашей базы test.
▫️Добавить базу в кластере 1С с установленной галкой "Создать в случае отсутствия".
▫️Восстановить дамп в эту базу, причём дамп сливался с базы с названием отличным от test.

В отличии от PostgreSQL, MS SQL наоборот всегда УДАЛЯТ базу, СОЗДАЁТ заново пустую и в неё уже восстанавливает резервную копию - поэтому при использованию MS SQL этой ошибки и не возникает.

Как же правильно восстанавливать/обновлять существующую базу 1С на PostgreSQL?
❗️Вариант 1 (универсальный):
▫️Удалить базу с кластера 1С
▫️Удалить базу с СУБД PostgreSQL
▫️Создать пустую базу 1С на PostgreSQL скриптом (пример для PG 17):

CREATE DATABASE test
WITH
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
ICU_LOCALE = 'ru-RU'
LOCALE_PROVIDER = 'icu'
TABLESPACE = pg_default
CONNECTION LIMIT = -1
IS_TEMPLATE = False;


▫️Восстановить дамп через pg_restore в базу test
▫️Добавить базу в кластер 1С

❗️Вариант 2:
▫️Удалить базу с кластера 1С
▫️Восстановить дамп через pg_restore в базу с тем названием, которое было у оригинальной базы с которой делался дам с параметрами --clean --create
▫️Добавить базу в кластер 1С

❗️Небольшая, но важная особенность:
С параметром --create база, заданная параметром -d, применяется только для подключения и выполнения начальных команд DROP DATABASE и CREATE DATABASE. Все данные восстанавливаются в базу данных, имя которой записано в архиве.

❗️Так же обратите внимание что во всех вариантах при восстановлении базы на уровне СУБД (не перезаливкой dt) необходимо удалять базу с кластера 1С и добавлять заново. Так как кластер 1С не в курсе что ему подсунули новую базу и вся система кэширования в итоге оказывается проблемой, а не помощником.
Эта особенность не зависит от того какую СУБД использовать PostgreSQL или MS SQL
  • 🔥 40
  • ❤ 9
  • 👍 8
  • 😱 1
  • 🤬 1
More from @explorer1c
  1. Sep 21, 2026Можно ли сделать поведение PostgreSQL в отношении потребления памяти процессами более жест…
  2. Sep 11, 2026Сегодня ровно год первому сообщению в канале! Огромное спасибо всем вам! Честно - было оче…
  3. Sep 9, 2026Теперь на багборде можно легко и быстро сравнить версии платформы по изменениям! Уверен чт…
  4. Sep 7, 2026Начнём...)
  5. Sep 2, 2026Как собрать для анализа запроса все временные таблицы с их содержимым? Все мы хорошо знаем…
  6. Aug 26, 2026Небольшой анонс поездок и мероприятий с моим участием: 08-10/09 - Обучение по кластеру 1с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →