Имя: Пароль:
1C
 
Как закрыть Cоединение c HTTP-сервисом?
, ,
0 e053nk
 
12.08.19
16:29
Здравствуйте.
Возник вопрос по работе с  HTTP-сервисом.
Исходные данные: Конфигурация  Розница 1. Работает на платформе 8.3 в режиме совместимости 8.1.Базы файловые,возможно  одна из ЦБ будет на Скуле.
Потребовалось создать сервис по выгрузки остатков товаров в такую же базу в оперативном режиме (примерно  раз в 5 минут).
Сам HTTP-сервис я создал, прописал в нем 2 процедуры (одна на выдачу остатков, другая на загрузку данных по остаткам-так как базы идентичные, запросы  возможно будут идти с обоих сторон).
Базы скопировал, одну опубликовал  на Апаче,Fiddler проблемы всякие по формированию тела запроса отработал. Тестовые данные уходят нормально.
Начал реализовывать обмен в 1с....
Во первых, рег. задания по обмену я нормально так и не смог запустить- под текущим пользователем база каждые 5 минут вешается намертво- работать несколько сек вообще невозможно. В интернете перековырял информацию, нашел только использования ключа/AllowExecuteScheduledJobs-Force -но он заработал только когда снимаешь режим совместимости с 8.1. Это не совсем хорошо, т.к. не понятно как эта древняя конфигурация отреагирует на снятие режима совместимости в "боевой" работе. В копии пока вроде работает-но всех подводных камней не увидишь.
Во вторых. в базе ,куда опубликованной на Апаче происходит не выход пользователя с "Cоединение c HTTP-сервисом" .Т.е. я вижу что пользователь под учеткой Автообмен висит в базе, каждые 5 минут обновляет время начала работы, но при этом пользователь из базы не выходит .Так как база файловая и работает на не очень быстрых компах -хотелось бы меньше нагрузки на создавать. Да и с завершением работы скорее всего буду проблемы.
Вопросы:
1. Как можно реализовать в режиме совместимости с 8.1. работу рег. задания в фоновом режиме(т.е. не блокируя текущего пользователя и не запуская доп. сеанс 1с)?Какие варианты еще есть?
2. Как можно использовать рег.задания совместно с Web сервером на Апаче?В интернете находил упоминания об этом ,но конкретно что то ничего не нашел (или ну увидел этой информации)? Возможно этот вариант заработает лучше в режиме совместимости
3. Как завершить сеанс "Cоединение c HTTP-сервисом" сразу после отработки метода   HTTP-сервиса? Т.е. загрузил остатки -вышел из базы...
Спасибо
1 Garykom
 
гуру
12.08.19
16:42
Перепиши свой опубликованный http-сервис чтобы не онлайн в базу писал, а получал файл и затем загружал из него отпустив клиента.
2 e053nk
 
12.08.19
17:00
а это как можно реализовать? Или где почитать про это.Что то я даже не соображу.У меня JSON из тела запроса в набор записи РС перебором записывается. Каким способом клиента можно отпустить?
3 Garykom
 
гуру
12.08.19
17:03
Дык ответил же, получил json, записал его в файл в темпе, клиента сервис отпускает.
Ну можно проверить json на корректность как то чтобы ответить.
А грузить уже потом, лучше всего вызвав фоновое из файла.
4 e053nk
 
12.08.19
17:10
аааа, я думал какая о команда есть на отпускание клиента.
Тогда вопрос -а что он у меня сейчас после завершения загрузки не отпускает клиента? Что ему мешает?
5 ПускинАС
 
12.08.19
17:24
(4) мешает ему Ваше представление о том в какой момент отключается клиент от веб сервиса, возможно еще кое какие галочки в самом сервисе.
6 e053nk
 
12.08.19
22:02
Я поэтому и задаю вопрос,что хочу изменить ситуацию-только не понимаю как. У кого то конкретные советы-какие галки на сервисе нужно поставить-я выслушаю. Например, если у меня вызов сервиса должен быть каждые 5 минут -в настройках сервиса "Время жизни соединения" нужно поставить меньше 5 минут время ?
7 Garykom
 
гуру
12.08.19
22:09
Время жизни надо ставить такое чтобы хватало с небольшим запасом.
Если у тебя все время пока парсится файл, долго загружается в базу и только потом ответ даешь на сервере/сервисе на запрос клиента то это гм.

Раздели процесс получения файла и его загрузки в базу, это разные процессы и можно параллельно делать с учетом очередности получения файлов.

Онлайн нужен только тогда когда нужен онлайн а не периодически через 5 минут.
Например записать один объект можно и в онлайне и сразу дать ответ 200 ОК.
А если в json дохрена объектов то не надо так.
8 e053nk
 
12.08.19
22:20
Сейчас поставил счетчик времени - во сколько приходит на сервис команда на исполнения, и во сколько заканчивает- по времени у меня занимает 15 сек.После этого я даю ответ "200".Как я понимаю в этот момент должено тключаться пользователь  с "Cоединение c HTTP" Следующий сеанс -через 5 минут. Но пользователь с "Cоединение c HTTP"-сервисом"продолжает у меня продолжает висеть в базе. Как его еще выгнать можно?
9 Garykom
 
гуру
12.08.19
22:27
(8) Он тебе мешает?
10 e053nk
 
12.08.19
22:27
еще заметил -иногда (не регулярно как то, через 5-10-25 удачных попыток )возникает ошибка по причине:
"Ошибка работы с Интернет:  Превышено время ожидания" и смотрю 3 раза подряд пытается сервис с интервалом 1сек запуститься и отваливается с ошибкой. Причину пока тоже не вижу...
11 e053nk
 
12.08.19
22:30
(9)  Он когда висит в базе-у меня даже 1с не стартует из Конфигуратора в режим Предприятия по F5.  Это как то не нормально.И это локально на моем ноуте,какие эффекты будут на рабочем месте кассира-сейчас до конца не известно,хочу минимизировать возможные проблемы
12 e053nk
 
12.08.19
22:34
В журнале регистрации есть событие "Сеанс. Аутентификация" и "Сеанс. Начало"по пользователю "Автообмен" , но нет ни одного об окончании сеанса.Уходит по английски?
Хотя сейчас в списке пользователя начинает пропадать после какого то времени.
не понятно в зависимости отчего это происходит
13 e053nk
 
12.08.19
23:14
Сейчас рег задание отвалилось. Попробовал зайти в ту базу , где крутятся рег.задания под пользователем "Администратор"параллельно под  "Кассиром". рег задание перестало выполняться. Ключ /AllowExecuteScheduledJobs-Force должен,как я понимаю, переключать выполнение рег. задание на нового пользователя -но этого не произошло. При выходе "кассира" из программы тоже не переключилось назад на Администратора.
Как то не понятно работает  механизм рег. заданий на файловой базе..
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.