|
Передача значения реквизита формы документа с клиента на сервер | ☑ | ||
---|---|---|---|---|
0
neetro
29.05.14
✎
19:01
|
В двух словах может кто описать. Есть тестовая конфигурация с нуля. Там документ Инвентаризация. В нем реквизит Склад. Хочу заполнить табличную часть остатками по складу. Создал кнопку Заполнить на форме. Повесил действие. На Клиенте вызываю процедуру с сервера, На сервере запросом пытаюсь получить остатки с фильтром по складу, не могу понять как передать значение реквизита в процедуру на сервере. Что передать в вызове процедуры сервера с клиента...
|
|||
1
Crush
29.05.14
✎
19:14
|
Это очень сложный и топовый вопрос. Его задают здесь каждый день вместо того что бы пользоваться поиском.
РеквизитФормыВЗначение |
|||
2
neetro
29.05.14
✎
19:28
|
(1) ну я это использую. Код
&НаКлиенте Процедура Заполнить(Команда) ЗаполнитьНаСервере(); КонецПроцедуры &НаСервере Процедура ЗаполнитьНаСервере() Документ = РеквизитФормыВЗначение("Объект"); ТорговаяТочка = Документ.ТорговаяТочка; //ЗначениеВРеквизитФормы(Документ, "Объект"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиОстатки.Номенклатура, | ОстаткиОстатки.ТорговаяТочка, | ОстаткиОстатки.КоличествоОстаток КАК Количество |ИЗ //| РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки"; | РегистрНакопления.Остатки.Остатки(ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; //| РегистрНакопления.Остатки.Остатки(&МоментВремени, ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; //Запрос.УстановитьПараметр("МоментВремени", МоментВремени); Запрос.УстановитьПараметр("ТорговаяТочка", ТорговаяТочка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Номенклатура); КонецЦикла; КонецПроцедуры |
|||
3
Лефмихалыч
29.05.14
✎
19:29
|
(2) заставь себя написать в конце ЗначениеВРеквизитФормыБлеать()
|
|||
4
rendez-vous
29.05.14
✎
19:31
|
Вместо:
Документ = РеквизитФормыВЗначение("Объект"); можно написать Документ = Объект |
|||
5
neetro
29.05.14
✎
19:33
|
(3) даже боюсь спрашивать - ты такой злой ) где в конце то? у меня ошибка в Запрос.УстановитьПараметр("ТорговаяТочка", ТорговаяТочка);
|
|||
6
neetro
29.05.14
✎
19:34
|
(4) что это изменит? Мне так сам конеткст докумнта не нужен, мне тупо реквизит нужен для фильтра в запросе....
|
|||
7
neetro
29.05.14
✎
19:35
|
Я так понимаю я в переменную ТорговаяТочка херню какую то пишу, хотя там СправочникСсылка
|
|||
8
Лефмихалыч
29.05.14
✎
19:36
|
(4) можно, но результат будет совсем другим
(5) текст ошибки ты предлагаешь угадать? |
|||
9
neetro
29.05.14
✎
19:37
|
(8)
{Документ.Пересменок.Форма.ФормаДокумента.Форма(34)}: Ошибка при вызове метода контекста (Выполнить) РезультатЗапроса = Запрос.Выполнить(); по причине: {(6, 50)}: Неверные параметры "РегистрНакопления.Остатки.Остатки, 0" РегистрНакопления.Остатки.Остатки(ТорговаяТочка <<?>>= &ТорговаяТочка) КАК ОстаткиОстатки |
|||
10
Crush
29.05.14
✎
19:38
|
Отладчик предлагали?
|
|||
11
neetro
29.05.14
✎
19:40
|
(10) в отладчике значение есть
ТорговаяТочка Точка1 СправочникСсылка.ТорговыеТочки |
|||
12
Лефмихалыч
29.05.14
✎
19:40
|
(9) измерения такого нет у регистра, параметр тут ни при чем
|
|||
13
neetro
29.05.14
✎
19:40
|
Это после этой строчки
ТорговаяТочка = Документ.ТорговаяТочка; (на сервере) |
|||
14
neetro
29.05.14
✎
19:41
|
(12) Есть. Это первое что я перепроверил. Запрос конструктором делал
|
|||
15
Crush
29.05.14
✎
19:42
|
А может сначала период нужно задать?
|
|||
16
neetro
29.05.14
✎
19:44
|
(15) да мне тупо остатки нужны какие есть. До периода я еще не дошел ) К слову без фильтра по ТТ запрос работатет.
|
|||
17
Crush
29.05.14
✎
19:44
|
Точнее можно и не задавать. попробуй магический знак припинания вызвать
|
|||
18
neetro
29.05.14
✎
19:45
|
(17) Что? ))
|
|||
19
Crush
29.05.14
✎
19:46
|
И вообще юзай конструктор запроса. Он оградит тебя от незнания пунктуации при описании параметров виртуальных таблиц
|
|||
20
neetro
29.05.14
✎
19:47
|
(19) я в 14 сообщении и написал что делал констуруктором!
|
|||
21
Crush
29.05.14
✎
19:47
|
Есть игра такая "Найди 2 отличия"
| РегистрНакопления.Остатки.Остатки(ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; | РегистрНакопления.Остатки.Остатки(&МоментВремени, ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; |
|||
22
Crush
29.05.14
✎
19:49
|
(20) Гагага! Харошь заливать. Каким конструтором? Лего что ль?
1Совский конструктор запросов комментарии не оставляет |
|||
23
neetro
29.05.14
✎
19:50
|
Все я понял. Спасибо
|
|||
24
neetro
29.05.14
✎
19:50
|
пустой парамерт забыл передать
Я слелал констурктором, потом корректировал его руками |
|||
25
neetro
29.05.14
✎
19:52
|
Кстати МоментВремени() тоже отказался работать
РегистрНакопления.Остатки.Остатки(&МоментВремени, ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; Запрос.УстановитьПараметр("МоментВремени", МоментВремени); |
|||
26
neetro
29.05.14
✎
19:52
|
Ладно, не усмотрел. теперь буду думать как вернуть данные в таблицу формы.....
|
|||
27
neetro
29.05.14
✎
19:54
|
вот это
Документ = РеквизитФормыВЗначение("Объект"); ТорговаяТочка = Документ.ТорговаяТочка; вообще по сути нормально? Перадавать весь объект чтобы полуить значение одного реквизита для фильтра... Может есть способ лучше? |
|||
28
Crush
29.05.14
✎
20:46
|
(27) Попробуй
ТорговаяТочка = РеквизитФормыВЗначение("Объект.ТорговаяТочка"); Потом напиши что получилось А момент времени передавать не обязательно. Можно так: РегистрНакопления.Остатки.Остатки(, ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; |
|||
29
Crush
29.05.14
✎
20:46
|
А может так?
ТорговаяТочка = РеквизитФормыВЗначение("ТорговаяТочка"); |
|||
30
Лефмихалыч
29.05.14
✎
21:30
|
(14) заставь себя и условие тоже конструктором задатьблеать
|
|||
31
hhhh
29.05.14
✎
22:34
|
(29) харе прикалываться. Тип СправочникСсылка существует и не объекте и на сервере. Не нужно здесь РеквизитФормыВЗначение.
|
|||
32
hhhh
29.05.14
✎
22:35
|
Запрос.УстановитьПараметр("ТорговаяТочка", Объект.ТорговаяТочка);
|
|||
33
Crush
29.05.14
✎
23:19
|
(31) Без приколов. Я УФ еще не знаю. А тут пишу что бы поддерживать диалог и чего то цеплять для себя.
|
|||
34
Лефмихалыч
29.05.14
✎
23:27
|
(31) пля, да при чем тут?..
проблема в (2) и (9) от того, что у виртуальной таблицы два параметра и в первом конструкция "что-то = что-то еще" недопустима. |
|||
35
hhhh
29.05.14
✎
23:54
|
(34) ну это понятно, уже ведь объяснили автору
|
|||
36
ProProg
30.05.14
✎
00:06
|
Вот двоешники емае.
|
|||
37
ProProg
30.05.14
✎
00:06
|
Если все происходит в модуле формы.
То нифига передавать ничего и не нужно. В серверной процедуре тупо используешь Объект.Реквизит траляляляля |
|||
38
ProProg
30.05.14
✎
00:07
|
А вот если в модуле объекта тогда да - нужно все передавать через структуру параметров.
|
|||
39
ProProg
30.05.14
✎
00:08
|
РеквизитФормыВЗначение использовать нужно только если в модуле объекта какие то действия.
В модуле формы между клиентом и сервером нифига передавать не нужно. никакие формы в реквизиты и прочее. |
|||
40
ProProg
30.05.14
✎
00:10
|
(9) Что ты врешь. Ты не могу конструктором это делать, либо ты дятел.
РегистрНакопления.Остатки.Остатки(ТорговаяТочка <<?>>= &ТорговаяТочка) Первый параметр у Остатки - это дата. |
|||
41
neetro
30.05.14
✎
11:57
|
(37) речь про модуль формы ага
Такая конструкция прекрасно работает. Спасибо! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиОстатки.Номенклатура, | ОстаткиОстатки.ТорговаяТочка, | ОстаткиОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.Остатки.Остатки(, ТорговаяТочка = &ТорговаяТочка) КАК ОстаткиОстатки"; Запрос.УстановитьПараметр("ТорговаяТочка", Объект.ТорговаяТочка); |
|||
42
neetro
30.05.14
✎
12:05
|
Лефмихалыч, ты как Йода )) не понимаю что ты говоришь. Какое условие? В конструкторе я на виртуальную таблицу наложил условие по торговой точке и по периоду. Это видно по закомментированным строкам в листинге. С ТТ разобрались, а моментвремени() из модуля формы пока хз как вызвать (ну типа актуальные остатки нужны)
Сейчас пытаюсь вникнуть как теперь вернуть номенклатуру\количество в форму ))) После 7.7 туго все идет. Это клиент серверное взаимодействие |
|||
43
neetro
30.05.14
✎
12:15
|
(40) ты бы вник сначала в (9) там блеать видно что закомментирована строка сгенерированная конструктором из-за проблемы с периодом, скопировал ее и убрал момент времени. Запятую не подумал оставить (точнее не подумал что параметр дата по любому идет первым). Ты там сидишь за компом, самоутвержаешься, а в реале за такие необоснованные слова тебе бы уже е.бальник разбили. Глазки в пол и побежал. М.удила )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |