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

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

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. AlexWhite 196 11.10.21 11:40 Сейчас в теме
А почему предопределенные элементы в новой базе получили другой GUID, чем в источнике?

Думал всегда, что при использовании режима "Загрузить конфигурацию из файла" внутренние GUID должны совпадать.

Спасибо за статью и креативный подход к решению!
4. sapervodichka 6459 11.10.21 12:05 Сейчас в теме
(1) при загрузке конфигурации внутренние GUID совпадают у метаданных и их реквизитов в конфигурации. Для предопределенных в конфигурации элементов, например, счетов в плане счетов или элементов справочника создаются также сами объекты данных в базе с привязкой к этому предопределенному элементу, вот у объектов данных создаваемых на основании предопределенных уникальные идентификаторы разные в каждой создаваемой базе.
kitaevay; blackjack666; psa247; +3 Ответить
6. AlexWhite 196 11.10.21 12:12 Сейчас в теме
(4)
счетов в плане счетов или элементов справочника создаются также сами объекты данных в базе с привязкой к этому предопределенному элементу, вот у объектов данных создаваемых на основании предопределенных уникальные идентификаторы разные в каждой создаваемой базе

Вот это да! Век живи, век учись. Спасибо!
2. gorakh 26 11.10.21 11:47 Сейчас в теме
Если база на MS SQL то для чистки очень помогает TRUNCATE TABLE. Находим ненужные таблицы и просто удаляем их. Например "Версии объектов". Обычно она одна из самых больших и в базе разработки явно лишняя.
skyboy13; rolin555; adhocprog; sapervodichka; +4 Ответить
3. &rew 35 11.10.21 12:03 Сейчас в теме
Можно еще конвертахой 2.0 бомбануть правила автоматом и притащить нужные справочники, константы, ПВХ, РС по метаданным. Там и GUIDы прилетят как надо.
sapervodichka; +1 Ответить
5. sapervodichka 6459 11.10.21 12:10 Сейчас в теме
(3) по идее да, в Универсальном обмене XML, которая по правилам обмена тащит, также есть COM подключение )
7. zhuravlev_as 361 11.10.21 13:22 Сейчас в теме
Если разработчики 1С до сих пор не реализовали обработку "Выгрузка/загрузка данных в формате XML" для управляемого приложения, то это их никак не красит.
10. sapervodichka 6459 11.10.21 13:57 Сейчас в теме
(7) она есть, но в ней нет удобных фильтров и COM обмена
8. RustIG 1693 11.10.21 13:40 Сейчас в теме
И сколько времени ушло на сдачу работ?

Ну при размере в 100 Гб это прям нет-нет. У меня нет столько недель ждать, пока все почиститься.


Я в свое время файловую базу в 20 Гб копировал - надо было оставить справочники, удалить документы - по сути стартовую базу создать.

В одной копии запустил удаление документов (затем сжатие базы провел), во второй копии разрабатывал перенос справочников (ЦФшник же имеется)... Параллельно....

В итоге, удалилось все быстрее, чем я думал - особенно с учетом времени сна.... Мне почему-то кажется что вся описанная схема выше это как минимум неделя на тестирование. И если так, то удаление документов закончилось бы раньше, имхо...
корум; PowerBoy; +2 Ответить
9. sapervodichka 6459 11.10.21 13:56 Сейчас в теме
(8) привет, ушёл 1 вечер четверга, т.к. в ночь с четверга на пятницу в неё уже остатки грузили
&rew; RustIG; +2 Ответить
11. vld1973 80 11.10.21 15:55 Сейчас в теме
Спасибо, интересное решение
12. psa247 18 11.10.21 18:38 Сейчас в теме
Прикольно. Добавил в закладки
13. ybatiaev 58 11.10.21 21:33 Сейчас в теме
Всегда ранее делал CF с рабочей базы. Потом её в пустую загружал. Всё. Создавалась чистая база с полной копией скелета, т.е. конфигурацией. А потом уже выгрузка/загрузка XML стандартной обработкой то, что нужно за любой период.
Что в этом механизме не так?
sapervodichka; +1 Ответить
14. sapervodichka 6459 11.10.21 21:57 Сейчас в теме
(13) ну этот ваш вариант я сотни раз делал. В нем конечно вы знаете, что появляются дубли валют, классификаторов, плана счетов субконто, предопределенных элементов с разным УИ. Которые потом нужно устранить, чтобы не получить, например, 2 рубля или 2 шт, ну и ошибки СУБД при вставке 2 счетов с одним и тем же кодом но с разным УИ и привязанным к одному предопределенному счету. Вот в статье и написано, что ситуация была не рядовой, что УИ должны были совпадать у всех объектов и самое важное, что сама база (как вы пишите) не запускалась с пустого cf и не выполняла обработчики заполнения данных, т.е. ваш вариант бы не подошел.
tkanpa; CnupT; ybatiaev; +3 Ответить
15. skyboy13 13 11.10.21 22:26 Сейчас в теме
Большие базы можно чистить удалением элементов конфигурации. Сделал копию через sql. Удалил документ поступление денег, сохранил конфигурацию, потом ctr-c/ctrl-v из базы донора вставил и сохранил еще раз. Если основные таблицы так по удалять, то потом через выгрузку в dt - можно быстро получить то, что нужно маленького объема.
16. sapervodichka 6459 11.10.21 22:59 Сейчас в теме
(15) это какая-то разовая акция для независимого регистра сведений, да и то я так всем программистам категорически запрещаю делать, т.к. при копи-пасте объектов метаданных они получают другие идентификаторы в дереве конфигурации, что приводит к тому, что сами конфигурации уже не наследуются при установке обновлений и идет потеря данных таблиц (возвращать объект можно только сравнением объединением). При этом если попробовать на практике удалить ну хотя бы 100 объектов метаданных из конфигурации 1C:ERP это какая-то пытка на несколько дней (чтобы снять с поддержки и удалить все связи по типам в других объектах, ну уж нет, точно это прям бедовая затея, неправильная)
17. skyboy13 13 12.10.21 07:07 Сейчас в теме
(16) Ну что я могу сказать, мне жаль программистов, которым "категорически запрещается что-то делать". я не работают с типовым конфигурациями, в которых работает сотни программистов, составляющие сотни связей. у меня свои собственные конфигурации, там все проще продумано. Хотя их объем и под 100 терабайт.
А если нужно сохранить идентификаторы, привязкой обратно к хранилищу, все решается. Так что альтернативные решения, не стоит называть бредом. Каждая рабочая идея имеет право на существование. Удачи.
22. sapervodichka 6459 12.10.21 09:55 Сейчас в теме
(17) давай без обид, слова "бред" я не писал, прочти пожалуйста внимательней, я писал что это "бедовая" затея, от слова "беда", т.к. после копипастов объектов конфигурация становится не обновляемой на следующие релизы выпускаемые 1С или обновляется с потерей данных тех таблиц которые копировались (при загрузке нового релиза конфигурации). Когда своих напарников по работе пытаешься уберечь от быстрых решений с драматическим послевкусием, они благодарны только оставались, иначе такой копипаст на большом проекте фактически равен будущему увольнению. Сам как ты пишешь удалить и скопировать я в редких случаях делал как писал "на разовых" например с регистров версии объектов когда надо было почистить его (но все равно не копипастом возвращал а сравнением объединением конф)
26. skyboy13 13 12.10.21 10:01 Сейчас в теме
(22) да минус просто жалко, зашел тут на минут, предложил еще вариант. с определенными ограничениям, но вариант. я, например, там базы не переношу в любом случае. все синхронизации работают проще через http, можно использовать много-поточность. в разы все быстрее работает.
даже филиальные базы, которых тысячи, конектятся через защищенный контур и шлют и забирают обновления по http, все это поддерживается одним или двумя разработчикам, ибо проще в разы.
WarAn; sapervodichka; +2 Ответить
28. sapervodichka 6459 12.10.21 10:04 Сейчас в теме
18. skyboy13 13 12.10.21 07:34 Сейчас в теме
Ну, а если не нравится вариант с ctr-c/ctr-v. Сохраняем конфу в xml, удаляем что не нужно. Загружаем. Сохраняем базу. Далее загружаем первоначальный вариант. И конфа очищена и идентификаторы родные. Работы по полчаса.
Это похоже, как ранее писали на TRUNCATE TABLE, но без sql-ных рисков.
20. sapervodichka 6459 12.10.21 09:37 Сейчас в теме
(18)
удаляем что не нужно
звучит нереально. Ведь в ЕРП 1000 типов метаданных и нужно быть МЕГАГУРУ СУПЕР ЧЕЛОМ чтобы, что не нужно удалить, а что нужно оставить, и при этом чтобы конкретные данные остались сотни настроек баз совпадали между собой, учетная политика совпадала, чтобы были нужные ссылки только на нужные объекты и всего этого хватило для запуска.
23. skyboy13 13 12.10.21 09:55 Сейчас в теме
(20) Так публикация была не про конкретно ЕРП. 1С-вкие конфигурации это вообще отдельная песня. Так что не понятно, за что мне минус влепили.
25. sapervodichka 6459 12.10.21 09:58 Сейчас в теме
(23) этот минус за коммент никуда не идет ни в рейтинг, короче ни куда. Это просто мнение за комментарий, т.к. в 99 % случаев на практике как ты пишешь так ни в коем случае нельзя делать. А оставшимся 1 % надо понимать последствия.
29. Spec1Cnik 11 12.10.21 10:24 Сейчас в теме
(18) Также когда-то вставал вопрос с ут11.4, на которой велась разработка - что с ней делать, ибо нужна была база рабочая чистая без тестовых документов и их движений + все все настройки из "тестовой". Всё таки решил воспользоваться решением с копированием базы и удалением ненужных данных из "тестовой". Через sql если делать напрямую - всё достаточно быстро происходит.
sapervodichka; +1 Ответить
30. sapervodichka 6459 12.10.21 10:56 Сейчас в теме
(29) напиши подробнее как делал, если будет возможность. Тут если убрать кухню по созданию обработки то база в течение 1 часа создается.
19. Olenevod 33 12.10.21 09:37 Сейчас в теме
А не подскажешь, список объектов которые ты выгружал? Ну это типа учетная политика, версии подсистем. планы счетов и т.д.
Т.е. некий базовый список
21. sapervodichka 6459 12.10.21 09:40 Сейчас в теме
(19) у меня УХа была перепиленная в задаче, для других баз другой набор объектов, кроме счетов и субконто, вот еще какие грузил:
Прикрепленные файлы:
24. savaB 12.10.21 09:56 Сейчас в теме
стесняюсь спросить - А с РИБ что не так?
27. sapervodichka 6459 12.10.21 10:04 Сейчас в теме
(24) Первое что с ним не так - это там его нет и надо делать и план обмена и состав и код и создавать начальный образ (совпадет он по всем настройкам? и при этом будет ли пустой базой? нет скорее). Второе - про типовые базы с Полным обменом наверное почти все так, можно создать настройки обмена, затем создать образ, но с ним надо работать, понять что не подтянулось и заморачиваться удаляя лишнее. С нетиповой базой, в которой для нетиповых объектов нет Полного обмена, этим надо еще заниматься. Все это какая-то другая задача.... а нужно просто создать базу с идентичными настройками (РИБ как механизм для неё не нужен по задаче). Единственное, что можно добавить, что вышеописанная идея подходит для создания начального образа РИБ (потом только узлы обмена создать и замок докинуть на конфу и вот тебе узел РИБ )))))
31. savaB 12.10.21 11:01 Сейчас в теме
1. добавить план обмена - дело пары минут
2. (и основное) - настроить состав
3. никакого кода не надо - от слова вооще
4. совпадает 1 к 1.
5. начальный образ - время зависит от состава и ограничено железом.

