Содержание:
1. Об ошибке при выполнении файловой операции
2. Устранение «Ошибки при выполнении файловой операции» в 1С 8.3
1. Об ошибке при выполнении файловой операции
Приветствую, коллеги! В данной статье будет описана ошибка «Ошибка при выполнении файловой операции», и подробно рассмотрены способы ее устранения.
Когда происходит обновление конфигураций в 1С 8, по завершении обновления, часто появляется ошибка, которая гласит «Ошибка при выполнении файловой операции – файл не содержит доступных обновлений».
2. Устранение «Ошибки при выполнении файловой операции» в 1С 8.3
Рассмотрим методы, при помощи которых, можно устранить ошибку при выполнении файловой операции в 1С.
Итак, первый способ – это попробовать сделать обновление при помощи файлов по обновлению вида «релиз 1с*.cfu». Если это не помогло, то можно попробовать обновить систему при помощи общего файла вида «полный релиз 1С*.cf».
Вторым способом будет проверка на соответствие общей версии системы 1С с минимальными требованиями версии конфигурации 1С, которую обновляем.
Третий способ устранения ошибки при выполнении файловой операции в 1С – более сложный, но действенный. Необходимо открыть в конфигурацию от поставщика в режиме Конфигуратора. Если ошибка всё так же появляется, то необходимо удалить конфигурацию поставщика, а затем опять установить. По сути, в данном варианте «вытягивается» последняя, рабочая версия данной конфигурации и обновление будет завершено без ошибок.
Рассмотрим подробнее третий способ. Пусть у нас уже есть некоторая конфигурация 1С KORG 1-ой версии, которая работает, но нужно поставить 2-ю версию, то есть обновить версию конфигурации 1С 8.3. Когда происходит обновление, всплывает ошибка «Ошибка при выполнении файловой конфигурации». Порядок действий в этом случае:
1. скачать релиз 1С KORG с версией 1*.cf;
2. копируем нашу базу данных;
3. в конфигураторе, который соответствует обновляемой базе, переходим по пути: «Конфигурация → Поддержка → Настройки поддержки → Снять с поддержки». В случае, если кнопка для снятия с поддержки недоступна, необходимо сперва включить возможные изменения. После этого нужно дать согласие, если система 1С будет уточнять что-либо или подтверждать действия;
4. Далее переходим по следующему пути: «Конфигурация → Сравнить и объединить с конфигурацией из файла…». Здесь необходимо выбрать файл «полный релиз 1С KORG версии 1*.cf»;
5. Далее перед нами появится окно, в котором система 1С будет запрашивать постановление на учёт для поддержки, на это уведомление обязательно отвечаем согласием;
6. В случае, если наша конфигурация является типовой, откроется окно по сравнению конфигураций. В нем обязательно убираем все «галочки». Далее последует объединение конфигураций;
7. В новом окне кликаем на «Сохранить изменения»;
8. Ещё раз сохраняем базу данных;
9. Обновляем конфигурацию 1С стандартным способом.
Если всё сделать, согласно инструкции выше, то в вашей конфигурации 1С 8.3 «Ошибка при выполнении файловой операции» больше не возникнет. Спасибо за внимание!
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Обновлено 15.10.2020
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Рунета Pyatilistnik.org. В прошлый раз мы с вами разобрали, что из себя представляет файловая система raw, и как ее исправить, чтобы восстановить свои данные. Двигаемся дальше и поговорим сегодня на тему капризности 1С, точнее на капризную работу в рамках Windows Server 2016. Я рассмотрю причину и устранение периодически повторяющейся ошибки на сервере 1С 8.3 «Ошибка при выполнении файловой операции«. Ее я стал встречать после обновления с Windows Server 2012 R2 д 2016. Думаю мой опыт сэкономит вам часик серфинга по интернету.
Описание проблемы
В моей компании заканчивается обновление операционных систем у виртуальных серверов, с Windows Server 2012 R2 на Windows Server 2016, я понимаю, что поддержка первых еще будет несколько лет, но хочется уже не делать это в последний момент, а слегка опережать, да и уже давно пора стремиться к Windows Server 2019. Сервера 1С не были исключением, обновление происходило по быстрому варианты. Тут подразумевается накатывание более новой версии ОС по верх старой, тут мы убивали двух зайцев:
- Получали свежую версию ОС
- Оставляли весь софт на сервере, и не требовалась его переустановка
В случае чего всегда можно было откатиться из снапшота на момент проведения работ, благо ESXI 6.5 это помогает делать в два клика. Все прекрасно обновилось и сервер зажил новой жизнью. В какой-то момент при запуске клиента 1С 8.3 на RDS ферме, стала появляться ошибка:
Ошибка при выполнении файловой операции
Устранение проблемы
Начав изучать данный вопрос мы не стали откатываться к бэкапу, так как данная проблема возникала не постоянно, а через некоторые промежутки и была вызвана явно не переходом на более новую версию операционной системы. Подняв исторические данные в системе заявок, я нашел похожую, где решением ошибки был перенос базы данных 1С на другой диск. Меня это заинтересовало и я стал прикидывать, что же могло быть в той ситуации. Через минут 20 я нашел одну закономерность, что на всех проблемных хостах был установлен компонент Windows дедупликации, как раз на тех дисках, где располагались базы данных 1С.
Я для тестирования отключил дедупликацию и вернул все в исходное состояние, и о чудо ошибка при выполнении файловой операции больше не появлялась. Все те же действия я произвел и на остальных серверах.
Вывод: Windows Дедупликация и 1С просто не совместимы друг с другом, это нужно запомнить
Из дополнительных методов я могу вам посоветовать еще очистку кэша 1С. Еще в на умных сайтах советуют на серверах, где используется 1С отключать протокол IPv6 на сетевых интерфейсах, но лично я не понимаю этого прикола, так как сама Microsoft советует по возможности этого не делать, в виду того, что очень многие ее сервисы и компоненты Windows в приоритете используют именно его, меньше будет проблем с DNS и Active Directory.
Вообще если у вас виртуальные сервера лежат на системе хранения данных, то у нее должна быть своя функция дедупликации и использовать лучше и правильнее ее. Если у вас есть другие варианты решения данной проблемы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Ошибка при выполнении файловой операции |
Я |
09.06.21 — 15:35
Приветствую, уважаемые форумчане.
Поделитесь, пожалуйста, опытом, может кто сталкивался. Из-за чего может возникать ошибка: «Ошибка при выполнении файловой операции ‘C:UsersUSR1CV8AppDataLocalTempv8_1BF4_352.mxl'». Ошибка происходит при попытке открыть элемент справочника. Ошибка не постоянная, может появиться, а может и нет. База на SQL. Сервер виртуальный. Очень напрягает такая ситуация, особенно, если непонятная причина.
1 — 09.06.21 — 15:37
смотри, что у тебя при открытии происходит, видимо коряво отчет формируется
2 — 10.06.21 — 11:05
(1) При открытии нашел место кода, где пишется в этот временный файл. Но проблема то несколько в ином, в том, что в один момент времени все без ошибок, а в другой момент времени выдает эту ошибку. Вот и хотим понять, на чьей стороне ошибка: диск виноват (хоть и виртуальный), права на каталог «тупят» (хотя всем дали полные) или что-то другое, неизвестное пока. Может был у кого прецедент и выяснили причину?
3 — 10.06.21 — 12:56
(2) Места хватает на сервере?
4 — 10.06.21 — 13:03
(3) Не зависит особо от этого. Бывает достаточно места, бывает мало остается, но ошибка в обоих случаях может появляться. Да и файл этот совсем небольшого размера же, для него уж места предостаточно.
5 — 10.06.21 — 13:04
(0) может файл занят а с ним какие то манипуляции хотите сделать. Когда он не занят, то работает, когда не успевает его освободить, тогда ошибку ловите.
6 — 10.06.21 — 13:06
(5) Так он вроде только при данном событии создается (при открытии элемента справочника, в смысле), а затем тут же удаляется.
7 — 10.06.21 — 13:08
(6) всегда с одним и тем же именем? А если двое отчет откроют?
8 — 10.06.21 — 13:10
(7) Видно же, что это временный файл…
9 — 10.06.21 — 13:11
(6) ругается при создании, или при удалении?
10 — 10.06.21 — 13:13
(6) если не секрет, для чего вы временный файл создаете, что там такого специфического, чего нельзя во временное хранилище пихнуть?
11 — 10.06.21 — 13:25
(7) Разный
12 — 10.06.21 — 13:26
(9) Пишет, что при вызове Write
13 — 10.06.21 — 13:27
(10) Конфигурация специализированная, 1С Отель. Разработчики так сделали
14 — 10.06.21 — 13:29
(13) а что на это говорят разработчики этого чудо решения?
15 — 10.06.21 — 13:32
(12) если код не большой, где этот временный файл создается, пишется и удаляется, то можете сюда кусок скинуть, либо на пастебин ссылкой. Возможно там где-нить в коде косяк.
16 — 10.06.21 — 13:58
(14) Отмалчиваются
17 — 10.06.21 — 13:58
(15)
Function cmGetAbsoluteColor(pColor) Export
If pColor.Type = ColorType.Absolute Then
Return pColor;
EndIf;
vSD = New SpreadsheetDocument;
vSD.Area(«R1C1»).BackColor = pColor;
vTF = GetTempFileName(«mxl»);
vSD.Write(vTF, SpreadsheetDocumentFileType.MXL7);
vSD.Read(vTF);
vColor = vSD.Area(«R1C1»).BackColor;
vSD = Undefined;
DeleteFiles(vTF);
Return vColor;
EndFunction
18 — 10.06.21 — 13:59
(17) расстрелять!
19 — 10.06.21 — 14:11
(17) И это все, для того чтобы вернуть цвет ячейки… Может у вас ошибка каждый раз когда pColor.Type <> ColorType.Absolute?
20 — 10.06.21 — 14:18
(0) Предлагаю, не писать этот файл
21 — 10.06.21 — 14:21
(17) Этот ужас, где пишется?
На клиенте или Сервере?
22 — 10.06.21 — 14:23
(15)
Function cmGetAbsoluteColor(pColor) Export
//If pColor.Type = ColorType.Absolute Then
// Return pColor;
//EndIf;
//vSD = New SpreadsheetDocument;
//vSD.Area(«R1C1»).BackColor = pColor;
//vTF = GetTempFileName(«mxl»);
//vSD.Write(vTF, SpreadsheetDocumentFileType.MXL7);
//vSD.Read(vTF);
//vColor = vSD.Area(«R1C1»).BackColor;
//vSD = Undefined;
//DeleteFiles(vTF);
//Return vColor;
Возврат Новый Цвет(255, 255, 255);
EndFunction
С Вас сто рублёв
23 — 10.06.21 — 14:23
(22) -> (17)
24 — 10.06.21 — 14:30
(19) Проверил в отладчике. Когда не равен, проскакивает без ошибок.
25 — 10.06.21 — 14:32
(23) New Color() же)
26 — 10.06.21 — 14:32
(21) Это в общем модуле, на сервере
27 — 10.06.21 — 14:36
(25) не скрепно
28 — 10.06.21 — 14:39
(0) Ну народ, уже давно не пишут, все через память :)))
&НаСервере
Function cmGetAbsoluteColor(pColor) Export
If pColor.Вид = ВидЦвета.Абсолютный Then
Return pColor;
EndIf;
Поток = Новый ПотокВПамяти();
vSD = Новый ТабличныйДокумент;
vSD.Область(«R1C1»).ЦветФона = pColor;
vTF = ПолучитьИмяВременногоФайла («mxl»);
vSD.Записать(Поток, ТипФайлаТабличногоДокумента.MXL7);
Поток.Перейти(0,ПозицияВПотоке.Начало);
vSD.Прочитать(Поток, СпособЧтенияЗначенийТабличногоДокумента.Значение);
vColor = vSD.Область(«R1C1»).BackColor;
vSD = Неопределено;
//УдалитьФайлы(vTF);
Return vColor;
EndFunction
29 — 10.06.21 — 14:39
+(28) Ну поток уж сам закроешь
30 — 10.06.21 — 14:40
+ (0) Вот получше так…
&НаСервере
Function cmGetAbsoluteColor(pColor) Export
If pColor.Вид = ВидЦвета.Абсолютный Then
Return pColor;
EndIf;
Поток = Новый ПотокВПамяти();
vSD = Новый ТабличныйДокумент;
vSD.Область(«R1C1»).ЦветФона = pColor;
vSD.Записать(Поток, ТипФайлаТабличногоДокумента.MXL7);
Поток.Перейти(0,ПозицияВПотоке.Начало);
vSD.Прочитать(Поток, СпособЧтенияЗначенийТабличногоДокумента.Значение);
vColor = vSD.Область(«R1C1»).BackColor;
Поток.Закрыть();
Поток = Неопределено;
vSD = Неопределено;
//УдалитьФайлы(vTF);
Return vColor;
EndFunction
31 — 10.06.21 — 14:42
(29) ну это ладно, что mxl, а если бы xlsx был то в потоке уже так просто табдок не прочитаешь…
32 — 10.06.21 — 14:43
(31) У нас не ексель
33 — 10.06.21 — 14:43
+ Вот будет ексель, тогда и поговорим про скорость
34 — 10.06.21 — 14:44
(33) я одного понять не могу, чем создателей webцвета не устроили или различные типовые стили?
35 — 10.06.21 — 14:45
(34) Ненаю, где там это используется, я вот еще не пойму, нак-зачемой по англиски писать
36 — 10.06.21 — 14:46
+ Потом даже модифицировать не могут
37 — 10.06.21 — 14:47
(35) может у индусов заказывали конфу?))
38 — 10.06.21 — 14:47
(35) Там вся конфа такая. Специально похоже, чтобы сложнее было понять, что они там разработали)
39 — 10.06.21 — 14:51
(38) Соболезную, держи пример, не мучайся хоть со справочником
40 — 10.06.21 — 14:53
Кстати, не только mxl пишут. Есть внешний ресурс Travelline, к которому 1С коненктится, забирает инфу и создает брони в 1С. При этом так же периодически ошибки вываливаются такого типа: «Failed to create reservation: Ошибка при выполнении файловой операции ‘C:UsersUSR1CV8AppDataLocalTempБронь_9719.pdf’; Booking №:20210613-19260-96172841».
41 — 10.06.21 — 14:54
Вопрос изначальный по идее так и остается. По какой причине то проходит запись в Temp, то нет. Бред какой-то происходит.
42 — 10.06.21 — 14:54
(40) Подвиг за день не должен превышать больше одного… Это вы дальше сами
43 — 10.06.21 — 14:54
(42)
44 — 10.06.21 — 14:55
(41) Если оба юзвера или много считывают, то может быть так, что у всех одно и тоже временное имя, 1С… что сказать
45 — 10.06.21 — 14:56
(40) тоже наверное можно без создания временного файла обойтись.
46 — 10.06.21 — 14:58
(44) Интересное предположение. Может так и происходит на самом деле
47 — 10.06.21 — 14:59
(46) Код покажи, вот этого (40) — Чисто в познавательных целях
48 — 10.06.21 — 14:59
(46) создайте свою папочку на серваке и дайте к ней доступ. Сами контролируйте уникальность файлов. Либо вообще поправьте код, чтобы избыточные временные файлы не создавались.
49 — 10.06.21 — 15:00
(41) Про антивирус уже писали?
50 — 10.06.21 — 15:00
(47) скорее всего возвращается ссылка на pdf брони созданной, а ее пытаются во временном файле записать)
51 — 10.06.21 — 15:01
+(46) Вот тебе генератор имен.
Функция УникальноеИмя(расширение)
Возврат «» + КаталогВременныхФайлов() + СокрЛП(Новый УникальныйИдентификатор())+».»+расширение;
КонецФункции
52 — 10.06.21 — 15:06
(51) а вот тут почитаешь и 1ска тебе тыкает, что так делать не надо, только для веб клиента)
https://its.1c.ru/db/v8std/content/542/hdoc
53 — 10.06.21 — 15:07
(52) тут понимаешь ли 1ской все гарантируется и должно работать)
54 — 10.06.21 — 15:09
(52) Если по каким-то причинам прикладной код не удалит созданный файл (например, между блоками создания и удаления временного файла возникнет штатное или нештатное исключение), этот файл так и останется в каталоге временных файлов.
…
А теперь вопрос, какой метод от 1С, удалит все временные файлы на сервере?
На сервере, где так же есть такая вещь, как КЭШ сервера
55 — 10.06.21 — 15:10
(54) вроде бы перезапуск службы 1с это делать должен)
56 — 10.06.21 — 15:11
(54) >>> Если по каким-то причинам прикладной код не удалит созданный файл
Файл в любом случаи останется
…Или 1С так же повторно заюзает этот файл?
57 — 10.06.21 — 15:11
(55) Что? Вы хотите сказать, что при рестарте службы, у многих пользователей автоматом гарантировано все ляжет? :)))
58 — 10.06.21 — 15:13
+(55) и тут же 1С разрешает этот код в (51) для вэба :))))
3.1. При выполнении кода веб-клиентом метод ПолучитьИмяВременногоФайла недоступен. Поэтому для формирования имен временных файлов и каталогов необходимо использовать функцию КаталогВременныхФайлов и объект УникальныйИдентификатор.
Неправильно:
Каталог = КаталогВременныхФайлов();
ИмяФайла = «TempDataFile.xml»;
ИмяПромежуточногоФайла = Каталог + ИмяФайла;
Данные.Записать(ИмяПромежуточногоФайла);
Правильно:
Каталог = КаталогВременныхФайлов();
ИмяФайла = Строка(Новый УникальныйИдентификатор) + «.xml»;
ИмяПромежуточногоФайла = Каталог + ИмяФайла;
Данные.Записать(ИмяПромежуточногоФайла);
59 — 10.06.21 — 15:16
(47) Вот этот кусок кода:
vConfirmationFileName = StrReplace(vDocObj.Ref.Metadata().Presentation() + » » + Format(vDocObj.GuestGroup.Code, «ND=12; NFD=0; NG=»), » «, «_») + «.pdf»;
vConfirmationFilePath = cmGetFullFileName(vConfirmationFileName, TempFilesDir());
vConfirmationSpreadsheet.Write(vConfirmationFilePath, SpreadsheetDocumentFileType.PDF);
60 — 10.06.21 — 15:16
(58) я про это и пишу, что для только для вэба и можно. По идее, когда сеанс перезапускается, который создавал временный файлы, то они подчищаются. Если же перезапустить службу 1ски, то все сеансы схлопнутся, все временные файлы созданные в этих сеансах должны удалиться платформой.
61 — 10.06.21 — 15:18
(59) а где гарантия, что vConfirmationFileName уникально? Если к примеру 2 человека одновременно этот кусок кода выполнят.
62 — 10.06.21 — 15:20
(59) может у вас действительно, что то с правами на серваке? Пробовали на другой машинке базу развернуть?
63 — 10.06.21 — 15:39
(62) К сожалению нет такой возможности.
64 — 10.06.21 — 17:12
(59) Проблемы, т.к. нам тут не видно.
1. Что это за код и до какой степени он уникален? «vDocObj.GuestGroup.Code»
2. Для чего это пишут в формате PDF?
3. Вопрос из (61), а где гарантия?
65 — 10.06.21 — 17:12
(60) Сколько раз перезапускал, такого не замечал
66 — 10.06.21 — 17:15
+(60) Если Автор (0) гарантирует, что будет удалять такие файлы САМ, то вероятность зависших файлов равна ничтожному проценту.
Т.е. парочка файлов просочится, но не более.
Учитывая, сколько раз мне приходилось чистить папку темп на сервере, для восстановления работоспособности баз, после динамической.обновы. и др. сбоев.
Вот все что там пишется, зависает, не стоит и ломаной десятины…
Главное Серверу 1С не жадничать дискового пространства под его временные файлы
67 — 10.06.21 — 17:17
+(59) А проверки на то, что файл уже есть, тоже присутствуют?
68 — 10.06.21 — 17:18
Кода мало, давай под 1000 строк
69 — 10.06.21 — 17:18
Не жадничай
70 — 10.06.21 — 17:58
(67) да какая там проверка, все же тут есть:
vConfirmationFilePath = cmGetFullFileName(vConfirmationFileName, TempFilesDir()); создали путь во временном каталоге
vConfirmationSpreadsheet.Write(vConfirmationFilePath, SpreadsheetDocumentFileType.PDF); записали табдок по этому пути в формате пдф.
71 — 11.06.21 — 06:34
(70) Если так, то это жесть :)))
zoran
72 — 22.06.21 — 09:02
Всем спасибо за обсуждение. В итоге, после общения с ТП конфигурации выяснилось, что запись на диск требуется для отправки печатных форм документов (бронирования, в частности) клиентам. И в настройках есть возможность отключить данную опцию. Далее понаблюдаем, исчезнут ли ошибки.
Многие из нас привыкли публиковать базу или веб сервис 1С нажатием нескольких кнопок.
Но не все из многих знают, что для этого необходимо запустить(от имени администратора!) конфигуратор 1С:Предприятие именно на той машине, где установлен веб сервер(а именно компонента веб-расширения 1С:Предприятия).
В случае, если веб-сервер и компонента веб-расширения 1С:Предприятия установлены на машину с ОС Linux без графической оболочки, то публикация через привычное окно конфигуратора становится невозможной.
Аналогичная ситуация возникает, когда на этой машине отсутствует клиент 1С:Предприятия и, следовательно, становится невозможным запуск конфигуратора.
О том, как осуществить публикацию базы можно почитать тут: Публикация 1С на Веб сервере Linux.
Отметим, что при ручной настройке публикации можно допустить различные ошибки. Описания которых и приведены в этой статье.
Итак, что делать, если не получается опубликовать веб-сервис 1С?
Список возможных ошибок:
1. Job for httpd.service failed because the control process exited with error code.
2. Ошибка веб-сервера Apache при публикации 1С «Syntax error on line…»
3. Ошибка «Invalid command ‘ManagedApplicationDescriptor’»
4. Не запускается 1С: Предприятие при подключении через веб сервер Linux. «Selinux policy enabled.»
5. Ошибка HTTP 404 Not found
6. Ошибка Service not found при обращении к веб-сервису 1С:Предприятия
Job for httpd.service failed because the control process exited with error code.
Полный текст ошибки:
Job for httpd.service failed because the control process exited with error code. See «systemctl status httpd.service» and «journalctl -xe» for details. |
Описание ошибки:
После выполнения всех настроек файлов публикации базы или сервиса 1С:Предприятия. При попытке запустить веб-сервер — выдается ошибка и веб-сервер не запускается.
Данное сообщение говорит о том, что процесс был завершен с ошибкой, более подробную информацию о которой можно получить в журнале. Как это сделать — описано далее.
Решение:
Необходимо проанализировать более подробное описание ошибки. Его можно получить следующим образом.
В результате выполнения команды будет выдано более подробное сообщение об ошибке.
Разбор, которых приведен в статье далее.
Ошибка веб-сервера Apache при публикации 1С «Syntax error on line…»
Полный текст ошибки:
сен 16 11:41:54 1s-on-web-1 httpd[6596]: AH00526: Syntax error on line 6 of /etc/httpd/e1c/base.conf: сен 16 11:41:54 1s-on-web-1 httpd[6596]: Invalid command ‘forceHandler’, perhaps misspelled or defined by a module not included in the server configuration |
Описание ошибки:
Ошибка связана с ошибками или «опечатками» в файле настроек base.conf. Иными словами, в данном файле есть некорректные строки, которые новичку бывает сходу не так просто найти.
Решение:
Исправить ошибку в строке сообщения. В данном случае допущена опечатка в имени команды.
vim /etc/httpd/e1c/base.conf |
Пример ошибочной строки. Команды forceHandler — на самом деле не существует :
Alias «/base» «/var/www/e1c/base/» <Directory «/var/www/e1c/base/»> AllowOverride All Options None Require all granted forceHandler 1c-application ManagedApplicationDescriptor «/var/www/e1c/base/default.vrd» </Directory> |
Исправим файл. Укажем корректное наименвоание команды — SetHandler:
Alias «/base» «/var/www/e1c/base/» <Directory «/var/www/e1c/base/»> AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor «/var/www/e1c/base/default.vrd» </Directory> |
Ошибка «Invalid command ‘ManagedApplicationDescriptor’»
Полный текст ошибки:
Начат процесс запуска юнита httpd.service. сен 16 12:18:11 1s-on-web-1 httpd[9857]: AH00526: Syntax error on line 7 of /etc/httpd/e1c/base.conf: сен 16 12:18:11 1s-on-web-1 httpd[9857]: Invalid command ‘ManagedApplicationDescriptor’, perhaps misspelled or defined by a module not included in the server configuration сен 16 12:18:11 1s-on-web-1 systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE сен 16 12:18:11 1s-on-web-1 systemd[1]: Failed to start The Apache HTTP Server. — Subject: Ошибка юнита httpd.service |
Описание ошибки:
Ошибка связана с тем, что в файле httpd.conf отсутствует ссылка на модуль веб-расширения 1С:Предприятия, которая должна указываться в «LoadModule _1cws_module».
В этом можно убедиться выполнив команду.
cat /etc/httpd/conf/httpd.conf | grep wsap |
Если результат пустой, то строка вида «/opt/1C/v8.3/x86_64/wsap24.so», отсутвтует — модуль не прописан.
Решение:
Отредактировать конфигурационный файл httpd.conf
vim /etc/httpd/conf/httpd.conf |
Добавить строку:
LoadModule _1cws_module «/opt/1C/v8.3/x86_64/wsap24.so» |
Не запускается 1С: Предприятие при подключении через веб сервер, Linux. «Selinux policy enabled.»
Полный текст ошибки:
cat /var/log/httpd/error_log |
Описание проблемы:
При попытке запустить клиента 1С:Предприятие через веб-сервер (строка подключения вида: «ws=»http://1s-on-server/bast»;») — сеанс не запускается.
Но при этом, таже самая база — запускается успешно при прямом подключении к серверу 1С:Предприятия (строка подключения вида Srvr=»1s-on-server»;Ref=»base»;).
Решение:
1. Убедиться, что selinux, действительно, работает.
Если видим Enforcing, значит переходим к следующему пункту.
2. Отключить selinux:
3. Проверить, что настройка выполнена.
Permissive – включен, но ничего не запрещает.
Enforcing – включен, работает, и запрещает.
Ошибка HTTP 404 Not found
<strong>Пример полного текста ошибки:</strong> 404 Error in Request. HTTP Status: 404 — Not found |
<img class=«wp-image-809» src=«https://1s-on.ru/wp-content/uploads/2020/12/post-802-image-3.jpeg» /> HTTP 404 Not found The webpage cannot be found |
Описание:
После публикации базы на сервере, при попытке перейти по веб-ссылке базы из браузера– выдается ошибка.
Проще говоря, браузер сообщает, что не нашел такой папки публикации на сервере.
Решение:
Ошибка часто связана с неправильным вводом имени базы/папки публикации.
Необходимо проверить имена папок с конфигурационными файлами базы, а также имена базы и папок в самих конфигурационных файлах.
Проверить имена публикации базы(выделено):
1. Конфигурационный файл *.conf:
vim /etc/httpd/e1c/base.conf |
следующего содержания:
Alias «/base» «/var/www/e1c/base/» <Directory «/var/www/e1c/base/»> AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor «/var/www/e1c/base/default.vrd» </Directory> |
2. Конфигурационный файл публикации базы *.vrd
vim /var/www/e1c/base/default.vrd |
следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?xml version=»1.0″ encoding=»UTF-8″?> <point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» base=»/base» ib=»Srvr=1s-on-1c-1; Ref=base»> <ws> <point name=»ws_1s_on_1″ alias=»ws_1s_on_1.1cws» enable=»true»/> <point name=»ws_1s_on_2″ alias=»ws_1s_on_2.1cws» enable=»true»/> </ws> </point> |
point name – имя сервиса в конфигураторе;
alias – это имя ссылки, по которой будем обращаться к веб-сервису.
Именно это имя необходимо вводить в браузер при проверке работы веб-сервиса: 1s-on-1c-1/base/ws/ws_1s_on_1.1cws
Ошибка Service not found при обращении к веб-сервису 1С:Предприятия
Пример полного текста ошибки:
Описание:
При обращении к веб-сервису, после авторизации(если таковая требуется) – возникает ошибка, что сервис не найден. То есть публикация самой базы отвечает, но веб-сервиса нет или он не отвечает.
Ошибка часто связана с ошибками в именах самого веб-сервиса или его ссылки.
Решение:
Проверить имена веб-сервисов и ссылок на них.
-
- Конфигурационный файл публикации базы *.vrd
vim /var/www/e1c/base/default.vrd |
следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?xml version=»1.0″ encoding=»UTF-8″?> <point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» base=»/base» ib=»Srvr=1s-on-1c-1; Ref=base»> <ws> <point name=»ws_1s_on_1″ alias=»ws_1s_on_1.1cws» enable=»true»/> <point name=»ws_1s_on_2″ alias=»ws_1s_on_2.1cws» enable=»true»/> </ws> </point> |
point name – имя сервиса в конфигураторе;
alias – это имя ссылки, по которой будем обращаться к веб-сервису. Именно это имя необходимо вводить в браузер при проверке работы веб-сервиса.
В нашем случае веб-сервиса ws_1s_on_3.1cws нет в файле.
Содержание
- web-сервис и ws-ссылка ошибка
- Сервис не найден.
- Не получается опубликовать HTTP сервис расширения в IIS. Ошибка 404.
- web-сервис и ws-ссылка ошибка
- Сервис не найден.
- Решение проблем интеграции с Порталом 1С:ИТС
- Содержание
- 1. Общие действия
- 2. Если у пользователя не работают услуги портала.
- Симптомы проблемы
- Решение
- 3. Расхождение данных портала и менеджера сервиса
- 4. Подписки перестали отправляться в портал
- 5. Устранение причин непринятия подписок порталом
- 5.1. Бизнес-ошибки
- Пример ошибки
- Решение
- Пример ошибки
- Решение
- Пример ошибки
- Решение
- 5.2. Технические ошибки
- Пример ошибки
- Решение
- Симптомы проблемы
- Решение
web-сервис и ws-ссылка ошибка
Здравствуйте, нужна помощь.
Имею свой написанный web-сервис, прогнал на локальных базах, все хорошо, все работает. Начал закидывать на сервис и появилась вот такая проблема:
начинал запрашивать по пути в браузере . /ws/Partner.1cws?wsdl (Partner это Имя файла публикации) он выдавал логин и пароль, после этого писал «Сервис не найден.» если после этих логинов и паролей
ввести сразу . /ws/ws2.1cws?wsdl, то все хорошо находил мой сервис и показывал, НО если закрыть браузер и открыть заного под инкогнито(чтобы не было кэша логина/пароля), то выдавал ошибку 404,»descr»:»HTTP: Not foundnОшибка при выполнении запроса GET к ресурсу
далее все таки нашел ошибку, что в публикации имя не Partner, а ws2 переименовали, переопубликовали. Теперь выходит так: при . /ws/Partner.1cws?wsdl выходит ошибка 404, при . /ws/ws2.1cws?wsdl выходит логин/пароль, при вводе логина и пароля выводит «Сервис не найден.»
при кэшировании логина и пароля пишем опять . /ws/Partner.1cws?wsdl все проходит нормально.
Почему я поднимаю вопрос. потому что когда я в базе заношу WS-ссылка, то сейчас при . /ws/Partner.1cws?wsdl выходит:
а если я ввожу . /ws/ws2.1cws?wsdl выходит:
Ошибка при выполнении файловой операции ‘http://1c.enginf.ru/office/ws/ws2.1cws?wsdl’
по причине:
Ошибка работы с Интернет: внутренняя ошибка сервера (500).
A server error occurred.
Сервис не найден.
нашел вот что, при любом имени сервиса, даже при котором его не существует 1с запрашивает логин и пароль, а вот если обратиться так как называется мой web-сервис, то выходит:
Источник
Не получается опубликовать HTTP сервис расширения в IIS. Ошибка 404.
Бьюсь уже полдня((
Галка «Публиковать HTTP сервисы расширений по умолчанию стоит», в default.vrd вроде все норм, пробовал прописывать сервис вручную в default.vrd — не помогает.
Перезапускал сервер 1С, IIS раз 20. Создавал новые http-сервисы с другими именами, все так же 404.
Причем http сервисы из конфигурации как работали до манипуляций, так и работают.
Где вообще можно посмотреть при флаге publishExtensionsByDefault=»true» куда он обращается, как IIS понимает к какому http-сервису расширения конфигурации идет обращение, если сам http-сервис в default.vrd не прописан?
Платформа 8.3.18.1363 х64
Млииин. Ларчик просто открывался. фейспалм.. посыпаю голову пеплом(
С утра уже все кеши почистил, как советовали, ничего не заработало. Я в отчаянии стал такое же расширение создавать на рабочей сервере с другим IIS — вдруг взлетит.
Создал, применил, хотел опубликовать, тут наш консультант заходит в ту же базу и говорит — тут ошибка выскочила, ошибка применения расширения, я смотрю — там конфликт по названию основной роли расширения с ролью в другом расширении.
В итоге как оказалось — мое расширение тупо не работало, я нажимал применить на базу, но оно не применялось, а 1С предупреждает о том, что оно не применилось только когда зайдешь в режиме предприятия (а я туда не заходил за ненадобностью), а в режиме конфигуратора оно только молча дает ошибку в ЖР и типа все норм.
Источник
web-сервис и ws-ссылка ошибка
Здравствуйте, нужна помощь.
Имею свой написанный web-сервис, прогнал на локальных базах, все хорошо, все работает. Начал закидывать на сервис и появилась вот такая проблема:
начинал запрашивать по пути в браузере . /ws/Partner.1cws?wsdl (Partner это Имя файла публикации) он выдавал логин и пароль, после этого писал «Сервис не найден.» если после этих логинов и паролей
ввести сразу . /ws/ws2.1cws?wsdl, то все хорошо находил мой сервис и показывал, НО если закрыть браузер и открыть заного под инкогнито(чтобы не было кэша логина/пароля), то выдавал ошибку 404,»descr»:»HTTP: Not foundnОшибка при выполнении запроса GET к ресурсу
далее все таки нашел ошибку, что в публикации имя не Partner, а ws2 переименовали, переопубликовали. Теперь выходит так: при . /ws/Partner.1cws?wsdl выходит ошибка 404, при . /ws/ws2.1cws?wsdl выходит логин/пароль, при вводе логина и пароля выводит «Сервис не найден.»
при кэшировании логина и пароля пишем опять . /ws/Partner.1cws?wsdl все проходит нормально.
Почему я поднимаю вопрос. потому что когда я в базе заношу WS-ссылка, то сейчас при . /ws/Partner.1cws?wsdl выходит:
а если я ввожу . /ws/ws2.1cws?wsdl выходит:
Ошибка при выполнении файловой операции ‘http://1c.enginf.ru/office/ws/ws2.1cws?wsdl’
по причине:
Ошибка работы с Интернет: внутренняя ошибка сервера (500).
A server error occurred.
Сервис не найден.
нашел вот что, при любом имени сервиса, даже при котором его не существует 1с запрашивает логин и пароль, а вот если обратиться так как называется мой web-сервис, то выходит:
Источник
При интеграции с порталом и использовании услуг портала возможно возникновение проблем или ошибок, например:
У пользователя не работает услуга портала.
Подписки перестали отправляться в портал.
При возникновении ошибки с кодом ответа портала 500 в любой из перечисленных выше ситуаций следует обращаться на webits-info@1c.ru, прикрепив к письму описание ошибки.
Ниже описаны действия при возникновении других ошибок.
Содержание
1. Общие действия
Проверить актуальность расширения по интеграции с порталом ИТС для менеджера сервиса: команды меню Все функции — Управление расширениями конфигурации , расширение ИнтеграцияСПорталомИТС .
Если версия расширения не последняя — обновить расширение. Актуальная версия расширения доступна в составе продукта 1С:Предприятие. Облачная подсистема Фреш на сайте releases.1c.ru
Проверить основные настройки интеграции с порталом в менеджере сервиса: команды меню Интеграция — Учетные системы , учетная система Портал 1С:ИТС .
2. Если у пользователя не работают услуги портала.
При возникновении ошибок при работе с услугами портала, например не выполняется заполнение реквизитов контрагентов, необходимо выполнить следующие действия.
Нужно проверить, отправлены ли портал следующие данные:
Статус интеграции показывается в справочнике Абоненты (команда меню Обслуживание — Абоненты):
И в форме свойств абонента (пункт меню формы Интеграция ):
Статус интеграции показывается в справочнике Пользователи абонентов (команда меню Обслуживание — Пользователи абонентов):
И в форме свойств абонента (пункт меню формы Пользователи абонента ):
Статус интеграции показывается в форме списка Подписки (команда меню Управление тарифами — Подписки):
И в форме свойств подписки (пункт меню формы Интеграция ):
Если какой либо из объектов не интегрирован и вместо значка указан значок , нужно проверить наличие ошибок в логе отправки. Лог отправки расположен в нижней части формы элемента после выбора пункта меню формы Интеграция :
Нужно проверить, заполнен ли реквизит Идентификатор у обслуживающей организации, указанной в портале.
Для этого нужно открыть карточку обслужи вающей организации в справочнике Абоненты :
В поле Идентификатор нужно указать код партнера. Например, если Код партнера 000987-77, то указываем 000987, или 987
Открыть форму свойств активной подписки клиента и проверить наличие нужной услуги на вкладке Услуги :
Если услуги нет, возможно в тарифе указан некорректный тариф поставщика Портала 1С:ИТС.
Симптомы проблемы
В списке Подписки у новых подписок не появляются значки интеграции, либо долго висят значки «часиков» .
В списке подписок не отправленные в портал подписки отображаются знаком .
Решение
Интеграция с порталом использует общую очередь сообщений. Если в менеджере сервиса «забита» очередь сообщений, то возможны 2 варианта решения:
- Дождаться освобождения очереди сообщений.
Отправить сообщения интеграции принудительно. Для этого нужно:
- Открыть элемент учетной системы 1С:Портал в списке Учетные системы (команды меню Интеграция — Учетные системы, учетная система Портал 1С:ИТС) или переход по ссылке e1cib/list/Справочник.УчетныеСистемы.
- Выбрать команду меню формы Объекты к отправке.
- Нажать на кнопку «самолетик» .
- Все сообщения будут отправлены.
- Т.к. в портале процесс принятия сообщений разделен на 2 фазы: принятие к обработке и обработка, и между фазами возможен лаг 1-5 минут, процедуру отправки нужно будет при необходимости повторить через 5 минут.
- Если процедуру повторять 3 раза подряд, то сообщения заблокируются, но их можно разблокировать, нажатием на кнопку «замок» .
Открыть карточку абонента, выбрать в ней команду меню Пользователи абонента , проверить состояние интеграции, показанное в левой колонке:
Причины неотправки абонентов в основном технические, возможны разные ситуации:
Вид данных | Проверка | |
---|---|---|
Данные абонента | ||
Данные пользователей абонентов | Письмо или звонок в отдел разработки Портала 1С:ИТС | |
2 | Письмо или звонок в отдел разработки Портала 1С:ИТС | |
3 | Письмо или звонок в отдел разработки Портала 1С:ИТС | |
4 |
Не удалось получить тикет аутентификации в Менеджере сервиса http://fresh:8888/int/sm/hs/tickets/ Код состояния: 500. Сообщение: Область данных: 38 253 Идентификатор пользователя: cd012524-30f1-11e8-80ce-8e51d7d8547d |
Повторить отправку, если не удалось — письмо или звонок в отдел разработки Портала 1С:ИТС |
3. Расхождение данных портала и менеджера сервиса
Расхождение данных Портала 1С:ИТС и менеджера сервиса. Например: на портале на 10 подписок больше чем в менеджере сервиса.
Причина состоит в непосредственном удалении объектов. Если объект Подписка, Абонент, Пользователь абонента был создан ошибочно и сразу удалён из менеджера сервиса как объект без пометки удаления, то сообщение на портал не отправляется.
Чтобы объект также был удалён на портале, достаточно поставить пометку на удаление на соответствующий объект Подписки, Абонента или Пользователя абонента.
4. Подписки перестали отправляться в портал
Интеграция с порталом использует общую очередь сообщений. Если в менеджере сервиса «забита» очередь сообщений, то возможны 2 варианта решения:
- Дождаться освобождения очереди сообщений.
Отправить сообщения интеграции принудительно. Для этого нужно:
- Открыть элемент учетной системы 1С:Портал в списке Учетные системы (команды меню Интеграция — Учетные системы, учетная система Портал 1С:ИТС)
или переход по ссылке – e1cib/list/Справочник.УчетныеСистемы. - Выбрать команду меню формы Объекты к отправке.
- Нажать на кнопку «самолетик» .
- Все сообщения будут отправлены.
- Т.к. в портале процесс принятия сообщений разделен на 2 фазы: принятие к обработке и обработка, и между фазами возможен лаг 1-5 минут, процедуру отправки нужно будет при необходимости повторить через 5 минут.
- Если процедуру повторять 3 раза подряд, то сообщения заблокируются, но их можно разблокировать, нажатием на кнопку «замок» .
5. Устранение причин непринятия подписок порталом
Для выяснения причин, почему подписка не была отправлена, нужно:
- Вывести карточку свойств подписки и выбрать команду меню Интеграция.
- Посмотреть описание состояния интеграции и лог отправки.
Открыть описание объекта к отправке, показанное в списке Данные к отправке:
По этим сведениям можно понять причину, после чего нужно эту причину устранить. Возможные причины делятся на 2 типа:
- Бизнес-ошибка в подписке
- Техническая ошибка на Портале 1С:ИТС
5.1. Бизнес-ошибки
Бизнес-ошибки нужно устранять силами партнера, указав ее причины.
На каждый запрос идет проверка по логину и паролю от конкретного экземпляра сервиса Фреш.
Также выполняются проверки заполнения полей. Описание проверок приведены в п.6 документа Rest API Портала 1С:ИТС Fresh-Integration
Ниже приведены примеры бизнес-ошибок.
Пример ошибки
Решение
У обслуживающей организации указан код партнера отличный от числа. Нужно чтобы у обслуживающей организации код партнера был числом.
Код партнера указывается в поле Идентификатор без последних цифр после «-«. Например, если Код партнера 000987-123, то указываем 000987, или 987 :
Пример ошибки
Решение
Тариф, на который оформляется подписка, не может быть оформлен на указанный срок. Возможные сроки оформления подписок на тариф обычно указываются на вкладке Описание формы свойств тарифа поставщика услуг.
Тарифы поставщиков услуг доступны с помощью команды меню Управление тарифами — Тарифы поставщиков услуг или по ссылке e1cib/list/Справочник.ТарифыПоставщиковУслуг.
Пример ошибки
Решение
Подписка была ранее получена порталом и изменена пользователем в срок, когда ее уже нельзя менять.
Партнер или оператор сервиса должен создать новую подписку. Эту подписку нужно вернуть в исходное состояние или пометить на удаление, если она не актуальна.
5.2. Технические ошибки
Технические ошибки нужно устранять самостоятельно, либо, если ошибка не устраняется, нужно связаться с отделом разработки портала 1С:ИТС.
Пример ошибки
Решение
В момент отправки сообщения в портал на портале 1С:ИТС производились технические работы и сообщение не смогло доставиться после 3-х попыток отправки.
Нужно в карточке свойств объекта (например, подписки) выбрать команду меню Интеграция и открыть сообщение, показанное в списке Данные к отправке:
В выведенной форме Объект к отправке нужно разблокировать сообщение, нажав на кнопку замка и затем на кнопку отправки сообщения :
Если в сообщении отображается пиктограмка «часы» , это значит, что сообщение принято порталом и обрабатывается. Нужно подождать 2-5 минут, обычно после этого услуга уже будет доступна пользователю.
Такая проблема может быть массовой. В этом случае нужно проделать те же действия, но с большим числом сообщений. Для этого нужно открыть форму учетной системы Портал 1С:ИТС ( Интеграция — Учетные системы , учетная система Портал 1С:ИТС ) и выбрать в ней команду меню Объекты к отправке :
Здесь будут доступны те же кнопки и . Их можно использовать следующим образом:
- Если в списке выделен один элемент, то операция будет выполнена для всех элементов списка.
- Если в списке выделено несколько элементов, то операция будет выполнена только для выделенных элементов.
Также в этом списке можно открывать отдельные объекты к отправке и выполнять их отправку из формы свойств объекта.
Симптомы проблемы
Сообщения отправляются в течение часа или более:
Решение
Ошибка проявляется на тестовых и боевых серверах.
- В инфраструктуре сервиса Портала 1С:ИТС идут какие-то нагрузочные тесты.
Возможно, отправляемое сообщение содержит некорректный код партнера.
Код партнера должен быть из существующих кодов партнера.
Нужно установить обслуживающей организации существующий код партнера, например 987 или 456.
Источник
Как настроить HTTP-сервис в 1С: Предприятие 8 и опубликовать базу на веб-сервере Apache
Эта публикация для быстрого доступа к информации по теме содания HTTP-сервиса на стороне 1С. С кратким замечанием по тому, какие трудности возникли на практике при настройке и работе.
Сервис 1С:ИТС Информационная система
Как выполнить первоначальную настройку сервиса в 1С:
HTTP Сервисы: Путь к своему сервису. Часть 1 на сайте Infostart.ru — вариант «на практике»
Информация от разработчика платформы, больше теории, но есть описание того, чего нет в вышеуказанной ссылке относительно настройки http-сервиса в 1С:
Пример создания HTTP-сервисов на платформе «1С:Предприятие» — на сайте Сервис 1С:ИТС Информационная система.
Используя две вышеуказанные статьи на сайтах можно выполнить настройку за 1 час.
При «Публикации веб-сервере…» на сервере Apache 2.4 была проблема в том, что после того, как 1С внесла изменения в файл httpd.conf, то служба сервера Apache не запускалась. При подробном изучении проблемы было выяснено, что Apache не мог получить и загрузить исполняемый dll-файл 1С — wsap24.dll, который отвечает за совместную работу Apache и 1C:
The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 169 of C:/Program Files/Apache24/conf/httpd.conf: Cannot load modules/wsap24.dll into server: The Apache service named xedxe5 xffxe2xebxffxe5xf2xf1xff xefxf0xe8xebxeexe6xe5xedxe8xe5xec Win32.
169 строка файла имела содержимое: LoadModule _1cws_module «C:/Program Files (x86)/1cv8/8.3.9.2033/bin/wsap24.dll»
Позже, благодаря поиску решения проблемы, было выявлено, что установленная версия Apache и 1С были различной разрадяности — x64 и x32 соответственно. Удаление и установка Apache 2.4 x32 разрядности устранило проблему. Теперь компонента wsap24.dll без проблем была подгружена веб-сервером и служба Apache без проблем была запущена.
В решении вышеописанной проблемы помогло обсуждение на форуме сайта infostart.ru: Апач не стартует после публикации базы
Далее, казалось бы, все проблемы решены. Но ожидала еще одна сложность, которую предстояло решить. Она имела следующий внешний вид и описание:
«reason»:404,»descr»:»HTTP: Not foundnОшибка при выполнении запроса GET к ресурсу /hs/ObmenSite/v1/parametr:»,»#inner»:»{http://v8.1c.ru/8.1/data/core}Exception»,»inner»:{«clsid»:»a01f465c-ed70-442e-ada5-847668d7a41c»,»descr»:»Текущему соединению с информационной базой не назначен сеанс»,»data»
Помог решить проблему комментарий, размещенный на странице сайта курсы-по-1с.рф — [ Интеграция ] Как настроить обмен 1С с интернет-сервисами
Т.е. если в базе не установлен ни один пользователь, то файл default.vrd не будет требовать правки. Но, как правило, в базах 1С 8 имеется список пользователей, поэтому необходимо указать пользователя с его паролем для доступа через http-сервис в файле настроек. В соответствии с приведенным указанием данные пользователя и пароль были добавлены в соответствующий файл default.vrd, размещенный в каталоге, указанном как «Каталог» для публикации:
После проделанного изменения http-сервис, настроенный в 1С для теста, дал ответ:
Дополнительно по теме, в продолжении упоминания HTTP Сервисы: Путь к своему сервису. Часть 1 на сайте Infostart.ru:
HTTP Сервисы: Путь к своему сервису. Часть 2 — рассматривается пример реализации из OData+HTTP-Сервис(Get)+СКД, рассматривается пример работы как в браузере, так и реализованной обработке с использованием разных версий платформ
HTTP Сервисы: Путь к своему сервису. Часть 3 — описание других методов HTTP-Сервиса, таки[ как GET, HEAD, PUT, POST и других
HTTP Сервисы: Путь к своему сервису. Часть 4 — в рамках HTTP-сервисов в 1С:Предприятии 8 рассматриваются вопросы про размер сообщений, файлы, порции и регламенты.
Оцените, оказалась ли эта публикация полезна для Вас?
© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
11-06-2019
Журавлев А.С.
(Сайт azhur-c.ru)
Назад
|
|||
Slashman6667
24.07.21 — 19:31 |
Друзья, нужна помощь. Весь день мучаюсь, но так и не нашел решение. Задача — вызвать http-сервис. База опубликована, веб-сервисы(!!!) видны, сама база в браузере открывается… default.vrd и т.п. все настроено… Но именно http-сервис не работает. http://localhost/MO/hs/HTTPCallback/A/B/C/D/E/F/J — путь в строке браузера. В чем может быть такая загвоздка? |
||
Смотрящий
1 — 24.07.21 — 19:42 |
Права на сервис какие и какой юзер? |
||
Slashman6667
2 — 24.07.21 — 19:48 |
(1) База файловая. Права на каталог базы полные у пользователя IUSR, также права даны полные на все места куда можно. IUSR также добавлен в группу IIS_IUSRS. Публикация из-под админа естественно делалась. |
||
Slashman6667
3 — 24.07.21 — 19:57 |
В 1С права само собой тоже полные |
||
Slashman6667
4 — 24.07.21 — 20:02 |
Просто еще раз для понимания. Вот например, http://localhost/MO/ws/exchange.1cws?wsdl — работает А то что через /hs/(http-сервисы именно) не пашет. |
||
Slashman6667
5 — 24.07.21 — 20:03 |
Ошибка HTTP 404.0 — Not found Разыскиваемый вами ресурс был удален, было изменено его имя или он временно недоступен. |
||
acht
6 — 24.07.21 — 20:04 |
(0) > В чем может быть такая загвоздка? В несовпадении корневого урла и шаблона сервиса со строкой запроса |
||
Slashman6667
7 — 24.07.21 — 20:36 |
(6) /{id_Reserve}/{id_ComplexReserve}/{EventType}/{ReserveState}/{ComplexState}/{EventDescription}/{CallbackId} — это шаблон HTTPCallback — корневой URL http://localhost/MO/hs/HTTPCallback/A/B/C/D/E/F/J — строка запроса Что не так? |
||
Slashman6667 8 — 24.07.21 — 20:46 |
Все, вопрос решен… Но как я не понял… Просто перписал руками строку запроса заново))) Может какие-то символы были внутри другой раскладки… Фиг знает… |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Содержание
- web-сервис и ws-ссылка ошибка
- Сервис не найден.
- Не получается опубликовать HTTP сервис расширения в IIS. Ошибка 404.
- web-сервис и ws-ссылка ошибка
- Сервис не найден.
- Решение проблем интеграции с Порталом 1С:ИТС
- Содержание
- 1. Общие действия
- 2. Если у пользователя не работают услуги портала.
- Симптомы проблемы
- Решение
- 3. Расхождение данных портала и менеджера сервиса
- 4. Подписки перестали отправляться в портал
- 5. Устранение причин непринятия подписок порталом
- 5.1. Бизнес-ошибки
- Пример ошибки
- Решение
- Пример ошибки
- Решение
- Пример ошибки
- Решение
- 5.2. Технические ошибки
- Пример ошибки
- Решение
- Симптомы проблемы
- Решение
web-сервис и ws-ссылка ошибка
Здравствуйте, нужна помощь.
Имею свой написанный web-сервис, прогнал на локальных базах, все хорошо, все работает. Начал закидывать на сервис и появилась вот такая проблема:
начинал запрашивать по пути в браузере . /ws/Partner.1cws?wsdl (Partner это Имя файла публикации) он выдавал логин и пароль, после этого писал «Сервис не найден.» если после этих логинов и паролей
ввести сразу . /ws/ws2.1cws?wsdl, то все хорошо находил мой сервис и показывал, НО если закрыть браузер и открыть заного под инкогнито(чтобы не было кэша логина/пароля), то выдавал ошибку 404,»descr»:»HTTP: Not foundnОшибка при выполнении запроса GET к ресурсу
далее все таки нашел ошибку, что в публикации имя не Partner, а ws2 переименовали, переопубликовали. Теперь выходит так: при . /ws/Partner.1cws?wsdl выходит ошибка 404, при . /ws/ws2.1cws?wsdl выходит логин/пароль, при вводе логина и пароля выводит «Сервис не найден.»
при кэшировании логина и пароля пишем опять . /ws/Partner.1cws?wsdl все проходит нормально.
Почему я поднимаю вопрос. потому что когда я в базе заношу WS-ссылка, то сейчас при . /ws/Partner.1cws?wsdl выходит:
а если я ввожу . /ws/ws2.1cws?wsdl выходит:
Ошибка при выполнении файловой операции ‘http://1c.enginf.ru/office/ws/ws2.1cws?wsdl’
по причине:
Ошибка работы с Интернет: внутренняя ошибка сервера (500).
A server error occurred.
Сервис не найден.
нашел вот что, при любом имени сервиса, даже при котором его не существует 1с запрашивает логин и пароль, а вот если обратиться так как называется мой web-сервис, то выходит:
Источник
Не получается опубликовать HTTP сервис расширения в IIS. Ошибка 404.
Бьюсь уже полдня((
Галка «Публиковать HTTP сервисы расширений по умолчанию стоит», в default.vrd вроде все норм, пробовал прописывать сервис вручную в default.vrd — не помогает.
Перезапускал сервер 1С, IIS раз 20. Создавал новые http-сервисы с другими именами, все так же 404.
Причем http сервисы из конфигурации как работали до манипуляций, так и работают.
Где вообще можно посмотреть при флаге publishExtensionsByDefault=»true» куда он обращается, как IIS понимает к какому http-сервису расширения конфигурации идет обращение, если сам http-сервис в default.vrd не прописан?
Платформа 8.3.18.1363 х64
Млииин. Ларчик просто открывался. фейспалм.. посыпаю голову пеплом(
С утра уже все кеши почистил, как советовали, ничего не заработало. Я в отчаянии стал такое же расширение создавать на рабочей сервере с другим IIS — вдруг взлетит.
Создал, применил, хотел опубликовать, тут наш консультант заходит в ту же базу и говорит — тут ошибка выскочила, ошибка применения расширения, я смотрю — там конфликт по названию основной роли расширения с ролью в другом расширении.
В итоге как оказалось — мое расширение тупо не работало, я нажимал применить на базу, но оно не применялось, а 1С предупреждает о том, что оно не применилось только когда зайдешь в режиме предприятия (а я туда не заходил за ненадобностью), а в режиме конфигуратора оно только молча дает ошибку в ЖР и типа все норм.
Источник
web-сервис и ws-ссылка ошибка
Здравствуйте, нужна помощь.
Имею свой написанный web-сервис, прогнал на локальных базах, все хорошо, все работает. Начал закидывать на сервис и появилась вот такая проблема:
начинал запрашивать по пути в браузере . /ws/Partner.1cws?wsdl (Partner это Имя файла публикации) он выдавал логин и пароль, после этого писал «Сервис не найден.» если после этих логинов и паролей
ввести сразу . /ws/ws2.1cws?wsdl, то все хорошо находил мой сервис и показывал, НО если закрыть браузер и открыть заного под инкогнито(чтобы не было кэша логина/пароля), то выдавал ошибку 404,»descr»:»HTTP: Not foundnОшибка при выполнении запроса GET к ресурсу
далее все таки нашел ошибку, что в публикации имя не Partner, а ws2 переименовали, переопубликовали. Теперь выходит так: при . /ws/Partner.1cws?wsdl выходит ошибка 404, при . /ws/ws2.1cws?wsdl выходит логин/пароль, при вводе логина и пароля выводит «Сервис не найден.»
при кэшировании логина и пароля пишем опять . /ws/Partner.1cws?wsdl все проходит нормально.
Почему я поднимаю вопрос. потому что когда я в базе заношу WS-ссылка, то сейчас при . /ws/Partner.1cws?wsdl выходит:
а если я ввожу . /ws/ws2.1cws?wsdl выходит:
Ошибка при выполнении файловой операции ‘http://1c.enginf.ru/office/ws/ws2.1cws?wsdl’
по причине:
Ошибка работы с Интернет: внутренняя ошибка сервера (500).
A server error occurred.
Сервис не найден.
нашел вот что, при любом имени сервиса, даже при котором его не существует 1с запрашивает логин и пароль, а вот если обратиться так как называется мой web-сервис, то выходит:
Источник
При интеграции с порталом и использовании услуг портала возможно возникновение проблем или ошибок, например:
У пользователя не работает услуга портала.
Подписки перестали отправляться в портал.
При возникновении ошибки с кодом ответа портала 500 в любой из перечисленных выше ситуаций следует обращаться на webits-info@1c.ru, прикрепив к письму описание ошибки.
Ниже описаны действия при возникновении других ошибок.
Содержание
1. Общие действия
Проверить актуальность расширения по интеграции с порталом ИТС для менеджера сервиса: команды меню Все функции — Управление расширениями конфигурации , расширение ИнтеграцияСПорталомИТС .
Если версия расширения не последняя — обновить расширение. Актуальная версия расширения доступна в составе продукта 1С:Предприятие. Облачная подсистема Фреш на сайте releases.1c.ru
Проверить основные настройки интеграции с порталом в менеджере сервиса: команды меню Интеграция — Учетные системы , учетная система Портал 1С:ИТС .
2. Если у пользователя не работают услуги портала.
При возникновении ошибок при работе с услугами портала, например не выполняется заполнение реквизитов контрагентов, необходимо выполнить следующие действия.
Нужно проверить, отправлены ли портал следующие данные:
Статус интеграции показывается в справочнике Абоненты (команда меню Обслуживание — Абоненты):
И в форме свойств абонента (пункт меню формы Интеграция ):
Статус интеграции показывается в справочнике Пользователи абонентов (команда меню Обслуживание — Пользователи абонентов):
И в форме свойств абонента (пункт меню формы Пользователи абонента ):
Статус интеграции показывается в форме списка Подписки (команда меню Управление тарифами — Подписки):
И в форме свойств подписки (пункт меню формы Интеграция ):
Если какой либо из объектов не интегрирован и вместо значка указан значок , нужно проверить наличие ошибок в логе отправки. Лог отправки расположен в нижней части формы элемента после выбора пункта меню формы Интеграция :
Нужно проверить, заполнен ли реквизит Идентификатор у обслуживающей организации, указанной в портале.
Для этого нужно открыть карточку обслужи вающей организации в справочнике Абоненты :
В поле Идентификатор нужно указать код партнера. Например, если Код партнера 000987-77, то указываем 000987, или 987
Открыть форму свойств активной подписки клиента и проверить наличие нужной услуги на вкладке Услуги :
Если услуги нет, возможно в тарифе указан некорректный тариф поставщика Портала 1С:ИТС.
Симптомы проблемы
В списке Подписки у новых подписок не появляются значки интеграции, либо долго висят значки «часиков» .
В списке подписок не отправленные в портал подписки отображаются знаком .
Решение
Интеграция с порталом использует общую очередь сообщений. Если в менеджере сервиса «забита» очередь сообщений, то возможны 2 варианта решения:
- Дождаться освобождения очереди сообщений.
Отправить сообщения интеграции принудительно. Для этого нужно:
- Открыть элемент учетной системы 1С:Портал в списке Учетные системы (команды меню Интеграция — Учетные системы, учетная система Портал 1С:ИТС) или переход по ссылке e1cib/list/Справочник.УчетныеСистемы.
- Выбрать команду меню формы Объекты к отправке.
- Нажать на кнопку «самолетик» .
- Все сообщения будут отправлены.
- Т.к. в портале процесс принятия сообщений разделен на 2 фазы: принятие к обработке и обработка, и между фазами возможен лаг 1-5 минут, процедуру отправки нужно будет при необходимости повторить через 5 минут.
- Если процедуру повторять 3 раза подряд, то сообщения заблокируются, но их можно разблокировать, нажатием на кнопку «замок» .
Открыть карточку абонента, выбрать в ней команду меню Пользователи абонента , проверить состояние интеграции, показанное в левой колонке:
Причины неотправки абонентов в основном технические, возможны разные ситуации:
Вид данных | Проверка | |
---|---|---|
Данные абонента | ||
Данные пользователей абонентов | Письмо или звонок в отдел разработки Портала 1С:ИТС | |
2 | Письмо или звонок в отдел разработки Портала 1С:ИТС | |
3 | Письмо или звонок в отдел разработки Портала 1С:ИТС | |
4 |
Не удалось получить тикет аутентификации в Менеджере сервиса http://fresh:8888/int/sm/hs/tickets/ Код состояния: 500. Сообщение: Область данных: 38 253 Идентификатор пользователя: cd012524-30f1-11e8-80ce-8e51d7d8547d |
Повторить отправку, если не удалось — письмо или звонок в отдел разработки Портала 1С:ИТС |
3. Расхождение данных портала и менеджера сервиса
Расхождение данных Портала 1С:ИТС и менеджера сервиса. Например: на портале на 10 подписок больше чем в менеджере сервиса.
Причина состоит в непосредственном удалении объектов. Если объект Подписка, Абонент, Пользователь абонента был создан ошибочно и сразу удалён из менеджера сервиса как объект без пометки удаления, то сообщение на портал не отправляется.
Чтобы объект также был удалён на портале, достаточно поставить пометку на удаление на соответствующий объект Подписки, Абонента или Пользователя абонента.
4. Подписки перестали отправляться в портал
Интеграция с порталом использует общую очередь сообщений. Если в менеджере сервиса «забита» очередь сообщений, то возможны 2 варианта решения:
- Дождаться освобождения очереди сообщений.
Отправить сообщения интеграции принудительно. Для этого нужно:
- Открыть элемент учетной системы 1С:Портал в списке Учетные системы (команды меню Интеграция — Учетные системы, учетная система Портал 1С:ИТС)
или переход по ссылке – e1cib/list/Справочник.УчетныеСистемы. - Выбрать команду меню формы Объекты к отправке.
- Нажать на кнопку «самолетик» .
- Все сообщения будут отправлены.
- Т.к. в портале процесс принятия сообщений разделен на 2 фазы: принятие к обработке и обработка, и между фазами возможен лаг 1-5 минут, процедуру отправки нужно будет при необходимости повторить через 5 минут.
- Если процедуру повторять 3 раза подряд, то сообщения заблокируются, но их можно разблокировать, нажатием на кнопку «замок» .
5. Устранение причин непринятия подписок порталом
Для выяснения причин, почему подписка не была отправлена, нужно:
- Вывести карточку свойств подписки и выбрать команду меню Интеграция.
- Посмотреть описание состояния интеграции и лог отправки.
Открыть описание объекта к отправке, показанное в списке Данные к отправке:
По этим сведениям можно понять причину, после чего нужно эту причину устранить. Возможные причины делятся на 2 типа:
- Бизнес-ошибка в подписке
- Техническая ошибка на Портале 1С:ИТС
5.1. Бизнес-ошибки
Бизнес-ошибки нужно устранять силами партнера, указав ее причины.
На каждый запрос идет проверка по логину и паролю от конкретного экземпляра сервиса Фреш.
Также выполняются проверки заполнения полей. Описание проверок приведены в п.6 документа Rest API Портала 1С:ИТС Fresh-Integration
Ниже приведены примеры бизнес-ошибок.
Пример ошибки
Решение
У обслуживающей организации указан код партнера отличный от числа. Нужно чтобы у обслуживающей организации код партнера был числом.
Код партнера указывается в поле Идентификатор без последних цифр после «-«. Например, если Код партнера 000987-123, то указываем 000987, или 987 :
Пример ошибки
Решение
Тариф, на который оформляется подписка, не может быть оформлен на указанный срок. Возможные сроки оформления подписок на тариф обычно указываются на вкладке Описание формы свойств тарифа поставщика услуг.
Тарифы поставщиков услуг доступны с помощью команды меню Управление тарифами — Тарифы поставщиков услуг или по ссылке e1cib/list/Справочник.ТарифыПоставщиковУслуг.
Пример ошибки
Решение
Подписка была ранее получена порталом и изменена пользователем в срок, когда ее уже нельзя менять.
Партнер или оператор сервиса должен создать новую подписку. Эту подписку нужно вернуть в исходное состояние или пометить на удаление, если она не актуальна.
5.2. Технические ошибки
Технические ошибки нужно устранять самостоятельно, либо, если ошибка не устраняется, нужно связаться с отделом разработки портала 1С:ИТС.
Пример ошибки
Решение
В момент отправки сообщения в портал на портале 1С:ИТС производились технические работы и сообщение не смогло доставиться после 3-х попыток отправки.
Нужно в карточке свойств объекта (например, подписки) выбрать команду меню Интеграция и открыть сообщение, показанное в списке Данные к отправке:
В выведенной форме Объект к отправке нужно разблокировать сообщение, нажав на кнопку замка и затем на кнопку отправки сообщения :
Если в сообщении отображается пиктограмка «часы» , это значит, что сообщение принято порталом и обрабатывается. Нужно подождать 2-5 минут, обычно после этого услуга уже будет доступна пользователю.
Такая проблема может быть массовой. В этом случае нужно проделать те же действия, но с большим числом сообщений. Для этого нужно открыть форму учетной системы Портал 1С:ИТС ( Интеграция — Учетные системы , учетная система Портал 1С:ИТС ) и выбрать в ней команду меню Объекты к отправке :
Здесь будут доступны те же кнопки и . Их можно использовать следующим образом:
- Если в списке выделен один элемент, то операция будет выполнена для всех элементов списка.
- Если в списке выделено несколько элементов, то операция будет выполнена только для выделенных элементов.
Также в этом списке можно открывать отдельные объекты к отправке и выполнять их отправку из формы свойств объекта.
Симптомы проблемы
Сообщения отправляются в течение часа или более:
Решение
Ошибка проявляется на тестовых и боевых серверах.
- В инфраструктуре сервиса Портала 1С:ИТС идут какие-то нагрузочные тесты.
Возможно, отправляемое сообщение содержит некорректный код партнера.
Код партнера должен быть из существующих кодов партнера.
Нужно установить обслуживающей организации существующий код партнера, например 987 или 456.
Источник
Автор Lilian, 14 сен 2015, 16:36
0 Пользователей и 1 гость просматривают эту тему.
Добрый день! При открытии в 1с 8.3 таких документов, как поступление товаров и услуг, реализация товаров и услуг, отчет комитентам, выскакивает дополнительное окно «ошибка НТТР 400». Если открывать, например, списание с расч. счета или ведомость на выплату з/п, таких проблем не возникает.
При создании копии базы в процессе ее формирования выдает такое же сообщение и после продолжает копирование, как обычно.
При формировании нового документа, например, поступления товаров и услуг, при выборе контрагента выдается аналогичное сообщение.
Делалось тестирование и исправление, ситуация не изменилась.
При загрузке более старых копий базы при открытии упомянутых ранее документов выдается такое же сообщение, например, выбираю базу полугодичной давности.
Что можно сделать и как исправить данную ошибку?
Заранее спасибо!
Это ошибка проверки Контрагента по ИНН и КПП.
Посмотри,не включена ли у тебя данная проверка:
Меню «Администрирование» — Настройки проверки контрагентов. Поставить (снять) галочку «Проверять контрагентов с помощью веб-сервиса ФНС»
Цитата: Raven от 14 сен 2015, 17:15
Это ошибка проверки Контрагента по ИНН и КПП.
Посмотри,не включена ли у тебя данная проверка:
Меню «Администрирование» — Настройки проверки контрагентов. Поставить (снять) галочку «Проверять контрагентов с помощью веб-сервиса ФНС»
Спасибо Вам за ответ. Только возникает вопрос: у меня эта функция включена с того момента, как она появилась в 1С, и на данный момент она мне необходима, т.к. работаем с большим количеством контрагентов. Возможны какие-то варианты решения проблемы при включенной проверке контрагента?
Самое интересное, что еще 11.09.2015г. все работало отлично.
Такая проблема может возникнуть в один прекрасный момент при отсутствии обновления платформы и релизов или одно от другого не зависит?
Добрый день, номер платформы и релиза тут не при чем, ошибка возникает при обращении к веб-серверу ФНС. Может сервер у них упал, кто его знает.
Скорее всего они в ближайшее время устранят, так что можно чуть чуть потерпеть.
Всем доброго времени суток!
Абсолютно аналогичная проблема на нашей фирме началась с понедельника (14.09.2015). Немного стало легче на душе когда почитал, что возможно случилась беда с веб-сервером ФНС. Да и скорее всего так и есть, мы тут у себя ничего не меняли. Подождем некоторое время, надеюсь все уладится.
Доброго времени суток. У нас проблемы с аналогичной ошибкой, но в меню Администрирование у нас нет пункта «Настройки проверки контрагентов».
Такая проблема возникла у всех моих клиентов после обновления платформы на 8.3.6.2299. При этом конфигурации разные, обновленные:
1С:Подрядчик строительства 4.0. Управление финансами, редакция 3.0 (3.0.41.4), Бухгалтерия предприятия…
Цитата: vsl89 от 16 сен 2015, 09:27
Доброго времени суток. У нас проблемы с аналогичной ошибкой, но в меню Администрирование у нас нет пункта «Настройки проверки контрагентов».
Он может быть в другом месте Администрирование — Поддержка и обслуживание — Работа с контрагентами.
Теги:
- Форум 1С
- ►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 - ►
Конфигурирование, программирование в 1С Предприятие 8 - ►
1C 8.3 — ошибка HTTP 404
Похожие темы (5)
Поиск
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Поиск
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Яна Блынская
Дата регистрации: 17.09.2015
Сообщений: 7
Добрый день! У нас программа 1С:Предприятие 8.3 (8.3.6.2041) Конфигурация Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.40.30). Последние две недели при формировании любого нового документа в программе (счет, реализация, счет-фактура и т.д.) и заполнении каждого реквизита в документе, появляется окно с надписью «Ошибка HTTP: HTTP Status (404)» (скрин прилагаю).
С недавнего времени при запуске программы, она запрашивает установку обновленной версии, но мы пока ее не устанавливали. Не знаю, влияет ли это как-то или нет. Подскажите, что это значит и как избавиться от этой ошибки? Заранее спасибо!
nemo888
Дата регистрации: 24.08.2010
Сообщений: 115
К сожалению аналогичная ошибка возникает и в других конфигурациях например в БГУ ред.20 (релиз 2.0.33.35 ) файловый вариант
Причем ошибка появилась действительно недавно.
Связана она с проверкой контрагентов на сайте ФНС. Если в программе у вас включена такая функция(Администрирование-Настройка проверки контрагентов), то очевидно 1с не может достучаться до нужной страницы.Скорее всего изменился адрес сайта.
Как вариант -отключить эту функцию в своей программе и ждать пока в 1с устранят эту ошибку.Возможно в самых последних релизах это уже сделали
Яна Блынская
Дата регистрации: 17.09.2015
Сообщений: 7
nemo888,большое спасибо за оперативный ответ!)
Показывать по
10
20
40
сообщений
Многие из нас привыкли публиковать базу или веб сервис 1С нажатием нескольких кнопок.
Но не все из многих знают, что для этого необходимо запустить(от имени администратора!) конфигуратор 1С:Предприятие именно на той машине, где установлен веб сервер(а именно компонента веб-расширения 1С:Предприятия).
В случае, если веб-сервер и компонента веб-расширения 1С:Предприятия установлены на машину с ОС Linux без графической оболочки, то публикация через привычное окно конфигуратора становится невозможной.
Аналогичная ситуация возникает, когда на этой машине отсутствует клиент 1С:Предприятия и, следовательно, становится невозможным запуск конфигуратора.
О том, как осуществить публикацию базы можно почитать тут: Публикация 1С на Веб сервере Linux.
Отметим, что при ручной настройке публикации можно допустить различные ошибки. Описания которых и приведены в этой статье.
Итак, что делать, если не получается опубликовать веб-сервис 1С?
Список возможных ошибок:
1. Job for httpd.service failed because the control process exited with error code.
2. Ошибка веб-сервера Apache при публикации 1С «Syntax error on line…»
3. Ошибка «Invalid command ‘ManagedApplicationDescriptor’»
4. Не запускается 1С: Предприятие при подключении через веб сервер Linux. «Selinux policy enabled.»
5. Ошибка HTTP 404 Not found
6. Ошибка Service not found при обращении к веб-сервису 1С:Предприятия
Job for httpd.service failed because the control process exited with error code.
Полный текст ошибки:
Job for httpd.service failed because the control process exited with error code. See «systemctl status httpd.service» and «journalctl -xe» for details. |
Описание ошибки:
После выполнения всех настроек файлов публикации базы или сервиса 1С:Предприятия. При попытке запустить веб-сервер — выдается ошибка и веб-сервер не запускается.
Данное сообщение говорит о том, что процесс был завершен с ошибкой, более подробную информацию о которой можно получить в журнале. Как это сделать — описано далее.
Решение:
Необходимо проанализировать более подробное описание ошибки. Его можно получить следующим образом.
В результате выполнения команды будет выдано более подробное сообщение об ошибке.
Разбор, которых приведен в статье далее.
Ошибка веб-сервера Apache при публикации 1С «Syntax error on line…»
Полный текст ошибки:
сен 16 11:41:54 1s-on-web-1 httpd[6596]: AH00526: Syntax error on line 6 of /etc/httpd/e1c/base.conf: сен 16 11:41:54 1s-on-web-1 httpd[6596]: Invalid command ‘forceHandler’, perhaps misspelled or defined by a module not included in the server configuration |
Описание ошибки:
Ошибка связана с ошибками или «опечатками» в файле настроек base.conf. Иными словами, в данном файле есть некорректные строки, которые новичку бывает сходу не так просто найти.
Решение:
Исправить ошибку в строке сообщения. В данном случае допущена опечатка в имени команды.
vim /etc/httpd/e1c/base.conf |
Пример ошибочной строки. Команды forceHandler — на самом деле не существует :
Alias «/base» «/var/www/e1c/base/» <Directory «/var/www/e1c/base/»> AllowOverride All Options None Require all granted forceHandler 1c-application ManagedApplicationDescriptor «/var/www/e1c/base/default.vrd» </Directory> |
Исправим файл. Укажем корректное наименвоание команды — SetHandler:
Alias «/base» «/var/www/e1c/base/» <Directory «/var/www/e1c/base/»> AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor «/var/www/e1c/base/default.vrd» </Directory> |
Ошибка «Invalid command ‘ManagedApplicationDescriptor’»
Полный текст ошибки:
Начат процесс запуска юнита httpd.service. сен 16 12:18:11 1s-on-web-1 httpd[9857]: AH00526: Syntax error on line 7 of /etc/httpd/e1c/base.conf: сен 16 12:18:11 1s-on-web-1 httpd[9857]: Invalid command ‘ManagedApplicationDescriptor’, perhaps misspelled or defined by a module not included in the server configuration сен 16 12:18:11 1s-on-web-1 systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE сен 16 12:18:11 1s-on-web-1 systemd[1]: Failed to start The Apache HTTP Server. — Subject: Ошибка юнита httpd.service |
Описание ошибки:
Ошибка связана с тем, что в файле httpd.conf отсутствует ссылка на модуль веб-расширения 1С:Предприятия, которая должна указываться в «LoadModule _1cws_module».
В этом можно убедиться выполнив команду.
cat /etc/httpd/conf/httpd.conf | grep wsap |
Если результат пустой, то строка вида «/opt/1C/v8.3/x86_64/wsap24.so», отсутвтует — модуль не прописан.
Решение:
Отредактировать конфигурационный файл httpd.conf
vim /etc/httpd/conf/httpd.conf |
Добавить строку:
LoadModule _1cws_module «/opt/1C/v8.3/x86_64/wsap24.so» |
Не запускается 1С: Предприятие при подключении через веб сервер, Linux. «Selinux policy enabled.»
Полный текст ошибки:
cat /var/log/httpd/error_log |
Описание проблемы:
При попытке запустить клиента 1С:Предприятие через веб-сервер (строка подключения вида: «ws=»http://1s-on-server/bast»;») — сеанс не запускается.
Но при этом, таже самая база — запускается успешно при прямом подключении к серверу 1С:Предприятия (строка подключения вида Srvr=»1s-on-server»;Ref=»base»;).
Решение:
1. Убедиться, что selinux, действительно, работает.
Если видим Enforcing, значит переходим к следующему пункту.
2. Отключить selinux:
3. Проверить, что настройка выполнена.
Permissive – включен, но ничего не запрещает.
Enforcing – включен, работает, и запрещает.
Ошибка HTTP 404 Not found
<strong>Пример полного текста ошибки:</strong> 404 Error in Request. HTTP Status: 404 — Not found |
<img class=«wp-image-809» src=«https://1s-on.ru/wp-content/uploads/2020/12/post-802-image-3.jpeg» /> HTTP 404 Not found The webpage cannot be found |
Описание:
После публикации базы на сервере, при попытке перейти по веб-ссылке базы из браузера– выдается ошибка.
Проще говоря, браузер сообщает, что не нашел такой папки публикации на сервере.
Решение:
Ошибка часто связана с неправильным вводом имени базы/папки публикации.
Необходимо проверить имена папок с конфигурационными файлами базы, а также имена базы и папок в самих конфигурационных файлах.
Проверить имена публикации базы(выделено):
1. Конфигурационный файл *.conf:
vim /etc/httpd/e1c/base.conf |
следующего содержания:
Alias «/base» «/var/www/e1c/base/» <Directory «/var/www/e1c/base/»> AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor «/var/www/e1c/base/default.vrd» </Directory> |
2. Конфигурационный файл публикации базы *.vrd
vim /var/www/e1c/base/default.vrd |
следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?xml version=»1.0″ encoding=»UTF-8″?> <point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» base=»/base» ib=»Srvr=1s-on-1c-1; Ref=base»> <ws> <point name=»ws_1s_on_1″ alias=»ws_1s_on_1.1cws» enable=»true»/> <point name=»ws_1s_on_2″ alias=»ws_1s_on_2.1cws» enable=»true»/> </ws> </point> |
point name – имя сервиса в конфигураторе;
alias – это имя ссылки, по которой будем обращаться к веб-сервису.
Именно это имя необходимо вводить в браузер при проверке работы веб-сервиса: 1s-on-1c-1/base/ws/ws_1s_on_1.1cws
Ошибка Service not found при обращении к веб-сервису 1С:Предприятия
Пример полного текста ошибки:
Описание:
При обращении к веб-сервису, после авторизации(если таковая требуется) – возникает ошибка, что сервис не найден. То есть публикация самой базы отвечает, но веб-сервиса нет или он не отвечает.
Ошибка часто связана с ошибками в именах самого веб-сервиса или его ссылки.
Решение:
Проверить имена веб-сервисов и ссылок на них.
-
- Конфигурационный файл публикации базы *.vrd
vim /var/www/e1c/base/default.vrd |
следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?xml version=»1.0″ encoding=»UTF-8″?> <point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system» xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» base=»/base» ib=»Srvr=1s-on-1c-1; Ref=base»> <ws> <point name=»ws_1s_on_1″ alias=»ws_1s_on_1.1cws» enable=»true»/> <point name=»ws_1s_on_2″ alias=»ws_1s_on_2.1cws» enable=»true»/> </ws> </point> |
point name – имя сервиса в конфигураторе;
alias – это имя ссылки, по которой будем обращаться к веб-сервису. Именно это имя необходимо вводить в браузер при проверке работы веб-сервиса.
В нашем случае веб-сервиса ws_1s_on_3.1cws нет в файле.
В данной статье я подробно опишу процесс организации веб- доступа к базам данных «1С:Предприятие» 8.3 на веб-сервере IIS (Internet Information Server), входящего в поставку Microsoft Windows Server. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен. Будет рассмотрен алгоритм настройки IIS для работы «1С:Предприятие», а также описан процесс публикации баз данных на веб-сервере как для 32-разрядного, так и для 64-разрядного модуля расширения веб-сервера.
0. Оглавление
- Что понадобится
- Установка веб-сервера IIS
- Установка компонент «1С:Предприятие»
- Настройка операционной системы
- Публикация базы данных на веб-сервере
- Настройка IIS для использования 32-разрядного модуля расширения веб-сервера
- Настройка IIS для использования 64-разрядного модуля расширения веб-сервера
- Подключение к опубликованной информационной базе через веб-браузер
- Подключение к опубликованной информационной базе через клиент «1С:Предприятия»
- Конфигурационные файлы виртуального каталога
- Файл default.vrd
- Файл web.config
1. Что понадобится
- Компьютер отвечающий минимальным системным требованиям для работы веб-сервера под управлением одной из операционных систем:
- Microsoft Windows Server 2012 (R2)
- Microsoft Windows Server 2008 (R2)
- Права локального администратора на данном компьютере.
- Дистрибутив для установки компонент «1С:Предприятие». Для настройки 64-разрядного модуля расширения веб-сервера, дистрибутив для установки 64-разрядного сервера «1С:Предприятие». В данном примере используется версия 8.3.4.389. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен.
2. Установка веб-сервера IIS
Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:
- Общие функции HTTP (Common HTTP Features)
- Статическое содержимое (Static Content)
- Документ по умолчанию (Default Document)
- Обзор каталогов (Directory Browsing)
- Ошибки HTTP (HTTP Errors)
- Разработка приложений (Application Development)
- ASP
- ASP.NET 3.5
- Расширяемость .NET 3.5 (.NET Extensibility 3.5)
- Расширения ISAPI (ISAPI Extensions)
- Фильтры ISAPI (ISAPI Filters)
- Исправление и диагностика (Health and Diagnostics)
- Ведение журнала HTTP (HTTP Logging)
- Монитор запросов (Request Monitor)
- Средства управления (Management Tools)
- Консоль управления IIS (IIS Management Console)
Подробно про процесс развертывания веб-сервера IIS я писал:
- В Microsoft Windows Server 2012 (R2) — здесь. IIS версии 8, после установки должны увидеть страницу Default Web Site вида:
- В Microsoft Windows Server 2008 (R2) — здесь. IIS версии 7, после установки должны увидеть страницу Default Web Site вида:
3. Установка компонент «1С:Предприятие»
На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты) обязательно выбрав при установке компоненты:
- 1С:Предприятие
- Модули расширения веб-сервера
Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера из соответствующей поставки «1С:Предприятие» и установить компоненту:
- Модуль расширения веб-сервера
4. Настройка операционной системы
Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по умолчанию C:inetpubwwwroot ) необходимо дать полные права группе «Пользователи» (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства» (Properties).
В открывшемся окне свойств, переходим на вкладку «Безопасность» (Security) и нажимаем кнопку «Изменить» (Edit…), для изменения действующих разрешений. Появится окно разрешений для данного каталога. В списке Групп или пользователей (Groups or user names) выделим группу «Пользователи» (Users) и в списке разрешений для выбранной группы установим флаг «Польный доступ» (Full control). Затем нажмем «Применить» (Apply) для записи изменений и закроем все окна при помощи кнопки «ОК».
Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по умолчанию C:Program Files (x86)1cv8 для 32-разрядного модуля расширения и C:Program Files1cv8 для 64-разрядного) группе IIS_IUSRS. Для этого выполняем аналогичные описанным выше действия, с той лишь разницей, что для того чтобы необходимая группа появилась в списке «Группы или пользователи» (Groups or user names) необходимо нажать расположенную под списком кнопку «Добавить» (Add..), а в окне выбора групп или пользователей нажать «Дополнительно» (Advanced…).
Затем нажимаем расположенную справа кнопку «Поиск» (Find Now), после чего выбираем необходимую группу IIS_IUSRS в таблице результатов поиска и нажимаем «ОК».
Группа IIS_IUSRS появится в списке групп или пользователей. Даем ей полные права на на выбранную директорию и нажимаем «Применить» (Apply) для сохранения изменений.
Ну и наконец, если публикация выполняется для файловой базы, необходимо также дать группе IIS_IUSRS полные права на каталог с расположенными файлами данной информационной базы.
5. Публикация базы данных на веб-сервере
Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать. Затем в меню выбираем «Администрирование» — «Публикация на веб-сервере…»
Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию:
- Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита.
- Веб сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
- Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
- Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису.
- Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.
Выбрав необходимые настройки публикации нажимаем «Опубликовать».
Если публикация прошла без ошибок, увидим соответствующее сообщение.
Публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию и для пула приложения по умолчанию. Стоит иметь ввиду, что при выполнении публикации из конфигуратора будет зарегистрирован 32-разрядный модуль расширения веб-сервера, а используемый по умолчанию пул приложений — DefaultAppPool — без настройки работает только с 64-разрядными приложениями. Соответственно, дальнейшие действия зависят от разрядности модуля расширения веб-сервера, который планируется использовать. Для 32-разрядного модуля расширения веб-сервера, необходимо разрешить пулу приложений использовать 32-разрядные приложения, либо же зарегистрировать 64-разрядный модуль расширения веб-сервера. Об этом пойдет речь ниже
6. Настройка IIS для использования 32-разрядного модуля расширения веб-сервера
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которое мы задавали при публикации базы данных. Для завершения публикации осталось только разрешить 32-разрядные приложения для пула приложений по умолчанию. Для этого перейдем в дереве подключений на вкладку «Пулы приложений» (Application Pools).
В списке пулов приложений найдем пул с именем DefaultAppPool. Кликнем по нему правой кнопкой мыши и в контекстном меню выберем пункт «Дополнительные параметры» (Advanced Settings).
В открывшемся окне параметров пула приложения, в группе «Общие» (General) найдем пункт «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) и установим значение параметра равным True. Затем сохраним изменения нажав «ОК».
7. Настройка IIS для использования 64-разрядного модуля расширения веб-сервера
Зарегистрировать 64-разрядный модуль расширения веб-сервера можно с помощью утилиты webinst.exe соответствующей версии, расположенной в каталоге bin, каталога с установленной программой «1С:Предприятие», либо воспользоваться приведенным ниже способом.
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которым мы задавали при публикации базы данных. Для завершения публикации осталось только указать данному приложению использовать 64-разрядный обработчик запросов. Для этого откроем страницу настройки сопоставления обработчиков для данного виртуально каталога, выбрав пункт «Сопоставление обработчиков» (Handler Mappings) на начальной странице приложения.
В таблице сопоставлений обработчиков найдем обработчик «1С Web-service Extension». Откроем данный обработчик, кликнув 2 раза по соответствующей строке в таблице.
Отредактируем обработчик, заменив путь к исполняемой dll 32-разрядного модуля расширения веб-сервера, который выбран в данный момент, на путь к 64-разрядной версии библиотеки. В данном примере меняем путь c «C:Program Files (x86)1cv88.3.4.389binwsisapi.dll» на «C:Program Files1cv88.3.4.389binwsisapi.dll» воспользовавшись кнопкой выбора. Изменив путь нажимаем «ОК» для сохранения изменений.
8. Подключение к опубликованной информационной базе через веб-браузер
Ну вот вроде и все. Для подключений к только что опубликованной базе данных, запускаем Internet Explorer, и в строке адреса вводим путь вида http://localhost/<Имя публикации информационной базы>. В данном примере это http://localhost/DemoAccounting/.
К данной информационной базе также можно подключиться и с любого компьютера в сети, обратившись к веб-серверу по его внутреннему (или если прокинут порт 80, по внешнему) IP-адресу.
В этом случае, для корректной работы «1С:Предприятие», имя домена, на который идет обращение (или IP-адрес) должен быть добавлен в надежные узлы Internet Explorer, а также для него должны быть разрешены всплывающие окна. Подробнее про настройку Internet Explorer для работы веб-клиента «1С:Предприятие» читайте здесь.
9. Подключение к опубликованной информационной базе через клиент «1С:Предприятия»
К опубликованной на веб-сервере информационной базе можно подключиться и с помощью тонкого клиента «1С:Предприятия». Для подключения откроем окно запуска «1С:Предприятие» и нажмем кнопку «Добавить» для добавления информационной базы.
В окне добавления информационной базы/группы установим переключатель в «Добавление в список существующей информационной базы» и нажмем «Далее».
Введем имя базы данных, как она будет отображаться в списке информационных баз (должно быть уникальным для данного списка), тип расположения выберем «На веб-сервере» и нажмем «Далее».
Вводим строку адреса для подключения к информационной базе (без префикса /ru_RU/). Также здесь можно указать параметры прокси-сервера (если есть) и способ аутентификации на веб-сервере. Указав необходимые настройки снова жмем «Далее».
Указываем параметры запуска для информационной базы и нажимаем «Готово» для завершения работы мастера.
После чего данная информационная база появится в списке баз окна запуска «1С:Предприятие». Обратим внимание что режим запуска Конфигуратор недоступен для данного типа подключения. Нажимаем «1С:Предприятие» для подключения к информационной базе.
10. Конфигурационные файлы виртуального каталога
Рассмотрим подробнее структуру файлов, которые были созданы в процессе публикации. Если веб-доступ к опубликованной информационной базе по каким-то причинам не заработал, конфигурационные файлы можно отредактировать вручную, для достижения желаемого результата (конфигурационные файлы из данной статьи для 64-разрядного модуля расширения веб-сервера можно скачать здесь).
Перейдем в каталог, который мы указывали во время публикации базы данных. В нем увидим два файла:
- default.vrd
- web.config
Оба файла доступны для просмотра и редактирования с помощью любого текстового редактора, например программы «Блокнот» (Notepad). Рассмотрим структуру этих файлов подробнее.
10.1. Файл default.vrd
В файле default.vrd описываются опубликованные Web-сервисы (элемент <ws>), а также указывается имя виртуального приложения (атрибут base) и строка подключения к информационной базе «1С:Предприятие» (атрибут ib). В данном примере для файловой информационной базы, строка подключения будет следующей:
ib="File="C:1C_BASEDemoAccounting";"
Как видно из примера, если в строке подключения встречаются символы, недопустимые с точки зрения стандарта XML (http://www.w3.org/TR/xml11/), они должны быть заменены соответствующим образом.
В строке подключения можно указать логин и пароль пользователя. В этом случае, подключение к информационной базе будет выполняться от имени указанного пользователя. Например, для подключения от имени пользователя Продавец, строка подключения будет следующей:
ib="File="C:1C_BASEDemoAccounting";Usr=Продавец;Pwd=123;"
Для серверной информационной базы строка подключения будет иметь вид:
ib="Srvr="WIN2012"e;;Ref="e;Accounting"e;;"
Где WIN2012 — имя кластера серверов «1С:Предприятие», а Accounting — имя базы данных в кластере.
Подробнее про структуру данного файла можно почитать в книге «Руководство администратора» 2-е издание , Приложение 2, глава 3.12.
10.2. Файл web.config
Файл web.config — это файл, определяющий параметры для ASP.NET web-приложения. В каждом web-приложении должен быть файл web.config, находящийся в его корневом каталоге. Наш виртуальный каталог не является исключением. В текущем файле содержатся данные об обработчике «1С Web-service Extension», обрабатывающем запросы к данному приложению. Обработчик настроен таким образом, что все запросы передаются библиотеке wsisapi.dll, расположенной в каталоге bin, каталога с файлами «1С:Предприятие». В случае использования серверных информационных баз, версия библиотеки должна соответствовать версии кластера серверов «1С:Предприятия».
Данный обработчик можно найти (или добавить, если его нет) в Диспетчере служб IIS. Для этого необходимо выделить вкладку с текущим приложением и в окне свойств выбрать пункт «Сопоставления обработчиков» (Handler Mappings).
В таблице сопоставлений обработчиков увидим наш обработчик «1С Web-service Extension». Если такого обработчика в списке нет, его следует добавить выбрав в окне «Действия» (Actions) пункт «Добавление сопоставления сценария с подстановочными знаками» (Add Wildcard Script Map…).
При добавлении вводим имя обработчика и указываем путь к файлу wsisapi.dll. Данные параметры можно изменить и для действующего обработчика выбрав пункт «Изменить…» (Edit…) в окне списка действий.
Необходимо также убедиться, что для обработчика стоит флаг «Выполнение» (Execute) в окне изменений разрешений функции. Вызвать данное окно можно выбрав пункт «Изменение разрешений функции…» (Edit Feature Permissions…) в окне «Действия» (Actions).
Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.
Я уже писал статью с использованием HTTP-сервисов (Мобильный клиент + HTTP Сервис + Расширение конфигурации), но там было все сумбурно без объяснений, почему именно так. В данном цикле статей расскажу и покажу в примерах накопленный опыт в данном вопросе, и мы сделаем простой легко разворачиваемый каркас HTTP-сервиса.
Примеры будут сделаны в расширении конфигурации, на платформе 8.3.10.2650. Для опытов установил ERP 2.4.3.145(Но вообще непринципиально, ставим любую свежую конфигурацию под 8.3.10). Так как параллельно в свободное время веду разработку универсального решения под названием Pretty API или «PAPI», расширение будет содержать данную аббревиатуру.
Начнем.
Почему http-сервис?
А) HTTP сервисы на платформе 1С 8.3.5.1068 появились летом 2014 года, то есть 4 года назад, а Web-сервисы и того больше. Это кощунство не использовать их до сих пор.
Б) На Хабре в официальном блоге Фирмы 1С есть статья Способы интеграции с 1С от 25 августа 2023, почитайте ее, особенно в части устаревших технологий.
В) Геморрои с разными версиями и «comcntr.dll» забываем как страшный сон! Опубликовали и пользуемся, плюсом мы получаем Вэб клиент, мобильный клиент, легкое использование нашего сервиса другими программистами (собственно API) и другие пряники.
Г) Скорость! Использую Com последние 3 года только для того чтобы показать сравнение со стандартным интерфейсом oData или http-сервисом. Когда люди видят вживую, они даже иной раз не верят, что обмен прошел!
Это все равно, что ездить каждый год на поезде по 3 суток в сторону Сочи и вдруг слетать на самолете за 2,5 часа.
!!! Использование технологии COM (доступно только на платформе Windows) !!!
Д) С версии 8.3.7.1759 могут быть встроены через расширение, а с версии 8.3.9 плюсом к ним можно встроить модули для более простой работы с ними.
E) Простота и гибкость разработки.
Ж) Стагнация — это плохо! В работе можешь не использовать, но быть всегда готов. Нельзя стоять на месте, если пошел в IT сферу.
Еще много чего можно перечислить. Минусы, тоже есть, но плюсов в разы больше.
Самый главный минус. Нужно установить и настроить веб сервер (IIS, Apache, 1С: Публикатор или 1С: Линк – Apache с интерфейсом для простого пользователя). Тут вот в чем проблема: Чаще всего администраторы почему-то не в состоянии это сделать, и приходится настраивать самому, либо они тупо устанавливают по дефолту и там начинаются пляски с бубном. Благо сейчас статей по настройки пруд пруди, ниже приведу парочку загугленных:
Пошаговая инструкция настройки web-сервисов для 1Сv8.3 и IIS 8.5, в данной инструкции особенно выделю пункт 8.
Настройка веб сервера Apache + 1С (Пошаговое руководство)
Лично я использую IIS, но на вкус и цвет как говорится.
Ближе к делу.
Создадим демо конфигурацию для опытов и добавим в него расширение. Можно создавать все объекты и не в расширении, я просто показываю вариант без изменения конфигурации. (В расширении добавление HTTP-сервисов появилось с версии 8.3.7.1759.)
Давайте перед созданием нашего HTTP-сервиса разберемся из чего складывается URL (подробнее описано на ИТС в главе 17.2.2. HTTP-сервисы):
http://host/base/hs/корневойURL/относительныйURL?ПараметрыЗапроса
host – IP адрес или доменное имя веб сервера.
base – Имя базы. Указывается при публикации.
hs — признак того, что выполняется обращение к HTTP-сервису.
корневойURL — имя ресурса, которое определяет группу ресурсов, связанных общим смыслом.
относительныйURL — определяет ресурс, к которому будет выполняться обращение. Относительный URL, указанный в запросе, будет использован для определения конкретного ресурса, к которому выполнялось обращение. Правило сопоставления задается в объекте Шаблон URL.
ПраметрыЗапроса – Не всегда обязательные параметры передаются после знака «?», чаще всего дополнительные параметры или параметры выборки, например формат ответа(format=json или format=atom).
Теперь по порядку:
Создаем сервис и задаем ему корневойURL:
Создаем Шаблон URL:
При создании шаблона можно использовать следующие символы:
Любые символы, допустимые в идентификаторах языка «1С:Предприятие».
Символ «/»;
Символы «{}» с непустым текстом между ними;
Символ *.
Наш шаблон выглядит следующим образом: /V1/{ИмяМетода}
Где {ИмяМетода} является параметром. Параметр может состоять из букв, цифр и символа подчеркивания «_».
Почему такой шаблон?
Когда смотришь различные примеры, коих очень много в шаблоны запихивают параметры. Создают по несколько методов с разными параметрами. А зачем так делать?
Вот пример с ИТС (17.2.2.3.2. Работа с документами):
Видно, что создано два Шаблона с методом Get, но по большому счету отличаются они только тем, что один ищет по номеру документ, а второй выводит все.
Все это можно реализовать одним методом, список или документ подавать в параметр ИмяМетода, а дополнительными параметрами передавать номер. А давайте сделаем!
Добавляем метод GET.
Берем код из примера ИТС.
17.2.2.3.2. Работа с документами (Тестовый пример)
Функция СписокGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Результат = "Расходная накладная, 1, 01.01.2014
|Расходная накладная, 2, 01.01.2014";
Ответ.УстановитьТелоИзСтроки(Результат);
Возврат Ответ;
КонецФункции
Функция ДокументGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Номер = Число(Запрос.ПараметрыURL.Получить("number"));
Если Номер > 2 Тогда
Ответ.КодСостояния = 404;
Ответ.УстановитьТелоИзСтроки("Отсутствует документ с номером: " + Номер);
Иначе
Если Номер=1 Тогда
Ответ.УстановитьТелоИзСтроки("Расходная накладная, 1, 01.01.2014");
Иначе
Ответ.УстановитьТелоИзСтроки("Расходная накладная, 2, 01.01.2014");
КонецЕсли;
КонецЕсли;
Возврат Ответ;
КонецФункции
Видоизменяем его и добавляем код обработки метода:
Функция PrettyAPIGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
ИмяМетода = Запрос.ПараметрыURL.Получить("ИмяМетода");
Если ИмяМетода = "Список" Тогда
Результат = "Расходная накладная, 1, 01.01.2014
|Расходная накладная, 2, 01.01.2014";
ИначеЕсли ИмяМетода = "Документ" Тогда
//ПраметрыЗапроса - number
ПарНомер = Запрос.ПараметрыЗапроса.Получить("number");
Номер = Число(?(ПарНомер=Неопределено,0,ПарНомер));
Если Номер > 2 Тогда
Ответ.КодСостояния = 404;
Результат = "Отсутствует документ с номером: " + Номер;
Иначе
Если Номер = 1 Тогда
Результат = "Расходная накладная, 1, 01.01.2014";
Иначе
Результат = "Расходная накладная, 2, 01.01.2014";
КонецЕсли;
КонецЕсли;
Иначе
Ответ.КодСостояния = 405;
Результат = "Отсутствует Метод " + ИмяМетода;
КонецЕсли;
Ответ.УстановитьТелоИзСтроки(Результат,КодировкаТекста.UTF8);
//Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
Возврат Ответ;
КонецФункции
Выполняем публикацию нашего сервиса:
Проверяем результат:
1 Получим список. Запрос: http://127.0.0.1/DemoEnterprise2_4_3_145/hs/PrettyAPI/V1/Список
Результат:
Получаем какие-то «кракозябры»! Первый раз я нарвался на этот момент с кодировкой около 4-х лет назад, ну и так как на ИТС пример как раз приводит к этому, решил показать и рассказать, как исправить.
Вы обратили внимание, что в коде функции PrettyAPIGET я оставил в самом конце закомментированную строку
//Ответ.Заголовки.Вставить(«Content—Type«,»text/html; charset=utf-8″);
Разкомментируем ее и проверим, как теперь отработает наш сервис.
2 Получим документ с номером 1. Запрос: http://127.0.0.1/DemoEnterprise2_4_3_145/hs/PrettyAPI/V1/Документ?number=1
Результат:
Важно: Хотелось бы обратить внимание на коды состояния из примера выше. Мне раза три в моей практике попадались API, которые всегда возвращали ответ с кодом 200 (200 OK («хорошо»)) и только в теле ответа, можно было понять, была ли ошибка. Это грубейшая ошибка разработчиков! Ну или это неуважение к конечному потребителю…
Передавая ответ, не забывайте про коды состояния (Список кодов состояния)!
Вот тут хороший пример по работе с ответом в зависимости от кода состояния, обратите внимание на ошибку с кодами 3XX.
Как Вы видите, мы обошлись одним Шаблоном для той же задачи. По сути можно сделать некий универсальный каркас для HTTP-метода и решать любую задачу Интеграции.
Давайте разобьем все возможные сервисы на блоки, чтобы понять, как сделать некое универсальное решение.
Сервис выполняет следующие действия:
- Получение входящих параметров и проверка их корректности
- Выполнение основных действий
- Формирование ответа
Если посмотреть пример выше, то понимаем, что все идет в вперемешку, не структурированно. Отлаживать такой сервис не очень приятно!
Я предпочитаю для HTTP-методов создавать отдельные модули и «Выполнение основных действий» осуществлять в созданном модуле. Создание отдельного модуля позволяет отлаживать HTTP-сервис через внешнюю обработку, это бывает необходимо при получении ошибки, которая говорит, что в коде есть ошибка, но отладка по HTTP не останавливается на точке остановы. Давайте «причешем» пример выше.
Создадим модуль и переделаем «получение параметров» и «формирование ответа».
Функция PrettyAPIGET(Запрос)
СтруктураВхПараметров = Новый Структура;
//Получаем имя метода
перИмяМетода = Запрос.ПараметрыURL["ИмяМетода"];
//Помещаем имя метода в структуру
СтруктураВхПараметров.Вставить("ИмяМетода",перИмяМетода);
//Забираем параметры из запроса
ВхПараметрыЗапроса = Новый Соответствие;
Для каждого Параметр Из Запрос.ПараметрыЗапроса Цикл
ВхПараметрыЗапроса.Вставить(Параметр.Ключ,Параметр.Значение);
КонецЦикла;
СтруктураВхПараметров.Вставить("ПараметрыЗапроса",ВхПараметрыЗапроса);
//Передаем входящие параметры (Модуль для метода GET)
СтруктураОтвет = PAPI_ОбработкаМетодовGET.PAPI_ОбработкаМетодовGET(СтруктураВхПараметров);
//Создаем ответ с кодом состояния
Ответ = Новый HTTPСервисОтвет(СтруктураОтвет.КодОтвета);
Если СтруктураОтвет.Отработало Тогда
Ответ.УстановитьТелоИзСтроки(СтруктураОтвет.ДанныеОтвета,КодировкаТекста.UTF8);
Иначе
Ответ.УстановитьТелоИзСтроки(СтруктураОтвет.ТекстОшибки,КодировкаТекста.UTF8);
КонецЕсли;
Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
Возврат Ответ;
КонецФункции
Модуль PAPI_ОбработкаМетодовGET
//Функция экспортная, специально чтобы можно было отлаживать как по HTTP(https://its.1c.ru/db/metod8dev#content:5756:hdoc)
//Так и через внешнюю обработку
Функция PAPI_ОбработкаМетодовGET(СтруктураВхПараметров) Экспорт
//структура ответа. Собственна нужна для формирования ответа
СтруктураОтвет = Новый Структура("ДанныеОтвета,Отработало,ТекстОшибки,КодОтвета","",Истина,"",200);
//Переправляем на нужный метод
Если ВРег(СтруктураВхПараметров.ИмяМетода) = ВРег("Список") Тогда
ПолучитьСписок(СтруктураОтвет,СтруктураВхПараметров);
ИначеЕсли ВРег(СтруктураВхПараметров.ИмяМетода) = ВРег("Документ") Тогда
ПолучитьДокумент(СтруктураОтвет,СтруктураВхПараметров);
Иначе
ЗаполнитьСтруктуруОтвета(СтруктураОтвет,405,"Отсутствует Метод " + ?(СтруктураВхПараметров.ИмяМетода=Неопределено,"",СтруктураВхПараметров.ИмяМетода),ложь,"");
КонецЕсли;
Возврат СтруктураОтвет;
КонецФункции
//Заполняем структуру ответа
Процедура ЗаполнитьСтруктуруОтвета(СтруктураОтвет,КодОтвета,ТекстОшибки,Отработало,ДанныеОтвета)
СтруктураОтвет.КодОтвета = КодОтвета;
СтруктураОтвет.ТекстОшибки = ТекстОшибки;
СтруктураОтвет.Отработало = Отработало;
СтруктураОтвет.ДанныеОтвета = ДанныеОтвета;
КонецПроцедуры
//МЕТОДЫ
Процедура ПолучитьСписок(СтруктураОтвет,СтруктураВхПараметров)
Результат = "Расходная накладная, 1, 01.01.2014
|Расходная накладная, 2, 01.01.2014";
СтруктураОтвет.ДанныеОтвета = Результат;
КонецПроцедуры
Процедура ПолучитьДокумент(СтруктураОтвет,СтруктураВхПараметров)
//ПраметрыЗапроса - number
ПарНомер = СтруктураВхПараметров.ПараметрыЗапроса.Получить("number");
Номер = Число(?(ПарНомер=Неопределено,0,ПарНомер));
Если Номер > 2 Тогда
ЗаполнитьСтруктуруОтвета(СтруктураОтвет,404,"Отсутствует документ с номером: " + Номер,ложь,"");
Иначе
Если Номер = 1 Тогда
Результат = "Расходная накладная, 1, 01.01.2014";
Иначе
Результат = "Расходная накладная, 2, 01.01.2014";
КонецЕсли;
СтруктураОтвет.ДанныеОтвета = Результат;
КонецЕсли;
КонецПроцедуры
Как вы видите, размер кода увеличился, но стало гораздо проще добавлять новые методы.
Нужно просто добавить в проверку (PAPI_ОбработкаМетодовGET.PAPI_ОбработкаМетодовGET) новое имя метода и процедуру для этого метода.
По отладке HTTP-сервисов рекомендую статью с ИТС (https://its.1c.ru/db/metod8dev#content:5756:hdoc)
Первую часть заканчиваю. Мы рассмотрели с Вами как создать каркас для Get метода. В следующих частях поговорим про другие методы, про oData и JSON. Как и в этой статье будут примеры, но более интересные.
Статьи из данного цикла:
HTTP Сервисы: Путь к своему сервису. Часть 2
HTTP Сервисы: Путь к своему сервису. Часть 3
HTTP Сервисы: Путь к своему сервису. Часть 4
На платформе 1C начиная от версии 8.3.5 и выше появилась новая возможность создания сервисов с уникальными HTTP services URL. Подобные системы позволяют не только осуществлять штатные задачи, как отправку, прием и корректировку данных, но и обладают куда более глубокими возможностями. Например, формирование простых, но действенных клиентских приложений. Плюс, что примечательно, общая нагрузка на сам сервер снижается, благодаря уменьшению объема сведений, а также их оптимизации.
В результате мы получаем отличный инструмент, позволяющих реализовывать самые непростые задания даже на смартфонах, ведь вычислительная мощность потребуется относительно небольшая.
Шаблон создания HTTP сервиса 1С
В первую очередь нам понадобится сам веб-сервер. Отличным вариантом считается Apache, подходящий версией от 2.2 и выше. Конкретнее про установку мы поговорим дальше в представленным обзоре, пока же по вводным факторам.
Для начала создаем сам serves. Вводим произвольное название, фактически роли это не играет.
А вот сам URL – это куда более важная часть. Именно по этому адресу будет доступен корневой каталог, поэтому заранее определите корректное наименование.
Свойств у только что нами созданного URL немного, а именно одно – шаблон. Это запись, по которой будет доступен путь до serves.
Вы можете задавать параметры для сегментирования. То есть, градировать на неопределенное количество внутренних разделов. Выполняется это с помощью следующих настроек.
А вот у методов уже есть возможность присвоения множества свойств. Таких, как движение, удаление, блокирование, соединение, получение, путь и так далее.
При обращении к системе автоматически будет сопоставлен введенный адрес с имеющимся шаблоном. И если они соответствуют, то в ответ выдается выбранный вами метод. Если же соответствия не произошло, то ответная реакция от HTTP сервиса 1С будет 404, что является кодом ошибки.
Публикация и проверка
Завершающим шагом будет отправка нашего созданного шаблона в работу. Но на многих версиях этого не получится сделать, если сама программа не была запущена от имени администратора. Если не получилось опубликовать ваш вариант, просто закройте конфигуратор и откройте снова через щелчок правой кнопки мыши и выбор соответствующей опции.
Итак, если мы все сделали верно, то в случае этого примера, он будет доступен по адресу – localhost/HTTPTest/hs/Obmen/test-parametr/Test/GetInfo?param=value.
Разберем каждый сегмент этого пути:
- Localhost – соответственно, сам адрес изначального сервера.
- HTTPTest – как вы можете наблюдать из скрина, именно такой набор символов мы ввели в названии нашей тестовой публикации.
- Hs – а вот это важнейшая часть. Это указатель, который дает понятие о том, что происходит именно обращение к 1С HTTP сервису.
- Obmen – это название корневого каталога, который мы задавали ранее.
- test-parametr – соответственно, указанный нами изначально метод определения, а точнее, его путь.
- GetInfo – это уже наименование.
- param=value – нестрогий вариант параметров.
При выполнении процедуры произойдет следующее.
Здесь мы обратились к методу, получили соответствующий ответ. При этом для работы нам в любом случае понадобится авторизация. И решить возникшее затруднение в принципе несложно. Потребуется просто задать новый логин и пароль. А после авторизоваться по введенным опциям. Но есть и другая методика реализации этой функции, если обратиться к 1С HTTP сервис vrd. Мы напрямую можем изменить файл default, добавив в блокнот следующую запись – Usr=Логин; Pwd=Пароль. В результате надобности в авторизации как таковой не будет. И наша публикация будет доступна свободно.
Готовые решения для всех направлений
Ускорь работу сотрудников склада при помощи мобильной автоматизации. Навсегда устраните ошибки при приёмке, отгрузке, инвентаризации и перемещении товара.
Узнать больше
Мобильность, точность и скорость пересчёта товара в торговом зале и на складе, позволят вам не потерять дни продаж во время проведения инвентаризации и при приёмке товара.
Узнать больше
Обязательная маркировка товаров — это возможность для каждой организации на 100% исключить приёмку на свой склад контрафактного товара и отследить цепочку поставок от производителя.
Узнать больше
Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.
Узнать больше
Повысь точность учета имущества организации, уровень контроля сохранности и перемещения каждой единицы. Мобильный учет снизит вероятность краж и естественных потерь.
Узнать больше
Повысь эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.
Узнать больше
Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.
Узнать больше
Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.
Узнать больше
Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..
Узнать больше
Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.
Узнать больше
Показать все решения по автоматизации
Отладка
Итак, чтобы в принципе была возможность корректировки, нам в изначальном файле нужно прописать некоторые параметры. А точнее – в режиме отладчика поставить опцию «Разрешена по IP/TCP». А также указать адрес сервера в соответствующем пункте.
Далее зайдем в режим чуть глубже, выберем в настройках – автоматическое подключение. Перед нами раскроется новая вкладка, где мы определим исходные факторы. Галочку необходимо поставить лишь одну, напротив соответствующего типа авто-коннекта. Поскольку мы говорим про методы обмена данными через веб HTTP сервис 1С между базами, нам и понадобится эта настройка.
А теперь перезапускаем сам сервер. Внесенные изменения должны ведь еще и сохраниться перед началом работы. После этого публикация станет доступной. Помните, что в принципе тестирование и оптимизацию можно провести не только внутренними силами программы, но и сторонними утилитами отладчиками. Fiddler2 может стать неплохим способом.
Не будем путать эти дополнительные инструменты с теми, которые помогают внедрить саму платформу в текущую программную экосистему на предприятии. Они носят совершенно иное название. А именно – 1С сервисы интеграции, что это легко понять, представив помощника, который просто связывает всю текущую систему 1C, ее задачи и нужды и ПО. Получается, переносит все требования в настройки конфигуратора.
Помните, что, если у вас не выходит самостоятельно произвести все обозначенные действия, вы всегда можете обратиться к поставщику программного обеспечения. Да, не все из них готовы взять на себя подобного рода деятельность. Но, заказывая ПО у «Клеверенс», вы получаете:
- полноценное внедрение систем;
- адаптацию для различных предприятий;
- по желанию полное техническое сопровождение;
- отладку;
- сервисы интеграции 1С.
Требование к инструментам
Теперь пойдем более подробно по всем возможностям. Чтобы у наших читателей не осталось вопросов. Раздел для тех, кто решил действовать самостоятельно. Первое, что понадобится, платформа/компьютер и доступ в интернет. Далее, как уже упоминалось, установленный сервер. И само программное обеспечение. И если первый пункт пояснений не требует, то с остальным давайте разбираться подробнее.
Веб-сервер Apache
Для начала зайдем на официальный сайт разработчика. И найдем здесь только голые исходники. Да, конкретно дистрибутива на платформе в наличии нет, это не компетенция проекта. А лежит она в плоскости деятельности различных партнеров. Благо, на самом виртуальном ресурсе есть соответствующие ссылки. Воспользуемся одной из них.
Действия такие – открываем скаченный exe-шник, но обязательно производим запуск от имени администратора. Иначе часть функций останется недоступными, а значит, установка пройдет некорректным образом.
Начальные параметры скорее стоит оставить по умолчанию, в основном они выбраны правильно для новичков. Единственное «но» заключается в выборе дополнительных компонентов. Вот здесь настолько огромный массив нам точно не понадобится. Поэтому снимаем галочки с лишних окон.
Если все прошло удачно, суммы файлов совпали, то после завершения процедуры у нас автоматически активируется приложение XAMPP.
Это правильно, но именно так оно будет отображаться, только если это ваша первая установка подобного программного обеспечения. Дело в том, что для подключения утилита занимает 80-ый порт. А значит, его не должны использовать другие программы. Если подобное случится, то вы получите совершенно иное сообщение. А выглядеть оно будет так.
Ничего страшного не случится даже в этом случае. Все, что нам нужно – это открыть конфигурации, чтобы внести некоторые корректировки. Для этого находим строчку Listen, и в ее числовом значении на конце после точки стираем написанное, вручную добавляем цифры 8080. Такие же манипуляции проводим и с именем сервера в том же раскрывшемся файле. Проблема решена.
Но осталась другая – нужно присвоить серверу свойство службы нашего Windows. Зачем это делать? Дело в том, что в противном случае параметры запроса к HTTP сервису 1С (httpсервисзапрос) будут не учитывать сам Apache. Соответственно, мы не сможем выбрать его в качестве источника публикации, после того как создадим наш проект.
Нам нужно найти установочный файл сервера с разрешением .bat. А после изменить в нем путь, дописав вот это – HTTPd.exe. Сохраните внесенные изменения. А теперь просто попробуйте его запустить, но опять же, обязательно от имени администратора. Вас должно ожидать подобное.
Устанавливаем платформу
Чтобы использовать возможности ПО, нужно его установить, логично. И процедура еще легче, чем предыдущая. Также запускаем exe-шник, оставляем все настройки на своих местах. Только добавляем модули расширения.
Рекомендуется после установки здесь же запустить новую базу. Для отладки некоторых моментов. А именно, заходим в конфигурации и активируем режим модульного использования.
Пара слов о протоколе
Давайте уделим немного внимания самому HyperText Transfer Protocol. Копнем слегка в его структуру, чтобы понимать, с чем имеем дело. А ее схематично можно представить вот таким образом.
Название структурного элемента |
Пояснение |
Строка запроса |
Поясняется сам метод, с помощью которого будет происходить обмен информацией. Соответственно, это и версия, и сам URL |
Заголовок |
Короткое описание, которое обычно содержит ключевые по значению параметры |
Разделитель |
Пустая строка |
Тело |
Содержание информационного пакета. Примечательно, что фактически он вполне может быть незаполненным, но обозначенные выше сегменты все равно должны присутствовать |
Как работает обмен данными
Немного поняв принципы самого протокола, переходим к тому, как обратиться к HTTP сервису 1C (1С:8), пример запроса выглядит так.
Рассмотрим более подробно.
Запрос
Эта функция позволяет нам с помощью объектного программирования составить текстовую составляющую адреса и заголовки. Первый момент отвечает за путь, которой направляет нас на объект, второй – содержит параметр соответствия. Примечательно, что вручную заполнять ничего не придется.
Соединение
Функция для передачи информации по протоколу. Может использовать различные типы защиты, например, TLS 1.2. При этом снабжается мерами аутентификации, то есть, необходимо введение логина и пароля.
Для обработки используются различные методы, как получить, отправить, отказать и так далее. Допустимо построение некоторых форм, как вариант:
Одним из распространенных способов является также 1C HTTP сервисы post-метода.
Далее мы рассмотрим, как происходит работа связки этих двух параметров на практике.
Создание соединения
Если рассматривать все на примере кода, то в самой первой строке нам нужно указать тип обмена данными, а также название нашего нового фрагмента. Допустим, «Закупка товаров» или любое иное, по вашему усмотрению.
Заголовок
Далее нам необходимо задать соответствие. В принципе, здесь есть только два основополагающих параметра. Первый – accept. Команда предназначена для определения типа сведений, а также файлов, которые будут приняты на сервере. Это картинки в обозначенных форматах, видеофайлы, текстовые и так далее.
Второй – user-agent. Это наименование инструмента, с помощью которого мы и осуществляем коннект.
Создаем запрос
Теперь по аналогии мы и запрашиваем исполнение файла. Сама форма состоит из двух частей. Первая — включает в себя путь до этого объекта, а вторая – ее тип соответствия. Если это изображение в .jpg, то так и прописывается. Для понимания – /wp-content/uploads/2021/11/sait.ru-logo-200wide-65high-2021-12-04-v12.png, примерно так будет выглядеть наш запрос.
Отправка
Для передачи нам понадобится лишь указать наименование объекта. Правда, полностью и с точностью. А также присвоить параметр получения, звучит он в программе, как Get.
Обработка
Обращаем внимание на код, который идентифицирует состояние процесса. Нас устраивает только успешная пересылка, а она обозначается как 200.
Работа с базами
Общие принципы мы уже успели уяснить. Теперь закрепим на конкретном прикладном кейсе. Итак, мы создаем новый проект с рандомным наименованием. Давайте, возьмем объект – клиенты (контрагенты).
В общих параметрах мы создаем соответствующий клиентский лист.
А также задаем метод обработки входящих данных, чтобы сервер распознавал, что от него вообще требуется.
Далее пойдем по коду.
Создание перечня customers
Для начала присваиваем значение для все базы, потом для каждого конкретного человека из общего перечня. Берем для идентификации следующие данные: имя, идентификатор, номер его мобильного телефона, а также адрес электронной почты. В общем-то, полностью готовый лид.
Сериализуем данные
То есть, мы переводим их из первоначальной формы в программную. Чтобы свободно передавать в качестве информационного потока.
Составляем ответ
Теперь же нам нужно указать, что именно даст обратно сервис, если к нему обратятся с соответствующим запросом.
Как мы помним, 200 – значение положительного результата нашей функции. Опубликованный запрос принимает следующий вид.
А в самом конфигураторе поиск выглядит так.
Забив же адрес в браузере, мы проследим ответ в форме сериализованных сведений.
Запрос на CustomerCode
Теперь разберем код, который позволит по идентификатору найти искомое лицо. Выполняется это также несложно.
Сначала сформируем сам запрос, который направим через 1С веб-сервис rest. Выглядит так.
Функция понятна. Если данных не найдено, то после параметра then у нас сработает следующая строка.
Как видим, в этом случае ответ не выдается. Очевидно, ведь его просто нет, по указанному идентификатору в базе никаких контрагентов не находится. Что же следует после else.
Правильно, при найденном номере автоматически заполняется карточка. Вносятся сведения по имени, номеру смартфона и электронной почте. Соответственно, итоговое искомое лицо и вся его характеристика найдена.
И не забываем про сериализацию, в противном случае отправку совершить будет невозможно.
Это тоже своего рода защита, как S в протоколе. То есть, 1С HTTP сервисы и HTTPS отличаются только степенью защищенности пользовательских данных.
Формируем ответ
Мы нашли нужного человека. Теперь нам необходимо, чтобы программа выдала данные в приемлемой форме. Вот в такой.
Итог.
Касательно post – алгоритм такой же.
И выдача приобретает такой вид.
Заключение
Как вы понимаете, для человека, который не прошел специальное обучение, освоение этой техники с нуля будет довольно проблематичным. Придется потратить значительное время, чтобы освоиться. Поэтому созданием и настройкой обычно занимаются профессионалы. Если же на вашем предприятии такого сотрудника нет, то логично будет пройти обучение. Ведь если не работает HTTP сервис 1С и обмен данными через 1C, настройка – в 90% и является причиной случившегося. Просто неверны базовые параметры. Соответственно, чтобы не парализовать производство всего отдела, к работе стоит допускать только компетентного человека, прошедшего соответствующий курс.
Количество показов: 8638