Имя: Пароль:
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 должен,как я понимаю, переключать выполнение рег. задание на нового пользователя -но этого не произошло. При выходе "кассира" из программы тоже не переключилось назад на Администратора.
Как то не понятно работает  механизм рег. заданий на файловой базе..
Закон Брукера: Даже маленькая практика стоит большой теории.