В продолжение публикации Реализация скачивания печатной формы документа через веб-сайт с использованием HTTP-сервиса , спасибо ув. ltfriend...
Задача: По запросу вида http://<адрес_базы_1с>/hs/GetDocumentsPDF/list/<PIN&Date1&Date2> передавать список документов клиента со ссылками на скачивание по его Pin коду за период Date1-Date2. Выгрузка будет происходить из программы "Бухгалтерия Предприятия 3.0" (БСП 3). Выгружаем печатные формы Актов сверки, Реализаций и Счетов-фактур.
Создадим HTTP-сервис:
Так как http-сервис создавался в Расширении конфигурации, то добавим Подсистему и в нее включим наш сервис:
Шаблон №1. Получение списка документов Контрагента:
В созданный шаблон добавим HTTP-метод GET:
Обработчик этого метода:
Функция ПолучитьСписокДокументовGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
ПараметрыЗапроса = Новый Массив;
Попытка
ПараметрыЗапроса = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Запрос.ПараметрыURL.Получить("PIN_Date1_Date2"),"&");
Если ПараметрыЗапроса.Количество() <> 3 Тогда
HTTPОтвет = Новый HTTPСервисОтвет(400); // 400 - Bad Request
HTTPОтвет.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Переданы неверные параметры'"));
Возврат HTTPОтвет;
Иначе
//По условиям даты передаются в формате "20200101". Если иначе - меняем код.
Попытка
ПараметрыЗапроса[1] = Дата(ПараметрыЗапроса[1]+"000000");
ПараметрыЗапроса[2] = Дата(ПараметрыЗапроса[2]+"235959");
Исключение
HTTPОтвет = Новый HTTPСервисОтвет(400); // 400 - Bad Request
HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Переданы неверные параметры даты'"));
HTTPОтвет.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
Возврат HTTPОтвет;
КонецПопытки;
КонецЕсли;
Исключение
HTTPОтвет = Новый HTTPСервисОтвет(400); // 400 - Bad Request
HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Переданы неверные параметры'"));
HTTPОтвет.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
Возврат HTTPОтвет;
КонецПопытки;
ЗапросДокументов = Новый Запрос;
ЗапросДокументов.УстановитьПараметр("Пин", ПараметрыЗапроса[0]);
ЗапросДокументов.УстановитьПараметр("ДатаН", ПараметрыЗапроса[1]);
ЗапросДокументов.УстановитьПараметр("ДатаК", ПараметрыЗапроса[2]);
ЗапросДокументов.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","БиллингИД_Договоры"));
ЗапросДокументов.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка КАК Договор
|ПОМЕСТИТЬ ВТДоговоры
|ИЗ
| Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
|ГДЕ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство
| И ДоговорыКонтрагентовДополнительныеРеквизиты.Значение = &Пин
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ""АктСверкиВзаиморасчетов"" КАК Type,
| АктСверкиВзаиморасчетов.Ссылка КАК Ref,
| АктСверкиВзаиморасчетов.Номер КАК Number,
| АктСверкиВзаиморасчетов.Дата КАК Date,
| АктСверкиВзаиморасчетов.Представление КАК Present
|ИЗ
| ВТДоговоры КАК ВТДоговоры
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
| ПО ВТДоговоры.Договор = АктСверкиВзаиморасчетов.ДоговорКонтрагента
|ГДЕ
| АктСверкиВзаиморасчетов.Дата >= &ДатаН
| И АктСверкиВзаиморасчетов.Дата <= &ДатаК
| И АктСверкиВзаиморасчетов.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""РеализацияТоваровУслуг"",
| РеализацияТоваровУслуг.Ссылка,
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Дата,
| РеализацияТоваровУслуг.Представление
|ИЗ
| ВТДоговоры КАК ВТДоговоры
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ПО ВТДоговоры.Договор = РеализацияТоваровУслуг.ДоговорКонтрагента
|ГДЕ
| РеализацияТоваровУслуг.Дата >= &ДатаН
| И РеализацияТоваровУслуг.Дата <= &ДатаК
| И РеализацияТоваровУслуг.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""СчетФактураВыданный"",
| СчетФактураВыданный.Ссылка,
| СчетФактураВыданный.Номер,
| СчетФактураВыданный.Дата,
| СчетФактураВыданный.Представление
|ИЗ
| ВТДоговоры КАК ВТДоговоры
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ПО ВТДоговоры.Договор = СчетФактураВыданный.ДоговорКонтрагента
|ГДЕ
| СчетФактураВыданный.Дата >= &ДатаН
| И СчетФактураВыданный.Дата <= &ДатаК
| И СчетФактураВыданный.Проведен";
//В моем случае Pin - это дополнительный реквизит справочника договоры
//Не закидывайте камнями раздел поиска Актов сверки. Клиент сказал, что по каждому договору
//всегда отдельный акт, поэтому поиск по шапке (ну "Баба с возу...")
Результат = ЗапросДокументов.Выполнить().Выгрузить();
Результат.Колонки.Добавить("Link"); //Добавим колонку ссылки на скачивание
Для Каждого Стр из Результат Цикл
Стр.Date = Строка(Стр.Date); //иначе не грузится в JSON
Стр.Link = Запрос.БазовыйURL+"/download/"+XMLСтрока(Стр.Ref);
КонецЦикла;
Результат.Колонки.Удалить("Ref"); // ссылка на документ уже не нужна
//Конвертируем в массив структур и закидываем в JSON
МассивСтруктур = ОбщегоНазначения.ТаблицаЗначенийВМассив(Результат);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, МассивСтруктур);
СтрокаДляОтвета = ЗаписьJSON.Закрыть();
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-type", "application/json; charset=utf-8"); //чтобы небыло ошибок с кодировкой русских букв
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Возврат Ответ;
КонецФункции
Шаблон №2. Почти ничем не отличается от приведенной выше публикации:
В созданный шаблон добавим HTTP-метод GET:
Обработчик этого метода:
Функция ПолучитьПечатнуюФормуGET(Запрос)
Попытка
// Получим переданный в HTTP-запросе идентификатор документа.
Идентификатор = Новый УникальныйИдентификатор(Запрос.ПараметрыURL["Ident"]);
Исключение
// Полученный параметр не смогли преобразовать в тип "УникальныйИдентификатор".
HTTPОтвет = Новый HTTPСервисОтвет(400); // 400 - Bad Request
HTTPОтвет.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Передан неверный идентификатор'"));
Возврат HTTPОтвет;
КонецПопытки;
// Найдём документ по полученному идентификатору.
// Т.к. набор типов ограничен - можно использовать данную конструкцию, Если по всей базе,
// то на Infostart встречаются обработки поиска по GUID с перебором
ДокументСсылка = Документы.АктСверкиВзаиморасчетов.ПолучитьСсылку(Идентификатор);
ТипДок = "АктСверкиВзаиморасчетов";
Если ДокументСсылка.ПолучитьОбъект() = Неопределено Тогда
ДокументСсылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Идентификатор);
ТипДок = "РеализацияТоваровУслуг";
Если ДокументСсылка.ПолучитьОбъект() = Неопределено Тогда
ТипДок = "СчетФактураВыданный";
ДокументСсылка = Документы.СчетФактураВыданный.ПолучитьСсылку(Идентификатор);
КонецЕсли;
КонецЕсли;
// на всякий случай, вдруг не найдено
Если ДокументСсылка.ПолучитьОбъект() = Неопределено Тогда
// Документ с таким уникальным идентификатором не существует.
HTTPОтвет = Новый HTTPСервисОтвет(404); // 404 - Not Found
HTTPОтвет.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Документ не найден'"));
Возврат HTTPОтвет;
КонецЕсли;
//Область формирования Печатных форм - В Акте сверки процедура не экспортная, поэтому требуется обвязка в расширении
#Область ФормированиеПечатнойФормыДокумента
Если ТипДок = "АктСверкиВзаиморасчетов" Тогда
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ДокументСсылка);
ОбъектыПечати = Новый СписокЗначений;
ПараметрыПечати = Новый Структура;
ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами", Ложь);
// Вызов вспомогательной процедуры из расширения.
ТабличныйДокумент = Документы.АктСверкиВзаиморасчетов.HttpСервисПечатныеФормы_ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);
ИначеЕсли ТипДок = "РеализацияТоваровУслуг" Тогда
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ДокументСсылка);
ОбъектыПечати = Новый СписокЗначений;
ОбъектыПечати.Добавить(ДокументСсылка, "Документ_1");
ПараметрыПечати = Новый Структура;
ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами", Ложь);
ПараметрыПечати.Вставить("ИмяПараметровПечати", "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_ТОРГ12");
ТаблицаСведенийТОРГ12 = Документы.РеализацияТоваровУслуг.ПолучитьТаблицуСведенийТОРГ12(МассивОбъектов, Истина);
// Вызов типовой процедуры печати документа.
ТабличныйДокумент = ПечатьТорговыхДокументов.ПечатьТОРГ12(ТаблицаСведенийТОРГ12, ОбъектыПечати, ПараметрыПечати)
ИначеЕсли ТипДок = "СчетФактураВыданный" Тогда
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ДокументСсылка);
ОбъектыПечати = Новый СписокЗначений;
ПараметрыПечати = Новый Структура;
ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами", Ложь);
//ТекстЗапросаПечатьСчетовФактур = Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(,,Истина);
// Вызов типовой процедуры печати документа.
ПорядокПримененияФормСФ =
УчетНДСПереопределяемый.СоответствиеВерсийПостановленияФормамСчетовФактур();
ТипМакета = ПолучитьМакетСФ(ДокументСсылка);
Если ТипМакета = "КорректировочныйСчетФактура534Прослеж" Тогда
ТабличныйДокумент = УчетНДС.ПечатьКорректировочныхСчетовФактур534Прослеж(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура534Прослеж"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "КорректировочныйСчетФактура534" Тогда
ТабличныйДокумент = УчетНДС.ПечатьКорректировочныхСчетовФактур534(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура534"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "КорректировочныйСчетФактура981" Тогда
ТабличныйДокумент = УчетНДС.ПечатьКорректировочныхСчетовФактур981(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура981"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "КорректировочныйСчетФактура952" Тогда
ТабличныйДокумент = УчетНДС.ПечатьКорректировочныхСчетовФактур952(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура952"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "КорректировочныйСчетФактура1137" Тогда
ТабличныйДокумент = УчетНДС.ПечатьКорректировочныхСчетовФактур1137(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура1137"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "КорректировочныйСчетФактура981Аванс" Тогда
ТабличныйДокумент = УчетНДС.ПечатьКорректировочныхСчетовФактур981Аванс(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура981Аванс"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "СчетФактура534Прослеж" Тогда
ТабличныйДокумент = УчетНДС.ПечатьСчетовФактур534Прослеж(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(ПорядокПримененияФормСФ["СчетФактура534Прослеж"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "СчетФактура534" Тогда
ТабличныйДокумент = УчетНДС.ПечатьСчетовФактур534(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(ПорядокПримененияФормСФ["СчетФактура534"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "СчетФактура981" Тогда
ТабличныйДокумент = УчетНДС.ПечатьСчетовФактур981(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(ПорядокПримененияФормСФ["СчетФактура981"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "СчетФактура1137" Тогда
ТабличныйДокумент = УчетНДС.ПечатьСчетовФактур1137(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(ПорядокПримененияФормСФ["СчетФактура1137"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "КорректировочныйСчетФактура" Тогда
ТабличныйДокумент = УчетНДСБП.ПечатьКорректировочныхСчетовФактур(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьКорректировочныхСчетовФактур(ПорядокПримененияФормСФ["КорректировочныйСчетФактура"]), ПараметрыПечати);
ИначеЕсли ТипМакета = "СчетФактура" Тогда
ТабличныйДокумент = УчетНДСБП.ПечатьСчетовФактур(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(ПорядокПримененияФормСФ["СчетФактура"]), ПараметрыПечати);
Иначе
ТабличныйДокумент = УчетНДС.ПечатьСчетовФактур981(МассивОбъектов, ОбъектыПечати, Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(ПорядокПримененияФормСФ["СчетФактура981"]), ПараметрыПечати);
КонецЕсли;
КонецЕсли;
#КонецОбласти
// Запишем табличный документ в поток в памяти в формате PDF. Зачет автору Исходной публикации!
Поток = Новый ПотокВПамяти;
ТабличныйДокумент.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);
// Получим двоичные данные из потока для отправки клиенту
ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
#Область ОтправкаОтветаКлиенту
// Сформируем имя файла, с которым печатная форма будет загружена у клиента.
ИмяФайла = Строка(ДокументСсылка) + ".pdf";
// Кодируем строку URL, чтобы избежать проблем с русскими буквами и другими символами (например, пробел).
ИмяФайла = КодироватьСтроку(ИмяФайла, СпособКодированияСтроки.КодировкаURL);
// Создадим ответ.
HTTPОтвет = Новый HTTPСервисОтвет(200); // 200 - OK
HTTPОтвет.Заголовки.Вставить("Content-Type", "application/pdf"); // Чтобы браузер знал, что это PDF
HTTPОтвет.Заголовки.Вставить("Content-Disposition", "attachment; filename=""" + ИмяФайла + """");
HTTPОтвет.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанные);
Возврат HTTPОтвет;
#КонецОбласти
КонецФункции
Функция ПолучитьМакетСФ(Объект)
// Определим дату для получения версии печатной формы.
Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураПолученный") Тогда
ДатаВерсии = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект, "ДатаВходящегоДокумента");
Иначе
РеквизитыСчетаФактуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект,
"Исправление, ВидСчетаФактуры, Дата, ДатаИсходногоДокумента, ДатаИсправляемогоКорректировочногоДокумента");
Если РеквизитыСчетаФактуры.Исправление Тогда
Если РеквизитыСчетаФактуры.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный Тогда
ДатаВерсии = РеквизитыСчетаФактуры.ДатаИсправляемогоКорректировочногоДокумента;
Иначе
ДатаВерсии = РеквизитыСчетаФактуры.ДатаИсходногоДокумента;
КонецЕсли;
Иначе
ДатаВерсии = РеквизитыСчетаФактуры.Дата;
КонецЕсли;
КонецЕсли;
Если УчетНДСПереопределяемый.ИспользуетсяПостановлениеНДС1137(ДатаВерсии) Тогда
ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(ДатаВерсии);
Если Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный
ИЛИ Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.Корректировочный Тогда
Если ВерсияПостановленияНДС1137 >= 5 Тогда
Если Объект.ЕстьПрослеживаемыеТовары Тогда
Возврат "КорректировочныйСчетФактура534Прослеж";
Иначе
Возврат "КорректировочныйСчетФактура534";
КонецЕсли;
ИначеЕсли ВерсияПостановленияНДС1137 = 4 Тогда
Возврат "КорректировочныйСчетФактура981";
ИначеЕсли ВерсияПостановленияНДС1137 > 1 Тогда
Возврат "КорректировочныйСчетФактура952";
Иначе
Возврат "КорректировочныйСчетФактура1137";
КонецЕсли;
ИначеЕсли Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.КорректировочныйНаАванс Тогда
Если ВерсияПостановленияНДС1137 >= 5 Тогда
Возврат "КорректировочныйСчетФактура534";
Иначе
Возврат "КорректировочныйСчетФактура981Аванс";
КонецЕсли;
Иначе
Если ВерсияПостановленияНДС1137 >= 5 Тогда
Если Объект.ЕстьПрослеживаемыеТовары Тогда
Возврат "СчетФактура534Прослеж";
Иначе
Возврат "СчетФактура534";
КонецЕсли;
ИначеЕсли ВерсияПостановленияНДС1137 = 4 Тогда
Возврат "СчетФактура981";
Иначе
Возврат "СчетФактура1137";
КонецЕсли;
КонецЕсли;
Иначе
Если Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.Корректировочный
ИЛИ Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.Корректировочный Тогда
Возврат "КорректировочныйСчетФактура";
Иначе
Возврат "СчетФактура";
КонецЕсли;
КонецЕсли;
КонецФункции
Далее в ММ Акта сверки в расширении добавим вызов НЕэкспортной процедуры печати:
Функция HttpСервисПечатныеФормы_ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) Экспорт
Результат = ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);
Возврат Результат;
КонецФункции
Таким образом при отправке запроса в браузере к опубликованной на Web-сервере базе (как опубликовать - гугл в помощь, статей - море) вида http://<адрес_базы_1с>/hs/GetDocumentsPDF/list/<PIN&Date1&Date2> мы получаем JSON структуру с готовыми ссылками на скачивание PDF-документов.
P.S. Теперь пару слов про авторизацию в 1С при таком подключении. При отправке запроса появляется окно авторизации:
Далее инструкция для сервера Apache 2.4. Для IIS - думаю не сильно сложнее.
Публикуем базу "Второй раз": в файле C:\Apache24\conf\httpd.conf (или другой путь как у вас) добавляем:
# 1c publication Основная
Alias "/YourBase_buh" "C:/www/YourBase_buh/"
<Directory "C:/www/YourBase_buh/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/www/YourBase_buh/default.vrd"
</Directory>
# 1c publication Для Http-сервиса
Alias "/YourBase_http" "C:/www/YourBase_http/"
<Directory "C:/www/YourBase_http/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/www/YourBase_http/default.vrd"
</Directory>
Перезапускаем службу web-сервера.
Теперь в файле C:/www/YourBase_http/default.vrd оставляем/добавляем следующее:
Логин пароль, выключаем обычный вход через Web : enable = "false".
Оставляем только http-сервисы: стандартные выключены, из расширений - включены. Если конфа измененная, то можно один оставить по имени.
<?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="/YourBase_http"
ib="Srvr="127.0.0.1";Ref="YourBase_buh";Usr=HTTPService;Pwd=password" enable="false">
<httpServices publishExtensionsByDefault="true">
<service name="ExternalAPI"
rootUrl="api"
enable="false"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="MobileAppReceiptScanner"
rootUrl="MobileAppReceiptScanner"
enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="ПередачаДанных"
rootUrl="dt"
enable="false"
reuseSessions="use"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="ЭДО"
rootUrl="edi"
enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</httpServices>
</point>
Все!