Имя: Пароль:
1C
 
Http запросы - дата
0 Blackames
 
31.05.24
17:35
Не видит в обработке выборку запроса из за даты - не пойму в чем ошибка    

Ответ = Новый HTTPСервисОтвет(200);
    Ответ.Заголовки.Вставить("Content-type", "application/json; charset=utf-8");
    ГодЗапроса = Запрос.ПараметрыURL.Получить("God");
    МесяцЗапроса = Запрос.ПараметрыURL.Получить("Mesac");
    ДеньЗапроса = Запрос.ПараметрыURL.Получить("Den");
    Запросе = Новый Запрос;
    Запросе.Текст =
        "ВЫБРАТЬ
        |    ПоступлениеТоваров.Номер КАК Номер,
        |    ПоступлениеТоваров.Дата КАК Дата,
        |    ПоступлениеТоваров.Контрагент.Представление КАК КонтрагентПредставление,
        |    ПоступлениеТоваров.Склад.Представление КАК СкладПредставление,
        |    ПоступлениеТоваров.СуммаДокумента КАК СуммаДокумента
        |ИЗ
        |    Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
        |ГДЕ
        |    ГОД(ПоступлениеТоваров.Дата) = &God
        |    И МЕСЯЦ(ПоступлениеТоваров.Дата) = &Mesac
        |    И ДЕНЬ(ПоступлениеТоваров.Дата) = &Den";
    
    Запросе.УстановитьПараметр("God", ГодЗапроса);
    Запросе.УстановитьПараметр("Mesac", МесяцЗапроса);
    Запросе.УстановитьПараметр("Den", ДеньЗапроса);
    
    РезультатЗапроса = Запросе.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Массив = Новый Массив;
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Структура = Новый Структура;
        Структура.Вставить("Номер", ВыборкаДетальныеЗаписи.Номер);
        Структура.Вставить("Дата", ВыборкаДетальныеЗаписи.Дата);
        Структура.Вставить("Контрагент", ВыборкаДетальныеЗаписи.КонтрагентПредставление);
        Структура.Вставить("Склад", ВыборкаДетальныеЗаписи.СкладПредставление);
        Структура.Вставить("СуммаДокумента", ВыборкаДетальныеЗаписи.СуммаДокумента);
    КонецЦикла;
1 АгентБезопасной Нацио
 
31.05.24
17:40
"mesac" - это сильно! и свежО.
2 MMB
 
31.05.24
17:47
(0) Проверь типы. Уверен что у тебя в ГодЗапроса число, а не строка? Но лучше год месяц и день преобразовать в нормальную дату и уже ее в запрос подставлять.
3 trad
 
31.05.24
17:52
(1) курдский (бот)
4 Blackames
 
31.05.24
17:59
(2) Как преобразовать в дату?
5 Blackames
 
31.05.24
18:00
(2) там тип строка
6 OldCondom
 
31.05.24
18:03
Глобальный контекст (Global context)
Дата (Date)
Вариант синтаксиса: По строке
Синтаксис:
Дата(<Значение>)
Параметры:
<Значение> (обязательный)
Тип: Строка.
Исходное значение даты.
Строка должна содержать дату в локальном формате даты или в каноническом виде YYYYMMDDHHMMSS.
Описание варианта метода:
При преобразовании строка должна содержать дату в каноническом формате "ГГГГММДДччммсс" (см. раздел "Примитивные типы данных").
Вариант синтаксиса: По составляющим
Синтаксис:
Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>)
Параметры:
<Год> (обязательный)
Тип: Число.
Год даты.
<Месяц> (обязательный)
Тип: Число.
Месяц даты.
<День> (обязательный)
Тип: Число.
День даты.
<Час> (необязательный)
Тип: Число.
Час даты.
<Минута> (необязательный)
Тип: Число.
Минута даты.
<Секунда> (необязательный)
Тип: Число.
Секунда даты.
Описание варианта метода:
Допускаются следующие формы задания параметров:
Дата(Год, Месяц, День);
Дата(Год, Месяц, День, Час, Минута, Секунда);
Возвращаемое значение:
Тип: Дата.
Описание:
Преобразует полученный параметр (параметры) в значение типа Дата.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
Дата("19840326062421");
Дата(1984,03,26,06,24,21);
Использование в версии:
Доступен, начиная с версии 8.0.
7 Смотрящий
 
31.05.24
18:26
(0) У тебя Бог, Месяки, Ден - что то одно, или несколько - Неопределено
8 Blackames
 
31.05.24
22:31
(6) Дату установил но у меня ошибка чтения в выборке запроса - пишет - ошибка чтения значения
9 Blackames
 
31.05.24
22:54
(7) Все неопределенно в выборке
10 timurhv
 
31.05.24
23:59
(9) Скидывайте скриншот параметров запроса в отладке.
Вы понимаете, что конструкция ниже более чем всегда приведет к перебору всех строк в таблице на стороне SQL?
|ГДЕ
|    ГОД(ПоступлениеТоваров.Дата) = &God
|    И МЕСЯЦ(ПоступлениеТоваров.Дата) = &Mesac
|    И ДЕНЬ(ПоступлениеТоваров.Дата) = &Den";

Куда это уходит?
Структура = Новый Структура;

Что это? В 1С не описывается переменная по типу, должно быть по смыслу, из разряда СписокДанныхДокументов.
Массив = Новый Массив;
11 Сергиус
 
01.06.24
00:38
(0)Попробуйте перед установкой параметра, преобразовать их в числа. Например Число(God) и тд
12 Blackames
 
01.06.24
08:52
(11) {HTTPСервис.Hstest.Модуль(71)}: Преобразование значения к типу Дата не может быть выполнено
13 Blackames
 
01.06.24
09:07
Если вот так в конце запроса попробовать |    ПоступлениеТоваров.Дата МЕЖДУ &НачДата И &КонДата";?
14 sitex
 
naïve
01.06.24
15:28
(13) Ну наверно, и можешь так | ПоступлениеТоваров.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ($НачДата$), ДЕНЬ) И КОНЕЦПЕРИОДА(ДАТАВРЕМЯ($КонДата$), ДЕНЬ)
15 sitex
 
naïve
01.06.24
15:30
+(14)  и в тексте с запроса просто замени значения в  ДАТАВРЕМЯ(1,1,1) >$НачДата$
16 sitex
 
naïve
01.06.24
15:36
(0) ГодЗапроса = Запрос.ПараметрыURL.Получить("God");
    МесяцЗапроса = Запрос.ПараметрыURL.Получить("Mesac");
    ДеньЗапроса = Запрос.ПараметрыURL.Получить("Den");


А что просто передать дату в нормальном виде не получается ?! нужно вот такое извращение
17 FIXXXL
 
01.06.24
22:01
(16) GodMod On %)
18 Blackames
 
02.06.24
03:25
У меня проблема с записью JSON - ошибку выдает - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Структура = Новый Структура;
        Структура.Вставить("Номер", ВыборкаДетальныеЗаписи.Номер);
        Структура.Вставить("Дата", ВыборкаДетальныеЗаписи.Дата);
        Структура.Вставить("Контрагент", ВыборкаДетальныеЗаписи.КонтрагентПредставление);
        Структура.Вставить("Склад", ВыборкаДетальныеЗаписи.СкладПредставление);
        Структура.Вставить("СуммаДокумента", ВыборкаДетальныеЗаписи.СуммаДокумента);
        Массив.Добавить(Структура);
    КонецЦикла;

    НастройкиСериализации = Новый НастройкиСериализацииJSON;
    НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата;
    НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
    НастройкиСериализации.СериализовыватьМассивыКакОбъекты = Истина;
    ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина);
    Запись = Новый ЗаписьJSON;
    ЗаписатьJSON(Запись, Массив,НастройкиСериализации, "СеарилизацияЗначений");
    ЗаписьДокумента =  Запись.Закрыть();
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(ЗаписьДокумента);
    Ответ.Заголовки.Вставить("Content-type", "text/plainapplication/json; charset=utf-8");
    Возврат Ответ;
КонеФункции

Функция СеарилизацияЗначений(Свойство,Значение,ДополнительныеПараметры,Отказ) Экспорт
    Если ТипЗнч(Значение) = Тип("Строка") Тогда
        Возврат Строка(Значение);
    КонецЕсли;
    Если ТипЗнч(Значение) = Тип("Дата") Тогда
        Возврат Строка(Значение);
    КонецЕсли;
    //Отказ = Истина;    
КонецФункции
19 Смотрящий
 
02.06.24
07:33
(18) Угадай ошибку с семи символов
20 Blackames
 
02.06.24
11:55
(19) Не установил строку?
21 Blackames
 
02.06.24
12:24
(19) Ответ.Заголовки.Вставить("Content-type", "text/plainapplication/json; charset=utf-8"); тоже вроде ошибка
22 АгентБезопасной Нацио
 
02.06.24
16:49
(18) Можно вопрос? Спасибо! А почему "СеарилизацияЗначений"?
23 Волшебник
 
03.06.24
09:54
(22) Предлагаю другой вариант: "СюрреализацияЗначений"
24 АгентБезопасной Нацио
 
03.06.24
11:14
(23) понравилось!
25 sitex
 
naïve
03.06.24
18:58
(17) У вас есть такой режим )))
26 Волшебник
 
03.06.24
19:01
(25) Он включил режим года. Что такого?
27 sitex
 
naïve
03.06.24
19:04
(26) Я на позитивной волне подумал что он предлагает включить режим БОга в 1С :)
28 Волшебник
 
03.06.24
19:05
(27) Да это было понятно, но "режим" по-английски "mode", а в контексте ветки "God"="год", но Ваша игра слов мне понравилась.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший