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

1C 8.3. Регистр сведений СрезПоследних каждый раз меняется местами при записи реквизита

Автор gulnyr, 17 июл 2023, 10:55

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

Максим75

gulnyr, да что же здесь не понятного?

|ГДЕ ЦеныСрезПоследних.Цена > 0 И НоменклатураДва.Цены<>ЦеныСрезПоследних.Цена"; //Выводим те записи регистра (ЦеныСрезПоследних.Цена), которые отличаются от значении в реквизите (НоменклатураДва.Цены)

вот в Вашем запросе именно здесь все и происходит. Вы переписали в справочнике цену, а в регистре есть несколько цен, и следующий раз при вызове запроса выпадает другая цена из регистра, она записывается в справочник и так по кругу.

gulnyr

Максим75, а как сделать чтобы не выпадала другая цена? СрезПоследних разве не предназначена для вывода последней записи (в данной случае последней цены)?

Afinogen

срез последних  выводит последнее значение с учетом измерений

Afinogen

вот эта конструкция

Справочники.Номенклатура.НайтиПоНаименованию("Краска BC... Challenger BC")вообще огонь)

LexaK

хм, "Мы же здесь не трогаем регистр"
а в 1С еще 100500 событий где может срабатывать код обработчика события.

в модуле регистра в процедуре события ПереЗписью(..) поставьте точку остановки и ловите откуда ваш регистр перезаписывается
(если этой процедуры еще нет, то создайте ее, пусть будет пустая, на ней тоже можно отлаживаться)
если помогло нажмите: Спасибо!

Afinogen

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

Запрос.Текст="ВЫБРАТЬ НоменклатураДва.Ссылка КАК СсылкаНомен,
|НоменклатураДва.Цены КАК ЦеныВНоменклатуре,
|ЦеныСрезПоследних.Номенклатура,
|ЦеныСрезПоследних.Цена КАК Цена
|ИЗ
|РегистрСведений.Цены.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныСрезПоследних
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураДва
|ПО НоменклатураДва.Ссылка = ЦеныСрезПоследних.Номенклатура
|ГДЕ ЦеныСрезПоследних.Цена > 0 И НоменклатураДва.Цены<>ЦеныСрезПоследних.Цена И НоменклатураДва.Ссылка=&Номенклатура";

 :dfbsdfbsdf:

я так понимаю вам нужно вывести всю номенклатуру у которой цена не равна цене в регистре так что ли?


Afinogen


gulnyr

Afinogen, да, все верно. И как только попадается какое-то отличающееся значение, то с помощью данного кода изменяем его (чтобы реквизит номенклатуры совпадала со значением записи регистра сведения)

Afinogen

ВЫБРАТЬ
Номенклатура.СсылкаНомен,
Номенклатура.Цены  КАК ЦеныВНоменклатуре,
ЕСТЬNULL(ТабРегистр.Цена, 0) КАК Цена
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныСрезПоследних.НоменклатураКАК Номеннклатура,
ЦеныСрезПоследних.Цена КАК Цена
ИЗ
РегистрСведений.Цены.СрезПоследних(
,
ТипЦен = &ТипЦен
И Номенклатура= &Номенклатура) КАК ЦеныСрезПоследних
ГДЕ
ЦеныСрезПоследних.Цена> 0) КАК ТабРегистр
ПО Номенклатура.Ссылка = ТабРегистр.Номеннклатура
ГДЕ
НЕ Номенклатура.Наценка = ЕСТЬNULL(ТабРегистр.Цена, 0)

Держите,  запрос вам выведет все товары джля которых  цена в карточке не равна цене в регистре

Теги:

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

Рейтинг@Mail.ru

Поиск