Имя: Пароль:
1C
1С v8
Автоматический обмен между идентичными базами
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
-----------------------------------
И не забудьте поменять пути на ваши
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший