|   |   | 
| 
 | Автоматический обмен между идентичными базами | ☑ | ||
|---|---|---|---|---|
| 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 ----------------------------------- И не забудьте поменять пути на ваши | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |