|
как интерактивно пересчитать цены номенклатуры в ТЧ при изменении типа цен? | ☑ | ||
---|---|---|---|---|
0
pro3ri
07.05.15
✎
08:52
|
ДОбрый день!
есть док http://savepic.ru/6954961.png хочу сделать чтобы пересчитывались цены интерактивно при изменении типа цен. Пока сделал, чтобы пересчитывалась 1 строка: форма &НаКлиенте Процедура ВидПрайсаНоменклатурыПриИзменении(Элемент) Если ЗначениеЗаполнено(Объект.Товары) Тогда РаботаСДокументамиКлиент.ПодстановкаЦены(Элементы.Товары.ТекущиеДанные, Объект.ВидПрайсаНоменклатуры, Объект.Дата); КонецЕсли; КонецПроцедуры клиентОм Функция ПодстановкаЦены(ТекущиеДанные, ТипЦен, Дата) Экспорт ТекущиеДанные.Цена = РаботаСДокументами.ПодстановкаЦеныСервер(ТекущиеДанные.Номенклатура, ТипЦен, Дата); КонецФункции сервер ом Функция ПодстановкаЦеныСервер(Номенклатура, ТипЦен, Дата) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменлатурыСрезПоследних.Цена |ИЗ | РегистрСведений.ЦеныНоменлатуры.СрезПоследних( | &Дата, | Номенклатура = &Номенклатура | И ВидПрайса = &ВидПрайса) КАК ЦеныНоменлатурыСрезПоследних"; Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("ВидПрайса", ТипЦен); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда Возврат ВыборкаДетальныеЗаписи.Цена; КонецЕсли; Возврат 0; КонецФункции а как сделать чтобы все и сразу? (с минимальн изм конфиг) |
|||
1
Oleg_ka
07.05.15
✎
08:56
|
Передавай не Элементы.Товары.ТекущиеДанные, а Элемент.Товары.
|
|||
2
Oleg_ka
07.05.15
✎
08:57
|
... и обрабатывай его дальше в функциях.
|
|||
3
pro3ri
07.05.15
✎
12:52
|
(1) наверное имел ввиду Объект.Товары?
Процедура ВидПрайсаНоменклатурыПриИзменении(Элемент) Если ЗначениеЗаполнено(Объект.Товары) Тогда Для каждого СтрокаТЧ Из Объект.Товары Цикл РаботаСДокументамиКлиент.ПодстановкаЦены(СтрокаТЧ, Объект.ВидПрайсаНоменклатуры, Объект.Дата); КонецЦикла; КонецЕсли; КонецПроцедуры так работает, изменил только код формы. |
|||
4
pro3ri
07.05.15
✎
12:53
|
но не оч оптимально тк запрос в цикле
|
|||
5
Ненавижу 1С
гуру
07.05.15
✎
12:54
|
(3) ну так сделай не в цикле
|
|||
6
pro3ri
07.05.15
✎
14:10
|
&НаКлиенте
Процедура ВидПрайсаНоменклатурыПриИзменении(Элемент) Объект.Товары = ВидПрайсаНоменклатурыПриИзмененииСервер(Объект.Товары); КонецПроцедуры &НаСервере Функция ВидПрайсаНоменклатурыПриИзмененииСервер(ТЧ) ТЗ = ТЧ.Выгрузить(,"Номенклатура"); НовыеЦеныТЗ = РаботаСДокументами.ПодстановкаЦенПриИзмТипаЦен(ТЗ, Объект.ВидПрайсаНоменклатуры, Объект.Дата); Массив = НовыеЦеныТЗ.ВыгрузитьКолонку("Цена"); ТЗ = ТЧ.Выгрузить(); ТЗ.ЗагрузитьКолонку(Массив, "Цена"); ТЧ.Загрузить(ТЗ); //Возврат ТЧ; ЗначениеВДанныеФормы(ТЗ,ТЧ); Возврат ТЧ; КонецФункции // ВидПрайсаНоменклатурыПриИзменении() сервер ом: Функция ПодстановкаЦенПриИзмТипаЦен(ТЗ, ТипЦен, Дата) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменлатурыСрезПоследних.Цена |ИЗ | РегистрСведений.ЦеныНоменлатуры.СрезПоследних( | &Дата, | Номенклатура В (&Номенклатура) | И ВидПрайса = &ВидПрайса) КАК ЦеныНоменлатурыСрезПоследних"; Запрос.УстановитьПараметр("ВидПрайса", ТипЦен); Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Номенклатура", ТЗ); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Возврат РезультатЗапроса; //ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); // //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // // Вставить обработку выборки ВыборкаДетальныеЗаписи //КонецЦикла; // КонецФункции // ПодстановкаЦенПриИзмТипаЦен() пишет ошибка {Документ.ПоступлениеТоваров.Форма.ФормаДокумента.Форма(34)}: Ошибка при установке значения атрибута контекста (Товары) Объект.Товары = ВидПрайсаНоменклатурыПриИзмененииСервер(Объект.Товары); по причине: Нельзя изменять поле, содержащее объект данных формы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |