Имя: Пароль:
1C
 
В обработке проведения не работает срез последних цен, помогите понять причину
0 oslokot
 
05.05.20
18:04
Есть типовой док в бп3 "установка цен номенклатуры", который формирует записи в РС цены номенклатуры.
Поместил процедуру ОбработкаПроведения в расширение &После и пытаюсь в ней прочитать РС цены, обычный запрос срезпоследних.

При первом проведении мой запрос возвращает пусто! а при втором - все ок, записи есть.
Как такое может происходить?
1 Маленький Вопросик
 
05.05.20
18:09
кривой запрос!
2 oslokot
 
05.05.20
18:12

        Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |            ,
        |            ТипЦен = &ТипЦен
        |                И Валюта = &Валюта) КАК ЦеныНоменклатурыСрезПоследних");
        
        Запрос.УстановитьПараметр("ТипЦен", Объект.ТипЦен);
        Запрос.УстановитьПараметр("Валюта", Константы.ВалютаРегламентированногоУчета.Получить());



да гдеж он кривой? :)
3 Маленький Вопросик
 
05.05.20
18:13
Объект.ТипЦен - ну вот здесь. Объект то создан?
4 Маленький Вопросик
 
05.05.20
18:14
потом, ты его создаешь - и он отрабатывает уже повторно!
5 oslokot
 
05.05.20
18:14
ну а как же, в отладчике тип цен показывает
6 onetone
 
05.05.20
18:15
Может записи в РС формируются не в обработке проведения?
7 Маленький Вопросик
 
05.05.20
18:18
вот ты сам ответил в своем вопросе:

Поместил процедуру "ОбработкаПроведения" в расширение &После и пытаюсь в ней прочитать РС цены

если ты провел документ, используй не Объект, а ссылку на него.
8 oslokot
 
05.05.20
18:18
(6) да не, в обработке проведения простой модуль:




// Процедура - обработчик события "ОбработкаПроведения".
//
Процедура ОбработкаПроведения(Отказ, Режим)
    
    // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
    
    ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
        
    ПараметрыПроведения = Документы.УстановкаЦенНоменклатуры.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
    Если Отказ Тогда
        Возврат;
    КонецЕсли;
    
    // ФОРМИРОВАНИЕ ДВИЖЕНИЙ
    
    Документы.УстановкаЦенНоменклатуры.СформироватьДвиженияУстановкаЦен(ПараметрыПроведения.УстановкаЦен,
        ПараметрыПроведения.ТаблицаРеквизитов, Движения, Отказ);
        
    ПроведениеСервер.УстановитьЗаписьОчищаемыхНаборовЗаписей(ЭтотОбъект);
    
КонецПроцедуры    // ОбработкаПроведения

9 oslokot
 
05.05.20
18:21
(7) да я уже разными путями пробую. это я уже не в расширении, а в подписке на событие при записи :)
но ведь в отладчике Объект.ТипЦен тип СправочникСсылка.ТипыЦенНоменклатуры

ок,ща попробую объект.ссылка.ТипЦен
10 Маленький Вопросик
 
05.05.20
18:22
объект.ссылка.ТипЦен - еп****ть..... )
11 oslokot
 
05.05.20
18:23
ну а что, все равно туплю, дайте свободы
12 onetone
 
05.05.20
18:27
Ну и банальщину тогда, после первого проведения, записи в РС появляются?
13 oslokot
 
05.05.20
18:28
не, не работает. жесть какая,что я делаю не так?


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



не работает!!
14 oslokot
 
05.05.20
18:29
(12) да, конечно :)
15 oslokot
 
05.05.20
18:30
такое впечатление, пока не отработает проведение документа, он сука, РС цен держит!
16 oslokot
 
05.05.20
18:30
а потом отпускает
17 onetone
 
05.05.20
18:30
Подцепись к другому событию
18 rphosts
 
05.05.20
18:31
(13) остался последний момент... а если валюту исключить?
19 onetone
 
05.05.20
18:32
(18) Ну тогда странно что после второго проведения появляются данные.
20 Мимохожий Однако
 
05.05.20
18:33
Попробуй Объект.ТипЦен получить через серверную функцию
21 oslokot
 
05.05.20
18:34
(17) цеплялся к:
1. подписка.ПриЗаписи
2. подписка.ОбработкаПроведения
3. расширение

пофиг
22 oslokot
 
05.05.20
18:37
(20) дело не в нем. без типа цен тоже болт (13)
23 oslokot
 
05.05.20
18:37
тут какой-то платформенный нюанс есть
24 oslokot
 
05.05.20
18:39
то есть док "установка цен" это регистратор для регистра сведений ЦеныНоменклатуры и у него периодичность в пределах дня
и при первом проведении, он не отпускает свои же записи на прочитать, их нет!
25 Маленький Вопросик
 
05.05.20
18:41
период среза поставь.
26 oslokot
 
05.05.20
18:41
(25) пробовал тек.дату, не помогло
27 MaxS
 
05.05.20
18:41
(23) может быть транзакция фиксируется после проведения? А в расширении после, но не совсем после )
Можно же в отладчике остановиться на запросе, открыть другое предприятие и выполнить запрос для проверки.
28 Маленький Вопросик
 
05.05.20
18:44
(27) КомандаСистемы
29 Маленький Вопросик
 
05.05.20
18:44
(28) не туда)
30 oslokot
 
05.05.20
18:46
(27) поместил свой запрос в конец модуля обработкапроведения документа! иии... Пусто! ))) во как..
31 onetone
 
05.05.20
18:48
Предлагаю прицепится в форме к событию ПослеЗаписиНаСервере, там данные есть, проверил)
32 oslokot
 
05.05.20
18:52
да к форме то можно, но не вариант. Нужно чтоб работало при проведении их списка
33 oslokot
 
05.05.20
18:53
* из списка
34 oslokot
 
05.05.20
18:55
Ну в общем я пришел к выводу, что фиксации транзакции в модуле обработки проведения НЕ происходит, невероятно но факт!
35 Многолетний Апельсин
 
05.05.20
18:59
(34) Да, движения в общем случае записываются после окончания процедуры "ОбработкаПроведения".
Если надо в процессе проведения их прочитать из базы - надо выполнить Движения.ЦеныНоменклатуры.Записать();
36 oslokot
 
05.05.20
19:01
(35) ааа блин, спасибо я ведь знал про этот момент но забыл.
точно!
Независимо от того, куда вы едете — это в гору и против ветра!