Обмен через ВЕБ Сервисы 1 часть
Теги: веб-сервис,web-сервис,XML,1С,ws

Обмен xml файлами через ВЕБ Сервисы (Запрос остаток товаров с одной базы на другую по wеб сервису,)  настройка и создание web сервиса.

# Код реализации

```1c
//1.Создаем web-сервис (заполняем только "Основные" и "Прочее", пока что ...)
//      - Имя любое(не критично, но желательно на англ.)
//      -URl пространство имен - вводим ip адресс для удобства (пример: 127.7.7.7)
//      -Пакеты XDTO , я еще не совсем разобрался )), поэтому выбираю стандартный
//        (http://v8.1c.ru/8.1/xdto),  особой роли не играет в данном примере.
//        -Имя файла публикации - Любое значение с форматом *.1cws(Пример:  Obmen.1cws)
//2. Создаем Операцию с параметрами (Напоминает стандартную "Функцию" с параметрами)
//       Например -Операция "ОстаткиТоваровНТТ"
//       тип возвращаемого значение- "Строка"- string (http://www.w3.org/2001/XMLSchema)
//3 создаем операции :Время с Типом: DataTime , Склад с Типом: string - пока хватит )
//4 создаем процедуру для операции "ОстаткиТоваровНТТ", в свойствах операции и
//  заполним функцию ниже:
//5 в самом конце, обновляем базу и публикуем, готово!


Функция ОстаткиТоваровНТТ(Склад, Время)

	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.УстановитьСтроку("UTF-8");
	ЗаписьXML.ЗаписатьОбъявлениеXML();  // Записываем объявление XML
	ЗаписьXML.ЗаписатьНачалоЭлемента("ОстаткиТоваров");

	Запрос = Новый Запрос;
	Запрос.Текст ="ВЫБРАТЬ
	              |	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	              |	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	              |	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
	              |	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
	              |	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
	              |	СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
	              |ИЗ
	              |	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериод, &КонПериод, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
	              |ГДЕ
	              |	ТоварыНаСкладахОстаткиИОбороты.Склад = &Склад
		      |СГРУППИРОВАТЬ ПО
	              |	ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
	              |	ТоварыНаСкладахОстаткиИОбороты.Склад,
	              |
	              |УПОРЯДОЧИТЬ ПО
	              |	Номенклатура УБЫВ";

	Запрос.УстановитьПараметр("НачПериод", Дата(НачалоДня(Время)));
	Запрос.УстановитьПараметр("КонПериод", Дата(КонецДня(Время)));
	Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоНаименованию(Склад,Истина));  //склад заморозки Москва

	Если запрос.Выполнить().Пустой() тогда
		ответ = "За выбранный период остатков не найдено";
	        возврат ответ;
	КонецЕсли;
	Результат = Запрос.Выполнить().Выбрать();
	пока Результат.Следующий() цикл
		ЗаписьXML.ЗаписатьНачалоЭлемента("Результат");
		ЗаписьXML.ЗаписатьАтрибут("Склад", Строка(Результат.Склад));
	   	ЗаписьXML.ЗаписатьАтрибут("КоличествоНачальныйОстаток", Строка(Результат.КоличествоНачальныйОстаток));
		ЗаписьXML.ЗаписатьАтрибут("КоличествоПриход", Строка(Результат.КоличествоПриход));
		ЗаписьXML.ЗаписатьАтрибут("Номенклатура", Строка(Результат.Номенклатура));
		ЗаписьXML.ЗаписатьАтрибут("КоличествоРасход", Строка(Результат.КоличествоРасход));
		ЗаписьXML.ЗаписатьАтрибут("КоличествоКонечныйОстаток", Строка(Результат.КоличествоКонечныйОстаток));
		ЗаписьXML.ЗаписатьКонецЭлемента();
	конеццикла;
	ЗаписьXML.ЗаписатьКонецЭлемента();
	данные= ЗаписьXML.Закрыть();

	Возврат Данные;
конецфункции
// Функция получает остатки из регистра по полученным параметрам (Время и склад),
// формирует XML запись , и отправляет обратно
```

# Примечания

- Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоНаименованию(Ск,Истина));

Тут будет ошибка переменная "Ск" не определена.