1С 7.7 Последняя розничная цена в выбранном периоде
Как в торговле и склад 9.2 получить последнюю цену номенклатуры за выбранный период по типу цен "Розничная" до изменения?
Например делаю так в документе
В итоге получаю цену саму первую в выбранном периоде
Если допустим в октябре цена менялась два раза то надо получить последнюю
Например делаю так в документе
Если КоличествоСтрок()>0 тогда
УдалитьСтроки();
КонецЕсли;
спрНом = СоздатьОбъект("Справочник.Номенклатура");
спрЦен = СоздатьОбъект("Справочник.Цены");
спрТипЦен = СоздатьОбъект("Справочник.ТипыЦен");
спрТипЦен.НайтиПоНаименованию("Розничная");
Пер = СоздатьОбъект("Периодический");
спрНом.ВыбратьЭлементы();
Пока спрНом.ПолучитьЭлемент() = 1 Цикл
Если спрНом.ЭтоГруппа() = 1 Тогда Продолжить КонецЕсли;
спрЦен.ИспользоватьВладельца(спрНом.ТекущийЭлемент());
Если спрЦен.НайтиПоРеквизиту("ТипЦен",спрТипЦен.ТекущийЭлемент(),0) = 1 Тогда
Пер.ИспользоватьОбъект("Цена",СпрЦен.ТекущийЭлемент());
Пер.ВыбратьЗначения(ДатаНач,ДатаКон);
Если Пер.ПолучитьЗначение() = 1 Тогда
ДействующаяЦена=глПолучитьЦену(спрНом.ТекущийЭлемент(),ТипЦен, РабочаяДата(),, ,,);
ЦенаСтарая=Пер.Значение;
Разница=ДействующаяЦена-ЦенаСтарая;
Если ПустоеЗначение(Разница)=0 Тогда
НоваяСтрока();
Номенклатура=(спрНом.ТекущийЭлемент());
ВидТМЦ = Перечисление.ВидыТМЦ.Товар;
Цена=ЦенаСтарая;
РозничнаяЦена=ДействующаяЦена;
Если Цена>0 тогда
РозничнаяНаценка=РозничнаяЦена/Цена*100-100;
КонецЕсли;
Количество=1;
Единица=Номенклатура.БазоваяЕдиница;
Коэффициент=Номенклатура.БазоваяЕдиница.Коэффициент;
Сумма=РозничнаяЦена*Количество;
КонецЕсли;
КонецЕсли;
//КонецЦикла;
КонецЕсли;
КонецЦикла;
ПоказатьВ итоге получаю цену саму первую в выбранном периоде
Если допустим в октябре цена менялась два раза то надо получить последнюю
По теме из базы знаний
- Автоматическое создание заказов поставщику по статистическим данным продаж в 1С 7.7 ТиС
- Загрузка номенклатуры в справочник и документ из файла Excel и CSV, обновление цен и реквизитов (адаптируется под разные конфигурации 1С: 7.7)
- АИС: Обмен данными с ЕГАИС 4.0 для конфигураций 1С 7.7
- Сервисы 1С. Часть I
- Пример переноса справочников, документов и движений через Эксель и "Конвертацию данных 2" из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если допустим в октябре цена менялась два раза то надо получить последнюю
Не особо вникая в код - может быть, метод ОбратныйПорядок() поможет?
Пер.ИспользоватьОбъект("Цена",СпрЦен.ТекущийЭлемент());
Пер.ОбратныйПорядок(1);
Пер.ВыбратьЗначения(ДатаНач,ДатаКон);
судя по всему автор хочет (мутно выражаясь при этом)
период с 25.10 - сейчас.
20.10.23 = 150руб
25.10.23 = 180руб
27.10.23 = 200руб.
28.10.23 = сегодня
автор хочет получить предыдущую к последней измененной. последняя измененная =200 руб. Предыдущая (которую хочет) = 180.
код автора - не вникая глубоко - будет лажать, бо Пер.Значение у него будет не 180, а 150.
Правильный путь указан в (2) - запустить выборку в обратном направлении и получить два значения - последнее и предпоследнее
период с 25.10 - сейчас.
20.10.23 = 150руб
25.10.23 = 180руб
27.10.23 = 200руб.
28.10.23 = сегодня
автор хочет получить предыдущую к последней измененной. последняя измененная =200 руб. Предыдущая (которую хочет) = 180.
код автора - не вникая глубоко - будет лажать, бо Пер.Значение у него будет не 180, а 150.
Правильный путь указан в (2) - запустить выборку в обратном направлении и получить два значения - последнее и предпоследнее
(7) ..при этом надо учесть, что возможны ситуации (сплошь и рядом встречается, особенно при костыльных доработках)
.
20.10.23 = 150руб
25.10.23 = 180руб
26.10.23 = 200руб.
27.10.23 = 200руб.
28.10.23 = сегодня
.
и тут вопрос - последня цена какая? 200...
а предпоследняя - какая?
.
20.10.23 = 150руб
25.10.23 = 180руб
26.10.23 = 200руб.
27.10.23 = 200руб.
28.10.23 = сегодня
.
и тут вопрос - последня цена какая? 200...
а предпоследняя - какая?
(7) .. причем можно и как (3) заметил, сделать получение от ДатаК к ДатаН СпрЦены.Цена.Получить()...только тут будет недостаток в том что если идут две подряд одинаковые цены (сплошь и рядом такое бывает) - они будут "неразличимы, то есть для алгоритма это будет как бы "продолжающаяся" цена без изменения, а в зависимости от того что автору надо - это может быть критично...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот