|
Проблема с автоподстановкой значений в ТЧ Документа. | ☑ | ||
---|---|---|---|---|
0
kep12377
12.11.21
✎
21:18
|
Задача такова: При Изменении Реквизита "ВидЦены" в ТЧ Документа должна автоматически подставляться Цена из регистра. Проблема в том, что цена подставляется только в 1 строке ТЧ, а остальные остаются неизменчивы. Help me, please)
&НаСервере Функция ВидЦеныПриИзмененииНаСервере(Номенклатура,ВидЦены) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, | КОЛИЧЕСТВО(ЦеныНоменклатурыСрезПоследних.НомерСтроки) КАК КоличествоСтрок, | ЦеныНоменклатурыСрезПоследних.НомерСтроки КАК НомерСтроки |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | , | ВидЦены = &ВидЦены | И Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних | |СГРУППИРОВАТЬ ПО | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.НомерСтроки"; Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.Закупочная); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Цена; КонецЦикла; КонецФункции &НаКлиенте Процедура ВидЦеныПриИзменении(Элемент) ВидЦены = Объект.ВидЦены; ТД = Элементы.Товары.ТекущиеДанные; ТД.Цена = ВидЦеныПриИзмененииНаСервере(ТД.Номенклатура,ВидЦены); КонецПроцедуры |
|||
1
asady
12.11.21
✎
21:49
|
(0) молодец!
Особенно порадовало ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Цена; КонецЦикла; Как ты думаешь твой цикл обхода выборки сколько раз обернется? |
|||
2
asady
12.11.21
✎
21:52
|
(0) запросом получи цены по всем товарам по выбранному типу цен
потом циклом беги выборке и ищи в таблице товаров строки с номенклатурой и устанавливай в этих строках цену. |
|||
3
vicof
12.11.21
✎
23:01
|
+(2) Только не по всем товарам, а по товарам в ТЧ
|
|||
4
серый КТУЛХУ
13.11.21
✎
00:00
|
по одной номенклатуре попросил - по одной и получил.
|
|||
5
kep12377
13.11.21
✎
19:33
|
Вроде бы получил цены по всем товарам по выбранному типу цен. Дальше не подъёмно. Объясните, пожалуйста
&НаСервере Функция ВидЦеныПриИзмененииНаСервере(ВидЦены,Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних | |СГРУППИРОВАТЬ ПО | ЦеныНоменклатурыСрезПоследних.Цена"; Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.Закупочная); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Цена; КонецЦикла; КонецФункции &НаКлиенте Процедура ВидЦеныПриИзменении(Элемент) ВидЦены = Объект.ВидЦены; ТД = Элементы.Товары.ТекущиеДанные; ТД.Цена = ВидЦеныПриИзмененииНаСервере(ВидЦены,ТД.Номенклатура); КонецПроцедуры |
|||
6
серый КТУЛХУ
13.11.21
✎
21:04
|
1) добавь в запрос реквизит Товар виртуальной таблицы регистра типа "ЦеныНоменклатурыСрезПоследних.Товар КАК Товар,"
2) собери товары в массив - и передай в запрос в параметр Товары для фильтре для виртуальной таблицы регистра, из которой выбраешь типа "ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены И Товар В (&Товары)) КАК ЦеныНоменклатурыСрезПоследних" 3) при выборке результатов по каждому(!) ВыборкаДетальныеЗаписи.Товар находи в ТЧ строку с таким товаром - и в этой строке(!!) устанавливай .Цена = ВыборкаДетальныеЗаписи.Цена и эцсамое. изучи наконец любой язык программирования и что такое вообще "алгоритмы". |
|||
7
серый КТУЛХУ
13.11.21
✎
23:42
|
п.2: "собери Товары табличной части в массив"
|
|||
8
Droning1C
14.11.21
✎
00:58
|
Почитай в синтакс-помощнике про Возврат. Твой код отрабатывает ровно так, как ты заказал) Ты должен вернуть не только первую строку из выборки, а всю коллекцию.
|
|||
9
SuperMario
14.11.21
✎
09:46
|
(1) а меня вот это все совсем не радует.
Автору нужно идти учить мат. чась. А он , вместо этого, в каком-то решение подобный код пошел писать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |