Как сделать, что бы процедура "ЦенаПриИзменении" отработала для всех строк, а не для одной?
У меня есть расширение, с помощью которого на форме документа я указываю тип цены (закупочная, оптовая и тд) и номенклатура в табличной части этого документа заполняется ценами в соответствии с этим типом цены (код ниже), цены все подставляются правильно. Но вот в чем проблема, ведь в типовой конфигурации есть определенные процедуры, которые отрабатывают при изменении цены, и эти процедуры отрабатывают у меня только на той строчке на которую я навелся, на других ничего не меняется, укажите мне, пожалуйста, в чем я не прав, возможно ли пересчитать сразу все строчки?
&НаКлиенте
Процедура фот_фот_СебестоимостьПриИзмененииПосле(Элемент)
ЦеныНоменклатуры = фот_фот_СебестоимостьПриИзмененииПослеНаСервере();
Индекс = 0;
Для каждого СтрокаТаблицы Из Объект.Запасы Цикл
СтрокаМассиваСЦенами = ЦеныНоменклатуры.Получить(Индекс);
СтрокаТаблицы.Цена = СтрокаМассиваСЦенами.Цена;
Индекс = Индекс + 1;
// Типовые процедуры
РассчитатьСуммуВСтрокеТабличнойЧасти();
ОбновитьИтогиКлиент();
ПересчитатьПлатежныйКалендарь();
ОчиститьКалькуляцию();
ВключитьИндикаторНеобходимостиПересчетаСтоимостиДоставки();
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция фот_фот_СебестоимостьПриИзмененииПослеНаСервере()
ТаблицаЗапасы=Объект.Запасы.Выгрузить(,"Номенклатура");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТабличнаяЧастьДокумента.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| &ТабличнаяЧастьДокумента КАК ТабличнаяЧастьДокумента
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ВидЦен,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
|ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &ДатаДокумента,
| Номенклатура В
| (ВЫБРАТЬ
| НоменклатураДокумента.Номенклатура КАК Номенклатура
| ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента)
| И ВидЦен = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
| ПО НоменклатураДокумента.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура";
Запрос.УстановитьПараметр("ТабличнаяЧастьДокумента", ТаблицаЗапасы);
Запрос.УстановитьПараметр("ДатаДокумента", ДатаДокумента);
Запрос.УстановитьПараметр("ВидЦены", Объект.фот_ВидЦены);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
МассивСРезультатомЗапроса = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрокаРезультатЗапроса = Новый Структура;
СтрокаРезультатЗапроса.Вставить("Номенклатура", ВыборкаДетальныеЗаписи.Номенклатура);
СтрокаРезультатЗапроса.Вставить("ВидЦен", ВыборкаДетальныеЗаписи.ВидЦен);
СтрокаРезультатЗапроса.Вставить("Цена", ВыборкаДетальныеЗаписи.Цена);
МассивСРезультатомЗапроса.Добавить(СтрокаРезультатЗапроса);
КонецЦикла;
Возврат МассивСРезультатомЗапроса;
КонецФункции
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно в процедуру заполнения таблицы с ценами добавить условие с проверкой количества строк. Если количество строк больше нуля, то заполнять как обычно. Если есть хоть одна строка, то не заполнять строки, по каждой строке заполнять цену.
Т.е вместо блока //типовые процедуры написать свою для изменения цен в каждой строке
Массив в ЦеныНоменклатуры перед этим можно преобразовать в таблицу значений, чтобы удобнее искать для каждой номенклатуры свой набор цен
Т.е вместо блока //типовые процедуры написать свою для изменения цен в каждой строке
Массив в ЦеныНоменклатуры перед этим можно преобразовать в таблицу значений, чтобы удобнее искать для каждой номенклатуры свой набор цен
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот