|
Ошибка параметра запроса | ☑ | ||
---|---|---|---|---|
0
soda_st
05.10.12
✎
19:53
|
Есть процедура(КакойТоПараметр)
в ней запрос где Запрос.УстановитьПараметр(Параметр, КакойТоПараметр) вызывается эта процедура несколько раз, но в запросе при отладке Параметр не меняется, т.е. остается первое значение, хотя КакойТоПраметр меняется от вызова к вызову процедуры. кто-нибудь встречался с таким ужасом? Как с этим бороться то? |
|||
1
Wobland
05.10.12
✎
19:54
|
запрос глобален? у тебя подход к задаче какой-то не такой
|
|||
2
Wobland
05.10.12
✎
19:55
|
у процедуры не хватает параметра запрос. но я против этого вообще
|
|||
3
Wobland
05.10.12
✎
19:56
|
ой, с нами дама. не хватает совсем другого же!
|
|||
4
aleks-id
05.10.12
✎
19:57
|
(2) обычно функции делают. или если процедура то в ней расколбас всякий с блэкджеком и баронессами. а если УП то вообще непонятно че там тс колбасит
|
|||
5
aleks-id
05.10.12
✎
19:59
|
(0) тебе уже подсказали. представь нам теперь доказательства что ты ХХ а не вонючий бородатый ХУ в свитере с оленями
|
|||
6
Wobland
05.10.12
✎
19:59
|
(5) чо сразу вонючий?
|
|||
7
aleks-id
05.10.12
✎
20:01
|
(6) извини если обидел )))))))
|
|||
8
soda_st
05.10.12
✎
20:28
|
(1) Запрос глобальней некуда, он ищет пользователя по сотруднику, параметр передающийся в процедуру как раз ссылка сотрудника. Какой-то не такой... если не затруднит поподробнее.
(3) Могу подарить кусочек мыла, подставишь к У, будет Х, за одно и запахи тревожить не будут. (4) Мне по секрету рассказывали, что если ничего не возвращается тогда это процедура, врали? |
|||
9
Wobland
05.10.12
✎
20:30
|
(8) я про переменную Запрос. каков смысл процедуры?
наврали. бывает, что процедур вообще не бывает - возвращается void |
|||
10
aleks-id
05.10.12
✎
20:31
|
(8) давай текст и пример использования
|
|||
11
Wobland
05.10.12
✎
20:31
|
+(9) или вон перл - возвращается последнее выполненное
|
|||
12
Wobland
05.10.12
✎
20:32
|
(10) после фото, конечно
|
|||
13
soda_st
05.10.12
✎
20:40
|
(9) Смысл процедуры - удалить все напоминания сотруднику и сотруднику в копии, учитывая, что напоминания выходят пользователю-сотруднику, нужно запросом найти пользователя по сотруднику, у пользователя есть такой реквизит - сотрудник. Вот она и вызывается дважды раз по сотруднику удаляет, а второй раз сотрудника в копии не находит. Перл мешает - возвращается последнее выполненное
|
|||
14
Wobland
05.10.12
✎
20:41
|
(13) чесслово, я три раза прочитал. о чём это всё?
|
|||
15
Wobland
05.10.12
✎
20:43
|
на кой тебе такая процедура? на кой ляд у ней такой параметр? имхо: выдохни, задумайся и сделай по-новому. не повтори то, что есть, а сделай заново
|
|||
16
Wobland
05.10.12
✎
20:44
|
ну или в аську стучись что-ли.. дотелепатирую и покажу, как надо
|
|||
17
soda_st
05.10.12
✎
20:47
|
[CODE]Процедура ПриЗаписи(Отказ)
Если Состояние = Перечисления.СостоянияСобытий.Выполняется Тогда СоздатьНапоминание(Сотрудник); СоздатьНапоминание(СотрудникКопия); ИначеЕсли Состояние = Перечисления.СостоянияСобытий.Завершено Или Состояние = Перечисления.СостоянияСобытий.Отменено Тогда ЗавершитьНапоминание(Сотрудник.Ссылка); ЗавершитьНапоминание(СотрудникКопия.Ссылка); КонецЕсли; КонецПроцедуры // ПриЗаписи() [/CODE] [CODE] Процедура ЗавершитьНапоминание(ТекущийСотрудник = Неопределено) Если ТекущийСотрудник = Неопределено Тогда Возврат; КонецЕсли; РегистрСведенийМенеджерЗаписи = РегистрыСведений.Напоминания.СоздатьМенеджерЗаписи(); ЗапросПользователя = Новый Запрос(); ЗапросПользователя.Текст = "ВЫБРАТЬ Пользователи.Ссылка |ИЗ Справочник.Пользователи КАК Пользователи |ГДЕ Пользователи.Сотрудник = &Сотрудник"; ЗапросПользователя.УстановитьПараметр("Сотрудник", ТекущийСотрудник); ВыборкаПользователя = ЗапросПользователя.Выполнить().Выбрать(); Если ВыборкаПользователя.Следующий() Тогда ТекущийПользователь = ВыборкаПользователя.Ссылка; КонецЕсли; РегистрСведенийМенеджерЗаписи.Пользователь = ТекущийПользователь; РегистрСведенийМенеджерЗаписи.Автор = Автор; РегистрСведенийМенеджерЗаписи.Объект = ЭтотОбъект.Ссылка; РегистрСведенийМенеджерЗаписи.РеальнаяДатаОповещения = Дата; РегистрСведенийМенеджерЗаписи.Завершено = Ложь; РегистрСведенийМенеджерЗаписи.Прочитать(); Если РегистрСведенийМенеджерЗаписи.Выбран() Тогда РегистрСведенийМенеджерЗаписи.Удалить(); КонецЕсли; Конецпроцедуры [/CODE] |
|||
18
Wobland
05.10.12
✎
20:49
|
ТекущийПользователь = ВыборкаПользователя.Ссылка;
и ТекущийПользователь
в чём разнцица? |
|||
19
aleks-id
05.10.12
✎
20:50
|
а где фотка???
|
|||
20
Wobland
05.10.12
✎
20:51
|
я ни черта не понял про копии сотрудников, но код до слова РегистрСведенийМенеджерЗаписи вообще не нужен. имхается мне, проблема совсем не в параметрах, а в этих самых мистических копиях
|
|||
21
Wobland
05.10.12
✎
20:53
|
теперь я понял про копии. убей 11 строк своей процедуры и живи спокойно
|
|||
22
Wobland
05.10.12
✎
20:53
|
и ТекущийСотрудник внутри сделай везде
|
|||
23
soda_st
05.10.12
✎
20:59
|
(18) в первом случае ТекущемуПользователю присваевается значение из запроса, во втором это значение вставляется в фильтр менеджера
|
|||
24
Wobland
05.10.12
✎
21:00
|
(23) пропускай всё до (21) ;)
|
|||
25
Wobland
05.10.12
✎
21:02
|
не, я плохо понял про копии, прошу прощения
|
|||
26
Wobland
05.10.12
✎
21:03
|
код в (17) не соответствует описанию проблемы в (0)
|
|||
27
soda_st
05.10.12
✎
21:09
|
(26) а мне кажется пить меньше надо и завести вместо кота, например, говорящего попугая
При отладке в строке |ГДЕ Пользователи.Сотрудник = &Сотрудник"; в &Сотрудник предыдущий сотрудник хотя ТекущийСотрудник другой, т.е. тут ЗапросПользователя.УстановитьПараметр("Сотрудник", ТекущийСотрудник); НИЧЕГО НЕ ПРОИСХОДИТ |
|||
28
Wobland
05.10.12
✎
21:12
|
(27) не верю
|
|||
29
soda_st
05.10.12
✎
21:16
|
(28) Завидую, мне сложно не верить своим глазам
|
|||
30
Wobland
05.10.12
✎
21:18
|
а дай скрин с точкой останова на УстановитьПараметр и таблом с ТекущийСотрудник и Запрос.Параметры.ТекущийСотрудник
|
|||
31
Aprobator
05.10.12
✎
21:21
|
ТекущийСотрудник - реквизита такого негде больше нет? Проверь его определение по Ф12.
|
|||
32
Wobland
05.10.12
✎
21:21
|
(31) он же параметр, перекрывать должен, не?
|
|||
33
soda_st
05.10.12
✎
21:26
|
(31) Браво, не ТекущийСотрудник есть, а Сотрудник. Думала, что в запросе параметры читаются только при помощи УстановитьПараметр, а остальные реквизиты не имеют значения, оказывается нет
|
|||
34
Aprobator
05.10.12
✎
21:27
|
Опс, а где отработка ситуации если результат запроса пустой? Не каждый сотрудник пользователь базы.
|
|||
35
Wobland
05.10.12
✎
21:29
|
(34) =Неопределено
|
|||
36
Wobland
05.10.12
✎
21:30
|
(33) это ты ловко придумала
Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос=Новый Запрос; Сотрудник=Истина; Запрос.Текст="выбрать выбор когда &Сотрудник тогда ""истина"" иначе ""ложь"" конец"; Запрос.Выполнить(); КонецПроцедуры {Форма.Форма.Форма(65)}: Ошибка при вызове метода контекста (Выполнить) Запрос.Выполнить(); по причине: {(1, 21)}: Не задано значение параметра "Сотрудник" выбрать выбор когда <<?>>&Сотрудник тогда "истина" иначе "ложь" конец |
|||
37
Aprobator
05.10.12
✎
21:30
|
Неопределенно гораздо выше.
|
|||
38
soda_st
05.10.12
✎
21:31
|
(34) да уже дорисовала, это не окончательный код :)
|
|||
39
Aprobator
05.10.12
✎
21:34
|
(33) в отладчике, запрос.параметры. Не там посмотрела?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |