Что же вызвало такую реакцию? Начнем с конца так как именно он и вызывает негодование, но сначала, небольшой обзор инструменов 1С, для работы с интернет (копипаст из синтакс помошника выделен курсивом):
1. ИнтернетСоединение
Предназначен для доступа к Интернет-соединениям. Доступен только на компьютерах с установленным Internet Explorer версии 5.0 или выше.
2. ИнтернетПочта
Предназначен для доступа к почтовым серверам для отправки и получения сообщений (писем). В отличие от объекта Почта, который работает по технологии MAPI и требует от пользователя установленного почтового клиента, контекст ИнтернетПочта использует наиболее распространенные интернет протоколы SMTP и POP3 (протоколы SSL и TLS не поддерживаются). Не требует установленного почтового клиента и, если почтовый клиент все же установлен, работает с ним(и) параллельно.
3. Почта
Предназначен для доступа к почтовой системе, установленной на компьютере. Используется технология MAPI.
MAPI - mail application programming interface (почтовый прикладной интерфес) и если меня не подводит память, то клиенты обладающие этим API должны реализовать 12 функций.
4. ИнтернетПрокси
Описывает параметры прокси-серверов для различных протоколов. Допустимые протоколы для использования в объекте ИнтернетПрокси задаются строками http, https и ftp.
Позволяет использовать аутентификацию по имени пользователя и паролю или NTLM (Integrated Security) аутентификацию (в версии 1С:Предприятия под Windows).
NTLM аутентификация используется по умолчанию для прокси-серверов, поддерживающих данный способ аутентификации, и не требует дополнительных настроек, т.е. NTLM аутентификация будет использоваться, если в конструкторе объекта HTTPСоединение прокси не задан или задан, но без указания имени пользователя и пароля. Задание в конструкторе объекта HTTPСоединение прокси с указанным именем пользователя и паролем отключает NTLM аутентификацию, для аутентификации в этом случае используется HTTP Basic аутентификация.
Прокси - это некая программа посредник, которая использует так называемое тройное рукапожатие. То есть клиент обращается к прокси серверу с запросом, а тот в свою очередь передает запрос дальше (но может и не передавать) и получает ответ. этот ответ прокси сервер и передает клиенту. Зачем же нужен этот посредник. А нужен он для целей:
1. Прокси сервер - это брандмауэр уровня приложений. Он может в зависимости от прав пользователя или других параметров дать или не дать доступ. Проверить ответ на наличие вирусов (перенаправив антивирусу). Ну в общем может все, на что его заточит администратор.
2. Прокси сервер - может кэшировать ответы серверов и не повторять запросы если ответ есть в его кэше и он актуален, что может дать хороший прирост производительности.
3. Прокси сервер - это система аудита. Кто, куда и когда ходил.
5. HTTPСоединение
Предназначен для работы с файлами на http-серверах.
Позволяет использовать аутентификацию по имени пользователя и паролю или NTLM (Integrated Security) аутентификацию (в версии 1С:Предприятия под Windows).
NTLM аутентификация используется по умолчанию для прокси-серверов, поддерживающих, данный способ аутентификации, и не требует дополнительных настроек, т.е. NTLM аутентификация будет использоваться, если в конструкторе объекта HTTPСоединение прокси не задан или задан, но без указания имени пользователя и пароля. Задание в конструкторе объекта HTTPСоединение прокси с указанным именем пользователя и паролем отключает NTLM аутентификацию, для аутентификации в этом случае используется HTTP Basic аутентификация.
Поддерживаются следующие протоколы: HTTP 1.0, HTTP 1.1, SSL 3.0, TLS 1.0.
Из всех инструментов 1С для работы с интернетом, автор статьи причины публикации, описал только этот. Может быть потому, что это единственный из способов в 1С отправить POST или GET запрос на веб сервер не используя COM расширений или объектов интерфейса пользователя.
Что же тут такого?
Давайте остановимся на том, что такое POST запрос, а что такое GET запрос.
Общее для обоих запросов:
Оба запроса передают на сервер некие параметры и получают ответ.
Различия:
GET передает параметры в строке запроса, а POST в теле.
А теперь можно краем глаза глянуть статью: //infostart.ru/public/20017/ (Передача файлов и данных на веб-сервер средствами 1С:Предприятие 8.X методом POST) и понять, что легкого пути не будет. Я позволю сразу сделать выводы о минусах данного способа передачи:
1. Для простого запроса нужны операции записи на диск и чтения с диска. Что не повышает производительность.
2. Использование данного инструммента далеко не тривиально.
3. Если внимательно изучить синтакс-помощник, то окажется, что заголовки ответа мы получить не сможем. А значит если в ответе есть переадресация, то мы ее не увидим. Пример: попробуйте с помощью данного метода авторизоватья на сайте вконтакте по протоколу oAuth.
4. Если сайт использует самодельный сертификат, то надо взять в руки бубен, для добавления исключения.
6. FTPСоединение
Предназначен для работы с файлами и каталогами на ftp-серверах.
FTP - это file transfer protocol (протокол передачи файлов). Протокол давно устарел. Использует два порта 20 для передачи файлов и 21 для передачи управляющих инструкций. Передает пароль и логин в открытом виде, что привела к рекомендациям использовать анонимного пользователя. За NAT-ом не работает (в пассивном режиме), а в активном режиме не позволяет работать пользователям находящимися за NAT-ом.
По переписке с alexqc:
Например, ftp не работает через "простой" NAT из-за того что значения ip и порта переданные в команде PORT не соответствуют таковым после NATа. Очевидное решение - отлавливать команду PORT и подменять ее на нужную. Именно этим "хитрые" NATы и занимаются. В часности, для iptables (netfilter linux) например есть модуль, который так и называется - ip_nat_ftp . Аналогичный функционал есть и в многих виндовых фаерволах (если не ошибаюсь как пример можно взять kerio route), и даже в "мелких" аппаратных роутерах (в принципе, там в прошивке часто тот же линух) - как стоящий у меня дома GetNet не-помню-какой-модели.
То же самое делается и для других протоколов, не выдерживающих "простой" NAT - например широковещательный IGMP (IPTV).
От себя могу добавить что в PF данный модуль называется ftp_proxy. По опыту могу добавить, что без допила он не работает с ftp серверами работующими на нестандартных портах.
По моему я произнес несколько непонятных слов NAT и порт.
1. NAT - это Network Address Translation (преобразование сетевых адресов). Механизм, позволяющий преобразовывать IP-адреса. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation.
2. IP адрес - это уникальный номер который в интернете определяет адрес устройства. Когда они появились, то считалось, что шесть миллиардов адресов хватит, однако просчтитались. NAT как раз и позволяет нескольким устройствам в сети использовать один IP адрес.
3. Порт - это некий идентификатор по которому операционная система понимает какой программе надо передать данные пришедшие к ней. Идентификатором является целое число от 0 до 65535. При чем порты с номерами ниже 1024 считаются привелегерованными. То есть такими, которые могут использоваться только программами с правами администратора или связывать эти номера с программами может только администратор.
Альтернатива данному протоколу уже давно существует - это sftp (secure file transfer protocol) не путать с ftps (это тот же ftp протокол только через SSL). sftp - это часть ssh (secure shell), которая позволяет:
1. Выполнять на удаленных компьютерах команды.
2. Перемещать файлы. Как ftp, но имеет один большой плюс - поддерживает файловые транзакции, то есть у вас не будет никогда части файла. Либо все, либо ничего. И синхронизацию.
3. Строить тунели. То есть позволяет обратиться к серверу из другой сети так, как будто бы он находился в локальной сети.
SSH сервер входил во все дистрибутивы UNIX like которые я видел. Под windows так же существуют сервера SSH, в том числе и бесплатные.
UNIX like - это UNIX подобные операционные системы. Да UNIX - это операционные системы которые никакого отношения к Linux не имеют. Что бы быть UNIX - надо пройти сертификацию, которая стоит много убитых енотов. Из таковых мне на память приходят HPUX, IRIX, AUX, SUN System V. BSD системы имеют корни UNIX, но начиная с выхода версии BSD Lite - таковыми не являются из-за удаления из BSD 4.3 кода AT&T. Ядро Linux основано на операционной системе MINIX, а за основу дистрибутивов (Linux это только ядро) взят SUN System V.
Как же скрестить наш 1С с SSH? А все очень просто. Есть два варианта:
1. Синхранизация каталогов на локальном и удаленном сервере. WinSCP (очень хорошая программа для работы с SSH, поддерживающия скрипты).
2. КомандаСистемы(plink.exe [команды для выполнения на удаленном компьютере] [> log.txt])
7. Web сервисы
Тут я даже не хочу копипастить синтекс-помошник (так как слишком много) попробую обойтись своими словами.
Идея веб сервисов заключается не в том что бы дать инструмент для создания веб интерфейса, как описано в статье причине, а в том что бы решить следующую задачу: "Обмен информацией между системами написаных на разных языках, работующих на разных операционных системах, находящихся в разных концах земного шара.". Веб сервисы бываю REST и SOAP.
Если кратко, то отличие REST от SOAP - это как отличие католиков от православных. И те и другие верят в единого создателя (работают поверх http), но попробуйте назвать православного католиком и сразу же услышите, что это разные веры (идеологии). REST это протокол получения ресурсов, а SOAP протокол удаленного вызова процедур. Более подробно об этих протоколах можно почитать на википедии.
1С нативно поддерживает только SOAP(WSСсылки, WebСервисы, WSПрокси). Для REST нужен бубен (можно теоритически, но на практике сложно).
8. Интерфейсные объекты (ПолеHTMLДокумента)
ПолеHTMLДокумента - не что иное как надстройка над COM объектом Internet Explorer, или браузером в случае отображения в браузере (ВнешнийОбъект). Если не требуется работа на сервере, то это один из самых удобных способов работать с интернет.
9. COM, Native API и КомандаСистемы
У 1С со времен седьмой версии есть хорошее свойство - это расширяемость с помощью внешних компонент написаных на других языках програмирования или скриптов (программ) поддерживающих параметры вызова. Не сложно написать COM на C# или Visual Basic и расширить свойства 1С. К тому же есть бесплатные инструменты Visual Studio Express, MonoDevelop. Кто знаком с С++ может поковыряться с Native API. А для совсем ленивых есть cmd или Power Shell. Да и Jscript и VBScript можно как ком объекты использовать. Все это ограничивает возможности 1С только фантазией и знаниями конкретного разработчика.
Эпилог
Оказывается в 1С для работы с интернет существует гораздо больше объектов нежели описано в статье моей или в статье причине в пункте 6. Но почему пункт 6 статьи причины вреден для начинающих? Из-за цитирую:
И пусть вас не смущает, что в платформе 8.2 появилась возможность работать с 1С из браузера и может показаться, что данная тематика неактуальна. Уверяю вас - это далеко не так. Управляемый интерфейс 8.2 очень сильно шаблонизирован и повлиять на него разработчик практически никак не может. Чтобы делать действительно красивые, функциональные и юзабилити-мощные интерфейсы придется пользоваться описанными технологиями.
Из этих слов можно сделать только выводы:
1. Шаблоны зло.
2. Управляемые формы нельзя настроить.
3. Других технологий кроме описаных в статье не существует.
Это не так.
1. Шаблоны - это инструмент. А как известно инструмент в руках проффессионала творит чудеса.
2. Управляемые формы имеют ограничения, но нет такой задачи которую нельзя реализовать за Т времени и N денег. Управляемые формы поддерживают поле HTML документа, а значит все что может показывать браузер, можно отобразить с помощью управляемых форм. Нужны специалисты, деньги и время.
3. Даже я в своей статье поленился описывать все что знаю. А ведь знаю я даже не половину того что есть на просторах технологий. Например мне абсолютно неизвестно о Flash или SilverLight. Точнее я знаю что это, но не умею с этим работать.
Можно обмениваться произвольными XML-сообщениями, что повышает безопасность такого взаимодействия, в отличие от применения обмена, основанного на выгрузке/загрузке файлов, когда файл по пути могут подменить.
Это то же ложь.
1. XML сообщение это открытый текстовый формат. Его так же по пути можно подменять, как и двоичные данные файла.
К сожалению автор не захотел изменять статью, а предложил написать мне собственную. Что я и сделал. Надеюсь она не будет совсем бесполезным куском информации на просторах интернета, а принесет кому-нибудь пользу.