Имя: Пароль:
1C
1С v8
http-сервис. Запрос списка документов контрагента
,
0 bulkinsan
 
27.08.15
00:22
Приветствую умнейших. Разбираю http- сервисы. Но вот проблема, не могу получить запросом список документов. Сервис работает проверено на другом методе, да и отладчиком спокойно пробегает по коду. передаю параметризированый сегмент в тело запрос. Это же запрос работает в обработке при подключении напрямую к базе. НО не работает в методе сервиса, понять не могу. ПРосто пустой результат. Собственно накодил:
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Чеки.Номер,
        |    Чеки.Дата КАК Дата,
        |    Чеки.Ответственный
        |ИЗ
        |    Документ.Чеки КАК Чеки
        |ГДЕ
        |    Чеки.Контрагент = &Контрагент
        |
        |УПОРЯДОЧИТЬ ПО
        |    Дата УБЫВ";    
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
1 bulkinsan
 
27.08.15
00:24
может как-то расшарить документ иль как?
2 PaulBC
 
27.08.15
02:30
Покажи весь текст метода. Вообще Запрос - по умолчанию параметр метода сервиса, в котором передается HTTPСервисЗапрос, а своим Запрос = Новый Запрос ты его переопределяешь.
3 bulkinsan
 
27.08.15
09:21
(2) Тело функции
Контрагент = Запрос.ПараметрыURL.Получить("name");
    Ответ = Новый HTTPСервисОтвет(200);
    Если Контрагент = "" Тогда
        Ответ.УстановитьТелоИзСтроки("Не верный контрагент");
        Возврат Ответ;
    КонецЕсли;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Чеки.Номер,
        |    Чеки.Дата КАК Дата,
        |    Чеки.Ответственный
        |ИЗ
        |    Документ.Чеки КАК Чеки
        |ГДЕ
        |    Чеки.Контрагент = &Контрагент
        |
        |УПОРЯДОЧИТЬ ПО
        |    Дата УБЫВ";    
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Если Не ВыборкаДетальныеЗаписи.Количество() = 0 Тогда
        СписокДокументов = "№       Дата       Ответственный </br>";
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            СписокДокументов = СписокДокументов + ВыборкаДетальныеЗаписи.Номер + "  "
            + ВыборкаДетальныеЗаписи.Дата + "  " + ВыборкаДетальныеЗаписи.Ответственный + "</br>";
        КонецЦикла;
        ТекстОтвета = "
        |<html>
        |<head><title> Результат запроса статуса пользователя</title> </head>
        |<body> Список документов контаргента " + Контрагент + "</br>" + СписокДокументов + "
        |Чтобы получить список документов другого контрагента, измените параметризированный сегмент {name} в адрессной строке </body>
        |</html>";
        Ответ.КодСостояния = 200;
        Ответ.УстановитьТелоИзСтроки(ТекстОтвета);
        Ответ.Заголовки["Content-Type"] = "text/html";
    Иначе
        Ответ.УстановитьТелоИзСтроки("Документы не найдены");
    КонецЕсли;
    
    Возврат Ответ;
4 bulkinsan
 
27.08.15
09:24
(2) вот блин. А ведь и всамом деле я переопределяю Запрос...
Хотя, счерт с ним с переопределением, входящий параметр Запрос я получил и обработал, а дальше уже не важно что с ним будет. думаю не в этом дело
5 bulkinsan
 
27.08.15
09:52
up
6 PaulBC
 
27.08.15
09:58
Так Чеки.Контрагент у тебя наверняка ссылка на справочник, а Контрагент, которого получаешь из http запроса - строка
7 bulkinsan
 
27.08.15
10:10
(6) да.. скорее всего в этом проблема. Сейчас нету возможности проверить. невнимательный, Вечером протестирую на Чек.Контрагент.Наименование
Спасибо :)
8 alex4x
 
28.08.15
09:47
Даешь текстовый формат работы с 1С!
Входишь в консоль, пишешь запрос на еще более простом языке чем сейчас в запросах и вуаля!

Войти в 1С-База2 Админ 123пароль Ентер!
Покажи документы за 01.01.2015 - 01.07.2015 Ентер!
Проведи документы за 01.01.2015 - 01.07.2015 Ентер!
Выйти из 1С Ентер!