Версия для печати темы (https://pro1c.org.ua/index.php?s=a828eb2de7227a2c8e825ca0ef0ccc66&showtopic=33669)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как отправить из файловой базы на sql/pgsql сервер некоторые данные

Автор: cartorys 03.12.16, 13:00

Задача следующая.
Есть файловая база, самописная конфигурация (кассовое место). Нужно выгружать из нее продажи на удаленный транзитный sql/pgsql сервер в интернете.
Например, передать таблицу с продажами запросом.
Что можете посоветовать под эту задачу? Клиент, компонента, com сервер?..
Спасибо.

Автор: logist 03.12.16, 17:33

Если связь с удаленным сервером стабильная то можно из 1С писать в базу через комобъект ADODB.Connection

Автор: Мичман Харитонов 05.12.16, 10:14

А насколько большой объем данных передается?
Возможно, есть смысл перегружать через файл XML?

Автор: cartorys 05.12.16, 13:24

На сервер должны отправляться чеки продаж (мизерный объем). А с сервера будет загружаться номенклатура с ценами/остатками.
Насчет XML/CSV/TXT - вариант, но, все же, хочеться реализовать с помощью БД. В этом случае нужно еще будет решить вопрос передачи файлов (FTP/ISCSI/облачное хранилище и т.д. Хорошо, если касса одна или их 10. А когда их будет 100+?
Есть 2 варианта, которые позволят избежать задержек в случае лагов или отвала интернета:
1С файловая БД <-> локальный сервер sql/pgsql <-> транзитный сервер в интернете.
1С файловая БД в фоновом режиме <-> транзитный сервер в интернете.

Автор: sava1 05.12.16, 13:43

Так чем АДО не подходит? - никаких прослоек - прямая запись/чтение таблиц СКЛ ?

Автор: logist 05.12.16, 17:18

Цитата(cartorys @ 05.12.16, 14:24) *
1С файловая БД <-> локальный сервер sql/pgsql <-> транзитный сервер в интернете.

Плюсану за этот вариант. Более надежно.

Автор: Vofka 05.12.16, 17:43

Цитата(logist @ 05.12.16, 17:18) *
Плюсану за этот вариант. Более надежно.

Более надежно, чем что и почему?

Автор: cartorys 05.12.16, 20:37

Цитата(sava1 @ 05.12.16, 13:43) *
Так чем АДО не подходит? - никаких прослоек - прямая запись/чтение таблиц СКЛ ?

Подходит. Хочется разнообразия, для того чтобы выбрать лучший вариант.
Цитата(Vofka @ 05.12.16, 17:43) *
Более надежно, чем что и почему?

В данном случае 1С файловая выгружает чеки с помощью ADODB (например) на локальный (находящийся на той же машине-кассе) сервер с микроскопической pgsql базой в пару-тройку таблиц. А уже последняя выгружает на транзитный сервер в интернете. И работа 1С не зависит от наличия/стабильности интернета.
Опять же, ИМХА.
Фоновый сеанс 1С, по непонятным мне причинам, пожирает много ресурсов... А клиенты (кассы) я использую на базе microITX via800MHz 512RAM. Без фонового - 8.2 летает.
Почему бы использовать sql версию базы? Все просто, файловая конфа уже написана и работает smile.gif

Автор: Acid 06.12.16, 9:25

cartorys @ Вчера, 20:37 * ,
Че то я не понял... Сначала вы спрашиваете как реализовать, а потом вы рассказываете как круто у вас все работает.

Автор: Vofka 06.12.16, 10:10

cartorys, вариант с транзитной SQL базой мне лично не нравится по той причине, что это звено заметно усложняет решение в целом. А каких-то существенных плюсов, в данном случае, я от этого не вижу.

Цитата(cartorys @ 05.12.16, 20:37) *
И работа 1С не зависит от наличия/стабильности интернета.

Если сделать все по людски, то для меня очень сомнительно, что нестабильный интернет при этом всём будет как-то заметно влиять на работу 1С. При нестабильном интернете возможны проблемы с доставкой данных на конечный сервер, но это будет актуально даже если выгрузка будет не из 1С.

Цитата(Acid @ 06.12.16, 9:25) *
Фоновый сеанс 1С, по непонятным мне причинам, пожирает много ресурсов...

Можно подробнее?

Автор: cartorys 06.12.16, 12:12

Цитата(Acid @ 06.12.16, 9:25) *
cartorys @ Вчера, 20:37 ,
Че то я не понял... Сначала вы спрашиваете как реализовать, а потом вы рассказываете как круто у вас все работает.

Работает конфигурация с обменом с помощью csv в локальной сети. Хочу реализовать через БД.
Цитата(Vofka @ 06.12.16, 10:10) *
вариант с транзитной SQL базой мне лично не нравится по той причине, что это звено заметно усложняет решение в целом. А каких-то существенных плюсов, в данном случае, я от этого не вижу.

Изначально идея транзитной БД - безопасность рабочей базы 1С УТП. То есть: касса <> тразитный сервер <> УТП.
Далее, у нас рабочая база тоже файловая. Переходить на sql пока не планируем. Наконец, я пока не настолько крут, чтобы со стороны клиента разграничить доступ.
Цитата(Vofka @ 06.12.16, 10:10) *
Можно подробнее?

Чуть позже опишу подробно.

Автор: Vofka 06.12.16, 14:27

Цитата(cartorys @ 06.12.16, 12:12) *
Изначально идея транзитной БД - безопасность рабочей базы 1С УТП. То есть: касса <> тразитный сервер <> УТП.

Что вам дает промежуточная БД, в данном случае? В чем заключается безопасность? Может я чего-то не понимаю просто.

Автор: cartorys 06.12.16, 18:11

Цитата(Vofka @ 06.12.16, 14:27) *
Что вам дает промежуточная БД, в данном случае? В чем заключается безопасность? Может я чего-то не понимаю просто.

Хорошо. Копаем глубже.

Для начала, полная модель выглядит так: 1с файловая база (касса) <> локальный sql сервер <> транзитный sql сервер на vps <> сервер 1С с файловой базой.
Если я решу вопрос с фоновыми задачами, то в локальном sql сервере необходимость отпадает. Так же на клиенте (кассе) можно установить sql версию 1С, но хорошая ли это идея?

В идеале между клиентом (кассой) и сервером 1С должен быть VPN. Но, поскольку ситуации (клиенты, бюджеты) бывают разные, хочется реализовать универсальную модель.
Если VPN'а нет, подключатся к серверу нужно будет по статическому IP (сервера) или ddns. В этом случае можно элементарно задедосить сервер.
В случае с транзитным сервером - задедосят его, основной сервер 1С будет жить.
Опять же, на сервере файловая 1С. Я не представляю простого способа удаленно подключатся напрямую к файловой базе.

Автор: Acid 06.12.16, 19:42

cartorys @ Сегодня, 18:11 * ,
Про стандартную функцию "Обмен данными" слышали?

Автор: sava1 06.12.16, 20:05

Цитата(cartorys @ 06.12.16, 18:11) *
можно элементарно задедосить сервер.


Вы из ЦРУ, Пентагона или ГАВнюков. Кто будет дедосить какую-то "хрень с аипишником".
Есть ощущение - "хочу установить на свой Запорожец крутую сигналку с ЖПС замком, а то ведь угнать могут..."

Автор: cartorys 06.12.16, 23:58

Цитата(Acid @ 06.12.16, 19:42) *
Про стандартную функцию "Обмен данными" слышали?

Вы говорите про типовой механизм? Про него слышал. На всякий случай копну.
Но конфигурация то самописная, так что, или переносить типовое решение, или писать свое.
Цитата(sava1 @ 06.12.16, 20:05) *
Вы из ЦРУ, Пентагона или ГАВнюков. Кто будет дедосить какую-то "хрень с аипишником".
Есть ощущение - "хочу установить на свой Запорожец крутую сигналку с ЖПС замком, а то ведь угнать могут..."

Ох, в нашей стране лучше быть параноиком...

Автор: Batchir 07.12.16, 9:36

Добавлю что-то новенькое в обсуждении универсальности решения:
1. В базе удаленного сервера разрабатываем web-сервис (http-сервис)
2. Разворачиваем (если не развернут) web-сервер и публикуем этот сервис.
3. В торговой конфе пишем обращение к веб-сервису: передаем/получаем необходимые данные.

Что имеем (первое что в голову пришло):
1. Никакого впн нет. Доступ к веб-серверу дело рук администратора веб-сервера.
2. Универсальность решения на стороне сервера. Операции можно вызывать из любой конфигурации, правда нужно писать работу с ними в каждой новой конфигурации-клиенте.
3. Онлайн обмен. Результат выполнения можно сразу узнать. Сервер вернет всю необходимую информацию.
4. Нет никаких фоновых 1С-ок. Обмен только по необходимости.
5. Ваша схема перерастает в более простую с меньшим количеством узлов: 1с база (касса) <> web-сервер <> 1с база (центральная)

Автор: Vofka 07.12.16, 14:21

То, что написал Batchir соответствует и моему представлению о решении данной задачи. Сегодня web сервисы это уже не экзотика, а стандарт.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua