Как подключиться к сеансу 1с
В чем отличия между сеансом и соединением? Этот, на первый взгляд, простой вопрос на экзамене 1С:Эксперт многих ставит в тупик. Несмотря на немалый опыт программирования, сформулировать четкий и правильный ответ сможет далеко не каждый специалист.
В данной статье проведем детальный разбор этого вопроса. Для начала рассмотрим по отдельности понятия сеанс и соединение в 1С:Предприятие. Отметим, что информация актуальна для версий платформы 8.2.x и 8.3.x.
Сеанс 1С
Обратимся к руководству администратора. В нем понятие сеанса определено следующим образом:
Сеанс определяет активного пользователя информационной базы и поток управления этого пользователя.
Можно сказать, что кластер серверов не видит пользователей, вместо них он видит сеансы и сеансовые данные. В консоли управления кластером в принципе отсутствует раздел «Пользователи», под пользователями кластер понимает сеансы.
Это подтверждает визуальное представление пункта «Сеансы» – иконка отображается в виде пользователей.
Следует уточнить, что под активным пользователем не обязательно понимается клиентское соединение, это также может быть:
Сеансовые данные
Рассмотрим понятие сеансовые данные. Сеанс содержит в себе некоторую информацию, такую как:
- наименование информационной базы
- номер сеанса
- имя аутентифицированного пользователя информационной базы
- язык интерфейса
- значения параметров сеанса
- временные хранилища
- статистику работы сеанса
- информацию форм управляемого приложения
- некоторые внутренние данные платформы
Такая информация называется сеансовыми данными. Причем для каждого активного пользователя сеансовые данные свои, и актуальны они только на время его работы. Если пользователь покидает базу (завершил сеанс) – его сеансовые данные удаляются.
Данные сеансов хранятся на кластере серверов, за это отвечает менеджер кластера, именно для этого существует сервис сеансовых данных. Чтобы ускорить работу, данные сеансов кешируются в рабочих процессах и в толстых клиентах.
При перезапуске кластера серверов данные сеансов будут сохранены. В том случае если активный пользователь не выполнил ни одного обращения к кластеру в течение 20-ти минут и сеанс не назначен соединению, то сеанс удаляется вместе с его данными.
Для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут.
Соединение 1С
Теперь разберемся с понятием соединение. Вновь обратимся к руководству администратора:
Соединение является средством доступа сеансов к кластеру серверов «1С:Предприятие», содержит ограниченное множество данных соединения, не отождествляется с активным пользователем.
Другими словами, с помощью соединения сеанс получает доступ к кластеру. При этом количество соединений ограничено, и как только таковое становится не нужным сеансу, оно возвращается в пул соединений.
В случае если сеанс не обращается к кластеру, то есть пользователь бездействует, ему не будет назначено соединение. Таким образом, сеанс может существовать без соединения.
Нужно отметить, что сеансовые данные хранятся на сервере, поэтому если разрыв соединения длится менее 20 минут, то на сеансе это не отразится, ведь соединение – всего лишь средство доступа.
Также соединения используются для взаимодействия процессов кластера, то есть рабочие процессы (rphost) общаются с менеджером кластера (процесс rmngr) при помощи соединений, а не с помощью сеансов.
Отличия соединения от сеансов
Для того чтобы описать основное отличие данных понятий, приведем аналогию.
Допустим, что сеанс – это пассажир, а соединение – такси. Когда пассажиру необходимо добраться домой (сеансу нужно подключится к серверу), он вызывает такси (сеансу назначается соединение из пула соединений).
Если, добравшись домой, пассажир захочет снова поехать на работу, а такси уже уехало (после подключения случился разрыв соединения), то пассажир вызывает новое такси и едет по своим делам (сеансу назначается новое соединение).
В данной аналогии наглядно представлено, что сеанс и соединение далеко не одно и тоже, и сеанс может довольно легко перенести разрыв соединения.
PDF-версия статьи для участников группы ВКонтакте
Станьте экспертом по оптимизации 1С, изучив наш курс«Ускорение и оптимизация систем на 1С:Предприятие 8.3 (2016). Подготовка на 1С:Эксперт по технологическим вопросам»
35 учебных часов, подготовка к 1С:Эксперт, правильная настройка серверной части, оптимизация кода, мониторинг загруженности оборудования и прочие взрослые вещи.
Комментарии / обсуждение (11):
1. При удалении соединения сеанс остается, ему назначается новое соединение.
2. Как я и описал, это так же средство общения между процессами. Не понятно зачем устанавливать соединения между несколькими источниками. У вас есть только 2 процессы которые в момент времени могут между собой общаться.
3. Наверняка это знают только разработчики платформы, в документации такие тонкости не описаны.
1. Теоретически это так и должно быть. Но практика показывает, что если удалить соединение, тогда сеанс тоже удаляется, при этом нового соединения ему автоматически не назначается. Кстати говоря, я ещё раз пересмотрел раздел продвинутого курса Евгения Гилёва, в котором он более кратко описывал работу в клиент-серверном режиме работы платформы, и он тоже показал и заострил внимание на том, если удалить соединение, тогда сеанс тоже удаляется. Но вот почему так происходит, тоже не объяснил. ((
5. А ещё Вы упомянули про некий ПУЛ СОЕДИНЕНИЙ. Что когда соединение больше не нужно, оно возвращается в пул соединений. Получается, что количество соединений ограничено, и находятся все они в этом пуле, и получается, что сначала соединение может быть назначено одному сеансу, затем по ненужности вернуться в пул, а через некоторое время назначиться другому сеансу?
1. Я говорю не про теорию, у меня на практике удаление соединения не приводит к удалению сеанса. Сеансу просто назначается другое соединение.
2. Причем тут 3 объекта. rphost общается с rmngr через соединение, эти соединения мы не видим в консоли.
3-4. Нельзя объединять сеанс и соединение, как минимум потому, что у соединения нет сеансовых данных. Как реализовано соединение в платформе на физическом уровне я не знаю, я не разработчик платформы, да если честно мне это все равно. На настройку кластера и оптимизацию это знание никак не повлияет. Если разработчики сделали 2 сущности, а не одну значит на то были причины, и мы можем либо тратить свое время на догадки почему они сделали именно так, либо просто принять это как есть и разобраться в том как это сейчас работает.
5. Да, все верно.
ОГО, ЧУДЕСА, в тонком клиенте и правда нету удаления сеанса, и назначается новое соединение сеансу.
У нас то просто УПП 1.3. Я все эксперименты из вашего курса и не только как правило делал на ней. А там основной режим работы: толстый клиент, обычное приложение. В обычном приложении почему-то при малейшем обрыве сети, соединение рвётся, сеанс удаляется. Даже если не надолго из сервера вытащить сетевой провод.
Да, толстый клиент работает так. Я и забыл уже что кто-то на толстом клиенте работает :)
Форма подключения и настройки отладки в Конфигураторе 1С
В принципе, на этом вся настройка может быть закончена, можно выбрать нужный сеанс и подключиться к нему для отладки. Однако, часто бывает что мы увидим пустой список предметов отладки. Если это ваш случай, то читаем дальше.
Итак, при настройке отладки в конфигураторе 1С надо учесть два момента.
Первое, если вы запустили Конфигуратор не на сервере 1С, то для поиска предметов отладки надо указать имя или IP адрес сервера 1С (если хотим отлаживать не серверный, а клиентский сеанс другого пользователя, то соответственно клиентского компьютера). Для этого ставим флажок «Искать предметы отладки на удалённом компьютере» и рядом в поле вводим имя компьютера, например – srv1c.
Второе. Бывают случаи, когда сервер 1С (тестовый к примеру) запущен не на типовых портах по умолчанию из диапазона 1560-1591, а, например, на портах 1660-1691. Тогда надо по кнопке «Настройка» в форме настройки отладчика указать тот диапазон портов для поиска предметов отладки который был задан в строке запуска службы сервера 1С. В моем случае ставим диапазон 1560-1900, это потому что у меня есть еще запущены тестовые сервера 1С на диапазонах портов 1760-1791 и 1860-1891. После этого нажимаем в правом верхнем углу значок «Обновить» и видим появившиеся предметы отладки. Видно что у серверного сеанса порт указан 1660, это как раз тот сеанс который подключен к тестовому серверу 1С, запущенному на диапазоне портов 1660-1691.
Теперь можно выбрать нужный сеанс и нажать кнопку «Подключить», предмет отобразиться в нижней части формы в разделе «Подключенные предметы отладки».
Все, после этого, запускаем на выполнение программу и отладчик должен остановиться на точке останова, которую вы поставили на сроке кода. В стеке вызовов можно посмотреть где в данный момент выполняется код, на сервер или на клиенте.
Если после всех настроек список доступных предметов отладки так и остался пустым, то следует проверить включен ли режим отладки на сервер 1С. Вот здесь можно посмотреть как включить отладку на сервере 1С.
После этой настройки в конфигураторе обновляем список доступных предметов отладки, если все сделано правильно, там должен появится данный клиентский сеанс.
Теперь нам не надо вручную искать предмет отладки и нажимать кнопку «Подключить». Система сама подключиться к запущенному сеансу и сработает точка останова поставленная на строке кода.
Знакомая ситуация, ставишь точку останова на строке кода в отладчике, а она не срабатывает, хотя программа точно через нее проходит. Такое бывает если данная строка кода выполняется на севере 1С на котором не включен режим отладки.
Особенно сейчас, когда большинство конфигурация 1С работает в режиме управляемых приложений и объем кода выполняемого на стороне сервера 1С занимает большую часть, отладка на стороне сервера становиться очень востребованной функцией.
Так как же включить режим отладки на сервере 1С? Очень просто. Необходимо всего лишь прописать ключ -debug в строке запуска службы сервера 1С 8.3 и перезапустить данную службу. Это конечно если сервер установлен как служба, если же он запускается как самостоятельное приложение, то и указанный ключ необходимо прописать в строке запуска этого приложения. Правда такой режим запуска сервере 1С очень редкое явление и на практике встречается не часто, поэтому рассматривать его не будем.
Для того чтобы изменить строку запуска службы сервера 1С придётся зайти в реестр Windows. Для редактирования реестра используется программа regedit. Проще всего найти и запустить ее можно через быстрый доступ по комбинации клавиш Win+R.
В поле вводим regedit, нажимаем ОК, на вопрос системы безопасности отвечаем ДА и запускаем программу. Открываем ветку HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ services и там ищем что то похожее на 1C:Enterprise 8.3 Server Agent. Имя может отличаться в зависимости от версии установленного сервера 1С.
Настройка службы сервера 1С 8.3 в реестре Windows
Заходим в это раздел и находим параметр ImagePath. Открываем его на редактирование двойным кликом мыши. В поле «Значение» в конце добавляем ключ -debug и сохраняем.
После проверки перезапускаем службу. После этого можно проверять работу отладчика в конфигураторе 1С. Здесь можно почитать как настроить отладку в конфигураторе 1С. Если после включения отладки на сервере 1С, у вас все равно не получилось подключиться к серверным сеансам, смотрим возможные причины здесь.
После установки 1С необходимо убедиться что сервер 1С запущен. Автор обычно запускает сервер вручную. Но если вы уверены что сервер 1С запущен, то этот шаг делать не надо.
1.2. Зарегистрировать кластер 1С
Запустить утилиту администрирования серверов 1С:
В открывшемся окне зарегистрировать новый центральный сервер 1С предприятия:
В появившемся окне ввести сетевое имя компьютера, на котором запущен 1С Сервер (или его IP-адрес):
1.3. Зарегистрировать базу 1С на сервере SQL
Для начала регистрации базы необходимо запустить приложение 1С. В появившемся окне "Запуск 1С:Предприятия" регистрируем новую базу нажатием на кнопку "добавить":
Выбираем "Создание новой информационной базы":
В появившемся окне есть возможность создать базу из шаблона, или создать новую пустую базу (в последствии можно будет загрузить базу, загрузить конфигурацию или создать свою конфигурацию):
Жмем кнопку далее, вводим название базы и тип расположения базы на сервере:
жмем далее и заполняем поля:
При этом необходимо заметить, что поле "Имя базы данных" - это названия базы на SQL сервере. А поле "Имя информационной базы" - название базы на сервере 1С.
После чего выбираем вариант аутентефикации в 1С (Выбирать автоматически) и жмем кнопку "Готово":
1.4. Загрузить или создать конфигурацию 1С
Запустить конфигуратор с базой:
Загрузить ранее выгруженную информационную базу:
2. Настройка IIS на сервере
2.1. Проверка установленных компонент IIS
Для их установки следует перейти "Пуск - Панель управления - Программы и компоненты - Включение или отключение компонентов Windows". В появившемся дереве, в ветке "Службы IIS – Службы интернета - Компоненты разработки приложений" отметить все компоненты, как показано на рисунке. Затем нажать кнопку "Ок":
2.2. Разрешение 32-разрядных приложений в пуле приложений
Веб-клиент 1С:Предприятия 8.3 является 32-разрядным приложением. Поэтому для 64-разрядной ОС необходимо разрешить работу оных в пуле приложений сервера IIS. Для этого необходимо перейти "Пуск - Панель управления – Администрирование – Диспетчер служб IIS". В диспетчере служб выбрать "Пулы приложений – DefaultAppPool – Дополнительные параметры". В списке дополнительных параметров переменной "Разрешены 32-разрядные приложения" установить значение "True":
Установить значение в True для параметра "Разрешены 32-разрядные приложения":
2.3. Установка удостоверения пула приложений в качестве удостоверения анонимного пользователя
По умолчанию в качестве анонимного пользователя установлен пользователь IUSR, которого нет в системе. Дабы не создавать оного можно просто включить удостоверение пула приложений в качестве удостоверения анонимного пользователя. Для этого необходимо перейти "Пуск - Панель управления – Администрирование – Диспетчер служб IIS". В диспетчере служб перейти в "Проверка подлинности:
На пункте "Анонимная проверка подлинности" вызвав контекстное меню "изменить":
В открывшемся диалоге отметить "Удостоверение пула приложений". Закрыть диалог, нажав кнопку "ОК".
3. Публикация WEB-приложения из 1С
Для публикации приложения необходимо иметь полный доступ на папку проектов IIS. Есть 2 способа публикации приложения из 1С. 1 - сначала создать необходимую папку в каталоге "C:\inetpub\wwwroot\" в нашем случае это папка с названием "Base1C" и дать права текущему пользователю на полный доступ на эту папку. 2 способ зайти в 1С из под администратора а потом дать необходимые права на папку уже опубликованного приложения. В э статье описан второй путь.
3.1. Для публикации конфигурации на сервере IIS необходимо запустить 1С из под администратора:
Вызываем контекстное меню на ярлыке 1С и выбераем "Запуск от имени администратора"
Выбираем базу и запускаем 1С в режиме конфигуратора:
3.2. Запустить публикацию на web-сервере
Для начала публикации переходим в меню "Администрирование - Публикация на веб-сервере":
В появившемся окне указать имя публикации, указать веб-сервер и указать путь на веб-сервере.
1С позволяет публиковать на любой доступный веб-сервер в сети с помощью утиллиты webinst. В статье использовался пример публикации на локальный компьютер:
Более подробную информацию по пунктам в окне публикации можно получить из 1С конфигуратора нажав на кнопку F1.
4. Настройка библиотек для работы в 64-х разрядной ОС
После публикации на веб-сервере из конфигуратора, в случае использования 64-х разрядной операционной системы на компьютере который используется в качестве сервера IIS, необходимо настроить работу с библиотеками 1С. Это делается каждый раз после публикации на веб-сервере.
Для настройки библиотек необходимо выполнить следующие действия.
Открываем через Панель Управления - Администрирование Диспетчер служб IIS.
В открывшемся окне раскрываем группу "Сайты" и наш сайт (в примере Base1C).
Нажимаем на "Сопоставление обработчиков" в группе IIS:
В открывшемся окне ищем строку с именем "ISAPI-dll" и нажимаем пункт меню в действиях "Добавить сопоставление сценария. "
В открытом окне "Добавление сопоставления сценария" в поле "Путь запроса" ввести символ * (звездочка, т.е. все). В поле "Исполняемый файл" выбрать библиотеку wsisapi.dll с каталога установленной 32-х разрядной версии 1С. В поле "Имя" можно задать любое имя (в примере Имя = 1С):
Некоторые специалисты в других статьях указывают что надо отключить ограничение сопоставления запроса. Автор не нашел зависимости работы этой отметки для программы 1С. Данная информация приводиться информативно, может быть кому то понадобиться.
Настроить ограничения запроса можно нажав на кнопку "Ограничение запроса" в окне Добавление сопоставления сценария. В открывшемся окне убрать отметку с "Вызывать обработчик только при сопоставлении запроса с:":
Нажать кнопку Ok.
На появившейся вопрос ответить "Да":
После чего необходимо перезапустить службу IIS. Для этого необходимо перейти в корень панели "Подключения" (на название сервера) и в меню действия справа выбрать "Перезапустить":
После чего можем проверить, работает ли подключенная библиотека. Для этого переходим в "Ограничения ISAPI и CGI":
И посмотреть, есть ли ссылки для необходимых обработчиков (dll):
Еще раз следует отметить, что данную процедуру настройки библиотек следует делать каждый раз после публикации приложения из 1С.
5. Настройка прав доступа на папки и Брандмауэра Windows
5.1. Настройка доступов к папкам
Для правильной работы всех пользователей, а не только администраторов с опубликованным веб-приложениям необходимо настроить некоторые права на папки.
Для настройки прав на пакпи необходимо в проводнике Windows вызвать контекстное меню для необходимой папки и выбрать в контекстном меню пункт "Свойства" и перейти на закладку "Безопасность"
В данном случае речь идет о правах на 3 папки:
1. "C:\Program Files (x86)\1cv8\8.3.5.1088\bin\" (в этой папке находится библиотека wsisapi.dll) (номер релиза "8.3.5.1088" может быть другой)
2. C:\inetpub\wwwroot\Base1C (это созданная нами папка которая будет использоваться для доступа из интернет)
3. КаталогБазы (это база 1С, если используется файловый тип базы), в нашем примере база храниться на SQL сервере, поэтому каталога базы нет и доступа на него давать не надо.
Для всех папок (Пункты: 1,2,3) необходимо для пользователя IIS_IUSRS установить доступ "Полный доступ":
Для папки с нашей базой (Пункт 3) данных для пользователя Users, установить доступ "Изменение".
5.2. Настройка доступов к портам в Брандмауэре Windows
Если планируется использовать web-доступ не только локально, то необходимо настроить Брандмауэр Windows для доступа с внешних ресурсов, указав порт доступа 80. Автор не использовал настроек брандмауэра, а просто отключил его:
Читайте также: