Правка структуры и данных информационной базы 1С 8.3: от Конфигуратора до SQL

· 11 мин

Содержание

Редактировать базу данных 1С 8.3 можно на двух уровнях. Структуру (справочники, реквизиты, документы, регистры) меняют в Конфигураторе или расширением, а сами данные — в пользовательском режиме: через Все функции, ручную корректировку движений и обработки группового изменения. Прямой SQL к таблицам базы — крайний случай, и только для чтения.

Выбор способа зависит от задачи. Поправить реквизит у 500 контрагентов, добавить поле в справочник и перенести базу на новый сервер — это три разных инструмента. Ниже каждый из них по порядку: от самого безопасного к самому рискованному.

Любую правку структуры или массовую правку данных начинайте с резервной копии: выгрузка .dt в Конфигураторе (Администрирование → Выгрузить информационную базу) или бэкап средствами СУБД для серверной базы. Без копии откатить массовое изменение невозможно.

Что именно вы хотите изменить: структура или данные

Сначала разделите задачу. От этого зависит инструмент и права, которые понадобятся.

Что меняемПримерИнструментНужны права
Метаданные (структуру)Новый реквизит, новый документ, правка формыКонфигуратор или расширениеАдминистратор, доступ в Конфигуратор
Отдельные записиИсправить ИНН, дату, сумму в одном документеОбычные формы, Все функцииПрава на объект
Движения документаПоправить проводку или запись регистраРучная корректировка движенийРасширенные права, обычно «Полные права»
Массово однотипные данныеСменить реквизит у сотен элементов«Групповое изменение реквизитов», внешняя обработкаАдминистратор
Физическое хранениеИндексы, итоги, повреждённые таблицыТестирование и исправление, chdbfl.exeМонопольный доступ

💡 Если правку можно сделать формой программы, делайте формой. Платформа при записи выполнит все проверки, перепроведёт связанные данные и зарегистрирует изменение для обменов. Любой обходной путь эти механизмы отключает.

Правка структуры базы в Конфигураторе и через расширения

Структура информационной базы — это её конфигурация. Открыть её можно так:

  1. Запустите 1С, выберите базу и нажмите Конфигуратор.
  2. В меню выберите Конфигурация → Открыть конфигурацию.
  3. Внесите изменения в дереве метаданных: добавьте реквизит, табличную часть, форму.
  4. Нажмите Конфигурация → Обновить конфигурацию базы данных (клавиша F7).

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

Типовая конфигурация на поддержке

У типовых решений (БП 3.0, ЗУП 3.1, УТ 11) конфигурация по умолчанию закрыта от изменений. Чтобы править её напрямую, нужно открыть Конфигурация → Поддержка → Настройка поддержки и включить возможность изменения.

После этого каждое обновление превращается в сравнение и объединение конфигураций. Это долго и требует программиста. Поэтому на практике напрямую типовую не трогают.

Расширение вместо снятия с поддержки

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

  • 🧩 можно добавить реквизит к справочнику или документу;
  • 🧩 можно переопределить форму или печатную форму;
  • 🧩 можно добавить свои справочники, отчёты, обработки;
  • 🧩 обновление типовой ставится как обычно, расширение остаётся подключённым.

Создать расширение можно в Конфигураторе: Конфигурация → Расширения конфигурации. Подключить готовый файл .cfe в пользовательском режиме — через Администрирование → Печатные формы, отчеты и обработки → Расширения. Загрузка файла расширения и обновление конфигурации базы данных — два отдельных шага: после загрузки в Конфигураторе тоже нажмите F7.

После обновления типовой проверьте, что расширение подключилось без ошибок. Если в типовой переименовали объект, который расширение заимствует, оно перестанет применяться, и программа об этом сообщит при запуске.

Как редактировать данные базы 1С без программирования

Большую часть правок данных делают в пользовательском режиме. Программирование здесь не нужно, нужны права.

Режим «Все функции»

Через него открывается любой объект базы, даже тот, которого нет в разделах меню: служебные справочники, регистры сведений, константы.

  1. Откройте Главное меню → Сервис → Параметры.
  2. Поставьте флажок «Отображать команду “Все функции”».
  3. В главном меню появится Все функции. В дереве выберите вид объекта (Справочники, Документы, Регистры сведений) и нужный объект.

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

Ручная корректировка движений документа

Если документ провёлся неверно, а перепровести его с другими данными нельзя, правят сами движения:

  1. Откройте документ и нажмите кнопку просмотра движений (в БП это кнопка ДтКт).
  2. Включите флажок ручной корректировки в открывшейся форме.
  3. Исправьте записи на вкладках регистров и запишите.

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

Для проводок, не связанных с документом, в БП есть ручная операция: Операции → Операции, введенные вручную.

Групповое изменение реквизитов

В типовых конфигурациях на БСП есть встроенная обработка для массовой правки: Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.

Порядок работы:

  1. Выберите вид объекта, например «Контрагенты».
  2. Задайте отбор: какие элементы изменить.
  3. Укажите реквизит и новое значение.
  4. Нажмите Изменить реквизиты.

Перед массовым изменением сделайте отбор как можно уже и сначала проверьте его на 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.

Обновление типовой конфигурации и перенос данных между базами

Обновление релиза — тоже редактирование базы : меняется структура и выполняются обработчики, которые переписывают данные.

Для типовой конфигурации без доработок проще всего обновиться в пользовательском режиме: Администрирование → Интернет-поддержка и сервисы → Обновление версии программы. Программа сама скачает файл обновления, сделает копию и применит её.

Для доработанной конфигурации путь другой:

  1. В Конфигураторе: Конфигурация → Поддержка → Обновить конфигурацию.
  2. Укажите файл обновления .cfu.
  3. В окне сравнения проверьте объекты, которые изменили и вы, и поставщик.
  4. Выполните объединение и обновите конфигурацию базы данных (F7).
  5. Запустите базу в пользовательском режиме: там отработают обработчики обновления.

Без пятого шага обновление не завершено. Пока обработчики не прошли, данные могут быть в промежуточном состоянии.

Перенос данных

Когда данные нужно перенести между разными конфигурациями, правку таблиц не используют. Варианты:

МетодКогдаРиски
Выгрузка и загрузка .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.

  1. Убедитесь, что базу никто не использует, и скопируйте 1Cv8.1CD в отдельную папку.
  2. Запустите chdbfl.exe, укажите путь к файлу.
  3. Сначала проверьте без флажка «Исправлять обнаруженные ошибки».
  4. При ошибках включите флажок и запустите повторно.
  5. Затем выполните тестирование и исправление в Конфигураторе.

Пересчёт итогов в пользовательском режиме

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

Диагностика: выберите симптом

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

Можно ли узнать, кто и когда изменил данные в базе?
Да, через журнал регистрации: Администрирование → Обслуживание → Журнал регистрации. Отфильтруйте по объекту или пользователю. Изменения через SQL туда не попадают.
Нужен ли программист, чтобы добавить поле в справочник?
Для простого реквизита без логики хватит базовых навыков работы с расширением. Если поле должно заполняться автоматически или попадать в отчёты, нужен разработчик.
Чем выгрузка .dt отличается от копии файла 1Cv8.1CD?
Копию файла можно сделать только для файловой базы и только при закрытой базе. Выгрузка .dt работает и для серверной базы и не зависит от СУБД, но её загрузка полностью заменяет данные базы-приёмника.
Можно ли редактировать базу данных 1С, пока в ней работают пользователи?
Данные в пользовательском режиме — да, с учётом блокировок. Обновление структуры, тестирование и исправление, загрузка .dt требуют, чтобы все вышли.
Где взять структуру таблиц базы для SQL-запросов на чтение?
Выполните в базе ПолучитьСтруктуруХраненияБазыДанных() и выведите результат в таблицу: в ней видно, какому объекту соответствует каждая таблица и поле.