1с http соединение закрыть

Обновлено: 07.07.2024

Основные особенности программного кода этой функции:

5. Я сообщаю пользователю об ошибке в программном коде этой функции, когда получаю код ответа НЕ пределах 200-299. Дело в том, есть случай когда код ответа не равно 200, а 204 например и это не ошибка. Такой код можно получить, например если искомый ответ не найден по полям поиска или идентификационный номер.

Пример №1 Создать новый элемент справочника если он не найден по идентификационному номеру или по полям поиска

При обмене данными , часто возникает вопрос о создании нового объекта справочника, только в том случае если его. Сначала я буду искать его в базе приемника по идентификационному номеру, а затем по полям поиска. Если его нет , то я его добавлю его в базе приемника с таким же идентификационный номер как в базе источника . Для иллюстрации этого примера я использую простой справочник, который имеет только код и наименования, например Классификатор Стран Мира

Пример №2 Запись в периодическом регистре сведения

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

В качестве примера я буду использовать регистр сведения Документы физических лиц.


Рис 1 Структура регистра сведения Документы физ лиц

Данный регистр является независимым и периодическим в пределах дня.

В следующем программном коде, мы будем выполнять сначала метод DELETE, а затем метод POST.

Для сокращения программного кода будем считать, что все объекты ссылочного типа ( ВидДокумента_Key и ФизическоеЛицо_Key ) , на которые ссылается регистр сведения добавлены в базе приемника с помощью программного кода примера №1

Речь идёт об операции из меню конфигуратора "Администрирование"-"Публикация на веб-сервере" (ИТС):


Поддержка этой операции в обновляторе стала возможной благодаря консольной утилите 'webinst.exe' (ИТС), которая идёт в комплекте с платформой 1С при установке компоненты 'Модули расширения веб-сервера'.

Настройка параметров публикации базы

Заходим в свойства базы и нажимаем ссылку "<настроить. >" справа от пункта "Публикация" (доступна также групповая настройка):


В открывшемся диалоге заполняем необходимые параметры:


Веб-сервер

Поддерживается публикация для веб-серверов IIS и Apache, при этом они должны быть настроены специальным образом:

  • инструкция для IIS (ИТС)
  • инструкция для Apache (ИТС)

Веб-сервер и платформа 1С, которую мы используем для публикации, должны работать на одном компьютере.

Создаём новый или выбираем уже созданный веб-сервер:


Адрес, включая порт


Здесь нужно указать адрес по которому будет доступно содержимое веб-сервера. Эту информацию можно узнать из настроек веб-сервера.

Для веб-серверов IIS эта информация указана в оснастке "Диспетчер служб IIS".

Эта настройка никак не влияет на операцию публикации в обновляторе. Он носит информативный характер и позволяет:

  • отличать один веб-сервер от другого (если их несколько)
  • формировать ссылку на опубликованную базу, чтобы вы сразу могли перейти по ней и проверить корректность публикации
Версия платформы


Здесь необходимо указать версию и битность платформы, которая будет использована обновлятором для публикации базы на веб-сервере.

Обратите внимание, что с одним веб-сервером можно использовать только одну версию платформы 1С.

Если требуется использовать параллельно несколько версий платформы 1С для публикации, то обычно:

  • заводят по отдельному веб-серверу Apache на каждую версию платформы (обновлятор полностью поддерживает этот сценарий работы)
  • делают специальную настройку веб-сервера IIS (обновлятор не поддерживает этот вариант)

Разрядность веб-сервера и платформы 1С должны:

  • либо совпадать (32 и 32, 64 и 64)
  • либо это должен быть 64-разрядный IIS и 32-разрядная платформа 1С; при этом требуется специальная настройка IIS (ИТС)

Не забудьте дать полные права на папку, куда установлена платформа 1С, для группы пользователей IIS_IUSRS (если используется IIS), либо для учётной записи от имени которой запускается служба Apache.

Путь к конфигурационному файлу


Эта настройка указывает обновлятору на конфигурационный файл установленного веб-сервера Apache.

Корневая папка по умолчанию для новых публикаций


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

Вы можете расположить эту папку в любом удобном для вас месте на компьютере.

Не забудьте дать полные права на эту папку для группы пользователей IIS_IUSRS (если используется IIS), либо для учётной записи от имени которой запускается служба Apache.

Скрипт для перезапуска веб-сервера


Формат скрипта - последовательность команд, предназначенных для исполнения командным интерпретатором (подробнее).

Я сам подсматриваю синтаксис таких скриптов здесь и здесь.

Обновлятор будет будет запускать этот скрипт после публикации или отключения публикации на веб-сервере, если для операции будет включён соответствующий параметр.

Для генерации этого скрипта обновлятором нажмите ссылку "Сгенерировать скрипт".

Имя публикации


Придумайте имя, по которому база будет доступна на веб-сервере. Используйте кнопку 'звёздочка', чтобы обновлятор сам сгенерировал подходящее имя.

Каталог публикации


Укажите отдельную папку для публикации этой базы на веб-сервере. Она может быть расположена в любом месте на компьютере.

Не забудьте дать полные права на эту папку для группы пользователей IIS_IUSRS (если используется IIS), либо для учётной записи от имени которой запускается служба Apache.

Используйте кнопку 'звёздочка', чтобы обновлятор сам сгенерировал подходящую папку для публикации.

Публиковать доступ для клиентских приложений


Эта опция отвечает за возможность работы с опубликованной информационной базой с помощью тонкого, мобильного и веб-клиента.

Публиковать стандартный интерфейс OData


Отвечает за возможность получения доступа к стандартному интерфейсу OData (ИТС) прикладного решения.

Публиковать дистрибутив тонкого клиента


Определяет возможность получения и установки клиентского приложения (тонкого клиента) в том случае, если не совпадают версии клиентского приложения и сервера. В качестве дистрибутива используется zip-архив:

  • Windows x86 - дистрибутив 32-разрядного клиентского приложения для ОС Windows.
  • Windows x86_64 - дистрибутив 64-разрядного клиентского приложения для ОС Windows.
  • MacOS x86_64 - дистрибутив 64-разрядного клиентского приложения для ОС MacOS.

Не забудьте дать полные права на папку с дистрибутивами для группы пользователей IIS_IUSRS (если используется IIS), либо для учётной записи от имени которой запускается служба Apache.

Переходить при окончании работы веб-клиента

Позволяет указать URL, на который будет выполняться переход после окончания работы веб-клиента.

Публиковать Web-сервисы по умолчанию


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

Публиковать Web-сервисы расширений по умолчанию


Отвечает за возможность использования Web-сервисов, которые поставляются в расширениях конфигурации.

Публиковать Web-сервисы из списка


Содержит перечень публикуемых Web-сервисов (ИТС) и позволяет управлять публикацией каждого Web-сервиса.

Первая колонка управляет публикацией конкретного Web-сервиса. Если флажок сброшен, то данный Web-сервис будет запрещен к использованию (его нельзя будет вызвать).

Вторая колонка (с именем Имя) содержит имя Web-сервиса, как оно задано при создании.

Последняя колонка таблицы (с именем Адрес) содержит псевдоним имени публикуемого Web-сервиса. Обращение к Web-сервису возможно как по имени, так и по псевдониму.



Использовать OpenID-аутентификацию

Этот флаг включает для данной информационной базы возможность использования OpenID-аутентификации.

Использовать в качестве OpenID-провайдера


В этом случае публикуемая информационная база будет выступать в роли OpenID-провайдера.

Опция "Время жизни аутентификации" указывает время жизни признака аутентификационных данных в секундах. Максимальное время жизни аутентификационных данных составляет 604 800 секунд (7 суток).

Содержимое списка адресов представляет собой регулярное выражение, которое определяет маску разрешенных имен сайтов, на которые могут выполняться переадресации пользовательского веб-браузера после исполнения команды OpenID-провайдера.

Каталог временных файлов


Позволяет указать каталог временных файлов для работы расширения веб-сервера или файлового варианта информационной базы.

Фоновые задания в файловом варианте


Этот параметр описывает возможность использования фоновых заданий в файловом варианте информационной базы.

Размер пула соединений


Размер пула ‑ максимальное количество соединений в пуле.

Время жизни соединения в пуле


Время жизни соединения в пуле ‑ максимальное время жизни соединения в пуле, в секундах. Если в течение указанного времени соединение не было востребовано, оно будет удалено из пула.

Число попыток соединения с сервером 1С


Максимальное количество попыток установки соединения с сервером «1С:Предприятия».

Время ожидания соединения с сервером 1С


Время ожидания установления соединения с сервером «1С:Предприятия», миллисекунды.

Время ожидания между попытками соединения с сервером 1С

Время ожидания между попытками установления соединения с сервером «1С:Предприятия», миллисекунды.

Таймаут проверки соединения с сервером 1С


Период проверки соединения с сервером 1С


Период проверки системы отслеживания разрыва соединений, миллисекунды.

Отладка


Указывает необходимость запуска в отладочном режиме.

Адрес отладчика


Указывает адрес отладчика, к которому нужно автоматически подключиться для отладки, где localhost указывает на поиск на локальном компьютере, «1560» ‑ номер сетевого порта. Если порт не указан, то будут проверяться все порты в диапазоне портов 1560–1591. Указание tcp:// эквивалентно tcp://localhost. Если адрес отладчика не указан, в процессе исполнения кода на встроенном языке отладка производиться не будет.

Если протокол отладки, указанный с помощью атрибута protocol, не совпадает со схемой, указанной в атрибуте url, соединение с отладчиком не будет установлено и работа продолжится без возможности отладки.

Управление публикацией на веб-сервере

Где находится

В контекстном меню базы:




Вывод информации



Публикация


Не забудьте дать полные права на папку с публикуемой базой для группы пользователей IIS_IUSRS (если используется IIS), либо для учётной записи от имени которой запускается служба Apache.


Отключить публикацию


Расписание

При необходимости вы можете вставить операцию "Управление публикацией на веб-сервере" в скрипт, вот так:



Далее сохранить (кнопка "Сохранить") файл со скриптом на диск.

И далее в расписании выбрать операцию "запуск скрипта" и указать этот файл:


Внимание. Если скрипт включает в себя перезагрузку веб-сервера, не забудьте включить в задаче опцию "Запускать с наив. правами":


Действия при обновлении платформы

Примерный порядок действий для обновления платформы 1С при уже имеющихся публикациях на веб-сервере.

  1. Выгнать пользователей из баз (в обновляторе это меню "Опасные операции", пункт "7. Запретить работу в базе").
  2. Удалить старую платформу 1С.
  3. Установить новую платформу 1С.
  4. Изменить версию платформы (если она была там прописана) на новую в свойствах веб-сервера в обновляторе.
  5. Запустить повторную публикацию из обновлятора с перезагрузкой веб-сервера. Для этой операции обновлятор должен быть запущен правой кнопкой мыши, пункт "Запуск от имени администратора". Закрыть обновлятор (чтобы следующие операции мы выполняли без повышенных привилегий).
  6. Разблокировать базы (в обновляторе это меню "Опасные операции", пункт "8. Разрешить работу в базе. ").

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:

Предмет отладки

Типы предметов отладки:

Подключение предметов отладки зависит от выбранного протокола отладки и поэтому будет рассмотрено ниже.

Выбор протокола отладки

Выбор протокола отладки

Выбор протокола отладки

  • Использовать локальный сервер отладки — вариант в основном для файловых информационных баз, в дополнительных полях можно указать адрес сетевой карты (если их несколько), а также один или несколько диапазонов портов которые будут использоваться для отладки, например: 1560:1591, 7700-8000;
  • Использовать удаленный сервер отладки — конфигуратор попытается подключиться к удаленному серверу отладки по указанному адресу и порту;
  • Использовать сервер отладки кластера — используется сервер отладки кластера серверов, кластер серверов должен быть запущен в отладочном режиме.

Протокол отладки TCP/IP

При отладке по протоколу TCP/IP отладчик ищет доступные предметы отладки на текущем или указанном компьютере. Для корректной работы отладчика (если конечно речь идет не о файловой базе на одного пользователя) очень рекомендуется нормально настроить сеть — в частности DNS-сервер и доступность отладочных портов (по-умолчанию 1560:1591).

Подключение предметов отладки

В список доступных предметов отладки попадают только те из них, которые отвечают следующим требованиям:

  • отладчик и предмет отладки имеют одинаковый идентификатор информационной базы;
  • в приложении включена возможность отладки (для сервера — см. первую статью серии, для клиентского приложения — соответствующий параметр командной строки либо свойство в диалоге настройки клиентского приложения либо соответствующие указания в конфигурационном файле);
  • отсутствуют в списке подключенных предметов отладки.

Настройки отладчика

Настройки отладчика

Некоторые типы предметов отладки остаются доступными для подключения очень непродолжительное время, в этом случае нужно воспользоваться настройками автоматического подключения предметов отладки:

Настройки автоматического подключения

Настройки автоматического подключения

Сервер отладки

Сервер отладки обычно запускается конфигуратором (в файловом варианте) или кластером серверов (если кластер запущен в режиме отладки).

Кроме этого сервер отладки может быть запущен вручную — для реализации нетривиальных сценариев отладки.

Сервер отладки (dbgs) находится в каталоге bin, параметр --help покажет информацию об имеющихся параметрах запуска (там все довольно понятно), пример запуска:

C:\Program Files\1cv8\8.3.13.1513\bin\dbgs -a 192.168.0.170 -p 4000

Сервер отладки готов к работе

Сервер отладки готов к работе

Подключение предметов отладки

Подключение предметов отладки

Подключение предметов отладки

Из списка доступных предметов отладки исключаются уже подключенные и не соответствующие отбору предметы отладки. Отбор можно установить в правой верхней части окна:

Отбор предметов отладки

Отбор предметов отладки

В окне настроек отладчика можно узнать адрес сервера отладки и имя информационной базы:

Для настройки автоматического подключения предметов отладки существует специальный диалог:

В левой части диалога можно указать типы предметов отладки, которые подлежат автоматическому подключению, а в правой — дополнительные отборы предметов отладки.

На этом все, надеюсь, что эта статья была Вам полезна. Также напомню про другие статьи серии об отладке в 1С, ссылки на них можно найти в начале этой статьи.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

<Источник> (обязательный). Тип - Строка. Адрес ресурса на сервере.
<ИмяВыходногоФайла> (обязательный). Тип - Строка. Имя файла на диске, в который
помещаются данные, полученные от сервера (ответ сервера).
<Заголовки> (необязательный). Тип - Строка. Заголовки, добавляемые к запросу на сервер.
Текстовые пары вида <Заголовок>:<Значение>, разделенные комбинацией ВК + ПС.
(подробнее о заголовках будет сказано ниже).
Рассмотрим параметры процедуры Получить() более подробно:

В поле ИмяВыходногоФайла указывает имя файла на диске, в который будут сохранены данные, полученные от сервере в результате запроса. Так, например, если сервер возвращает список пользователей в формате XML, то на диск в указанный файл будет сохранен XML файл со списком пользователей.

О заголовках более подробно будет сказано ниже.

Так же, при запросе к веб-серверу зачастую передаются дополнительные данные (параметры) для этого запроса. Параметры от адреса источника отделяются символом "?". Каждый параметр задается в формате <Имя_Параметры>=<Значение_Параметры>. Параметры от адреса источника отделяются символом "?". Сами же параметры отделяются друг от друга символом "&". В результате строка адреса источника может выглядеть следующим образом: getUsers.php?owner_id=263544&count=100.

Ниже приведен пример, поясняющий все выше сказанное.
Код 1C v 8.х

Все заголовки разделяются на четыре основных группы:

Поле АдресРесурса аналогично полю Источник процедуры Получить(), т.е. указывается строка с адресом запроса, идущая после имени домена и символа "/".

Поле ИмяВыходногоФайла также аналогично одноименному полю процедуры Получить(), т.е. содержит имя файла, в котором будут сохранены данные, полученные от сервера в результате обработки исходных данных.

О заголовках было упомянуто выше. Напомню лишь, что для метода POST обычно указываются заголовки Content-Type и Content-Length. В качестве параметра заголовка Content-Length указывается размер файла-источника, преобразованный с помощью функции XMLСтрока().

Ниже приведен пример, поясняющий все выше сказанное.
Код 1C v 8.х

<?xml version="1.0" encoding="UTF-8"?>
<request>
<user_id>ID_Пользователя</user_id>
<post_id>ID_Материала</post_id>
<message>Текст_Комментария</message>
</request>

где:
<ID_Пользователя> - id пользователя на сайте, от имени которого добавляется комментарий;
<ID_Материала> - id материала на сайте, к которому добавляется комментарий;
<Текст_Комментария> - текст комментария.

Предположим, что нам уже известны id пользователя и материала и они хранятся в переменных user_id и post_id. Ниже приведен пример, решающий нашу задачу.
Код 1C v 8.х

Bounday можно сформировать, например, таким образом
Код 1C v 8.х

Все данные отделяются друг от друга разделителем boundary. Начинать разделитель нужно с "--":
Код

--<boundary>
Content-Disposition: form-data; name="<имя_переменной>"
<пустая_строка>
<значение_переменной>
Для отправки файла необходимо еще добавить тип и имя файла:

--<boundary>
Content-Disposition: form-data; name="<имя_переменной>"; filename="<имя_файла>"
Content-Type: <тип_файла> (например image/jpeg или text/plain)
<пустая_строка>
<данные_файла>

В конце данных нужно закрыть разделитель, добавили в конце разделителя "--", т.е. вид будет "--<boundary>--".

Итак, например, нам нужно передать на веб-сервер текстовый файл через параметр "text", его описание через параметр "desc" и id пользователя через параметр "uid", для которого будет загружен наш файл.

Предположим, что файл содержит следующий текст:
Мороз и солнце; день чудесный!
Еще ты дремлешь, друг прелестный -
Пора, красавица, проснись:
Открой сомкнуты негой взоры
Навстречу северной Авроры,
Звездою севера явись!

Описание должно содержать "Стих А.С. Пушкина", а id пользователя равно "0123456". Тогда файл должен быть сформирован следующим образом (для упрощения предположим, что bounday мы уже сформировали и он равен "ccf8111910")
Код

--ccf8111910
Content-Disposition: form-data; name="uid"

0123456
--ccf8111910
Content-Disposition: form-data; name="desc"

Стих А.С. Пушкина
--ccf8111910
Content-Disposition: form-data; name="text"; filename="stih.txt"
Content-Type: text/plain

Мороз и солнце; день чудесный!
Еще ты дремлешь, друг прелестный -
Пора, красавица, проснись:
Открой сомкнуты негой взоры
Навстречу северной Авроры,
Звездою севера явись!
--ccf8111910--

А теперь перейдем непосредственно к 1С. Пусть у нас будет форма с реквизитами "Пользователь", "Описание" и "ИмяФайла". Реализуем отправку данных, описанным выше способом
Код 1C v 8.х

Передача текстовых файлов таким способом проблем не вызывает. Сложнее дело обстоит с файлами, содержащими двоичные данные (изображения, архивы и т.п.). Все дело в том, что в 1С просто нет методов для чтение двоичных файлов в строку. Если мы делаем обмен со своим сайтом, которые сами и разрабатывали, то можно просто преобразовать файл в строку Base64 при помощи процедуры Base64Строка(), а на стороне сервера преобразовать строку Base64 обратно.
Код 1C v 8.х

А как же быть если мы загружаем файл на сторонний сервер, который принимает файл как есть без преобразование его в строку Base64(). В это случае можно пойти на хитрость. В 1С есть процедура ОбъединитьФайлы(), которая объединяет несколько файлов на диске в один результирующий файл
Код 1C v 8.х
<ИменаЧастей> (обязательный). Тип - Массив. Массив имен частей файлов, которые
требуется объединить. Объединение будет происходить в порядке, в котором заданы
имена файлов в массиве.
<ИмяРезультирующегоФайла> (обязательный). Тип - Строка. Имя файла, который будет
создан в результате объединения файлов.
Т.е. мы можем сформировать текстовый файл с запросом, объединить его с файлом(-ами), которые необходимо передать на веб-сервер и передать уже файл, получившийся в результате объединения исходных файлов. Ниже демонстрируется процесс передачи двух zip архивов на сервер с дополнительными параметрами user_id и post_id.
Код 1C v 8.х

Ну вот, вроде бы, и все, что я хотел рассказать о способах передачи файлов и данных на веб-сервер из 1С. Если что-то не понятно, что-то хотите уточнить или нашли ошибки - пишите в комментариях.
Автор: Павел

Читайте также: