|
Автоматический обмен между идентичными базами | ☑ | ||
---|---|---|---|---|
0
virus555
13.12.15
✎
12:17
|
Есть две идентичные базы: Центральная и Филиал. Обе работают в клиент-серверном варианте на linux. Стоит УТ 11.0.9.5
Сейчас приходится делать такие действия: 1. В центральной базе выгружаем данные 2. Заходим удаленно на филиал и делаем загрузку/выгрузку 3. В центральной базе загружаем данные А хотелось бы по нажатию кнопки в Центральной базе сделать полный обмен между базами. Реально это как-то реализовать не с помощью регламентных заданий, а именно по нажатию кнопки? Возможно ли в linux через консоль запускать внешние обработки? |
|||
1
Александр_
Тверь 13.12.15
✎
12:46
|
Есть много вариантов как это сделать, но писать придется.
Сам по себе во второй базе обмен не запустится, его кто-то или что-то должно запустить. Например может после загрузки автоматом делать выгрузку, кто мешает? |
|||
2
Александр_
Тверь 13.12.15
✎
12:47
|
но перед этом надо еще подумать как запустить обмен во второй базе. В любом случае это либо по таймеру либо по команде.
|
|||
3
virus555
13.12.15
✎
15:09
|
(2) в этом и загвоздка - как удаленно на linux запустить обмен?
|
|||
4
Мэс33
13.12.15
✎
15:15
|
(3) а работает ли событие - делать обмен, если в каталоге появился определенный файл?
|
|||
5
Александр_
Тверь 13.12.15
✎
15:42
|
А не запускать регламентные задания, это приципиальная позиция?
Теоретически можно сделать регламентное задание, которое будет проверять наличие файла-команды на запуск обмена. Если нет желания менять конфу, можно через cron - написать скрипт, который будет проверять наличие файла-команды и запускать обмен. т.е. 1. В первой базе делаешь обмен + файл команды на запуск второго обмена 2. Во второй базе переодически запускается регламентное задание или скрипт в системе через cron 3. При обнаружении файла-команды запускается обмен |
|||
6
virus555
13.12.15
✎
17:17
|
(5) без проблем - пусть будет через регламентные задания - его как-то возможно запустить через cron? Это я и пытаюсь выяснить.
|
|||
7
virus555
13.12.15
✎
17:22
|
Как в скрипте для крона прописать запуск регламентного задания?
|
|||
8
Александр_
Тверь 13.12.15
✎
18:08
|
(7)
1. Регламентное задание это способ запустить что-то по расписанию. По сути это такой аналог cron в 1С. 2. У тебя написано, что обе базы работают в клиент-серверном варианте. Раз у тебя база в клиент серверном варианте, то тебе ничего не мешает сделать свое регламентное задание (в 1С). Регламентное задание по расписанию (например раз в 30 секунд) запускает метод, который проверяет наличие файла команды для начала обмена (в локальной сети, ftp или где угодно еще). При наличии файла, выполняет обмен и удаляет файл-команду (т.к. обмен выполнен). Не понимаю тогда в чем твое затруднение? |
|||
9
Александр_
Тверь 13.12.15
✎
18:12
|
т.е. либо ты делаешь регламентное задание, которое запускает твою обработку (функцию общего модуля), либо ты делаешь скрипт в corn, который запускает 1С (при запуске делай обмен).
Из corn заускать регламентное задание не требуется. Вообще это звучит довольно странно :) Из планировщика системы "запустить" планировщик 1С. |
|||
10
virus555
13.12.15
✎
19:34
|
(8) сканирование папки с помощью регламентного задания понятно - мне тоже изначально пришел на ум этот вариант, но не хочется его использовать, о чем и написал в (0), так как считаю костылем. Кошернее было бы раз удаленно запустить команду обмена, чем сутками сканировать папку.
(9) не получается из консоли в linux запустить 1С (в windows все получается - в фоне открывается 1С, запускается внешняя обработка, которая запускает обмен, потом 1С закрывается). |
|||
11
virus555
14.12.15
✎
10:17
|
Увидел, что для транспорта данных можно использовать прямое подключение через интернет. Т.е. Центральная база конектится к веб-сервису, веб-сервис подключается к второй базе и транспортирует данные.
Кто знает где можно увидеть пример реализации на linux`e? |
|||
12
virus555
14.12.15
✎
18:00
|
В общем может кому пригодится - решил проблему следующим образом:
1. На сервере центральной базы устанавливаем программу sshpass, чтобы в команде можно было задавать пароль при подключении по ssh yum install sshpass 2. конектимся к удаленному серверу: sshpass -p password ssh -o "StrictHostKeyChecking=no" user@ip_or_domain 3. Указываем на какой монитор выводить графическую программу: export DISPLAY=:0 4. И запускаем 1С с нужной нам внешней обработкой: /opt/1C/v8.3/i386/1cv8c /IBName imya_basi /N Admin /Execute /tmp/exchange/Exchange.epf Или пункты 2-4 одной командой sshpass -p password ssh -o "StrictHostKeyChecking=no" user@ip_or_domain export DISPLAY=:0 && /opt/1C/v8.3/i386/1cv8c /IBName imya_basi /N Admin /Execute /tmp/exchange/Exchange.epf ----------------------------------- И не забудьте поменять пути на ваши |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |