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

19.01.20

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка для создания *.dt файла без завершения работы пользователей:
.epf 11,03Kb ver:1.0.0.2
131
131 Скачать (1 SM) Купить за 1 850 руб.

Часто, для сопровождения баз небольших организаций, программист 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! %

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

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

12000 10000 руб.

02.09.2020    161338    893    399    

873

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    8583    66    29    

76

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

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

22200 руб.

06.10.2023    15693    39    8    

73

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

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

9360 руб.

17.05.2024    23851    70    45    

119

SALE! %

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

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

15000 10000 руб.

10.11.2023    10667    38    27    

63

SALE! %

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

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

4800 3840 руб.

14.01.2013    188573    1142    0    

913

SALE! %

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 15000 руб.

07.10.2021    17558    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7833    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Indgo 414 20.01.20 00:55 Сейчас в теме
Умно придумал, а под виндой будет работать?
2. Sedaiko 591 20.01.20 01:29 Сейчас в теме
В теории должно. Сегодня проверю
3. Sedaiko 591 20.01.20 02:16 Сейчас в теме
(1) Работает и на винде, и на linux (CentOS). СУБД все четыре поддерживает (проверял на PG и MS)
4. tormozit 7238 20.01.20 07:02 Сейчас в теме
Если я правильно понял, суть подхода в запуске второго урезанного (автономного) сервера 1С параллельно с основным и выполнение выгрузки через утилиту ibcmd, подключенную к нему. Насколько это безопасно для корректности данных в основной базе?
milov.aleksey; +1 Ответить
5. Sedaiko 591 20.01.20 07:38 Сейчас в теме
(4)
через утилиту ibcmd
Используется только эта утилита. Запуск второго автономного сервера ibsrv не нужен. Это просто оболочка. Мне, например, удобно бывает "снять" базу через тонкий клиент (в т.ч. по http).
Насколько это безопасно для корректности данных в основной базе
Предостережений я не встречал.
6. Darklight 33 20.01.20 09:36 Сейчас в теме
Интересное решение. Надо будет опробовать
Вот тут есть статья про утилиту (там есть и первая часть про сам автономный сервер)
А вот тут небольшое дополнение о том, что сам автономный сервер для выгрузки в dt не нужен. Там же дана ссылка и на ИТС
7. hardcodder2020 20.01.20 11:25 Сейчас в теме
Работает только на БСП?
На типовой УТП или Бухгалтерия для Украины будет работать?
11. Darklight 33 20.01.20 14:40 Сейчас в теме
(7)По идет для ibcmd сама конфигурация должна быть без разницы. Тут только вопрос в том, что вот эта обработка какие-то функции из БСП дёргает - но уверен - это не проблема перенести эти функции из БСП в данную обработку при необходимости
8. VKislitsin 1015 20.01.20 11:33 Сейчас в теме
Вставлю свои пять копеек.
В своей статье об утилите ibcmd, которая уже упомянута в (6) я написал фразу "пока не знаю, расценивать ли это как баг или как фичу, но для выгрузки dt-файла не требуется монопольный режим!"
Предполагаю что разработчики автономного сервера и этой утилиты всё же отнесут данное поведение к разряду ошибок. Но вот станут ли устранять, не могу предположить. По сути, это является параллельным подключением к СУБД. Точно также можно обойти требование монопольного режима параллельной "публикацией" базы в другом кластере. Это работает и на всех более ранних версиях платформы. Для устранения подобных эффектов и "жесткой" установки монопольного режима требуется, чтобы этот признак был в БД, а не в сервере. Не исключаю, что при выходе автономного сервера из бета-статуса такие изменения будут внесены в структуру БД.
user614213_vluminous; alextalov; +2 Ответить
9. Sedaiko 591 20.01.20 11:41 Сейчас в теме
(8) Вполне возможно что это и баг. Я изначально начал писать для PostgreSQL, где выполнялись pg_dump и pg_restote во временную БД. При таком раскладе уже можно и конфигуратором выгрузить хоть на 8.2. Потом понял, что для данной задачи достаточно и обычной выгрузки ibcmd
10. Darklight 33 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 33 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 33 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 591 27.05.20 12:20 Сейчас в теме
(14) Нет. Поставьте на сервер демо-конфигурацию БСП и из нее запускайте
16. Darklight 33 20.11.20 16:59 Сейчас в теме
(14)Можете вставить обработку в свою конфигурацию - тогда её можно будет запускать из обычного приложения этой конфигурации. Ну или перепишите свою неуправляема. форму - тут нет сложных алгоритмов (а потом выложите для таких же страждущих)
21. andre solovij 02.02.22 10:49 Сейчас в теме
Доброго дня Win Server 2016 MSSQL 2016. запускаю обработку с рабочего компьютера, при нажатии "получить" вылетает на ошибку
Прикрепленные файлы:
Ошибка.rtf
22. Sedaiko 591 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 25 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 591 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"
Оставьте свое сообщение