Имя: Пароль:
1C
1С v8
В функции не выполняется запрос.
0 Босечка
 
03.10.13
14:14
Функция ОпределитьДатуИ(ДатаНач,ЧислоДней) экспорт
Запрос1=Новый Запрос;

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







Запрос1.УстановитьПараметр("ДатаНач",ДатаНач);
Запрос1.УстановитьПараметр("ЧислоДней",ЧислоДней);
Запрос1.УстановитьПараметр("РабочийДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
Запрос1.УстановитьПараметр("РабочийДень", Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);

Выборка = Запрос1.Выполнить().Выбрать();
     Если Выборка.Количество()=ЧислоДней тогда
     Пока Выборка.Следующий() цикл
     ТекДата=Выборка.ДатаКалендаря;
     Конеццикла;
     Возврат ТекДата;
     Конецесли;
Возврат Неопределено;    
Конецфункции    

Мешает переменная ЧислоДней, а она мне нужна, как поступить?
1 Жан Пердежон
 
03.10.13
14:15
зачем темы плодишь?
2 Wobland
 
03.10.13
14:15
пробел втыкнуть
3 бомболюк
 
03.10.13
14:16
пробел забыл
4 Босечка
 
03.10.13
14:17
Куда втыкнуть?
5 GANR
 
03.10.13
14:19
(4)
У Вас это вот так:
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ" +ЧислоДней+"

А надо так:
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " +ЧислоДней+"

А еще по отладчику можно видеть текст запроса?
6 GANR
 
03.10.13
14:21
+(5) После "РАЗРЕШЕННЫЕ ПЕРВЫЕ" нужен пробел
7 Босечка
 
03.10.13
14:24
Когда нажимаешь правой кнопкой этот запрос конструктор не видит, и пишет "создать новый запрос?"
8 Босечка
 
03.10.13
14:24
пробел добавила, не помогло.
9 Ненавижу 1С
 
гуру
03.10.13
14:25
и чему равно число дней?
10 catena
 
03.10.13
14:25
(8)Запрос не выполняется молча или всё-таки о чем-то пищит?
11 Босечка
 
03.10.13
14:25
ЧислоДней - переменная величина, параметр функции.
12 GROOVY
 
03.10.13
14:27
Запрос после "добавила пробел не помогло" в студию!
13 Wobland
 
03.10.13
14:27
нормально так. от функции один хрен требуется одно значение
14 GROOVY
 
03.10.13
14:28
Жесть:
     Пока Выборка.Следующий() цикл
     ТекДата=Выборка.ДатаКалендаря;
     Конеццикла;
     Возврат ТекДата;
15 Босечка
 
03.10.13
14:28
(10) Ошибка при вызове метода контекста выполнить, ожидается выражение "Выбрать
16 Wobland
 
03.10.13
14:28
Запрос.Текст=СтрЗаменить(Запрос.Текст, Символы.НПП, "")
17 catena
 
03.10.13
14:29
(15)И?... Там еще текст должен быть.
18 Wobland
 
03.10.13
14:29
(15) ну напиши другой. правильный и ласковый
19 Босечка
 
03.10.13
14:29
(14)
Запрос1.Текст="
              | ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ "+ЧислоДней+"
              |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
              |    РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка
              |ИЗ
              |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
              |ГДЕ
              |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &ДатаНач
              |    И (РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка = &РабочийДень
              |            ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка = &ПредпраздничныйДень)
              |
              |УПОРЯДОЧИТЬ ПО
              |    ДатаКалендаря
              |";
20 catena
 
03.10.13
14:29
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " +Строка(ЧислоДней)+"
21 GROOVY
 
03.10.13
14:30
(15) А ЧИслоДней когда = 0, то текста нет, может на это и ругается?
22 GROOVY
 
03.10.13
14:31
(20) Он и так по правилам преобразования в строку конвертнется.
23 GANR
 
03.10.13
14:31
(8) Это лишь одна из ошибок надо еще
СтрЗаменить(Строка(ЧислоДней), Символы.НПП, "") - иначе при ЧислоДней около 1000 работать не будет (будет мешать спецсимвол, разделяющий триады в текстовом представлении строки.
24 Ненавижу 1С
 
гуру
03.10.13
14:32
(22) может там дней больше 1000? и ругается на формат по-умолчанию?
или отрицательное число дней
25 GANR
 
03.10.13
14:32
(0) Вот так работает?

Запрос1.Текст="
              | ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ "+СтрЗаменить(Строка(ЧислоДней), Символы.НПП, "") +"
              |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
              |    РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка
              |ИЗ
              |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
              |ГДЕ
              |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &ДатаНач
              |    И (РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка = &РабочийДень
              |            ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка = &ПредпраздничныйДень)
              |
              |УПОРЯДОЧИТЬ ПО
              |    ДатаКалендаря
              |";
26 Ненавижу 1С
 
гуру
03.10.13
14:32
(23) так пишут только удаки, надо использовать формат
27 Defender aka LINN
 
03.10.13
14:33
(16), (23) А потом запускаем на сервере, где разделитель - запятая и начинаем рвать на всех доступных местах волосы, пытаясь понять, где ошибка
28 Wobland
 
03.10.13
14:34
(26) тссс.. сегодня день НПП
29 catena
 
03.10.13
14:34
(25)А зачем РАЗРЕШЕННЫЕ ПЕРВЫЕ, если можно написать МАКСИМУМ?
30 Босечка
 
03.10.13
14:36
(25)Нет не работает....
31 azernot
 
03.10.13
14:36
(21)+100500
32 Босечка
 
03.10.13
14:37
(21) Там проверка стоит на ЧислоДней>0
33 GANR
 
03.10.13
14:40
(26)(27) Формат(ЧислоДней, "ЧГ=0"), но вроде (23) не подводило еще.
34 бомболюк
 
03.10.13
14:40
а че в (0) параметр "ПредпраздничныйДень" не назначается?
35 GANR
 
03.10.13
14:42
(30) А что пишет?
36 Enders
 
03.10.13
14:43
(15)(32) ну так там проверка стоит для формирования текста запроса.
То есть число дней =0, текст запроса ="";
А вот выполнить запрос оно всё равно пытается, вот и ошибка "ожидается выражение "Выбрать""
37 azernot
 
03.10.13
14:44
(32) Проверка срабатывает, текст запроса не присваивается.. Но выполнение запроса стоит за рамками проверки. Собственно на отсутствие текста запроса у вас 1С и ругается. Прямо так и говорит "ожидается выражение "Выбрать"
38 VikingKosmo
 
03.10.13
14:44
И все таки, а какое значение находится в переменной "ЧислоДней"?!
39 catena
 
03.10.13
14:44
ну да, (36) прав.
40 Defender aka LINN
 
03.10.13
14:45
(33) А я своими глазами видел. Любители СтрЗаменить долго на гуано исходили, отыскивая ошибку - на клиенте-то разделитель другой был.
41 eklmn
 
гуру
03.10.13
14:47
| ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ "+ЧислоДней+",

запятая!
42 eklmn
 
гуру
03.10.13
14:47
вру!
43 Enders
 
03.10.13
14:48
(41) зачем запятая?Оо
44 eklmn
 
гуру
03.10.13
14:48
(43) смотри(42)
45 eklmn
 
гуру
03.10.13
14:49
все херню лепят, я тоже решил влепить
46 GANR
 
03.10.13
14:52
(0) Вот так должно работать в УПП

Функция ОпределитьДатуИ(ДатаНач,ЧислоДней) экспорт
    
    Запрос1 = Новый Запрос;
    
    Если ЧислоДней>0 тогда
        Запрос1.Текст="
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " +Формат(ЧислоДней, "ЧГ=0") + "
        |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
        |    РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка
        |ИЗ
        |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        |ГДЕ
        |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &ДатаНач
        |    И (РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка = &РабочийДень
        |            ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня.Ссылка = &ПредпраздничныйДень)
        |
        |УПОРЯДОЧИТЬ ПО
        |    ДатаКалендаря
        |";
    Конецесли;                                                  
    
    Запрос1.УстановитьПараметр("ДатаНач",                                    ДатаНач);
    Запрос1.УстановитьПараметр("ЧислоДней",                                ЧислоДней);
    Запрос1.УстановитьПараметр("РабочийДень",                            Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
    Запрос1.УстановитьПараметр("ПредпраздничныйДень",     Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
    
    Выборка = Запрос1.Выполнить().Выбрать();
    Если Выборка.Количество() = ЧислоДней тогда
        Пока Выборка.Следующий() цикл
            ТекДата=Выборка.ДатаКалендаря;
        Конеццикла;
        Возврат ТекДата;
    Конецесли;
    
    Возврат Неопределено;  
    
Конецфункции
47 Шапокляк
 
03.10.13
15:03
Запрос1.Текст="
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ " +Формат(ЧислоДней, "ЧГ=0") + "
        |    
....
вот так точно заработает
48 GANR
 
03.10.13
15:05
(47) Там вдобавок еще и параметр запроса "ПредпраздничныйДень" не устанавливается - вообще ошибка на ошибке. Я у себя (46) на старой конфигурации УПП 1.2. отладил - работает нормально.
49 azernot
 
03.10.13
15:08
(48) Отладил, говоришь? Передай число дней = 0 ;)
50 Шапокляк
 
03.10.13
15:08
Да тут программа, наверно, не очень хорошо реагирует на то, что текст запроса с "|" начинается, а в текст запроса я как-то не вникала
51 GANR
 
03.10.13
15:18
(49) Атас... Знаю как исправить, но говорить не буду - хватит с меня.
52 Sabbath
 
03.10.13
15:18
Если не найдено "выбрать", то либо текст запроса пустой, либо кривой. Пустой будет если число дней <= 0, а кривизну можно проверить, получив текст запроса в отладчике, визуально или засунув его в консоль
53 Шапокляк
 
03.10.13
15:28
Запрос должен начинаться с "Выбрать", а не с "|Выбрать".
54 Sabbath
 
03.10.13
15:29
(53) не, должно и с | работать нормально
55 catena
 
03.10.13
15:30
(53)А он в сабже начинается с
"
|Выбрать...
56 GANR
 
03.10.13
15:30
(53) Это-то работает - запрос на самом деле начинается с
              "
              |
57 GANR
 
03.10.13
15:34
Буквально   В С Ё   неправильно в такой крохотной процедуре:

- текст запроса собирается неправильно
- параметр не устанавливается
- число 0 не отрабатывается
58 Шапокляк
 
03.10.13
15:35
(56) Вот у меня когда перед "ВЫбрать" "|" - точно не работает, а когда нет этой штуки - работает, если собран нормально
59 catena
 
03.10.13
15:36
(58)Ты путаешь
"|...
и
"
|...
60 Шапокляк
 
03.10.13
15:38
(59) Они реально разные, но перед Выбрать не должно быть слэша.
61 GANR
 
03.10.13
15:43
(58)(60) Зайдите в УПП 1.2(ну или 1.3), вставьте (46) - будет видно, что

"
|ВЫБРАТЬ ...

после переноса строки работает нормально. А если исправить вот так

"|ВЫБРАТЬ ...

- работать уже не будет
62 catena
 
03.10.13
15:44
(60)Да, слэш действительно лучше не ставить :) Но вот пайп во втором случае будет восприниматься как перевод строки и никаком коду не мешает.
63 Шапокляк
 
03.10.13
15:44
(59) Впрочем, была неправа, работает и со слэшем после пустой строки.
64 Sabbath
 
03.10.13
15:47
(63) вот у меня конструктор открывает что так что так, а значит, должно работать
65 GANR
 
03.10.13
15:51
(64) Неа, если сделать вот так "|ВЫБРАТЬ - пишет "Не найден текст запроса"
66 Sabbath
 
03.10.13
15:53
(65) а, если так то да, этот символ же при переносе строки нужен, а после кавычек ставить бредово, тогда | в строку войдет как символ. Но у автора не так.
67 Wobland
 
03.10.13
15:57
феерично. 60 постов об одном и том же и пара-тройка класса "не работает"
68 Босечка
 
03.10.13
18:07
(46) Все равно не работает...
69 GROOVY
 
03.10.13
18:14
Прошло 4 часа. Не отладить такой код за 4 (ЧЕТЫРЕ) часа?! Что Вы делаете в профессии?
70 GROOVY
 
03.10.13
18:15
Какое вхождение имеет параметр "ЧислоДней" когда "все равно не работает"?
71 Босечка
 
03.10.13
18:29
ЧислоДней имеет значение целого числа.
72 GROOVY
 
03.10.13
18:31
(71) Если не секрет, какое число?
73 Wobland
 
03.10.13
18:33
(72) что, как маленький? ноль после запятой
74 Wobland
 
03.10.13
18:33
тут в текст запроса надо смотреть, сразу просветление настанет
75 GANR
 
03.10.13
18:44
(69) +1. Честное слово. Лучше промолчу...