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

v7: Веб-сервис на файловой 77

v7: Веб-сервис на файловой 77
Я
   Базис
 
22.09.20 - 07:45
Нужно по запросу с веб-сервера отдавать результат простого запроса.

Как у Василия Ивановича Чапаева -

- Петька! Приборы! (1)
- 140, командир! (2)

Как формировать json (2) - ясно. Как получать запрос (1) - неясно. Файл-флаг в каталоге ИБ\web и обработка ожидания - криво. База, повторюсь, файловая и это не изменить.
   uzerp2
 
1 - 22.09.20 - 08:24
веб сервисов на 7-ке нету (она ж развитие прекратила где то в начала 2000-ных)
ты видимо хочешь http запрос послать из 7-ки
это видимо что-то внешнее использовать надо ( 1с 7.7 отправить файл json с помощью post-запроса )
   ДенисЧ
 
2 - 22.09.20 - 08:34
(1) Он хочет принять этот запрос...
   Bigbro
 
3 - 22.09.20 - 08:40
в 7ке либо обработка ожидания либо обработка внешнего события либо ручная инициация действий.
вроде больше вариантов заставить что-то 7ку сделать - нет.
   ДенисЧ
 
4 - 22.09.20 - 08:42
(3) Олю отметаем?
   Mikeware
 
5 - 22.09.20 - 08:44
(4) Запускать сеанс 1с по событию - долго, а оставлять висящим - стремно.
   Bigbro
 
6 - 22.09.20 - 08:47
(4) ну да, оле, но это фактически событие тоже, которое извне приходит. то есть все равно нужна будет какая-то прокладка для приема запроса и пересылки в базу 1с.
   ДенисЧ
 
7 - 22.09.20 - 08:47
(5) Или отлов событий, или ничего и...
   ДенисЧ
 
8 - 22.09.20 - 08:48
(6) примитивный веб-сервер с цги
   Eeeehhhh
 
9 - 22.09.20 - 08:53
(0) поставить 8 ))) нарисовать промежуточный веб сервис и юзать ком
   Mikeware
 
10 - 22.09.20 - 09:06
может, проще свою ВК?
   arsik
 
11 - 22.09.20 - 09:10
У 77 есть компонента стандартная. Называется "Web-расширение". Поставьте ее.
   Базис
 
12 - 22.09.20 - 09:20
(2) Да, вопрос только в быстром и лёгком для базы получении сигнала.
(5) Стрёмно в части безопасности? Отдельный пользователь, прав дам минимум, выход по файлу-флагу и таймеру.
(8) Ссылку на это дашь?
(11) Спасибо, гляну.
   Mikeware
 
13 - 22.09.20 - 09:23
(11) вообще, ее теоретически надо покупать.
Ну и я не уверен, что она решит задачу ТС (работал с ней последний раз в 2005, поэтому плохо помню)
   Mikeware
 
14 - 22.09.20 - 09:24
(12) не, стремно в том, что лично я не люблю просто так болтающиеся процессы
   Mikeware
 
15 - 22.09.20 - 09:24
   ДенисЧ
 
16 - 22.09.20 - 09:29
(15) а в этом случае не будут болтаться процессы?
   trad
 
17 - 22.09.20 - 09:33
(15) это только реализация пула com-серверов в dcom-обертке
ТС же нужнее вопрос реализации http слоя
Ему, по сути, нужна какая-нибудь реализация http-сервреа имеющего возможность достучаться в базу
   Mikeware
 
18 - 22.09.20 - 09:33
(16) в этом - будут.
в принципе, dcom - это та же оля
   Builder
 
19 - 22.09.20 - 09:35
Ух, вот только хотел создать похожую тему.
Только база скулевая, сейчас проверяю наличие файла запроса на ftp через обработку ожидания.
   Garykom
 
20 - 22.09.20 - 09:36
(0) У меня есть веб-сервис для 1С 7.7

Продам недорого
   trad
 
21 - 22.09.20 - 09:38
возможны варианты
1.WEB расширение. Но оно (13) и наверно потребует древнючую версию iis (и win).
2.Можно свою ВК написать, которая сама реализует простенький веб-сервер.
3.Можно (на каком-нибудь модном голанге) написать приложение/сервис, которое реализует веб-сервер, а северку в себя загрузить по ОЛЕ
   trad
 
22 - 22.09.20 - 09:39
4.Обратиться к (20)
   Garykom
 
23 - 22.09.20 - 09:43
(22) гы у меня вариант 3 из (21)
   Garykom
 
24 - 22.09.20 - 09:49
   Базис
 
25 - 22.09.20 - 09:50
(20) Давай попробуем, кинь в личку описание, цену, совсем хорошо бы тест производительности (за какое время выполняется первый запрос "Количество товара с кодом %1 на складе %2 на ТА").
   Базис
 
26 - 22.09.20 - 09:51
(19) Жыве 1с77!
   Garykom
 
27 - 22.09.20 - 10:00
(25) По сути это обычный доступ по OLE в 1С 7.7
Только обернутый в http сервис

Где вызов 1С 77 из 1С 8.3 выглядит примерно так

&НаСервере
Функция ВыполнитьЗапрос(КодНаВыполнение, КолонкиРезультата)
    
    База = "\\Server1c77\Bases1C\BaseSQL\";
    Пользователь = "Администратор";
    Пароль = "";

    Соединение = Новый HTTPСоединение("192.168.1.11", 8090,,,,,);
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Base", СтрокаВBase64(База));
    Заголовки.Вставить("User", СтрокаВBase64(Пользователь));
    Заголовки.Вставить("Password", СтрокаВBase64(Пароль));
    
    Запрос = Новый HTTPЗапрос("/eval", Заголовки);
    Запрос.УстановитьТелоИзСтроки(""+КодНаВыполнение, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    ТекстОтвета = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);

    Таблица = СтрокуВТаблицу(ТекстОтвета, КолонкиРезультата);

    Возврат Таблица;

КонецФункции

&НаСервере
Процедура ЗагрузитьКонтрагентыНаСервере()
    КодНаВыполнение = "
    |
    |лтзКонтрагенты = СоздатьОбъект(""ТаблицаЗначений"");
    |лтзКонтрагенты.НоваяКолонка(""Контрагент"");
    |
    |лдокПлатежка = СоздатьОбъект(""Документ.Платежка"");
    |
    |ДатаС = '01.01.2017';
    |ДатаПо = РабочаяДата();
    |
    |лдокПлатежка.ВыбратьДокументы(ДатаС, ДатаПо);
    |Пока лдокПлатежка.ПолучитьДокумент() = 1 Цикл
    |    Если лдокПлатежка.Проведен()<>1 Тогда
    |        Продолжить;
    |    КонецЕсли;
    |    лтзКонтрагенты.НоваяСтрока();
    |    лтзКонтрагенты.Контрагент = лдокПлатежка.Получатель;
    |КонецЦикла;
    |
    |лдокПриходная = СоздатьОбъект(""Документ.Приходная"");
    |лдокПриходная.ВыбратьДокументы(ДатаС, ДатаПо);
    |Пока лдокПриходная.ПолучитьДокумент() = 1 Цикл
    |    Если лдокПриходная.Проведен()<>1 Тогда
    |        Продолжить;
    |    КонецЕсли;
    |    лтзКонтрагенты.НоваяСтрока();
    |    лтзКонтрагенты.Контрагент = лдокПриходная.Поставщик;
    |КонецЦикла;
    |
    |лтзКонтрагенты.Свернуть(""Контрагент"","""");
    |
    |КоличествоКонтрагентов = лтзКонтрагенты.КоличествоСтрок();
    |лтзКонтрагенты.ВыбратьСтроки();
    |Пока лтзКонтрагенты.ПолучитьСтроку() = 1 Цикл
    |    Контрагент = лтзКонтрагенты.Контрагент;
    |   Поле(Контрагент.ИНН);
    |   Поле(Контрагент.КПП);
    |   Поле(Контрагент.Наименование);
    |   Поле(Контрагент.ЮрЛицо);
    |   Поле(Контрагент.ОсновнойСчет);
    |   Поле(Контрагент.Банк);
    |   Поле(Контрагент.БИК);
    |   Поле(Контрагент.КорСчет);
    |   Поле(Контрагент.ЮрАдрес);
    |   Поле(Контрагент.ФактАдрес);
    |   Поле(Контрагент.Телефоны);
    |   Поле(Контрагент.ДоговорНомер);
    |
    |    ДоговорДата = Контрагент.ДоговорДата;
    |    СтрокаГод = Формат(ДатаГод(ДоговорДата),""Ч(0)4"");
    |    СтрокаМесяц = Формат(ДатаМесяц(ДоговорДата),""Ч(0)2"");
    |    СтрокаЧисло = Формат(ДатаЧисло(ДоговорДата),""Ч(0)2"");
    |    ДоговорДата = """"+СтрокаГод+""-""+СтрокаМесяц+""-""+СтрокаЧисло;
    |   Поле(ДоговорДата);
    |
    |   Ввод();
    |КонецЦикла;
    |
    |";
    
    Колонки = "ИНН,КПП,Наименование,ЮрЛицо,ОсновнойСчет,Банк,БИК,КорСчет,ЮрАдрес,ФактАдрес,Телефоны,ДоговорНомер,ДоговорДата";
    Таблица = ВыполнитьЗапрос(КодНаВыполнение, Колонки);
    Для Каждого ТекСтр Из Таблица Цикл
        Сообщить("Загрузка "+ТекСтр.ИНН+" "+ТекСтр.Наименование+" "+ТекСтр.ДоговорДата);
        Элемент = СтруктураИзСтрокиТЗ(ТекСтр);
        ЗагрузитьКонтрагент(Элемент);
    КонецЦикла;
    
КонецПроцедуры

   Salimbek
 
28 - 22.09.20 - 10:01
(23) А я на Ruby делал вариант 3 из (21) )))

Только мне быстро не надо было отвечать, поэтому сидел на сервере сеанс 1С-ки с пользователем "Робот" в процессах и мониторил этот мини-сервер с некоторой периодичностью. Как появлялись запросы - формировал ответ.
А если надо отвечать быстро, то лучше скрестить этот сервер с (15) Т.е. будут сидеть уже запущенные сеансы в памяти, к ним твой мини-сервер обращается и получает быстрый ответ. За счет того, что несколько сеансов работают одновременно можно уже обслуживать более-менее серьезную нагрузку.
   Builder
 
29 - 22.09.20 - 10:53
(26) Да там такая нетленка, что на 8-ку еще лет 10 переписывать.
Сейчас к ней личный кабинет прикручиваем :)
   trad
 
30 - 22.09.20 - 10:56
(29) Во. И у меня ЛК для ТП сделан.
Только http реализовал на 8-ке, а она уже стучится прямыми запросами в 7-ку.
 
 Рекламное место пустует
   Builder
 
31 - 22.09.20 - 11:00
(30) Ну как то держать 8-ку только ради прокладки между web и 7.7 мне показалось не очень оптимально.
Хотя как вариант можно рассмотреть.
А сам ЛК на чем написан?
   trad
 
32 - 22.09.20 - 11:02
(31) Только ради этого наверно не рационально
Просто у нас 8-ка есть
   trad
 
33 - 22.09.20 - 11:03
(31) "А сам ЛК на чем написан?"
На http-сервисах же
   Builder
 
34 - 22.09.20 - 11:26
(32) Не ну у нас тоже есть, но чем меньше промежуточных звеньев, тем лучше.
(33) Не, сам фронт ЛК на 8-ке? Или движок какой или чистый PHP например?
   trad
 
35 - 22.09.20 - 12:19
(34) сам фронт. Но он примитивный, там ничего лишнего.

https://prnt.sc/ulo83v
А по каждой ссылке формируется отчет и в виде html отдается
Все.
   Mikeware
 
36 - 22.09.20 - 12:21
(35) а зачем так? никакой системы для мобильных устройств не юзаете?
   trad
 
37 - 22.09.20 - 12:27
(36) А почему нет?
Какая разница разворачивать ту или иную систему. Моя реализация чем не система.
Устроена просто, работает быстро и онлайн.

Для своих ТП применяли А+. Сейчас этой части бизнеса нет.
А эти ТП не наши. Эксклюзивщики от производителей. У них свой софт.
   Mikeware
 
38 - 22.09.20 - 12:37
(37) ну так почему бы этим эксклюзивщикам не отдавать данные для загрузки в их системы, чтоб смотрели "через одну дырку"?
   trad
 
39 - 22.09.20 - 12:48
(38) отдать то я бы отдал, да только кто их возьмет и покажет так как нам этого надо.
Ноу рил.
   trad
 
40 - 22.09.20 - 12:59
+ и у них у каждого свои геморои и тараканы. Нах нах мне это.
Представь компании типа балтики или пепси. Как ты представляешь хотя бы с пяток таких причесать под себя??!!
Они же сами диктуют порядок инфо-взаимодействия, и дистры им не указ.

В их системы (в их формате) я разумеется гружу и дебиторку и отгрузку заказов.
Да вот что-то ТП не могут через их системы оперировать этой информацией.
Им, при необходимости, приходилось связываться с нашим торговым отделом запрашивать инфу. Те отгружали по электропочте нужные отчеты.
Теперь оперативная инфа доступна круглосуточно без задержек.
ТП очень довольны, торговый отдел доволен. И это главное!
   Mikeware
 
41 - 22.09.20 - 13:16
(40) с пепсями работаем...Влобешное слово iSales я знаю...
   Злопчинский
 
42 - 22.09.20 - 20:09
(27) А докрутить как-то чтобы прокладка-сервис посылало в 77 ВнешнееСобытие (опционально-настраиваемо), с соответствующими данными?
   Ёпрст
 
43 - 22.09.20 - 20:13
(42) кому ? Должен быть хотя бы 1 запущенный процесс 1с-ины, который бы это слушал
   Garykom
 
44 - 22.09.20 - 20:46
(42) Внешнее событие умеет только ВК посылать.
Ну да можно ВК сваять которая роль веб-сервера играет, вроде для tcp/ip такие даже были.
   Builder
 
45 - 24.09.20 - 11:01
(44) Вот вариант с внешним событием был бы отличным.
Где найти такую ВК?
А никто не пробовал ВК от сканеров ШК + виртуальный COM-порт и в него данные слать например?
   Ёпрст
 
46 - 24.09.20 - 11:02
(45) формекс жешь.. умеет генерить внешнее событие
   Builder
 
47 - 24.09.20 - 11:03
(46) Генерить должен сайт. А формексу то зачем генерить?
   Базис
 
48 - 24.09.20 - 11:04
(46) Как что-то на веб-сервере может вызвать формекс?
   Ёпрст
 
49 - 24.09.20 - 11:07
(47) ну да, не так понял.
Один хрен, это событие кто-то должен слушать всё время, т.е должен быть запущен сеанс 1с-ки
   Builder
 
50 - 24.09.20 - 11:09
(49) Это не проблема. И мне кажется это лучше чем каждый определенный интервал времени опрашивать FTP сервер например.
   Ёпрст
 
51 - 24.09.20 - 11:11
(50) проще уж сам вэб сервер опрашивать, на предмет есть там че или нет
   Ёпрст
 
52 - 24.09.20 - 11:12
Опрос раз в минуту..не так и долго
   Builder
 
53 - 24.09.20 - 11:21
(51) Чем лучше опрашивать web-сервер?
   Ёпрст
 
54 - 24.09.20 - 11:25
(53) да обычным пост запросом
   Builder
 
55 - 24.09.20 - 11:29
(54) Не, я про компоненту. Без нее же не получится.
v7plus ?
   Ёпрст
 
56 - 24.09.20 - 11:33
(55) боже упаси
   Ёпрст
 
57 - 24.09.20 - 11:33
это изделие вообще не надо испаользовать :)
   Ёпрст
 
58 - 24.09.20 - 11:35
тупо через  СоздатьОбъект("Msxml2.XMLHTTP.6.0") хотя бы и его методы
   Builder
 
59 - 24.09.20 - 11:36
(57) Ойц, с чего это? Вроде глюков не замечал.
   Ёпрст
 
60 - 24.09.20 - 11:38
(59) парсить ответы ей же будешь ?
не-не-не... это медленно
 
 Рекламное место пустует


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