|
Загрузка ТЗ в табличную часть документа | ☑ | ||
---|---|---|---|---|
0
Kashey
07.06.12
✎
16:53
|
Управляемое приложение. Результат запроса, выгруженный в ТЗ, пытаюсь загрузить в табличную часть документа
&НаКлиенте Процедура ТипЦеныПриИзменении(Элемент) ОбщийСервер.ПоменятьТипЦенТабличнойЧастиСервер(Объект.ТипЦены,Объект.Ссылка,Объект.Дата); ЭтаФорма.ОбновитьОтображениеДанных(); КонецПроцедуры содержимое общего модуля &НаСервере Процедура ПоменятьТипЦенТабличнойЧастиСервер(ТипЦены,Документ,Дата) Экспорт //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТовараТовар.НомерСтроки, | ПоступлениеТовараТовар.Номенклатура, | ПоступлениеТовараТовар.Брак, | ПоступлениеТовараТовар.Количество, | ПоступлениеТовараТовар.Сумма, | ПоступлениеТовараТовар.ЕдиницаИзмерения |ИЗ | Документ.ПоступлениеТовара.Товар КАК ПоступлениеТовараТовар | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦены.Ссылка = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних | ПО ПоступлениеТовараТовар.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ПоступлениеТовараТовар.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Документ); Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("ТипЦены", ТипЦены); Результат = Запрос.Выполнить().Выгрузить(); Документ.ПолучитьОбъект().Товар.Загрузить(Результат); //Документ.Товар.Загрузить(Результат); КонецПроцедуры // ПоменятьТипЦенТабличнойЧастиСервер() Открываю существующий документ и меняю тип цен. Цены на форме остаются прежние, хотя должны выставиться в соответствии с запросом. Почему не обновляется содержимое формы документа? |
|||
1
shuhard
07.06.12
✎
16:56
|
(0)[Документ.ПолучитьОбъект().Товар.Загрузить(Результат);]
ну и у какого объекта ты ТЧ загрузил ? |
|||
2
salvator
07.06.12
✎
16:56
|
(0) А где ты цену определяешь?
|
|||
3
Kashey
07.06.12
✎
16:59
|
(2) Вручную в независимом регистре сведений ЦеныНоменклатуры
|
|||
4
DrShad
07.06.12
✎
16:59
|
в коде где?
|
|||
5
Kashey
07.06.12
✎
17:02
|
(4) Опеределяю запросом срез последних цен на дату документа
|
|||
6
DrShad
07.06.12
✎
17:03
|
(5) и что?
|
|||
7
salvator
07.06.12
✎
17:03
|
(5) Ткни пальцем в строчку запроса
|
|||
8
Kashey
07.06.12
✎
17:06
|
(7)РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦены.Ссылка = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних
|
|||
9
DrShad
07.06.12
✎
17:09
|
(8) ну и нахрена ты его присоединил? что-то получил из него в выборку данных?
|
|||
10
Любопытная
07.06.12
✎
17:09
|
(8) а дальше? Где у тебя эта самая ЦеныНоменклатурыСрезПоследних используется для расчета суммы в ТЧ?
|
|||
11
salvator
07.06.12
✎
17:10
|
К тому же метод Загрузить очищает строки в ТЧ. И колонка с ценой у тебя должна очиститься, что никак не вяжется с "Цены на форме остаются прежние"
|
|||
12
Kashey
07.06.12
✎
17:10
|
(9) В ТЗ получается нужный мне набор данных. Запрос отрабатывает нормально вроде, но в форму дока, точнее в таб.часть не попадают новые цены.
|
|||
13
Mort
07.06.12
✎
17:11
|
То что автор суёт свою ТЗ в абсолютно левый ДокОбъект (который живет то всего пару строк) никого не смутило?
|
|||
14
shuhard
07.06.12
✎
17:13
|
(13) как это не смутило (1) ?
|
|||
15
Mort
07.06.12
✎
17:13
|
+(13) Даже не пару строк, а одну, и то с натяжкой ))
|
|||
16
Mort
07.06.12
✎
17:14
|
(14) А, пропустил. Как и автор, походу...
|
|||
17
shuhard
07.06.12
✎
17:14
|
(12) ну нет в выборке цены, хоть ты лопни
"ВЫБРАТЬ | ПоступлениеТовараТовар.НомерСтроки, | ПоступлениеТовараТовар.Номенклатура, | ПоступлениеТовараТовар.Брак, | ПоступлениеТовараТовар.Количество, | ПоступлениеТовараТовар.Сумма, | ПоступлениеТовараТовар.ЕдиницаИзмерения |
|||
18
Aprobator
07.06.12
✎
17:16
|
жуть то какая.
|
|||
19
Kashey
07.06.12
✎
17:18
|
Снеговика недавно ковыряю, так что извиняйте...
(13) почему левый? ссылка на текущий документ по-идее? |
|||
20
shuhard
07.06.12
✎
17:19
|
(19)[ссылка на текущий документ по-идее]
ну здравствуй пятница |
|||
21
Aprobator
07.06.12
✎
17:20
|
+(18) если вкратце:
Документ.ПолучитьОбъект() на выходе дает нефига не тот объект, с которым взаимодействует открытая форма. |
|||
22
Aprobator
07.06.12
✎
17:21
|
почитай еще в СП про РеквизитФормыВЗначение и ЗначениеВРеквизитФормы.
|
|||
23
Mort
07.06.12
✎
17:24
|
РеквизитФормыВЗначение тут, конечно, нахер не нужен, но почитать всё равно стоит.
|
|||
24
Kashey
07.06.12
✎
17:25
|
(21) Странно, в отладчике кажет ссылку на мой док
|
|||
25
Aprobator
07.06.12
✎
17:25
|
(24) ссылка <> Объект.
|
|||
26
Aprobator
07.06.12
✎
17:27
|
(23) просвети, как тогда ТЧ Объекта перезаполнить методом в (0)?
|
|||
27
Kashey
07.06.12
✎
17:28
|
ааа. сорри, речь шла про получитьобъект()
|
|||
28
Mort
07.06.12
✎
17:28
|
(26) Объект.Товары.Загрузить(ТЗ);
ДанныеФормыКоллекция прекрасно жрет таблицы значений, получать объект тут не нужно. |
|||
29
Aprobator
07.06.12
✎
17:28
|
(28) результат запроса - скушает?
|
|||
30
Aprobator
07.06.12
✎
17:30
|
+(29) ну в принципе там ТЗ на выходе. Пасиб.
|
|||
31
Mort
07.06.12
✎
17:30
|
(29) Результат запроса не скушает. Скушает ТЗ полученную выгрузкой из результата запроса. Ну если в терминах.
|
|||
32
Aprobator
07.06.12
✎
17:31
|
(27) ну так понял - чего сделать то надо?
|
|||
33
Kashey
07.06.12
✎
17:32
|
(32) каким-то образом получить контекст объекта для моего дока?
|
|||
34
Aprobator
07.06.12
✎
17:34
|
(33) Объект передай на сервер и там заполняй его.
|
|||
35
Mort
07.06.12
✎
17:35
|
(33) Он там уже есть.
|
|||
36
shuhard
07.06.12
✎
17:35
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТовараТовар.НомерСтроки, | ПоступлениеТовараТовар.Номенклатура, | ПоступлениеТовараТовар.Брак, | ПоступлениеТовараТовар.Количество, | ПоступлениеТовараТовар.Сумма, | ПоступлениеТовараТовар.ЕдиницаИзмерения, | ЦеныНоменклатурыСрезПоследних.Цена |ИЗ | Документ.ПоступлениеТовара.Товар КАК ПоступлениеТовараТовар | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦены.Ссылка = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних | ПО ПоступлениеТовараТовар.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ПоступлениеТовараТовар.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Документ); Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("ТипЦены", ТипЦены); Результат = Запрос.Выполнить().Выгрузить(); Документ.Товар.Загрузить(Результат); |
|||
37
Aprobator
07.06.12
✎
17:39
|
(0) кстати, это самописка такая что ли? Нафига из за одного конкретного документа, это все в общий модуль вытаскивать?
|
|||
38
Mort
07.06.12
✎
17:43
|
А блин, это ещё общий модуль? Не. Без серверного вызова в форме не взлетит. Теоретически можно но зачем такой гимор?
|
|||
39
Aprobator
07.06.12
✎
17:43
|
в общий модуль как бы более широкого назначения вещи выводятся. Посмотри типовые конфигурации. Впрочем, с нуля, это тяжеловато будет.
|
|||
40
Aprobator
07.06.12
✎
17:45
|
(38) да учится чел. Я сам там конструктор с первого раза не увидел. Меня еще - ЭтаФорма.ОбновитьОтображениеДанных() убило. Чего я в сторону РеквизитФормыВЗначение то кинулся.
|
|||
41
Kashey
07.06.12
✎
17:48
|
Перенести сереверную процедуру в модуль формы документа и передавать в неё объект вместо объект.ссылка, я правильно понял?
|
|||
42
DrShad
07.06.12
✎
17:49
|
в Модуль объекта, а не формы
|
|||
43
Mort
07.06.12
✎
17:50
|
хм. походу быстрее будет так...
&НаКлиенте Процедура ТипЦеныПриИзменении(Элемент) ПоменятьТипЦенТабличнойЧастиСервер(); КонецПроцедуры // Там же в форме &НаСервере Процедура ПоменятьТипЦенТабличнойЧастиСервер() Экспорт //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТовараТовар.НомерСтроки, | ПоступлениеТовараТовар.Номенклатура, | ПоступлениеТовараТовар.Брак, | ПоступлениеТовараТовар.Количество, | ПоступлениеТовараТовар.Сумма, | ПоступлениеТовараТовар.ЕдиницаИзмерения |ИЗ | Документ.ПоступлениеТовара.Товар КАК ПоступлениеТовараТовар | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦены.Ссылка = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних | ПО ПоступлениеТовараТовар.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ПоступлениеТовараТовар.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); Запрос.УстановитьПараметр("Дата", Объект.Дата); Запрос.УстановитьПараметр("ТипЦены", Объект.ТипЦены); Результат = Запрос.Выполнить().Выгрузить(); Объект.Товар.Загрузить(Результат); КонецПроцедуры // ПоменятьТипЦенТабличнойЧастиСервер() |
|||
44
Aprobator
07.06.12
✎
17:50
|
(41) общий модуль используется для вещей более широкого назначения.
|
|||
45
Aprobator
07.06.12
✎
17:51
|
(43) ну только в данном случае нужна контролька, что документ не новый.
|
|||
46
Aprobator
07.06.12
✎
17:53
|
да и экспорт в данном случае не нужен.
|
|||
47
Mort
07.06.12
✎
17:54
|
+(43) Кошерно конечно вынести процедуру в модуль объекта и заполнять через тот же ЗначениеВРеквизитФормы. Но это уже можно и потом вынести после того как из формы работать будет.
Ха. Только вникнул в запрос.... Блин всё не то. |
|||
48
Aprobator
07.06.12
✎
17:54
|
а вообще, заполнение и изменение табличных частей обычно выносится в модуль объекта со словом экспорт, на случай их использования в случае программного создания объекта.
|
|||
49
Aprobator
07.06.12
✎
17:55
|
дык - вечер четверга. Пятница почти. Против биоритмов не попрешь. Мозг уже отключается ))))
|
|||
50
Mort
07.06.12
✎
17:56
|
Запрос надо делать по ТЗ табличной части с временными таблицами и т.п. Иначе это лажа.
|
|||
51
Kashey
07.06.12
✎
17:57
|
(50) Да, до кучи и с запросом чето намудрил я (
|
|||
52
Aprobator
07.06.12
✎
17:57
|
(0) возьми та ты мил человек учебник Радченко и пройди его. Таким самотыком учиться - ну его нафиг. Карму себе - однозначно испортишь.
(50) +100500 согласен. |
|||
53
Aprobator
07.06.12
✎
17:58
|
+(52) у франей набор по обучению программированию Цена вопроса где то 600 рублев.
|
|||
54
Aprobator
07.06.12
✎
17:58
|
(51) у тебя просто самого подходе еще нету к решению подобных задач.
|
|||
55
Kashey
08.06.12
✎
11:13
|
Господа, гляньте подправленный вариант. Так лучше?
Модуль формы дока &НаСервере Процедура ПоменятьТипЦенТабличнойЧасти() Док = РеквизитФормыВЗначение("Объект"); Док.ПоменятьТипЦенТабличнойЧастиСервер(Объект.ТипЦены,Объект.Ссылка,Объект.Дата); ЗначениеВРеквизитФормы(Док,"Объект"); КонецПроцедуры Модуль объекта дока Процедура ПоменятьТипЦенТабличнойЧастиСервер(ТипЦены,Документ,Дата) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТовараТовар.Номенклатура, | ПоступлениеТовараТовар.Брак, | ЦеныНоменклатурыСрезПоследних.Цена, | ПоступлениеТовараТовар.Количество, | ПоступлениеТовараТовар.Сумма, | ПоступлениеТовараТовар.ЕдиницаИзмерения |ИЗ | Документ.ПоступлениеТовара.Товар КАК ПоступлениеТовараТовар | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦены = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних | ПО ПоступлениеТовараТовар.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |ГДЕ | ПоступлениеТовараТовар.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Документ); Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("ТипЦены", ТипЦены); Товар.Загрузить(Запрос.Выполнить().Выгрузить();); КонецПроцедуры // ПоменятьТипЦенТабличнойЧастиСервер() |
|||
56
salvator
08.06.12
✎
11:21
|
Хотя б синтаксис что ль проверил бы.
|
|||
57
DrShad
08.06.12
✎
11:22
|
(55) однокуйственно
|
|||
58
Kashey
08.06.12
✎
11:31
|
(56)а что с синтаксисом? там просто процедуры из 2-х модулей разных, так скопировалось
(57) Как в (47) советовали перенёс в модуль объекта процедуру заполнения ТЧ дока, ну и запрос подредактировал. |
|||
59
DrShad
08.06.12
✎
11:33
|
(58) а цену то он у тебя не выбирает - результат не достигнут
|
|||
60
salvator
08.06.12
✎
11:34
|
(58) Ты синтаксис контроль выполнял? У тебя как минимум в последней строке ошибка
|
|||
61
Undefined
08.06.12
✎
11:36
|
в модуле объекта необязательно было это делать. Вполне с данными формы можно работать было.
|
|||
62
Kashey
08.06.12
✎
11:39
|
(58) Ну вроде вот эта строка выбирает цену из вирт.таблицы
| ЦеныНоменклатурыСрезПоследних.Цена, |
|||
63
Kashey
08.06.12
✎
11:40
|
(62) -> (59)
|
|||
64
DrShad
08.06.12
✎
11:50
|
(63) сорри, ожидал увидеть ее в конце
|
|||
65
Aprobator
08.06.12
✎
13:33
|
Внутреннее соединение убьет строки с номенклатурой без цен.
И запрос надо делать не по документу (документ может быть тупо не записан, например, и тогда запрос вообще ничего не даст или состояние ТЧ на форме не соответствовать той, что записана в базу), а выгрузить ТЧ с формы документа и уже ее пихать в запрос (временная таблица и пакетный запрос). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |