Как взаимодействовать с 1с, если произошли изменения на сайте, например, сформировался заказ?
Необходимо произвести интеграцию с 1с следующим путем:
Например, на сайте создается заказ, тогда все данные по заказу должны отправляться в 1с и формировать заказ в этой программе. Как подобное можно реализовать? И на сколько безопасно.
Лучше сделать наоборот. На стороне сайта пилите REST API (ну или другой интерфейс), а 1С раз в N секунд/минут/часов дергает "апишечку" на предмет новых заказов. Так "секурней", и не нужен стабильный канал до базы 1С извне.
Функция ПолучитьЗаказыССайта() Экспорт
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
Соединение = Новый HTTPСоединение("backend.supershop.test",,,,,,ЗащищенноеСоединение);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Basic skdjfh");
Заголовки.Вставить("Accept", "application/json");
Запрос = Новый HTTPЗапрос("api/v1/orders/?status=1", Заголовки);
ОтветСервера = Соединение.Получить(Запрос);
Если ОтветСервера.КодСостояния <> 200 Тогда
Возврат Неопределено;
КонецЕсли;
Чт = Новый ЧтениеJSON;
Чт.УстановитьСтроку(ОтветСервера.ПолучитьТелоКакСтроку("utf-8"));
Соотв = ПрочитатьJSON(Чт, Истина);
Возврат Соотв;
КонецФункции
Вообще, так не надо хардкодить... но направление - понятно, на выходе функции или тип Неопределено, или тип Соответствие (это типы 1С, в других языках тип Соответствие = Map), соответствие обходите удобным для вас способом и создаете документы заказ покупателя, например.
После того, как заказ сохранили в 1С и поставили в резерв, делаете обращение к сайту и меняете статус этому заказу...
Функция СменитьСтатусЗаказуНаСайте(Статус = 3) Экспорт
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
Соединение = Новый HTTPСоединение("backend.supershop.test",,,,,,ЗащищенноеСоединение);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Basic skdjfh");
Заголовки.Вставить("Accept", "application/json");
Запрос = Новый HTTPЗапрос("api/v1/orders/123/", Заголовки);
Зап = Новый ЗаписьJSON;
Зап.УстановитьСтроку(Новый ПараметрыЗаписиJSON());
Зап.ЗаписатьНачалоОбъекта();
Зап.ЗаписатьИмяСвойства("status");
Зап.ЗаписатьЗначение(Статус);
Зап.ЗаписатьКонецОбъекта();
Запрос.УстановитьТелоИзСтроки(Зап.Закрыть(), "utf-8", ИспользованиеByteOrderMark.НеИспользовать);
ОтветСервера = Соединение.Изменить(Запрос);
Если ОтветСервера.КодСостояния <> 200 Тогда
Возврат Неопределено;
КонецЕсли;
Чт = Новый ЧтениеJSON;
Чт.УстановитьСтроку(ОтветСервера.ПолучитьТелоКакСтроку("utf-8"));
Соотв = ПрочитатьJSON(Чт, Истина);
Возврат Соотв;
КонецФункции
Код написан без проверки. И далеко не универсально. Возвращать обратно данные в соответствие не знаю нужно или нет. Если не нужно, то лучше в возвратах возвращать булево. Чтение JSON - убрать.