Каталог решений - Создание стартовой базы

Создание стартовой базы

Создание стартовой базы

В наличии

Часто требуется создать «Новую базу» почти пустую, но совпадающую с «Исходной базой» по необходимым обязательным настройкам: константам, регистрам сведений, справочникам, видам субконто и планами счетов и т.п., при этом уникальные идентификаторы объектов должны совпадать.

Категория:

Описание

Создание стартовой базы

Часто требуется создать «Новую базу» почти пустую, но совпадающую с «Исходной базой» по необходимым обязательным настройкам: константам, регистрам сведений, справочникам, видам субконто и планами счетов и т.п., при этом:

  • Все объекты «Новой базы» должны совпадать по уникальным идентификаторам ( Guid ) с «Исходной базой»

  • Все настройки работы в «Новой базе», включая настройки учетной политики организации, полностью повторяют настройки «Исходной базы».

  • Заполнение данными должно быть достаточным для запуска «Новой базы» в режиме «1С:Предприятие» без синтаксических ошибок и без необходимости выполнения процедур обновления.

В чем смысл?

У меня был смысл создать базу витрину для налогового мониторинга, чтобы далее в «Новую базу» из «Исходной базы» подкачали остатки и другие урезанные данные для налоговиков.

Сама ситуация похожа на создание начального образа в случае РИБ, но эта первая идея придумать РИБ на ровном месте и создать из него узел, да чтобы ещё все правильно настроилось, я отбросил из-за сложности исполнения.

Вторая идея – взять «Исходную базу» и почистить из неё данные…. Ну при размере в 100 Гб это прям нет-нет. У меня нет столько недель ждать, пока все почиститься.

Третья идея – перенести из «Исходной базы» нужные данные с помощью обще известной обработки ВыгрузкаЗагрузкаДанныхXML.epf натолкнулась на 2 неприятных препятствия:

  1. Конфа «Исходной базы» была незнакома, была значительно переписана и содержала несколько встроенных нетиповых подсистем – вся эта каша в итоге приводила к тому, что простое открытие базы из пустой конфы не стартовало, вызывая кучу синтаксических ошибок, с которыми надо было бороться заплатками, игнорируя риск потерять что-нибудь важное из стартовых фундаментальных данных «Новой базы». С горем пополам эта махина запускалась, но далее вызывала нелепые ошибки в простых случая, когда требовалось что-то открыть или создать – просто кошки скреблись в душе от этого.

  2. Второй момент, все знают, что при разворачивании пустой базы и конфигурации происходит начальное заполнение и создание новых базовых объектов, т.к. : валюты, банки, классификаторы ед. измерения, другие классификаторы, предопределенные значения, типа плана счетов и субконто и много других служебных данных. Это начальное заполнение вело к нарушению условия задачи о совпадении всех объектов «Новой базы» по Уникальному идентификатору (Guid) с «Исходной базой». И порождало дубли, с которыми пришлось бы в дальнейшем работать, что тоже не быстро.

Потребовалось осознать очевидное, что «Новую базу» нужно заполнить ещё до первого открытия 1С:Предприятия.

Обработка ВыгрузкаЗагрузкаДанныхXML.epf тут не очень заходила, т.к. обменивалась через файл XML и требовала открытия «Новой базы» для загрузки этого файла, от открытия которой я как раз хотел уйти из-за вышеописанных проблем.

Мне требовался режим COM для ВыгрузкаЗагрузкаДанныхXML.epf и фильтры выгрузки.

Поиск по Инфостарт не предлагал готового решения для скачивания. Но в итоге удалось собрать решение:

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

  • фильтры выгрузки (это стандартная опция этой версии обработки для обычных форм) и

  • имела возможность передачи данных межу базами по COM при условии встройки самой обработки в Базу-приемник, что было необходимо на время соединения для вызова специальных методов на стороне Базы-приемника по команде Базы-источника.

Тут было пару проблем:

  • что «Исходная база» работала в Управляемом интерфейсе, а обработка была на обычных формах

  • обработка предназначалась для платформ 8.1 и 8.2, но не работала для 8.3

  • встраивать обработку в конфигурацию «Новой базы» через хранилище было возможно, но немного затруднительно согласовывать.

Эти моменты решились на лайте:

  1. Как отрыть обработку на Обычных формах в базе с Управляемым интерфейсом?

В «Исходной базе» создаем пользователя «АдминистраторОП» (сокращение от Администратор обычное приложение) с ролями: Полные права и Интерактивное открытие внешних обработок. У пользователя обязательно указываем Режим запуска = «Обычное приложение». Заходим под ним в «Исходную базу» (окно ввода пароля открывается 2 раза, в случае старта базы с Управляемым интерфейсом под Обычным приложением)

Рис.1 Создание пользователя АдминистраторОП в «Исходная база»

Рис.2 Открытие «Исходная база» в режиме «Обычное приложение» видно характерное старое меню

  1. Как в обработку добавить режим работы для платформы 8.3?

Открываем обработку в конфигураторе, в форме обработки правой кнопкой мыши на центральной области меняем закладку на «Выгрузка в ИБ приемник». В поле Платформа в список выбора добавляем элемент для платформа «8.3».

Рис. 3 Смена закладки

Рис. 4 Добавление платформы 8.3 в список выбора

  1. Как добавить обработку в «Новую базу» не встраивая в саму конфигурацию?

Конечно через расширение. Открываем «Новую базу» в конфигураторе, добавляем расширение и встраиваем в него обработку. Обновляем «Новую базу» из конфигуратора, конечно же, не открывая саму базу в режиме 1С:Предприятие, т.е. через команду меню Конфигурация – Обновить конфигурацию базы данных.

Рис. 5 Расширение с обработкой в «новой базе»

Рис. 6 Обновление расширения в «Новой базе»

Почти все готово.

Для вызова COM подключения в конфигураторе «Новой базы» создаем нового пользователя для простоты я его назвал также как пользователя в «Исходной базе», а именно «АдминистраторОП» с набором ролей {Полные права, Администратор системы, Интерактивное открытие внешних обработок} без флага «Защита от опасных действий».

Рис. 7 Создание пользователя в конфигураторе «Новой базы»

Сам перенос данных по шагам:

  • В «Исходной базе» запускаем сеанс под пользователем «АдминистраторОП»

  • Открываем обработку «Выгрузка и загрузка данных COM-XML» через меню – Файл – Открыть.

  • Указываем настройками обмена COM с «Новой базой» {указываем адрес базы на сервере 1С, подключение под пользователем «АдминистраторОП» и паролем}.

Рис. 8 Обработка обмена открытая в «Исходной базе»

  • Отключаем передачу всех объектов по ссылке, сняв флажки в колонке «При необходимости»

  • Для обмена включаем все Константы, регистры сведений Учетной политики, регистр сведений Версии подсистем, дополнительные регистры настроек характеризующие вашу базу. Справочники валют, Классификаторов единиц измерения, и других классификаторов поставить тянуть по ссылке, установив флажки в колонке «При необходимости»

— перегружаем эти данные в «Новую базу» по кнопке [Выгрузить данные].

После переноса, можно первый раз открыть «Новую базу» в режиме 1С:Предприятие.

Мне пришлось сделать пару итераций, чтобы выяснить полный список объектов, которые нужно сразу передать (типа рег.сведений Версии подсистем, или спраочник "Ключевые операции"). Вычислял я эти объекты открывая Журнал регистрации в «Новой базе» и смотря те объекты, которые создавались при открытии сеанса. Перед повтором итерации я восстанавливал «Новую базу» из её заранее сохраненного архива до переноса, включал в перенос вычисленный объект и переносил по новой. Пока при открытии «Новой базы» перестали создавать объекты. Все это нужно чтобы соблюсти условия по совпадению Уникальных идентификаторов по Guid.

Всё было бы хорошо, если бы я частями не забыл про гадские предопределенные значения… Планы счетов субконто и некоторые другие предопределенные значения создались все таки с Guid «Новой базы», а не «Исходной базы». Их пришлось починить постобработками.

Как починить предопределенные значения в «Новой базе», исправив их уникальные идентификаторы как у «Исходной базы»?

  • Надо убрать признак предопределение у предопределенных элементов в «Новой базе» и пометить их на удаление и удалить.

  • Перегрузить по COM из «Исходной базы» в «Новую базу» эти объекты той же обработкой обмена. Тем самым в «Новой базе» появятся предопределенные элементы с Guid как в «Исходной базе»

По планам счетов есть момент что надо виды субконто сначала почистить, пример кода в листинге ниже. По всем остальным типам код идентичный (убираем строку  Об.ВидыСубконто.Очистить(); и в самом запросе тип объекта меняем на нужный справочник или ПВХ, для примера по Видам субконто еще ниже пример)

&НаСервере
Процедура Команда1НаСервере()
	
	 Запрос = Новый Запрос;
	 Запрос.Текст = "ВЫБРАТЬ
	                |	Хозрасчетный.Ссылка КАК Ссылка
	                |ИЗ
	                |	ПланСчетов.Хозрасчетный КАК Хозрасчетный";
	 
	 Результат = Запрос.Выполнить();
	 Выборка = Результат.Выбрать();
	 
	 Пока Выборка.Следующий() Цикл
	 
	 	  Об = Выборка.Ссылка.ПолучитьОбъект();
		  Об.ИмяПредопределенныхДанных = Неопределено;
		  Об.ВидыСубконто.Очистить();
		  Об.ПометкаУдаления = Истина;
		  Об.ОбменДанными.Загрузка = Истина;
		  Об.Записать();
	 
	 КонецЦикла;
	 
КонецПроцедуры
&НаСервере
Процедура Команда1НаСервере()
	
	 Запрос = Новый Запрос;
	 Запрос.Текст = "ВЫБРАТЬ
	 |	ВидыСубконтоХозрасчетные.Ссылка КАК Ссылка
	 |ИЗ
	 |	ПланВидовХарактеристик.ВидыСубконтоХозрасчетные КАК ВидыСубконтоХозрасчетные";
	 
	 Результат = Запрос.Выполнить();
	 Выборка = Результат.Выбрать();
	 
	 Пока Выборка.Следующий() Цикл
	 
	 	  Об = Выборка.Ссылка.ПолучитьОбъект();
		  Об.ИмяПредопределенныхДанных = Неопределено;
		  Об.ПометкаУдаления = Истина;
		  Об.ОбменДанными.Загрузка = Истина;
		  Об.Записать();
	 
	 КонецЦикла;
	 
КонецПроцедуры

 

Если убрать подготовку кухни, то Стартовая база менее чем в течение 1 часа создается, а из знаний нужно только понимание 1С.

Кажется все…. если, что пишите.

 

has been added to your cart:
Оформление заказа