Правка структуры и данных информационной базы 1С 8.3: от Конфигуратора до SQL
Содержание
Редактировать базу данных 1С 8.3 можно на двух уровнях. Структуру (справочники, реквизиты, документы, регистры) меняют в Конфигураторе или расширением, а сами данные — в пользовательском режиме: через Все функции, ручную корректировку движений и обработки группового изменения. Прямой SQL к таблицам базы — крайний случай, и только для чтения.
Выбор способа зависит от задачи. Поправить реквизит у 500 контрагентов, добавить поле в справочник и перенести базу на новый сервер — это три разных инструмента. Ниже каждый из них по порядку: от самого безопасного к самому рискованному.
Любую правку структуры или массовую правку данных начинайте с резервной копии: выгрузка .dt в Конфигураторе (Администрирование → Выгрузить информационную базу) или бэкап средствами СУБД для серверной базы. Без копии откатить массовое изменение невозможно.
Что именно вы хотите изменить: структура или данные
Сначала разделите задачу. От этого зависит инструмент и права, которые понадобятся.
| Что меняем | Пример | Инструмент | Нужны права |
|---|---|---|---|
| Метаданные (структуру) | Новый реквизит, новый документ, правка формы | Конфигуратор или расширение | Администратор, доступ в Конфигуратор |
| Отдельные записи | Исправить ИНН, дату, сумму в одном документе | Обычные формы, Все функции | Права на объект |
| Движения документа | Поправить проводку или запись регистра | Ручная корректировка движений | Расширенные права, обычно «Полные права» |
| Массово однотипные данные | Сменить реквизит у сотен элементов | «Групповое изменение реквизитов», внешняя обработка | Администратор |
| Физическое хранение | Индексы, итоги, повреждённые таблицы | Тестирование и исправление, chdbfl.exe | Монопольный доступ |
💡 Если правку можно сделать формой программы, делайте формой. Платформа при записи выполнит все проверки, перепроведёт связанные данные и зарегистрирует изменение для обменов. Любой обходной путь эти механизмы отключает.
Правка структуры базы в Конфигураторе и через расширения
Структура информационной базы — это её конфигурация. Открыть её можно так:
- Запустите 1С, выберите базу и нажмите
Конфигуратор. - В меню выберите
Конфигурация → Открыть конфигурацию. - Внесите изменения в дереве метаданных: добавьте реквизит, табличную часть, форму.
- Нажмите
Конфигурация → Обновить конфигурацию базы данных(клавишаF7).
На последнем шаге платформа сравнивает основную конфигурацию с конфигурацией базы данных и показывает список изменений. Если меняются таблицы, идёт реструктуризация. Для неё нужен монопольный доступ: пользователи должны выйти из базы, иначе обновление не применится.
Типовая конфигурация на поддержке
У типовых решений (БП 3.0, ЗУП 3.1, УТ 11) конфигурация по умолчанию закрыта от изменений. Чтобы править её напрямую, нужно открыть Конфигурация → Поддержка → Настройка поддержки и включить возможность изменения.
После этого каждое обновление превращается в сравнение и объединение конфигураций. Это долго и требует программиста. Поэтому на практике напрямую типовую не трогают.
Расширение вместо снятия с поддержки
Расширения появились в платформе 8.3.6. Это отдельный слой поверх типовой конфигурации, который не снимает её с поддержки:
- 🧩 можно добавить реквизит к справочнику или документу;
- 🧩 можно переопределить форму или печатную форму;
- 🧩 можно добавить свои справочники, отчёты, обработки;
- 🧩 обновление типовой ставится как обычно, расширение остаётся подключённым.
Создать расширение
можно в Конфигураторе: Конфигурация → Расширения конфигурации. Подключить готовый файл .cfe в пользовательском режиме — через Администрирование → Печатные формы, отчеты и обработки → Расширения. Загрузка файла расширения и обновление конфигурации
базы данных — два отдельных шага: после загрузки в Конфигураторе тоже нажмите F7.
После обновления типовой проверьте, что расширение подключилось без ошибок. Если в типовой переименовали объект, который расширение заимствует, оно перестанет применяться, и программа об этом сообщит при запуске.
Как редактировать данные базы 1С без программирования
Большую часть правок данных делают в пользовательском режиме. Программирование здесь не нужно, нужны права.
Режим «Все функции»
Через него открывается любой объект базы, даже тот, которого нет в разделах меню: служебные справочники, регистры сведений, константы.
- Откройте
Главное меню → Сервис → Параметры. - Поставьте флажок «Отображать команду “Все функции”».
- В главном меню появится
Все функции. В дереве выберите вид объекта (Справочники, Документы, Регистры сведений) и нужный объект.
Регистры сведений в этом режиме часто можно править прямо в списке. Регистры накопления и бухгалтерии напрямую не редактируются: их записи формируют документы.
Ручная корректировка движений документа
Если документ провёлся неверно, а перепровести его с другими данными нельзя, правят сами движения:
- Откройте документ и нажмите кнопку просмотра движений (в БП это кнопка
ДтКт). - Включите флажок ручной корректировки в открывшейся форме.
- Исправьте записи на вкладках регистров и запишите.
После этого документ при перепроведении не перезапишет ваши движения. Это и плюс, и ловушка: если позже изменить сумму в шапке, проводки не поменяются. Помечайте такие документы комментарием.
Для проводок, не связанных с документом, в БП есть ручная операция: Операции → Операции, введенные вручную.
Групповое изменение реквизитов
В типовых конфигурациях на БСП есть встроенная обработка для массовой правки: Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.
Порядок работы:
- Выберите вид объекта, например «Контрагенты».
- Задайте отбор: какие элементы изменить.
- Укажите реквизит и новое значение.
- Нажмите
Изменить реквизиты.
Перед массовым изменением сделайте отбор как можно уже и сначала проверьте его на 2–3 элементах. Обработка записывает объекты штатно, с проверками, поэтому ошибки заполнения она покажет, а не проглотит.
В том же разделе обслуживания обычно лежат «Поиск и удаление дублей» и «Удаление помеченных объектов».
Внешние обработки для правки данных базы 1С
Когда штатных средств не хватает, пишут внешнюю обработку
(.epf). Это код, который выполняется внутри базы с правами пользователя и работает через объектную модель платформы.
Открыть такую обработку можно двумя путями:
- 📂
Главное меню → Файл → Открыть— разово, при наличии права «Интерактивное открытие внешних отчетов и обработок»; - 📂
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки— для постоянного использования, с назначением прав.
Пример серверной процедуры, которая заполняет пустой реквизит у элементов справочника. Имена справочника и реквизита замените на свои:
&НаСервере
Процедура ЗаполнитьНаСервере(НовоеЗначение)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Спр.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Спр
|ГДЕ
| НЕ Спр.ЭтоГруппа
| И НЕ Спр.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Изменено = 0;
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Если ЗначениеЗаполнено(Объект.Комментарий) Тогда
Продолжить;
КонецЕсли;
Объект.Комментарий = НовоеЗначение;
Объект.Записать();
Изменено = Изменено + 1;
КонецЦикла;
Сообщить(СтрШаблон("Изменено элементов: %1", Изменено));
КонецПроцедуры
Объект.Записать() здесь проходит все обработчики конфигурации: проверки, регистрацию изменений для обмена, историю данных. Это медленнее, но безопасно.
Режим «ОбменДанными.Загрузка»
Опытные специалисты иногда ставят перед записью Объект.ОбменДанными.Загрузка = Истина. Запись идёт быстро, но без обработчиков ПередЗаписью и проверок конфигурации.
Используйте этот режим только когда точно знаете, что пропускаете. Иначе в базе появятся объекты, которые программа сама записать бы не дала: без обязательных реквизитов, с несогласованными связями.
💡 Для поиска «что править» удобна консоль запросов: ею выбирают объекты по условию, проверяют, сколько их, и только потом запускают изменение.
Прямое редактирование базы данных 1С через SQL: чем рискуете
В клиент-серверном варианте база лежит в MS SQL Server или PostgreSQL. Технически к её таблицам можно подключиться напрямую. Имена у них служебные: _Reference42, _Document150, _AccumRg1234. Сопоставить их с объектами конфигурации помогает функция встроенного языка ПолучитьСтруктуруХраненияБазыДанных().
Чтение через SQL допустимо: отчёты, аналитика, поиск проблемы. А вот запись в обход платформы ломает базу. Почему:
- ❌ итоги регистров. Остатки и обороты хранятся в отдельных таблицах итогов.
UPDATEв таблице движений их не пересчитает, отчёты разойдутся с документами; - ❌ кэш сервера 1С. Рабочие процессы держат данные в памяти. Изменение, сделанное мимо платформы, пользователи могут не увидеть до перезапуска;
- ❌ обмены. Изменение не регистрируется в планах обмена, филиалы и сайт о нём не узнают;
- ❌ ссылки и типы. Ссылки хранятся в двоичном виде, составные типы занимают несколько полей. Ошибка в одном байте даёт «битую ссылку»;
- ❌ поддержка. Фирма 1С и партнёры не разбирают ошибки в базе, где данные меняли в обход платформы.
Для файловой базы (1Cv8.1CD) SQL неприменим вовсе: это собственный формат платформы, и сторонние «редакторы 1CD» легко его портят.
Если всё же приходится выполнять запрос на изменение в СУБД (например, по рекомендации разработчика конфигурации), делайте это при остановленных сеансах. Остановка сеансов обрывает работу пользователей, поэтому выбирайте нерабочее время и предупредите их заранее. После правки выполните пересчёт итогов.
Командная строка: пакетный режим Конфигуратора и утилиты
Почти всё, что делается в Конфигураторе мышкой, можно запустить из командной строки. Это нужно для ночных регламентов и для обслуживания многих баз.
Основа — запуск 1cv8.exe в режиме DESIGNER:
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER ^
/F "D:\Base\Buh" /N "Администратор" /P "пароль" ^
/DisableStartupDialogs /Out "D:\Logs\update.log" ^
/UpdateDBCfg
Номер версии в пути замените на свой. Для серверной базы вместо /F используют /S "сервер\имябазы".
Полезные ключи:
| Ключ | Что делает |
|---|---|
/DumpIB файл.dt | Выгружает базу в файл .dt |
/RestoreIB файл.dt | Загружает базу из .dt, текущие данные заменяются |
/LoadCfg файл.cf | Загружает конфигурацию из файла |
/UpdateDBCfg | Обновляет конфигурацию базы данных |
/IBCheckAndRepair | Тестирование и исправление с параметрами |
/Out файл | Пишет протокол работы в файл |
Начиная с 8.3.14 в состав платформы входит утилита ibcmd. Она работает с базой без запуска Конфигуратора и без сервера 1С, что удобно для скриптов. Список команд выводит ibcmd help.
Для серверной базы управлять сеансами из скрипта можно через rac: rac session list покажет, кто подключён. Остальные параметры смотрите в rac help.
Обновление типовой конфигурации и перенос данных между базами
Обновление релиза — тоже редактирование базы : меняется структура и выполняются обработчики, которые переписывают данные.
Для типовой конфигурации без доработок проще всего обновиться в пользовательском режиме: Администрирование → Интернет-поддержка и сервисы → Обновление версии программы. Программа сама скачает файл обновления, сделает копию и применит её.
Для доработанной конфигурации путь другой:
- В Конфигураторе:
Конфигурация → Поддержка → Обновить конфигурацию. - Укажите файл обновления
.cfu. - В окне сравнения проверьте объекты, которые изменили и вы, и поставщик.
- Выполните объединение и обновите конфигурацию базы данных (
F7). - Запустите базу в пользовательском режиме: там отработают обработчики обновления.
Без пятого шага обновление не завершено. Пока обработчики не прошли, данные могут быть в промежуточном состоянии.
Перенос данных
Когда данные нужно перенести между разными конфигурациями, правку таблиц не используют. Варианты:
| Метод | Когда | Риски |
|---|---|---|
Выгрузка и загрузка .dt | Та же конфигурация, перенос целиком | /RestoreIB затирает базу-приёмник |
| Типовые правила переноса (например, из БП 2.0 в 3.0) | Переход на новую редакцию | Остатки и справочники сверять вручную |
| Конвертация данных и обмен XML | Разные конфигурации, частичный перенос | Ошибки правил дают дубли |
| Синхронизация данных | Регулярный обмен двух баз | Конфликты при правке с двух сторон |
Проверка и восстановление целостности базы
Если база начала выдавать ошибки после неудачной правки, сбоя питания или прямого вмешательства, её проверяют штатными средствами.
Тестирование и исправление в Конфигураторе
Путь: Администрирование → Тестирование и исправление. Нужен монопольный доступ, так что все пользователи должны выйти.
Режимы проверки:
- 🔧 Реиндексация таблиц — перестраивает индексы, лечит ошибки поиска и сортировки;
- 🔧 Проверка логической целостности — находит несоответствия в структуре хранения;
- 🔧 Проверка ссылочной целостности — ищет битые ссылки на несуществующие объекты;
- 🔧 Пересчёт итогов — заново считает остатки регистров по движениям;
- 🔧 Сжатие таблиц — убирает пустое место после удалений;
- 🔧 Реструктуризация таблиц — пересоздаёт таблицы базы, самый долгий режим.
Сначала запустите проверку без исправления: переключатель «Только проверка». Посмотрите протокол и только потом решайте, что делать с битыми ссылками. Вариант «Создавать объекты» безопаснее, чем «Удалять ссылки»: удаление стирает данные в реквизитах без возврата.
То же самое из командной строки:
1cv8.exe DESIGNER /F "D:\Base\Buh" /N "Администратор" /P "пароль" ^
/IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -TestOnly ^
/Out "D:\Logs\check.log"
Утилита chdbfl.exe для файловой базы
Если файловая база не открывается вовсе, Конфигуратор не поможет. Тогда используют chdbfl.exe из папки bin установленной платформы. Она проверяет физическую целостность файла 1Cv8.1CD.
- Убедитесь, что базу никто не использует, и скопируйте
1Cv8.1CDв отдельную папку. - Запустите
chdbfl.exe, укажите путь к файлу. - Сначала проверьте без флажка «Исправлять обнаруженные ошибки».
- При ошибках включите флажок и запустите повторно.
- Затем выполните тестирование и исправление в Конфигураторе.
Пересчёт итогов в пользовательском режиме
Если остатки в отчётах не сходятся с движениями, а монопольный доступ получить нельзя, откройте Все функции → Стандартные → Управление итогами. Там можно пересчитать итоги отдельного регистра.
Частые вопросы
Можно ли узнать, кто и когда изменил данные в базе?
Администрирование → Обслуживание → Журнал регистрации. Отфильтруйте по объекту или пользователю. Изменения через SQL туда не попадают.Нужен ли программист, чтобы добавить поле в справочник?
Чем выгрузка .dt отличается от копии файла 1Cv8.1CD?
.dt работает и для серверной базы и не зависит от СУБД, но её загрузка полностью заменяет данные базы-приёмника.Можно ли редактировать базу данных 1С, пока в ней работают пользователи?
.dt требуют, чтобы все вышли.Где взять структуру таблиц базы для SQL-запросов на чтение?
ПолучитьСтруктуруХраненияБазыДанных() и выведите результат в таблицу: в ней видно, какому объекту соответствует каждая таблица и поле.