![]() |
|
Вопрос по работе с табличным полем в обработке формирование цен . | ☑ | ||
---|---|---|---|---|
0
VismuT
12.06.23
✎
15:59
|
Всем доброго дня.
УТ Казахстан 2.2. Обычные формы. Нужно рассчитать процент прошлой наценки в обработке формирование цен . Я "написал" вот такой быдло код . Процедура ПроцентПрошлойНаценки(Кнопка) Типцен1 = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная",ложь); Типцен2 = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная",ложь); Для Каждого СтрокаТовара Из Товары Цикл Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.ТипЦен, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена1 |ПОМЕСТИТЬ ТЦРозн |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних |ГДЕ | ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура | И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен1 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен2, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена2, | ТЦРозн.Номенклатура КАК Номенклатура1, | ТЦРозн.ТипЦен, | ТЦРозн.Цена1 |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЦРозн КАК ТЦРозн | ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТЦРозн.Номенклатура |ГДЕ | ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура | И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен2"; Запрос.УстановитьПараметр("Номенклатура",СтрокаТовара.Номенклатура); Запрос.УстановитьПараметр("Типцен1",Типцен1); Запрос.УстановитьПараметр("Типцен2",Типцен2); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СтрокаТовара.Цена1 = ВыборкаДетальныеЗаписи.Цена1; СтрокаТовара.Цена2 = ВыборкаДетальныеЗаписи.Цена2; КонецЦикла; СтрокаТовара.ПрошлыйПроцентНаценки = ?(СтрокаТовара.Цена2=0,0,СтрокаТовара.Цена1/СтрокаТовара.Цена2 * 100-100); КонецЦикла; КонецПроцедуры Процедура отрабатывает нормально. Но мне кажется ,что чего-то не хватает. Можете подсказать , как еще можно переписать этот код? Либо чего нужно добавить? |
|||
1
Волшебник
12.06.23
✎
16:04
|
>> Но мне кажется ,что чего-то не хватает.
Вам кажется или чего-то не хватает? Мы должны догадаться, что Вам там кажется? |
|||
2
Волшебник
12.06.23
✎
16:07
|
Может Вас гложет совесть, что Вы берёте СрезПоследних по всему регистру? Для больших регистров может долго отрабатывать, например, несколько часов.
|
|||
3
Волшебник
12.06.23
✎
16:14
|
Вот вам идеи:
ВЫБРАТЬ Номенклатура, ТипЦен, Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура И ТипЦен В (&ТипыЦен)) --- МассивТиповЦен = ... Запрос.УстановитьПараметр("Номенклатура",СтрокаТовара.Номенклатура); Запрос.УстановитьПараметр("ТипыЦен",МассивТиповЦен); --- Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.ТипЦен = Розничная Тогда ... Иначе ... |
|||
4
VismuT
16.06.23
✎
13:07
|
Офф (3) Спасибо! Вы так хорошо объясняете. Прочел в вашем профиле ,что Вы автор книги. Где ее можно официально приобрести?
|
|||
5
Волшебник
16.06.23
✎
13:08
|
(4) Тираж уже давно распродан. Ищите в интернетах
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |