Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выполнение функций в другой конфигурации

Выполнение функций в другой конфигурации
Я
   e2v
 
29.07.19 - 14:53
Совета надо 8)))
Есть две базы 1С.
В одной есть функции возвращающие данные нужные в другой базе.
Как лучше организовать доступ и выполнение?
Проще говоря, хочу из первой конфы выполнить функцию, находящуюся во второй конфе и  обработанные данные вернуть в первую конфу. 8)))
Функция будет выполняться множеством запросов, поэтому скорость имеет значение.
Пробовал по COM-соединению - тормозит.
Подключение как Внешняя База - штука хорошая, но прописывать все справочники и регистрысведений, нужные для запроса, из базы источника - труба.

Чето больше не знаю как еще можно 8))).
Признателен любой идее.
 
 
   palsergeich
 
1 - 29.07.19 - 14:54
(0) через web или http сервисы будет самый правильный вариант ИМХО
   MyNick
 
2 - 29.07.19 - 14:55
(0) КОМ? Это та технология из прошлого тысячелетия? Когда уже одинэсники начнут спрашивать, что означает эта аббревиатура..
   e2v
 
3 - 29.07.19 - 15:53
(1) Пробовал, нормально.
Но хотелось бы не менять конфу в базе источнике. Она стандартная.
   e2v
 
4 - 29.07.19 - 15:54
(2) Технология старая, но вот в такой ситуации ничего другого не придумывается.
8))
   palsergeich
 
5 - 29.07.19 - 15:54
(3) юзай механизм расширений. Общие модули и веб / http сервисы прекрасно живут в расширениях
   lodger
 
6 - 29.07.19 - 15:59
(3) сделай расширение.
   e2v
 
7 - 29.07.19 - 16:06
(5) По расширениям согласен.
Но у меня вопрос другой.
Есть ли кроме COM объекта какой нибудь метод выполнить функцию в другой конфе 1С ?
Мало знаю про это.
Мож еще как-то кто-то делает ?
Может не средствами 1с?
   Провинциальный 1сник
 
8 - 29.07.19 - 16:22
(7) "Есть ли кроме COM объекта какой нибудь метод выполнить функцию в другой конфе 1С ? "
К сожалению, 1с не реализовала нативный метод межпроцессного взаимодействия, не завязанный на ОС. А COM признали нерекомендуемым и устаревшим..
   ВикторП
 
9 - 29.07.19 - 16:25
(8) Дайте мне ссылку на "А COM признали нерекомендуемым и устаревшим.." - хочу показать кой- кому
   e2v
 
10 - 29.07.19 - 16:27
Ясно. 8)))
Как то так и думал. Не могло быть всё хорошо 8)))
   palsergeich
 
11 - 29.07.19 - 17:05
(9) В стандартах прописано, что исполняемый код должен выполняться на любой ОС.
   Сияющий в темноте
 
12 - 29.07.19 - 17:14
что мешает реализовать аналог Com в другой ос,тем более,что из всего com нужно только загрузить dll и дать ей управление.
с внешними компонентами научились нативно,вот осталось и подключение нативным сделать.
и,в отличие от DDE,Com не признан устаревшей технологией,тем более,что в windows vista и болен поздних часть системных вызовов построены на технологии Com.
Устаревшим считается технология ActiveX,но она только часть ComponentObjectModel.
   Сияющий в темноте
 
13 - 29.07.19 - 17:17
И это,я в базовой версии исполнял код о  внешнего вызова через внешнюю обработку и обработчик событий от внешней компоненты.
причем конфа не менялась от слова совсем.
   Rovan
 
14 - 29.07.19 - 17:19
(0) "Функция будет выполняться множеством запросов, поэтому скорость имеет значение. "
А если пакетный запрос !?

(7) "Есть ли кроме COM объекта какой нибудь метод выполнить функцию в другой конфе 1С ? "
Есть ! OLE, но он еще более тормознутый !
   bolero
 
15 - 29.07.19 - 19:30
(9) что там показывать, достаточно попросить на линуксе запустить
   Жан Пердежон
 
16 - 29.07.19 - 19:57
(0) пили свой веб-сервис
   Сияющий в темноте
 
17 - 29.07.19 - 20:04
   Franchiser
 
18 - 29.07.19 - 20:59
OData
   H A D G E H O G s
 
19 - 29.07.19 - 21:04
Свой веб-сервис требует своего веб-сервера.
   palsergeich
 
20 - 29.07.19 - 23:36
(19) Кэп. Не узнаю Вас в гриме)
   e2v
 
21 - 30.07.19 - 08:20
(18) Вчера дискусия продолжилась. 8)) Я отвалился.
Не ответить не прилично.
ODATA требует настройки веб сервиса в конфигурации источника,
а хотелось бы вообще не прикасаться к источнику , никак, не расширением, ни веб сервисами.
Это связано с проблемами источника.
   e2v
 
22 - 30.07.19 - 08:23
(14) Пакетный запрос не подходит,т.к. запросы от разных пользователей проходят через
конфигурацию2 в конфигурацию1. Т систематизировать их во времени не удастся. Это HTTP-запросы
из разных приложений.
Или я чего не так понял?
   e2v
 
23 - 30.07.19 - 08:31
(13) Конечно можно написать запрос (или выполнить функцию) через СОМ.
Но дело в том, что запрос на подключение идет долго. В моем случае.
Может чего поднастроить надо?
Ситуация такая.
Приложение на JAVA посылает POST запрос. Конфа1 на 1С его принимает,
обрабатывает и для ответа привлекает данные из конфы2. Есть таймаут,
в который нужно уложиться с ответом.
К тому же запросов может быть до 20 потоком. И это от одного пользователя.
А их в плане до 20 будет.
Понимаю, это мои проблемы. 8)))
   ДенисЧ
 
24 - 30.07.19 - 09:03
(23) Если тыкую связку строишь - то грех вторую кнфигурацию не подтюнить
   e2v
 
25 - 30.07.19 - 09:24
(24) Таки вот и хочу.
Но как ?
Схожусь на вариант 0DATA, но придется веб сервер делать и базу публиковать.
А на ВнешнихИсточникахДанных все шикарно, но писанины много.Например, запрос
к региструсведений.срезпоследних как организовать? Етож целый геморой. 8))
   ДенисЧ
 
26 - 30.07.19 - 09:26
(25) Тебе функции нужно звать? Или прямо к объектам лазить?
   e2v
 
27 - 30.07.19 - 09:47
(26) Лучше функции вызывать. Вообще решение проблемы.
Но как это сделать без СОМ соединения не пойму. ODATA пока не в счет.
   ДенисЧ
 
28 - 30.07.19 - 09:49
(27) хттп-сервис, тебе же же предложили.
   e2v
 
29 - 30.07.19 - 09:54
(28) Х-м-м. Я всегда страдал плохой дикцией 8)))
Я же говорю, не желательно лезть в конфу источник, даже расширением.
А HTTP сервис подразумевает именно это, писать в конфу. Или я не прав?
Изменения возможны только в конфе1, которая работает с HTTP запросами извне.
   palsergeich
 
30 - 30.07.19 - 10:06
(29) тебе шашки или ехать?
 
 Рекламное место пустует
   Ник080808
 
31 - 30.07.19 - 10:20
(29) через выполнить команду системы запускаешь вторую базу с выполнением обработки при старте. в обработке пихаешь вызовы конфы. конфу править не нужно) извращение, но если не ком и не править конфу других вариантов нету
   olegves
 
32 - 30.07.19 - 10:26
(0) у ОМ, где расположена функция долна стоять галка "Внешнее соединение"
   ДенисЧ
 
33 - 30.07.19 - 10:30
(29) А я тебе ответил в (24)...
   ДенисЧ
 
34 - 30.07.19 - 10:30
(31) И ты думаешь, это будет быстрее КОМа?
   Asmody
 
35 - 30.07.19 - 10:32
(0) Пусть твоя база-источник крутит твои запросы в рег.задании и выкладывает результаты в файл с некоторой периодичность. А вторая этот файл читает при необходимости.
   Asmody
 
36 - 30.07.19 - 10:33
(34) Тут, понимаешь, весь вопрос в том, где ему нужна скорость - при отправке или при получении данных. И какова должна быть реальная актуальность этих данных.
   Asmody
 
37 - 30.07.19 - 10:34
Так-то можно и какую-нибудь MQ прикрутить
   Провинциальный 1сник
 
38 - 30.07.19 - 10:37
(29) Это в 1с называется "прогресс". Терпи и получай удовольствие.
   ДенисЧ
 
39 - 30.07.19 - 10:40
(36) У него будет 20 подключений в минуту ))
Ком-объект можно на клиенте хранить... А 1с запускать каждый раз...
   lodger
 
40 - 30.07.19 - 10:40
(29) "Я же говорю, не желательно лезть в конфу источник, даже расширением.
А HTTP сервис подразумевает именно это, писать в конфу. Или я не прав? " - нет. не прав.
почитай матчасть http://v8.1c.ru/o7/201410ext/index.htm
   Asmody
 
41 - 30.07.19 - 10:42
(39) Ему нужна актуальность данных за 5 секунд? Торговый автомат пишет?
   ДенисЧ
 
42 - 30.07.19 - 10:46
(41) "К тому же запросов может быть до 20 потоком. И это от одного пользователя.
А их в плане до 20 будет"
   bolero
 
43 - 30.07.19 - 10:54
В случае, когда на конфе-источнике не надо выполнять функции, а только взять данные - я использую прямой доступ к базе и мозги себе не делаю. Веб-сервер для этого не нужен.
   Ник080808
 
44 - 30.07.19 - 11:04
(43) "прямой доступ к базе " расшифруй
   e2v
 
45 - 30.07.19 - 13:05
(40) Мат.часть прочел. 8)))
Понял, что плохо разъяснил. 8))
Расширение в любом случае запускается или прикручивается на конфе источнике.
Я физически этого сделать не могу. (не спрашивай почему).
Остается выход - зная конфу источника читать базу удаленно.
   Жан Пердежон
 
46 - 30.07.19 - 13:15
колхоз - дело добровольное
   e2v
 
47 - 30.07.19 - 13:15
Народ. Спасибо, что не посылаете. 8)))
Несколько мыслей уже натолкнули.
Проверяю последовательно.
Но в некоторых записях вижу недопонимание.
Если не надоело, еще раз объясню суть проблемы.
Есть веб-приложение на JAVA. Иметь с ним связь можно только
принимая от него запросы-POST и давая ответы на них.
Так как на один запрос надо дать один ответ (технология такая), получается
сколько запросов столько ответов. Тут проблем нет.
Но в ответ надо включить данные из базы 1С из другой конфигурации2 (и на другом сервере).
Множество запросов делать не удобно. Я использую функции, находящиеся в другой конфе2, которые
дают мне нужные данные. Делаю это через СОМ. Но так как запросов много то возникает таймаут из-за тормозов СОМ.
Вот и думаю как это обойти. Т.е. не изменяя конфу2 (базу2) выполнять на ней функции , только быстро.
Как-то так. Вроде понятно 8)))
   e2v
 
48 - 30.07.19 - 13:16
(46) Не ну если есть что-то вменяемое посоветуй.
Может вне 1С.
   e2v
 
49 - 30.07.19 - 13:17
(44) Прямой доступ к базе - когда из SQL-и напрямую читаю, минуя 1С предприятие.
   Вафель
 
50 - 30.07.19 - 13:17
(47) самое простое - увеличить таймаут
   e2v
 
51 - 30.07.19 - 13:19
(43) Вопрос. А как работать с регистрами. Там таблиц несколько. Есть пример?
   Жан Пердежон
 
52 - 30.07.19 - 13:19
(48) если возможно  - тащить медленно данные к себе в базу периодически; отдавай их быстро уже из своей базы по запросу
   e2v
 
53 - 30.07.19 - 13:19
(50) Гы 8)))
   e2v
 
54 - 30.07.19 - 13:21
(52) Ну да , думал и так.
Пока не пробовал. Думал еще зеркало SQL-ки делать на базу.
Не знаю. Чето как то не красиво 8)))
   e2v
 
55 - 30.07.19 - 13:24
(41) Не. Организация сделала сайт с оформлением заявок и продаж товаров для работы с клиентами.
Товары в одной базе, цены в другой, клиенты на листочке 8)))
   Вафель
 
56 - 30.07.19 - 13:27
а почему бы приложению не брать данные из разных баз?
   e2v
 
57 - 30.07.19 - 13:30
(56) Потому что писали его люди, которые всегда правы 8)))
   e2v
 
58 - 30.07.19 - 13:31
А вот какие мысли про кэширование СОМ соединения через веб сервер?
Если кто пробовал- хелп мне примерчик.
   lodger
 
59 - 30.07.19 - 13:37
(47) опубликую базу2 как odata. http://catalog.mista.ru/public/711302/
   bolero
 
60 - 30.07.19 - 14:49
(49) Например:
CREATE OR REPLACE FUNCTION names.goods_movements()
  RETURNS TABLE (
    period   TIMESTAMP,
    org_bref BYTEA,
    acc      MVARCHAR(10),
    n_bref   BYTEA,
    qty      NUMERIC,
    reg_tref BYTEA,
    reg_rref BYTEA
  )
AS
$$
SELECT *
FROM
  (
    SELECT
      dv."Период"                 period,
      dv."Организация_Ссылка"     org_bref,
      dt."Код"                    acc,
      dvs."Значение_Ссылка"       n_bref,
      dv."КоличествоДт"           qty,
      dvs."Регистратор_СсылкаТип" reg_tref,
      dvs."Регистратор_Ссылка"    reg_bref
    FROM
      names."РегистрБухгалтерии_Хозрасчетный_Субконто" dvs
      JOIN names.trefs tr
           ON dvs."Значение_СсылкаТип" = tr.id_tref AND
              tr.conf_table = 'Справочник_Номенклатура'
      JOIN names."Справочник_Номенклатура" n
           ON dvs."Значение_Ссылка" = n."Ссылка"
      JOIN names."РегистрБухгалтерии_Хозрасчетный" dv
           ON dvs."Регистратор_Ссылка" = dv."Регистратор_Ссылка" AND
              dvs."Регистратор_СсылкаТип" = dv."Регистратор_СсылкаТип" AND
              dvs."НомерСтроки" = dv."НомерСтроки" AND
              dv."Активность" = TRUE
      JOIN names."ПланСчетов_Хозрасчетный" dt
           ON dv."СчетДт_Ссылка" = dt."Ссылка"
             AND dt."Количественный" = TRUE
             AND dt."Вид" = 0 -- Активный
             AND dvs."ВидДвижения" = 0 -- Дебет

    UNION ALL

    SELECT
      dv."Период"                 period,
      dv."Организация_Ссылка"     org_bref,
      kt."Код"                    acc,
      dvs."Значение_Ссылка"       n_bref,
      dv."КоличествоКт" * -1      qty,
      dvs."Регистратор_СсылкаТип" reg_tref,
      dvs."Регистратор_Ссылка"    reg_bref
    FROM
      names."РегистрБухгалтерии_Хозрасчетный_Субконто" dvs
      JOIN names.trefs tr
           ON dvs."Значение_СсылкаТип" = tr.id_tref AND
              tr.conf_table = 'Справочник_Номенклатура'
      JOIN names."Справочник_Номенклатура" n
           ON dvs."Значение_Ссылка" = n."Ссылка"
      JOIN names."РегистрБухгалтерии_Хозрасчетный" dv
           ON dvs."Регистратор_Ссылка" = dv."Регистратор_Ссылка" AND
              dvs."Регистратор_СсылкаТип" = dv."Регистратор_СсылкаТип" AND
              dvs."НомерСтроки" = dv."НомерСтроки" AND
              dv."Активность" = TRUE
      JOIN names."ПланСчетов_Хозрасчетный" kt
           ON dv."СчетКт_Ссылка" = kt."Ссылка"
             AND kt."Количественный" = TRUE
             AND kt."Вид" = 0 -- Активный
             AND dvs."ВидДвижения" = 1 -- Кредит
  ) t
ORDER BY 1, 2, 3, 4, 5

   e2v
 
61 - 30.07.19 - 15:37
(60) Это не я спрашивал про прямой доступ к базе. 8)))
Согласен, тоже выход, но с объектом ВнешниеИсточникиДанных даже проще.
Иначе SQL-ку надо нормально знать.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.