Создание *.dt файла из рабочей базы на сервере 1С без завершения работы пользователей

19.01.20

Разработка - Инструментарий разработчика

Предлагаемая обработка создает *.dt файл (выгрузку ИБ) из рабочей базы на сервере 1С:Предприятие 8.3 без завершения работы пользователей.

Скачать файлы

Наименование Файл Версия Размер
Обработка для создания *.dt файла без завершения работы пользователей:
.epf 11,03Kb
127
.epf 1.0.0.2 11,03Kb 127 Скачать

Часто, для сопровождения баз небольших организаций, программист 1С (или консультант) снимает копию рабочей базы для поиска ошибок или разработки дополнительного функционала. В случае файловой БД достаточно скопировать файл 1cv8.1CD, не "выгоняя" пользователей. В случае если используется SQL сервер, то копию базы можно получить средствами этого сервера и развернуть на другом SQL сервере. Однако бывает, что полученную копию просто негде развернуть - нет тестового sql сервера или NFR лицензии сервера 1C:Предприятие и базу нужно разворачивать как файловую.

Предлагаемая обработка сразу создает *.dt файл (выгрузку ИБ) из рабочей базы на сервере 1С:Предприятие 8.3 без завершения работы пользователей. Обработку можно запустить как в интерактивном режиме (Файл -> Открыть), так и загрузить в дополнительные обработки. Во втором случае формирование файла будет производится в фоне, не блокируя интерфейс. 

Для формирования файла используется утилита платформы ibcmd, поэтому версия платформы не должна быть ниже 8.3.14. Для работы с PostgreSQL есть возможность автоматического получения списка доступных баз.

Проверено: Конфигурации на БСП 3 и выше, Платформа 8.3.14.1779, PostgreSQL 10, ОС CentOS 7

Не использовать для резервного копирования!!!

Linux PostgreSQL CentOS Копирование Дамп

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122171    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7294    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3541    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177753    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18116    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23604    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Indgo 338 20.01.20 00:55 Сейчас в теме
Умно придумал, а под виндой будет работать?
2. Sedaiko 572 20.01.20 01:29 Сейчас в теме
В теории должно. Сегодня проверю
3. Sedaiko 572 20.01.20 02:16 Сейчас в теме
(1) Работает и на винде, и на linux (CentOS). СУБД все четыре поддерживает (проверял на PG и MS)
4. tormozit 7136 20.01.20 07:02 Сейчас в теме
Если я правильно понял, суть подхода в запуске второго урезанного (автономного) сервера 1С параллельно с основным и выполнение выгрузки через утилиту ibcmd, подключенную к нему. Насколько это безопасно для корректности данных в основной базе?
milov.aleksey; +1 Ответить
5. Sedaiko 572 20.01.20 07:38 Сейчас в теме
(4)
через утилиту ibcmd
Используется только эта утилита. Запуск второго автономного сервера ibsrv не нужен. Это просто оболочка. Мне, например, удобно бывает "снять" базу через тонкий клиент (в т.ч. по http).
Насколько это безопасно для корректности данных в основной базе
Предостережений я не встречал.
6. Darklight 32 20.01.20 09:36 Сейчас в теме
Интересное решение. Надо будет опробовать
Вот тут есть статья про утилиту (там есть и первая часть про сам автономный сервер)
А вот тут небольшое дополнение о том, что сам автономный сервер для выгрузки в dt не нужен. Там же дана ссылка и на ИТС
7. hardcodder2020 20.01.20 11:25 Сейчас в теме
Работает только на БСП?
На типовой УТП или Бухгалтерия для Украины будет работать?
11. Darklight 32 20.01.20 14:40 Сейчас в теме
(7)По идет для ibcmd сама конфигурация должна быть без разницы. Тут только вопрос в том, что вот эта обработка какие-то функции из БСП дёргает - но уверен - это не проблема перенести эти функции из БСП в данную обработку при необходимости
8. VKislitsin 960 20.01.20 11:33 Сейчас в теме
Вставлю свои пять копеек.
В своей статье об утилите ibcmd, которая уже упомянута в (6) я написал фразу "пока не знаю, расценивать ли это как баг или как фичу, но для выгрузки dt-файла не требуется монопольный режим!"
Предполагаю что разработчики автономного сервера и этой утилиты всё же отнесут данное поведение к разряду ошибок. Но вот станут ли устранять, не могу предположить. По сути, это является параллельным подключением к СУБД. Точно также можно обойти требование монопольного режима параллельной "публикацией" базы в другом кластере. Это работает и на всех более ранних версиях платформы. Для устранения подобных эффектов и "жесткой" установки монопольного режима требуется, чтобы этот признак был в БД, а не в сервере. Не исключаю, что при выходе автономного сервера из бета-статуса такие изменения будут внесены в структуру БД.
user614213_vluminous; alextalov; +2 Ответить
9. Sedaiko 572 20.01.20 11:41 Сейчас в теме
(8) Вполне возможно что это и баг. Я изначально начал писать для PostgreSQL, где выполнялись pg_dump и pg_restote во временную БД. При таком раскладе уже можно и конфигуратором выгрузить хоть на 8.2. Потом понял, что для данной задачи достаточно и обычной выгрузки ibcmd
10. Darklight 32 20.01.20 14:37 Сейчас в теме
(9)Вы правильно указали, что для резервного копирования этот способ не годится - в силу того, что тут явно никак не гарантируется транзакционная целостность БД (так как данные действительно просто считываются из СУБД из завершённых транзакций - хотя тут ещё большой вопрос - а в каком режиме изоляции считаются данные - но в любом случае - блокировка сразу на все таблицы тут не накладывается - значит в процессе выгрузки одних таблиц последующие таблицы могут менять своё состояние и фиксировать его в транзакциях). Можно правда предположить наложение уровня изоляции SNAPSHOT (это для MS SQL Server, для других СУБД я не знаю как он называется; хотя у Oracle все транзакции по умолчанию в таком режиме), когда он разрешён в настройках (но обычно у всех кто уже работает с платформой 8.3 это должно быть разрешено) сразу на все таблицы - то это действительно не будет блокировать их работу и полученные выборки будут более менее консистентными (т.к. будут включать только версию данных на момент наложения уровня изоляции транзакции выборки сразу всех таблиц) - это будет почти соответствовать режиму снятия бэкапа "на лету" самой СУБД - где аналогичным образом будут получены только версии данных на момент начала бэкапа (хм... хотя честно не знаю - на какой момент - может там просто в бэкап будут включены транзакции от начала бэкапа каждой таблицы по отдельности и до конца всего бэкапа - и эти транзакции просто будут выполнены либо при его загрузке; но всё-таки первый вариант кажется более констистентным).

В любом случае - снятие бэкапа "на лету" средствами СУБД, загрузка его во временную БД (с последующим удалением) и потому же выгрузка из него средствами ibcmd в dt – будет куда надёжнее - хоть и потребует бОльших затрат ресурсов (в т.ч времени).

Мы делаем именно так - просто ранее не задействовали ibcmd - и просто использовали тот же кластер (или отдельный) 1С Предприятие, что и исходная база. Сейчас это можно оптимизировать через ibcmd - для нас в этом нет большой разницы - ведь основная нагрузка всё-равно ложится на СУБД (какой бы ни был сервер: продуктивный или девелоперский) а не на кластер 1С. Тем более, что у нас обычно не выгрузка в dt - а просто последующая загрузка SQL бэкапа в другую БД в т.ч. новую, в т.ч на другой СУБД (но у нас везде MS SQL Server - если нужно было бы переносить из одного вида СУБД в другой (например если бы тестовые СУБД были на PG) - то пришлось бы всегда делать через dt - для нас это редкость). И этот процесс у нас автоматизирован самописной конфигурацией 1С которая просто выполняет в фоне поток задач и запускает скрипты обслуживания (из шаблонов; с авто подстановкой параметров из задачи).
ansh15; Sedaiko; +2 Ответить
17. DNMit 1 29.01.21 22:31 Сейчас в теме
(10)
иц последующие таблицы могут менять своё состояние и фиксировать его в транзакциях). Можно правда предположить наложение уровня изоляции SNAPSHOT (это для MS SQL Server, для других СУБД я не знаю как он называется; хотя у
\
Поделитесь Вашим решением. Сами сейчас пытаемся всякими способами сделать бекап в dt не выгоняя пользователей. План действий очевиден
1 снимаем бекам средствами SQL
2 загружаем бекап (п.1) на другой 1С сервер , где тот же SQL и база..
3 выгружаем из п.2 бекап в dt

Как я понял Вы делаете ровно тоже самое, вопрос - чем и как? Поделитесь решением, т.к. мы ничего придумать не смогли. Сейчас колдуем с разными программами типа Handy Backup

Спасибо!
18. Darklight 32 01.02.21 09:44 Сейчас в теме
(17)Как уже написал - это самописная конфигурация. В неё много чего реализовано, помимо бэкапов. Разработка не моя, выложить не могу. Но в чём проблема сделать указанный функционал. Если без наворотов там всё просто:
- Элементарные скрипты выгрузки/загрузки базы средствами SQL Server (их полно в Интернет для разных СУБД) в backup (Или сразу приделать скрипты для использования ibcmd, хотя я остановился бы на сыквельных бэкапах)
- Отдельными документами 1С (у нас так, можно и справочниками) в сервисной ИБ регистрируются заявки на создание копии (откуда и куда - это всё ведётся в готовых справочниках - если скрипты, обновляющие их из кластеров 1С; вообще - ведение этих справочников это отдельная тема, не суть важная для данного вопроса, главное что там хранится информация об авторизации админа на серверах и в базах, и пути соединения)
- При записи управляющего документа - идёт проверка на наличие фонового процесса выполнения заданий - если его нет - он запускается
- При записи управляющего документов, если он не помечен как выполненный и по нему нет зданий - в регистре сведений формируется задание(я) на выполнение этого документа (в данном случае на выгрузку и загрузку бэкапа) со скриптами выполнения
- Фоновый процесс мониторит невыполненные задания - и выполняет их (в простейшем случае в один поток), в конец управлябщий документ помечается как выполненный
- По по выполненным документам идёт оповещение авторам
- По управляющим документам так же формируется задание-скрипт подчистки (отдельно помечается) - оно выполняется в любом случае, в конце выполнения заданий по документу (в т.ч если возникла ошибка выполнения)
- Об ошибках тоже идёт оповещение - автору документа и администратору системы

Пишется такая конфигурация в простейшем виде за пару дней - ну за неделю максимум.
Изначально у нас не было автоматизации - задания просто отправлялись админам - они их выполняли. Потом добавили скрипты автоматизации

Сейчас конвеер выполнения задач модно оформлять через Jenkins - на Инфостарт есть публикации о взаимодействии Jenkins и 1С - 1С ИБ всё-равно удобно использовать как сервисную систему учета информационных баз и задач - у нас на такой конфигурации много внутренних сервисов навешано - но всё это уже индивидуально - для каждого предприятия своё!
Свою конфигурацию пока не продаём!
19. DNMit 1 01.02.21 11:00 Сейчас в теме
(18)
Спасибо за Ваш ответ.
По поводу "Элементарные скрипты выгрузки/загрузки базы средствами SQL Server (их полно в Интернет для разных СУБД)" , к сожалению не всё так просто, "Дьявол в деталях!" .
Услышал Вас. Будем думать, делать.
Вероятно где то знаний не хватает, оттуда и сложности.


Интересно конечно взглянуть на подобную конфигурацию. Судя по функционалу очень интересно.
20. Darklight 32 01.02.21 11:27 Сейчас в теме
(19)Дьявол всегда в деталях. У нас базы не выходят за рамки лиц. соглашений 1С - поэтому скрипты банальны. А так да - средствами СУБД можно много чего с базой сотворить (например секционировать и распределить по разным файлам), что немного усложняет ей сохранение/восстановление. Или если используются разные СУБД и разные виды ОС. Скриптами у нас администратор баз данных занимается (по сути админ, побывавший на нескольких специализированных курсах), а не программисты
12. user1274438 20.01.20 17:55 Сейчас в теме
Вот-вот.
Понаделают выгрузок в dt, а потом на мисте хоят и спрашивают, что с ними делать
https://forum.mista.ru/topic.php?id=849662

P.S.
Бэкап средствами СУБД - наше все!
maksa2005; Darklight; milov.aleksey; 7OH; Sedaiko; +5 Ответить
13. kotov2000 5 03.03.20 15:51 Сейчас в теме
Протестировал. Отлично выгружает.
14. ViktorG 27.05.20 10:08 Сейчас в теме
А для обычных форм такого нет?
15. Sedaiko 572 27.05.20 12:20 Сейчас в теме
(14) Нет. Поставьте на сервер демо-конфигурацию БСП и из нее запускайте
16. Darklight 32 20.11.20 16:59 Сейчас в теме
(14)Можете вставить обработку в свою конфигурацию - тогда её можно будет запускать из обычного приложения этой конфигурации. Ну или перепишите свою неуправляема. форму - тут нет сложных алгоритмов (а потом выложите для таких же страждущих)
21. andre solovij 02.02.22 10:49 Сейчас в теме
Доброго дня Win Server 2016 MSSQL 2016. запускаю обработку с рабочего компьютера, при нажатии "получить" вылетает на ошибку
Прикрепленные файлы:
Ошибка.rtf
22. Sedaiko 572 02.02.22 11:01 Сейчас в теме
(21) Ни о чем не говорит.
Я бы рекомендовал с консоли выполнить ibcmd. Но, судя по тому, как прикреплен скриншот, у Вас это вряд ли получится )))
23. andre solovij 02.02.22 11:08 Сейчас в теме
с консоли кластера на сервере?
24. andre solovij 02.02.22 11:09 Сейчас в теме
26. andre solovij 02.02.22 11:59 Сейчас в теме
C:\Program Files\1cv8\8.3.20.1674\bin я не нахожу, и поиском и так эту утилиту ibcmd,
29. Генdalf 09.06.22 17:27 Сейчас в теме
(26) нужно установить серверные компоненты Платформы, чтобы появилась ibcmd
27. Генdalf 27.05.22 19:07 Сейчас в теме
У меня скорее всего такая же ошибка после обновления платформы на 8.3.20
Прикрепленные файлы:
28. Генdalf 09.06.22 17:26 Сейчас в теме
(27) После перезагрузки сервера ошибка пропала, всё работает.
30. Tiotimolin 24.06.22 09:45 Сейчас в теме
Добрый день.
При дампе БД в версии 8.3.20 выдает ошибку об отсутствующем параметре --data:

/opt/1cv8/x86_64/8.3.20.1914/ibcmd infobase dump --dbms=PostgreSQL --db-server=1c-sql --db-user=postgres --db-pwd=PASSWORD --db-name=DN_NAME test.dt --user=USER --password="PASSWORD"

Missing parameter value: data
На сайте ИТС не нашел ответ.
С 8.3.19 не было. Хэлп )
31. Tiotimolin 24.06.22 12:22 Сейчас в теме
Сам спросил и сам ответил
--data=/tmp
Debian 11
32. lepihin 23 29.10.22 09:44 Сейчас в теме
БП3 База не большая, из конфигуратора выгружается минут за 10-15
через ibcmd 5 часов прошло крутится и крутится толи подвесилось толи что не понятно
Сервер на CentOS + Postgresql 12
Платформа 8.3.20.1674 (--data=/tmp в строку запуска добавил до этого тоже ругался на на отсутствие data)
Запускал ручками из командной строки ситуация схожая, вроде запускается и тишина без единого сообщения
ничего похожего на [ INFO] .... не выводится,
В процессах rphost-ы и postgresql вроде как ведут себя обычно загрузка процессора плавает, память тоже не кончается.

Что делать ума не приложу, поставлена задача, автоматизировать выгрузку в .dt, некоторого количества баз (20+),
pgdump/pgrestore делается, нужно еще и в .dt
33. Sedaiko 572 01.11.22 01:36 Сейчас в теме
(32) В последних платформах еще требуется пользователь 1С указывать. см. ibcmd --help
34. Dondarrion 10.01.23 00:32 Сейчас в теме
Коллеги, что можете сказать по поводу параллельной работы ibcmd? Например, из 2х баз выгрузить DT или наоборот загрузить одновременно в несколько баз. Сейчас столкнулся с ошибкой при запуске 2ой задачи "Server data directory lock error.The working directory is blocked by the process"
Оставьте свое сообщение