Доброго времени суток. Приношу извинения, что в прошлой теме https://forum.infostart.ru/forum9/topic270071/ плохо сформулировал вопрос. Есть две базы (база источник и база приемник). Источник опубликован на веб сервер. В приемнике написан обработчик, который подключается к источнику, забирает данные, сравнивает с данными из двух баз, и заполняет некую таблицу. В обработчике есть выбор даты, и мне нужно чтоб выбранная дата передавалась в качестве параметров запроса в базу источник. Подскажите, пожалуйста, как можно это реализовать. (В базе источника добавлены параметры BeginningDate и EndDate с типом значения DateTime). Ниже представляю код из тестовых баз, так же прикрепляю архив с базами и обработчиком. ЗЫ код может показаться кашей, не кидайтесь камнями =).
////////// Код базы источника/////////////////////
Функция GetData(Data)//, BeginningDate, EndDate)
Структура = Десериализовать(Data);//, BeginningDate, EndDate);
СтруктураДанных = Новый Структура;
Запрос = Новый Запрос;
//Запрос.УстановитьПараметр("НачалоПериода", BeginningDate);//Дата('2021.09.29 00:00:00'));
//Запрос.УстановитьПараметр("КонецПериода", EndDate); //Дата('2021.09.30 00:00:00'));
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Номенклатура.Код КАК Код,
| Документ.Цена КАК Цена,
| Документ.Количество КАК Количество,
| Документ.Сумма КАК Сумма,
| Документ.Номенклатура.Артикул КАК Артикул
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Документ
|ГДЕ
| Документ.Ссылка.ПометкаУдаления = ЛОЖЬ
| И Документ.Ссылка.Проведен = ИСТИНА";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
КвалификаторСтроки = Новый КвалификаторыСтроки(0);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповСтрок = Новый ОписаниеТипов(Массив, , КвалификаторСтроки);
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Код", ОписаниеТиповСтрок);
Данные.Колонки.Добавить("Количество", ОписаниеТиповСтрок);
Данные.Колонки.Добавить("Цена", ОписаниеТиповСтрок);
Данные.Колонки.Добавить("Сумма", ОписаниеТиповСтрок);
Данные.Колонки.Добавить("Артикул", ОписаниеТиповСтрок);
Данные.Очистить();
Пока РезультатЗапроса.Следующий() Цикл
ТекущиеДанные = Данные.Добавить();
ТекущиеДанные.Код = РезультатЗапроса.Код;
ТекущиеДанные.Количество = РезультатЗапроса.Количество;
ТекущиеДанные.Цена = РезультатЗапроса.Цена;
ТекущиеДанные.Сумма = РезультатЗапроса.Сумма;
ТекущиеДанные.Артикул = РезультатЗапроса.Артикул;
КонецЦикла;
СтруктураДанных.Вставить("ТаблицаСДанными",Данные);
Возврат Сериализовать(СтруктураДанных);
КонецФункции
Функция Десериализовать(Data)//, BeginningDate, EndDate)
ЧтениеXMLДанных = Новый ЧтениеXML;
ЧтениеXMLДанных.УстановитьСтроку(Data);//, BeginningDate, EndDate);
ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
ЧтениеXMLДанных.Закрыть();
Возврат ТЗ;
КонецФункции
Функция Сериализовать(ОбъектСериализации)
ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
МойXML = Новый ЗаписьXML;
МойXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
Возврат МойXML.Закрыть();
КонецФункции
///////////Код обработчика из базы приемника////////////////////////
&НаКлиенте
Процедура ПолучитьДанные(Команда)
Документ = ВыполнитьЗагрузкуНаСервере();
КонецПроцедуры
&НаСервере
Функция ВыполнитьЗагрузкуНаСервере()
Счетчик = 1;
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Данные", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)));
Соединение = WSСсылки.GetDataDoc.СоздатьWSПрокси("http://localhost/ws/DocCompare", "WebDoc", "WebDocSoap");
Соединение.Пользователь = "";
Соединение.Пароль = "";
Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("GetData");
//Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("BeginningDate");
//Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("EndDate");
СтруктураДанных = Новый Структура;
СтруктураДанных.Вставить("ТаблицаДанных", ТЗ);
//СтруктураДанных.Вставить("BeginningDate", НачалоПериода);
//СтруктураДанных.Вставить("EndDate", КонецДня(КонецПериода));
//
Хранилище = Новый ХранилищеЗначения(СтруктураДанных, Новый СжатиеДанных(9));
Ответ = Соединение.GetData(Сериализовать(Хранилище));
Действие = Десериализовать(Ответ);
ЗапросДанных = Действие.ТаблицаСДанными;
Для Каждого Строка Из ЗапросДанных Цикл
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
КвалификкаторСтроки = Новый КвалификаторыСтроки(0);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповСтрок = Новый ОписаниеТипов(Массив, , КвалификкаторСтроки);
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Номенклатура", ОписаниеТиповСтрок);
Таблица.Колонки.Добавить("Код", ОписаниеТиповСтрок);
Таблица.Очистить();
Табчасть.Очистить();
Табчасть.Очистить();
Пока Выборка.Следующий() Цикл
ТекСтр = Таблица.Добавить();
ТекСтр.Код = СокрЛП(Выборка.Код);
ТекСтр.Номенклатура = Выборка.Номенклатура;
Для Каждого Стр Из Таблица Цикл
ТекСтр = ТабЧасть.Добавить();
ТекСтр.Номенклатура = ("Ном из источника:" + Выборка.Номенклатура + ";" + "Ном из приемника" + Строка.Номенклатура);
Счетчик = Счетчик+1;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецФункции
Функция Десериализовать(XMLСтруктураСериализованногоОбъекта)
ЧтениеXMLДанных = Новый ЧтениеXML;
ЧтениеXMLДанных.УстановитьСтроку(XMLСтруктураСериализованногоОбъекта);
ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
ЧтениеXMLДанных.Закрыть();
Возврат ТЗ;
КонецФункции
Функция Сериализовать(ОбъектСериализации)
ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
МойXML = Новый ЗаписьXML;
МойXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
Возврат МойXML.Закрыть();
КонецФункции