3. Если в этот момент влезет кто-то с другим &id=, то для него последовательность начинается заново, а для других продолжается, будто бы этого новичка и не было.
Например, первый аппарат продолжает повторять URL см. выше
и ему выдают файлы 01065.dat, 01066.dat и т.д., хотя после ?kusok= у него стоИт 1000. В этот момент влезает другой аппарат и выдаёт тот же ?kusok=1000, но со своим id.
В результате для второго аппарата (с id=9876543210123) последовательность начинается с 1000 - грузятся файлы 01000.dat, 01001.dat, 01002.dat, 01003.dat и т.д.
а для первого (с id=1234567890123) его последовательность продолжается 01067.dat, 01068.dat и т.д.
4. Если какой-то аппарат вдруг изменит ?kusok= в своём URL, то нужно выдать файл с номером после ?kusok=, а затем опять через 1 по возрастающей
Например, когда второй аппарат начнёт повторять URL
дошли до 01065.dat и через минуту повторили его снова, то должны получить 01066.dat. А вот если задумаемся на 1,5 мин и больше, то счётчик должен сброситься и мы должны получить 01000.dat "с чистого листа".
P.S. То, что до get_file.php настраивается, само get_file.php и после - нет.
Можно ли сделать ТАКОЕ средствами 1С? Если 8.2 не потянет, можно и 8.3 задействовать. Или всё, finita - надо специальные языки использовать?
Есть ли у 1С какие ограничения на число параллельных сеансов, то есть сколько последовательностей с разными id могут максимально поддерживаться?
Граждане! *ВЫРУЧАЙТЕ!!!* В пятницу утром всё уже должно работать, а у меня ещё конь не валялся :((((((
На досуге написал такой сервис - в прикрепленных dt с базой примером.
Платформа 1С:Предприятие 8.3 (8.3.10.2561)
В базе присутствует константа в которую устанавливается каталог файлов которые будут отправляться клиенту (каталог должен заканчиваться на символ \ ) и к нему должен быть доступ, а так же регистр сведений для хранения данных сеансов.
Как публиковать базу можно почитать здесь. Параметры публикации базы оставлял по умолчанию.
По результатам публикации тестировал получение файлов на следующем URL http://localhost/get_file_base/hs/GetFileService/get_file.php?kusok=1000&id=1234567890123
За 100 процентную правильность реализации не ручаюсь - но думаю подкрутить что то Вам проблемы не составит.
(1) А к чему такая зацикленность на 1с? Не уверен что можно выдать произвольный файл через веб-сервис. На Bottle+Mysql такой проект построить быстрее и проще, например, учитывая что логика минимальная.
Ограничения сеансов в 1С это количество лицензий 1С. Вроде так.
Однако задача может быть решена на 1С даже на 8.2 путем применения веб-сервисов 1С.
Если сделать просто конфигурацию только для решения этой задачи по пересылке данных, то грузится должно быстро. Однако мне думается, что следует применять базу под SQL.
Да даже можно связать просто технологию MS ASP + connection к 1С. Работать будет дольше.
Какие проблемы то?
Если пишем свою конфу с нуля, обработка запроса очень простая
Время жизни сессии и параллельность запросов оставьте нормальным средствам разработки, а у нас тут 1С !
Пишем http сервис с методом get (Платформу берём 8.3.10)
Этот сервис получает 2 параметра - ID файла и ID запроса.
Регистр сведений "Сессии" делаем периодический по секундам, измерение - ID запроса
Регистр сведений "ТекущиеЗаписи" делаем не периодический . Измерение ID запроса, ресурс ID файла.
Из "Сессии" читаем дату последнего запроса, если она отстала от текущей более чем на 90 секунд - последовательность пора сбрасывать.
Пишем в "Сессии" текущий ID
Если последовательность сбрасывается - Пишем в "ТекущиеЗаписи" ID файла и отдаём нужный файл в ответ http сервиса.
Если последовательность не сбрасывается - Читаем из "ТекущиеЗаписи" ID файла и отдаём нужный файл в ответ сервису
(8)
1. Нет. Экземпляр 1С сам запустится при получении входящего запроса (запускается упрощённый вариант платформы без графики). Стартует быстро, но, конечно, в сотни раз медленнее специализированного скрипта. Секунды против милисекунд
(5) Если,к примеру, написать веб-сервис чтобы отдавать файл (возвращать из вызова функции) его вызывать из клиента, то ведь веб-сервисы еще в 1С 8.1 работают.
Второй вариант, я так решал частную проблемку: создал скрипт на MS ASP, где клиент вызывал веб-сервер MS, а скрипт ASP (обрабатывая должным образом URL) вызывал веб-сервис 1С 8.1 на веб-сервере и возвращал клиенту ответ. В скрипте использовался объект MSXML2.XMLHTTP для вызова веб-сервиса 1С.
А можно вопрос спросить?
Почему руководство решило поставить задачу обработать веб-запросы, не относящиеся в принципе к 1С программисту 1С, а не веб-программисту ? Я думаю, что если просто даже на форумах веб-программистов поспрашивать, то там ответ бы уже был дан в виде файла-скрипта решения в связке с какой-нибудь базой SQL Lite :))
Почему руководство решило поставить задачу обработать веб-запросы,
Начальство не ставило задачу "обработать веб-запросы", оно и слов таких не знает. Ему надо, чтобы всё работало ™ и в заданный срок.
не относящиеся в принципе к 1С
Нууу, когда франчи агитировали за восьмёрку, там мелькало что-то про Web-технологии. Вот начальник и зацепился, раз умные люди сказали, значит, 1С может. А раз ты не знаешь как, значит, некомпетентный и, следовательно, на выход. Всё просто.
Я ещё боюсь, чтобы про работу с мобильными телефонами не вспомнили, тьфу-тьфу-тьфу.
программисту 1С, а не веб-программисту ?
Веб-программист отсутствует, как класс. С админа спрос небольшой - "мне не надо бежать быстрее медведя, мне надо лишь бежать быстрее тебя" (с). Об электрониках и говорить нечего. Правда, ТУТ свою часть работы они выполнили.
ответ бы уже был дан в виде файла-скрипта решения в связке с какой-нибудь базой SQL Lite
Я не люблю использовать код, как обезьяна, не понимая, как он работает. К тому же начальству хотелось бы увидеть 1С в работе, чтобы не было мучительно больно за бесцельно потраченные деньги. (Ну, не совсем, бесцельно, конечно. Но раз заплачено в том числе и за Web, значит, должен быть и Web)
К тому же это ещё за собой, как пить дать, и Linux потянет. И утону я во всём этом. А мне надо срочно.
(11)
Срочно это отдать на аутсорс. К примеру я такое напишу/настрою часа за 3. Но когда в этом только разбирался, ушло много дней на понимание и на гугление не туда и не того.
(11)
Я не люблю использовать код, как обезьяна, не понимая, как он работает
Судя по задаваемым вопросам, именно так и придётся решать эту задачу. Наугад тыкая в чужой код в надежде получить свой результат. Знания не сверхсложные, но их много. Слишком много для нескольких дней на осмысленное решение
Тогда следует для начала поднять веб-сервер с использованием 1С возможностей для начала. А потом посмотреть примеры работы с html. (для начала вернуть клиенту через броузер "Здравствуй мир!"). Можно и на других системах, типа PHP. Ведь принципы работы http одинаковы для всех систем: формируется запрос, формируется на сервере ответ, отправляется на клиента.
Я так полагаю, что клиентскую часть, вызов из броузера тоже придется писать. тогда еще и Java учить значит надо и html.
Я так полагаю, что клиентскую часть, вызов из броузера тоже придется писать
Да нет, это уже написано до нас. По крайней мере, так считается. И я должен быть 100%-но чист, чтобы, если, не дай Бог, возникнет проблема с передачей данных, аргументировано доказать, что проблема не на моей стороне.
Тогда следует для начала поднять веб-сервер с использованием 1С возможностей для начала.
Как?
А потом посмотреть примеры работы с html.
Где?
Можно и на других системах, типа PHP.
Другие системы - это буэээ. Это надо искать, скачивать, настраивать, выбирать - и всё это во время цейтнота. Изучать язык, всё будет сбоить, ты будешь думать: "Где у меня ошибка?" - а окажется, что всё нормально, а всё дело в том, что какая-нибудь переменная окружения не установлена или права какие-нибудь не прописаны или какого-нибудь htt-файла где-то нет или в нём написано что-то не то. А времечко-то идёт.
Это надо искать, скачивать, настраивать, выбирать - и всё это во время цейтнота. Изучать язык, всё будет сбоить
Не переживай, в 1С всё ровно также. Кусок относящийся к веб отличается от куска выдающего цифры в СКД как два разных ферймворка для разных платформ и языков.
(20)
Да я заметил. Восьмёрка, действительно, лоскутный продукт, как будто её community создавало, а не коммерческая фирма. Плюс к тому же разные вещи называются похожими словами, а похожие - разными.
Вот качестве простого примера скрипт на ASP (позаимствован на stackoverflow.com) для MS веб-сервера возвращается файл по запросу из URL код всего ничего. Осталось только прикрепить 1С для проведения анализа действий пользователей :) Для этого можно использовать в ASP просто объект 1С ComConnection.
Так можно быстро отчитаться перед руководством. Ну а потом уже дорабатывать тему функционала веб-сервера 1С. :)))
<%
Dim objConn, strFile
Dim intCampaignRecipientID
' выполнение функции общего модуля в 1С с передачей в нее параметров
' возвращаемое значение строкового типа
res = Conn.ExternalUsage.GetCurrenNemaOfFile( kusok, id )
'
'обрабатываем далее данные
'и завершаем скрипт обнулением переменных
На досуге написал такой сервис - в прикрепленных dt с базой примером.
Платформа 1С:Предприятие 8.3 (8.3.10.2561)
В базе присутствует константа в которую устанавливается каталог файлов которые будут отправляться клиенту (каталог должен заканчиваться на символ \ ) и к нему должен быть доступ, а так же регистр сведений для хранения данных сеансов.
Как публиковать базу можно почитать здесь. Параметры публикации базы оставлял по умолчанию.
По результатам публикации тестировал получение файлов на следующем URL http://localhost/get_file_base/hs/GetFileService/get_file.php?kusok=1000&id=1234567890123
За 100 процентную правильность реализации не ручаюсь - но думаю подкрутить что то Вам проблемы не составит.
Однако есть вопрос - зачем надо делать запрос к константе?
Функция ПолучитьПутьКаталогаДанных()
ЗапросПутиКаталогаДанных = Новый Запрос("ВЫБРАТЬ
| ПутьКаталогаДанных.Значение КАК ПутьКаталогаДанных
|ИЗ
| Константа.ПутьКаталогаДанных КАК ПутьКаталогаДанных");
ВыборкаПутиКаталогаДанных=ЗапросПутиКаталогаДанных.Выполнить().Выбрать();
ВыборкаПутиКаталогаДанных.Следующий();
Возврат ВыборкаПутиКаталогаДанных.ПутьКаталогаДанных;
КонецФункции