"надо работать, понять что не подтянулось и заморачиваться удаляя лишнее" - так и по Вашей методе надо работать
33. sapervodichka 6459 12.10.21 11:11 Сейчас в теме
(31) по моей любая база в течение 1 часа готова без доработок. А тут РИБ, потом еще человека научи начальный образ отцеплять от обмена. Админам объясни зачем РИБ добавил... Роль на РИБ сделай чтобы у пользователей ошибки регистрации при работе с базой не шли... а если попросят повторить, что-то быстренько догрузить это надо рабочую базу обновлять 200 человек выгонять. Ну РИБ РИБом но единственным инструментом нельзя все дырки затыкать, есть проще решения.
34. savaB 12.10.21 11:31 Сейчас в теме
(33) Зачем это все? сделал образ, отцепил от центра - и усе
35. sapervodichka 6459 12.10.21 12:01 Сейчас в теме
(34) Борис, запили статью, возможно, твоя практика окажется полезной.
36. savaB 12.10.21 12:19 Сейчас в теме
(35) Разве что на пенсии ;)))
sapervodichka; +1 Ответить
32. savaB 12.10.21 11:05 Сейчас в теме
да, если надо переносить доки с отбором - возникают вопросы, но обработки типа Обмен между идентичными конфигурациями решают этот вопрос
37. quazare 3211 12.10.21 12:48 Сейчас в теме
можно было движения sql-лем почистить - как-то у меня подобная чистка (порядка 100 - 120 гб) заняла около 40 минут на ssd.
sapervodichka; +1 Ответить
40. triviumfan 79 18.10.21 11:39 Сейчас в теме
(37) почему так долго? Если "транкейтом" удалить документы и движения можно за секунды :).
38. quazare 3211 12.10.21 12:56 Сейчас в теме
вообще можно "приготовить" тестовую базу из ночной копии рабочей, а все изменения в рабочей регистрировать планами обмена.
sapervodichka; +1 Ответить
39. sapervodichka 6459 12.10.21 23:03 Сейчас в теме
(38) пиши рецепт Джейми Оливер плюсану (считаю, чем больше рецептов готовки тем лучше)
41. rst_filippov 56 23.10.21 11:08 Сейчас в теме
42. Greg_nnn 20.01.22 09:48 Сейчас в теме
43. Cyberhawk 133 16.02.22 08:34 Сейчас в теме
А почему такой упор именно на СОМ-подключение к целевой базе?
44. sapervodichka 6459 16.02.22 12:08 Сейчас в теме
(43) Нужно было данные в базу поместить не открывая саму базу (она не открывалась из-за доработок и чтобы не дублировать создаваемые при старте справочники) COM это позволял сделать
45. Cyberhawk 133 16.02.22 12:48 Сейчас в теме
(44) Т.е. просто код конфигурации, инициирующий эти процессы, не выполнялся во внешнем соединении, и таким образом удалось его обойти?
46. sapervodichka 6459 16.02.22 12:57 Сейчас в теме
(45) да, создали пустую базу, загрузили конфу, а далее не запуская базы, заполнили константы и основные справочники не открывая базу (GUID'ы сразу стали как у исходной базы и ошибки открытия ушли, получилась база с настройками и учетной политикой как исходная, но сама по себе пустая без документов и другой НСИ)
47. WarAn 11.03.22 00:10 Сейчас в теме
(44) Скажите, а вы не хотели бы просто полезть в конфу и просто закомментить начальное заполнение пустой базы? Как я понимаю, она у вас не под замками, раз вы пишете, что она "значительно переписана"
48. sapervodichka 6459 11.03.22 10:46 Сейчас в теме
(47) Пробовал. Если все было так просто, это ведь не типовая конфа, а убожество переписанное и генномодифицированное. Дело в том, что конфа «Исходной базы» была незнакома, была значительно переписана и содержала несколько встроенных нетиповых подсистем – вся эта каша в итоге приводила к тому, что простое открытие базы из пустой конфы не стартовало, вызывая кучу синтаксических ошибок, с которыми надо было бороться заплатками, игнорируя риск потерять что-нибудь важное из стартовых фундаментальных данных «Новой базы». С горем пополам эта махина запускалась, но далее вызывала нелепые ошибки в простых случая, когда требовалось что-то открыть или создать – просто кошки скреблись в душе от этого.
Второй момент, все знают, что при разворачивании пустой базы и конфигурации происходит начальное заполнение и создание новых базовых объектов, т.к. : валюты, банки, классификаторы ед. измерения, другие классификаторы, предопределенные значения, типа плана счетов и субконто и много других служебных данных. Это начальное заполнение вело к нарушению условия задачи о совпадении всех объектов «Новой базы» по Уникальному идентификатору (Guid) с «Исходной базой». И порождало дубли, с которыми пришлось бы в дальнейшем работать, что тоже не быстро.
Оставьте свое сообщение
Вакансии
Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день

Аналитик 1C
Москва
зарплата от 120 000 руб. до 250 000 руб.
Полный день

Начальник отдела программирования
Уфа
зарплата от 125 000 руб.
Полный день

Программист/тестировщик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день