Как сделать тестовую базу 1с
Статья предназначена, прежде всего, для компаний, обслуживающих значительные по объему базы данных (БД), от 0.5 ТБ и более. Тестовые среды для поддержки и разработки, как правило, ограничены. Потребность развернуть в тестовой среде 15-20 копий рабочей БД – вполне реальна, и вполне может быть, что рабочая БД – не одна. Также для тестов и разработки лучше использовать максимально актуальную копию рабочей БД.
Таким образом, задачу создания тестовой БД можно разделить на 2 этапа. На 1 этапе требуется понять, каким образом из рабочей базы объемом 0.5 ТБ получить тестовую базу объемом 50 ГБ.
В моей практике были в основном задачи подготовки тестовых БД на MS SQL, поэтому в части запросов к СУБД будем рассматривать запросы к СУБД MS SQL (что не мешает адаптировать Вам всё под Oracle)
Сперва следует оценить, какие таблицы в Вашей рабочей БД обладают наибольшим объёмом, и обладают ли эти таблицы ценностью в тестовой среде. Для определения наибольших по объёму таблиц можно использовать отчет в Management Studio MS SQL (Disk Usage by top tables):
Примечание: никто не запрещает Вам использовать многочисленные «базопузомеры» с инфостарта для этого также.
Для понимания ценности данных в таблицах можно использовать встроенные в платформу 1С средства – метод ПолучитьСтруктуруХраненияБазыДанных().
Сопоставив имена таблиц БД с именами таблиц 1С станет понятно, какие таблицы в тестовой базе не нужны. Пример таких таблиц:
- Справочники «Присоединенные файлы»
- Регистр сведений «Версии объектов»
- Регистр сведений «Двоичные данные файлов»
- Таблицы регистрации изменений для обмена
Выбрав наиболее объемные и малоценные для тестовой БД таблицы, можно написать скрипт их очистки: «USE ;
|TRUNCATE TABLE dbo.SomeDBName;»
В обработке, приложенной к статье, текст скрипта по указанным таблицам формируется автоматически.
Вторым шагом для значительного снижения объема тестовой БД является сжатие БД. Сжимаются все таблицы и индексы. Текст скрипта для сжатия БД также приложен к статье.
Теперь остался один вопрос – как транспортировать рабочую БД на тестовый сервер, чтобы каждое утро получать максимально уменьшенную свежую копию рабочей БД. Для этого можно использовать различные механизмы ( SQL DTS ), мастер Copy DB в Management Studio :
Также можно использовать скрипт, который развернёт бэкап рабочей БД в тестовой среде (на тестовом MS SQL ).
Как это работает:
1. На тестовом SQL сервере настроен план обслуживания, в котором последовательно выполняются следующие шаги:
2. Скрипт разворачивает бэкап рабочей БД на тестовом сервере в существующую эталонную тестовую БД.
3. Запускается скрипт очистки таблиц БД.
4. Запускается скрипт сжатия таблиц БД.
Описанным способом удалось размер одной из рабочих БД снизить в 8 раз, т.е. вместо 1 тестовой БД на тестовом сервере – теперь развернуто 8 тестовых БД.
Описанные в статье действия выполнялись в ознакомительных целях на платформе 1С 8.3. Скрипты, приложенные к статье, являются примером использования языка запросов MS SQL Server. Для тестов использовалась 1С 8.3.12.
Если в процессе работы в 1С:Бухгалтерия (8.3 редакция 3.0) возникают странные ошибки или она вообще перестала запускаться - базу нужно чинить.
Запускаем утилиту вручную
1. Для начала сделайте резервную копию имеющейся базы. Дело в том, что тестирование и исправление это необратимые операции над базой данных, которые почти всегда делают ситуацию лучше, но в очень небольшом проценте случаев могут все испортить. Вот на этот самый редкий случай мы и должны сначала сделать резервную копию.
2. Зайдите в папку, в которую у вас установлена 1С. Обычно это 'C:\Program Files\1cv8'. Здесь вы увидите папки в названии которых присутствуют цифры, обозначающие номера версий платформы. Выберите папку с самой старшей версией (в нашем случае 8.3.4.304):
3. Внутри этой папки вы найдете папку bin:
4. Зайдите в эту папку. Там много файлов. Найдите файл с названием chdbfl:
5. Запустите этот файл и перед вами откроется утилита для проверки физической целостности файла базы данных. Укажите имя файла базы данных, нажав кнопку с тремя точками:
6. Чтобы указать это имя зайдите внутрь папки той базы, которая не запускается и выберите там файл '1Cv8':
7. Поставьте галку 'Исправлять обнаруженные ошибки'. Бояться нечего, ведь у нас есть резервная копия. И нажмите кнопку 'Выполнить':
8. В зависимости от размера базы - проверка и исправление могут занять продолжительное время. Дождитесь окончания, закройте утилиту и запускайте базу - скорее всего она заработает.
Если исправление не помогло и стало только хуже - восстановите базу из резервной копии, которую мы сделали на первом этапе, а затем переходите к тестированию и исправлению базы через конфигуратор.
Запускаем утилиту через обновлятор
Для пользователей моего Обновлятора всё ещё проще.
Отметьте нужную базу в списке, а затем из пункта "Ещё" выберите пункт "6.16 Проверка физической целостности файла БД (chdbfl.exe)":
При этом обновлятор:
- сам заблокирует базу и выгонит работающих пользователей;
- сам создаст резервную копию базы;
- сам запустит утилиту chdbfl.exe и дождётся пока вы выполите в ней все необходимые проверки;
- сам пустит всех пользователей обратно после того как вы закроете утилиту chdbfl.exe.
При этом, если вам потребуется восстановить (откатить) базу на созданную резервную копию перед тестированием - отметьте базу галкой, а затем из пункта "Ещё" выберите вариант "6.01 Восстановить файл данных базы из zip, 7z, rar":
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Операция тестирования и исправления базы данных в обновляторе.
. равнозначна операции, которую мы запускаем из конфигуратора через меню "Администрирование-Тестирование и исправление. ":
Обновлятор запускает ту же самую операцию, но использует для этого пакетный режим конфигуратора и ключик IBCheckAndRepair.
Необходимость
В процессе работы с базой могут возникать различные нештатные ситуации - отключение питания компьютера, зависание операционной системы, различные сбои оборудования.
Если такие ситуации возникают в процессе записи изменений в базу, то это может приводить к её некорректному состоянию. Особенно это актуально для файловых баз.
Внешние проявления некорректного состояния базы могут быть разными, вплоть до невозможности её запуска.
Описываемая процедура тестирования и исправления баз как раз предназначена для диагностики и устранения ошибочных состояний баз (как файловых, так и клиент-серверных).
Подготовка
. необратимая операция! Позаботьтесь о резервной копии , из которой можно будет восстановить базу в случае неудачи.
Лучше всего сначала провести тестирования без исправления и только затем, на его основе выбрать способы исправления базы.
Общее напутствие
Обычно для регулярного обслуживания баз достаточно выполнять реиндексацию таблиц вместе с проверкой логической и ссылочной целостности.
Пересчёт итогов - по показаниям, если где-то поплыли цифры в отчётах.
Сжатие таблиц - для файловых сразу после их обновления.
С реструктуризацией таблиц будьте осторожны, это полная пересборка базы, может выполняться очень долго и завершиться аварийно.
Нюансы
При проверке логической целостности выполняется проверка того, что в основной таблице соответствующего объекта (справочник, план видов характеристик, план видов расчётов, план счетов) существует не более одной записи для каждого предопределённого элемента в каждой области данных. При обнаружении дублей (и если включена опция "исправлять") у них снимается признак предопределённости и устанавливается пометка удаления.
Регламентная операция "сжатие таблиц" возможна только для файловых баз. В этом случае выполняется оптимизация, связанная с размещением всех данных, необходимых для открытия информационной базы, вначале файла 1Cv8.1CD, непрерывным блоком данных. Такая оптимизация ускоряет открытие базы, особенно в случае баз, находящихся на сетевых ресурсах, с большим количеством таблиц. После выполнения реструктуризации базы, связанной с изменением структуры таблиц, рекомендуется повторно выполнять сжатие.
Будьте осторожны с проверкой (вместе с исправлением) ссылочной целостности для распределенных баз, у которых возможно получение данных, содержащих ссылки на объекты, не расположенные в тестируемой базе. В этом случае (если также включена опция "исправлять") при соответствующих опциях "несуществующие" данные будут созданы, а затем отправлены в другие узлы распределенной базы.
Опция "Прервать выполнение проверки. " позволяет задать интервал времени, по истечении которого тестирование будет прервано, а параметры тестирования и исправления сохранены до следующей сессии конфигуратора.
Опция "Продолжить прерванное ранее тестирование" позволяет продолжить процесс с того места, на котором он был прерван в предыдущей сессии тестирования и исправления.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Тестирование и исправление информационной базы 1С 8.3 необходимо выполнять в случае, если у вас возникают ошибки в работе информационной базы и перед обновлением конфигурации базы. В большинстве случаев при повреждении вашей информационной базы оно помогает.
Перед выполнением тестирования и исправления необходимо сделать резервную копию базы. Если же вы не можете зайти в конфигуратор, то в папке с установленной программой 1С есть утилита для тестирования и исправления, которая не требует запуска программы в режиме конфигуратор. Обо всем этом поговорим ниже.
Рассмотрим этот инструмент и как с ним работать. Особенно подробно разберем какие флаги надо ставить в интерфейсе.
Если у вас нет времени читать, можете просто просмотреть наше видео:
Тестирование и исправление в конфигураторе
Запустим программу в режиме конфигуратор:
Выбираем из меню Администрирование пункт “Тестирование и исправление”:
Какие галочки ставить?
Существуют различные варианты настройки тестирования, рассмотрим эти галки:
- Реиндексация таблиц информационной базы — это полное перестроение индексов для таблиц базы данных. Реиндексация повышает скорость работы информационной базы. Процедура длительная, но никогда не будет лишней.
- Проверка логической целостности информационной базы — проверять логическую и структурную целостность БД, исправляет ошибки в данных;
- Проверка ссылочной целостности информационной базы — проверка «битых ссылок» в базе данных. Такие ошибки могут возникать при непосредственном удалении объектов системы или сбоях. Существует 3 варианта действий для исправления таких ошибок:
- Создавать объекты — система создает элементы-заглушки, которые можно потом заполнить необходимой информацией,
- Очищать ссылки — «битые» ссылки будут очищены,
- Не изменять — система только покажет вам ошибки.
Получите понятные самоучители по 1С бесплатно:
В нашем примере проставим все галочки как показано на рисунке и нажимаем “Выполнить”:
После окончания тестирования нажимаем “Закрыть”:
Тестирование и исправление закончено.
Если конфигуратор не открывается: утилита chdbfl.exe
Если база повреждена настолько, что вы не можете зайти в конфигуратор, можно воспользоваться утилитой от 1С chdbfl.exe. Утилита устанавливается вместе с платформой 1С и найти ее можно в папке Bin каталога установки:
Перед тем как приступить к тестированию вам обязательно нужно сделать копию вашей базы, так как использование этой утилиты может привести к необратимым последствиям. Так как вы не можете зайти в конфигуратор, резервную копию надо делать простым копированием каталога вашей информационной базы.
После того как нажали копировать, нажимаем правой кнопкой на пустом месте окна папки и нажимаем “Вставить”. Копия сделана, запускаем утилиту:
Появляется главное окно утилиты. Нам нужно указать имя файла базы данных. Нажимаем на три точки. Открывается окно выбора файла БД. Ищем каталог вашей базы и в нем указываем на файл 1Cv8.1CD. Нажимаем “Открыть”.
Ставим галочку “Исправлять обнаруженные ошибки” и нажимаем “Выполнить”.
Ждем окончания операции. Она может занять продолжительное время, в зависимости от размера базы.
После выполнения, если были исправлены ошибки они отобразятся в окне утилиты. В моем случае ошибок не обнаружено. Нажимаем “Закрыть” и пробуем зайти в программу. Если зайти все же не получается, вам необходимо обратиться к специалисту.
Не раз было такое. подключаюсь к заказчику из-за какой-то новой ошибки, и вот опять:
А проблема, собственно, в том, что некоторые алгоритмы, которые успешно выполняются в режиме "Файловый", выполняются с ограничениями или не выполняются в режиме "Серверный". Один из популярных случаев - работа с DCOM компонентами. Когда, например, "Excel.Application" выполняется на сервере, а на клиенте не учитывается факт, что компонента может быть недоступна для службы Агента сервера 1С:Предприятие. Или другой случай - в обработке реализуется работа с файлами, которые должны сохраняться на клиенте через асинхронные процедуры Получение/ПомещениеФайлаНаСервере. В файловом режиме может работать без проблем, а в серверном оказывается, что не выполнена настройка какого-нибудь важного параметра. Еще случай - создание и использование схемы компоновки данных (СКД) должно выполняться на сервере, а на клиенте пересылаться с использованием процедур Поместить/ПолучитьИзВременногоХранилища, что может приводить к проблемам при неправильной программной генерации СКД.
В общем, свои алгоритмы надо тестировать во всех режимах использования, и дорабатывать для хорошей поддержки.
Аккуратно! Программистам и администраторам 1С8 с большим опытом дальше не читать) Не претендую на лавры. Публикация в помощь коллегам и друзьям с небольшим опытом.
В публикации не рассматривается настройка и тестирование базы данных в режиме "Веб-сервер".
Необходимые этапы настройки сервера 1С:Предприятие:
Название что в гугле 1. Установка платформы 1С со службами сервера Установка системы управления базами данных - СУБД (например, SQL Server) -----> 3. Создание информационной базы на сервере СУБД Выгрузка файловой базы данных 1С и загрузка на сервер СУБД -----> 5. Подключение к серверу СУБД по сети для запуска 1С на клиенте -----> 6. Включения отладки в режиме клиент-сервер -----> Пункты 1,2,3,4,6 выполняются на серверной стороне, пункт 5 - и на сервере, и на клиенте.
В интернете можно загуглить и найти много статей для выполнения каждого из вышеперечисленных пунктов. Постараюсь не повторять то, что уже написано, и рассматривать только те вопросы, которые часто остаются за скобками.
Клиент-серверная архитектура предполагает 2 точки использования базы данных - клиент и сервер.
Допустим много упрощений, поскольку настраивается информационная система только для тестирования собственных алгоритмов в клиент-серверном режиме, а значит нужно "просто запустить", чтобы попробовать.
ВЫБРАННЫЕ УСЛОВИЯ запуска: в качестве примера, используем стандартный ПК на основе Windows 10 Pro (x86-64) с обычной администраторской учетной записью для клиентской и серверной стороны, которые подключены к одной и той же сети со стандартными настройками, подобно домашней локальной и беспроводной сети. Используемая версия платформы: 1C:Предприятие 8 (x86-64) (8.3.18.1289).
Возможная схема нашей примитивной информационной системы:
I. Выполнение пункта 1 "Установка платформы 1С со службами сервера"
На сервере. Во время установки, для использования сервера 1C:Предприятие 8, добавить компоненты:
Понятно, что мы используем лицензионную версию с аппаратным ключом.
Если выбрать настройку "Создать пользователя USR1CV8", то служба Windows сервера 1C:Предприятие 8 будет запускаться учетной записью USR1CV8. По умолчанию, эта учетная запись создается со стандартными правами (не администраторскими), и если нужно будет выполнять действия, которые затрагивают системные компоненты (например, DCOM), то эти действия будут выполняться с ошибками.
Изменение типа учетной записи USR1CV8 (Параметры-Учетные записи-Семья и другие пользователи):
Если, всё таки, потребуется отказаться от использования учетной записи USR1CV8, то это можно изменить в панели "Службы" для "Агент сервера 1С:Предприятие" (Win+R, services.msc, OK):
Проверка, что фоновые процессы сервера 1С:Предприятие работают (Ctrl+Shift+Esc):
II. Выполнение пункта 2 "Установка системы управления базами данных - СУБД (например, SQL Server)"
На сервере. Для тестирования своих разработок достаточно установить бесплатную версию SQL Server Express. Например, подойдёт версия SQL Server 2014 Express. Поскольку запуск выполняется в Windows 10 Pro x86-64, скачиваем и устанавливаем SQL Server 2014 Express Edition with Tools with Service Pack 3, x64, English.
В простейшем случае, все настройки установщика используются по умолчанию, за исключением одного пункта - "Режим авторизации (Authentication mode)", в котором нужно разрешить авторизацию с помощью аккаунтов SQL Server и задать пароль для стандартного аккаунта "sa":
Запоминаем эти данные: аккаунт "sa" и заданный пароль (например, "1").
III. Выполнение пункта 3 "Создание информационной базы на сервере СУБД"
На сервере. В многочисленных статьях и инструкциях на эту тему всё хорошо расписано. Но бывает, что не упоминается о необходимости регистрации внешней компоненты консоли управления администрирования серверов 1С, которую рекомендуется использовать для создания кластеров и информационных баз. Можно обойтись без использования консоли управления, и добавить информационную базу в окне приветствия 1С:Предприятие.
Установщик платформы 1С 8.3 создает и добавляет в меню пуск ссылку на файл *.cmd для регистрации внешней компоненты radmin.dll консоли управления администрирования серверов 1С:
Далее, перед добавлением информационной базы, нужно проверить работу SQL Server. Для этого можно использовать консоль управления SQL Server Management Studio, которая добавляется при установке SQL Server или устанавливается отдельно.
Для подключения можно использовать стандартную учетную запись "sa" и пароль, заданный во время установки SQL Server:
Если подключение успешное, то можно приступить к созданию информационной базы в консоли управления администрирования серверов 1С:
Сервер базы данных - такой же как в консоли управления SQL Server Management Studio (в примере "DESKTOP-K80105I"). Тип СУБД - "MS SQL Server". Пользователь сервера - "sa" и пароль, заданный во время установки SQL Server (например, "1"). При создании новой информационной базы - обязательно установить флаг "Создать базу данных в случае её отсутствия".
Если все параметры введены правильно, то можно убедиться, что в консолях управления появилась создаваемая информационная база. Имя "unf1.6" нужно запомнить для следующего пункта.
IV. Выполнение пункта 4 "Выгрузка файловой базы данных 1С и загрузка на сервер СУБД"
На сервере. Файловую базу данных нужно выгрузить в файл формата *.dt. В многочисленных статьях подробно приводится инструкция. Коротко - в конфигураторе открываем файловую базу данных, далее пункт меню "Администрирование - Выгрузить информационную базу". Получится файл со стандартным названием 1Cv8.dt.
Добавляем новую информационную базу на сервере - в окне приветствия 1С. Используемое имя кластера серверов и информационной базы как в предыдущих пунктах. Загружаем файл 1Cv8.dt в конфигураторе:
V. Выполнение пункта 5 "Подключение к службе СУБД по сети для запуска 1С на клиенте"
На сервере. Основная задача этого пункта заключается в обеспечении доступа к серверу по сети, и главное препятствие здесь - сетевой экран (Брандмауэр или Firewall). Рассматриваем подключение клиента и сервера в одной и той же сети со стандартными настройками, подобно домашней локальной и беспроводной сети. А значит сетевой экран на маршрутизаторе со стандартными настройками (см.схему информационной системы выше).
Настройка Брандмауэра Windows (Firewall) выполняется на сервере в специальной консоли: Параметры — Сеть и интернет — Брандмауэр Windows — Дополнительные параметры.
Необходимо открыть входящее подключение: Правила для входящих подключений — Создать правило для порта — Протокол TCP (Определённые локальные порты: например, 1433) — Разрешить подключение
Порты на сервере с использованием SQL Server для входящих подключений (по умолчанию):
- 1433 — на сервере SQL для управления экземплярами баз данных ;
- 1434 — на сервере SQL для выделенного административного соединения (например, с помощью sqlcmd);
- 1540 — на сервере 1С для удаленных подключений с помощью утилиты администрирования (консоль 1CV8 Servers msc);
- 1541 — на сервере 1С для менеджера кластера серверов;
- Диапазон — на сервере 1С для рабочих процессов.
В простейшем случае, достаточно открыть 2 порта: 1541,1560.
Если потребуются дополнительные другие порты, то при запуске 1С на клиенте, будет выведено уведомление.
На клиенте. На рабочей станции клиента установлена платформа 1С 8.3 со стандартными компонентами (без сервера 1С:Предприятие). Далее добавляем новую информационную базу. Используемое имя кластера серверов и информационной базы как в предыдущих пунктах. В приведенном примере имя кластера серверов совпадает с сетевым именем ПК сервера. Если все настройки сделаны верно, то запуск информационной базы на клиенте будет успешным.
Запускаем информационную базу "unf1.6_SQL_Server" на клиенте, чтобы убедиться в работоспособности:
VI. Выполнение пункта 6 "Включения отладки в режиме клиент-сервер"
На сервере. В заключении, можно настроить режим отладки для сервера 1С:Предприятие, поскольку по умолчанию никакие серверные функции и процедуры не будут поддаваться пошаговой отладке, они будут выполняться на сервере, и не будут видны для клиентской машины.
- Остановить службу "Агент сервера 1С:Предприятия 8.3 (x86-64)" (Windows+R, services.msc, OK),
- Запустить редактор системного реестра. Нажать Windows+R (или Пуск-Выполнить), ввести regedit, ОК.
- Найти ветку реестра [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent\].
- Изменить свойство "ImagePath". Добавляем в строку "-debug".
- Записываем и запускаем службу "Агент сервера 1С:Предприятия 8.3 (x86-64)".
Именно на клиенте надо тестировать алгоритмы, которые успешно выполняются в режиме "Файловый", но выполняются с ограничениями или не выполняются в режиме "Серверный".
Далее можно убедиться, что пошаговая отладка работает и на клиентской машине, при наличии точек останова в серверных процедурах.
В результате настройки клиент-серверного режима, при разработке можно сразу тестировать алгоритмы, делать дополнительные проверки и учитывать результат в параметрах, добавлять в диалогах какие-либо подсказки, делать программный продукт более качественным.
Публикация простая, где-то повтор. Не судите строго. Напишите предложения для улучшения, сообщите о недостатках в комментариях. Спасибо!
Читайте также: