Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 08:55

Проверка цены в регистре.

Автор aboba174, 03 мая 2023, 15:13

0 Пользователей и 1 гость просматривают эту тему.

aboba174

Здравствуйте.

У меня есть документ "Приходная накладная". При проведении этого документа в регистр сведений "ЦеныНоменклатура" записывается цена "Материала".
Как можно оформить проверку чтобы он просмотрел все записи, и если есть точно такая же цена, он не записывал её в регистр.

Я вот например понимаю что наверное надо использовать условие "Если", но я не знаю как обращаться к другим объектам.


Сформированный код который записывает цену в регистр.
// регистр ЦеныНоменклатура
Движения.ЦеныНоменклатура.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения.ЦеныНоменклатура.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаМатериалы.Материал;
Движение.Цена = ТекСтрокаМатериалы.Цена;
КонецЦикла;

Afinogen

так регистр цен как правило в 99% - периодический, всегда важна актуальная на дату документ ацена, или вам надо весь массив цен что были за все время?

antoneus

Регистр подчинен регистратору? "Если есть точно такая же цена" - это значит, цена в документе совпадает с последней ценой материала в регистре?

aboba174

antoneus, Да, подчинен. Да это значит что цена в документе совпадает с последней ценой материала в  регистре

aboba174

Afinogen, Периодичность стоит в пределах секунды, я хочу чтобы регистр сведений не забивался одинаковыми ценами.

antoneus

То есть, если цена была

30.04.2023 - 10 р.
01.05.2023 - 6 р.
02.05.2023 - 8 р.

а сейчас опять 10 р. - то что нам делать? Писать 10 р. сегодня или удалять 6 и 8? Или имеется в виду если она позавчера была 8 и сегодня 8 - то запись не делать?

aboba174

antoneus, Имеется ввиду что если она вчера была 8, и сегодня 8, то запись не делать.

antoneus

А для этого у нас уже есть функция, которая получает цену номенклатуры. То есть

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
    Если РаботаСРегистрами.ЦенаНоменклатуры(Дата, ТекСтрокаМатериалы.Материал) = ТекСтрокаМатериалы.Цена Тогда
        Продолжить
    КонецЕсли;
    Движение = Движения.ЦеныНоменклатура.Добавить();
    Движение.Период = Дата;
    Движение.Номенклатура = ТекСтрокаМатериалы.Материал;
    Движение.Цена = ТекСтрокаМатериалы.Цена;
КонецЦикла;

aboba174

antoneus, Ага понял, спасибо большое.

aboba174


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск