|
В функции не выполняется запрос. | ☑ | ||
---|---|---|---|---|
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. Честное слово. Лучше промолчу...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |