8.х Получить обороты в обработке проведения УТ 10.3

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Dem0lisher, 2 июл 2015.

  1. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Добрый день!
    В подписке на проведение документа (Корректировка заказов покупателей) мне нужно обратиться запросом к регистру "ЗаказыКлиентов_Обороты" и получить оттуда все приходы в том числе и по документу, который в данный момент проводится (или уже провелся - хз..). Пробовал в запрос передавать момент времени с ссылкой результат получается без движений корректировки.
    Код:
    МоментДокумента = Новый МоментВремени(Источник.Ссылка.Дата,Источник.Ссылка);
        ЗапросПоСумме.Текст = "ВЫБРАТЬ
                             |    ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаУпрПриход, 0) КАК СуммаУпрПриход
                             |ИЗ
                             |    РегистрНакопления.ЗаказыПокупателей.Обороты(, &КП, , ) КАК ЗаказыПокупателейОбороты
                             |ГДЕ
                             |    ЗаказыПокупателейОбороты.ЗаказПокупателя = &ЗаказПокупателя";
                             ЗапросПоСумме.УстановитьПараметр("ЗаказПокупателя",Источник.Ссылка.ЗаказПокупателя);
                             ЗапросПоСумме.УстановитьПараметр("КП",МоментДокумента);
                             ТЗСумма = ЗапросПоСумме.Выполнить().Выгрузить();
                             Если ТЗСумма.Количество() = 0 Тогда
                                 возврат;
                             Иначе
                                 СуммаПоЗаказу = ТЗСумма[0].СуммаУпрПриход;
                             КонецЕсли;
    //'''''''''''''''''''''''''''''''''
    //Дальше работаю с "СуммаПоЗаказу"
    
  2. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    А если попробовать запрос чисто по этому доку, что выдаёт?
    Dem0lisher нравится это.
  3. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    По доку - это в смысле задать условие на регистратор?
  4. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    В консоли вроде отрабатывает нормально

    Код:
    ВЫБРАТЬ
        ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаУпрПриход, 0) КАК СуммаУпрПриход
    ИЗ
        РегистрНакопления.ЗаказыПокупателей.Обороты(,  &КП, , ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОбороты
    Правда там я момент задаю вручную в виде ДатаВремя
    Dem0lisher нравится это.
  5. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    В консоли ты не находишся в обработке проведения =))
  6. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Собственно и без &КП выдаёт тотже результат, что и с ним. Ведь по сути это стоимость заказанного по этому заказу товара. Другого прихода (по регистру) в разрезе этого Заказа вроде как не может. Или какой-то ещё док делает плюсовое движение по этому регистру?
    --- Объединение сообщений, 2 июл 2015 ---
    Ну нет конечно. Поэтому и говорю: Что чисто по доку выдаст без ограничения по правой дате?
    --- Объединение сообщений, 2 июл 2015 ---
    Другими словами. Сделал ли документ уже движения по этому регистру на момент отработки запроса?
  7. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Еще приход делает как раз тот самый документ, в обработке которого я хочу получить все эти приходы, а именно корректировка заказов (она может и + и - делать)
  8. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Но это справедливо, если не существует никакого другого документа делающего приход по этому регистру, с привязкой к заказу. Ну не знаю... Отмена отмены заказа :)
    --- Объединение сообщений, 2 июл 2015 ---
    А... Понял :) (упустил, затупил)
    --- Объединение сообщений, 2 июл 2015 ---
    Ну по идее, тогда должно всё отрабатывать. Подписка на проведение срабатывает после проведения (значит движения уже есть), но при условии Отказ=Ложь.
    --- Объединение сообщений, 2 июл 2015 ---
    А вот так вот не получится то, что нужно?
    Код:
    ВЫБРАТЬ
    
        ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаУпрПриход, 0) КАК СуммаУпрПриход
    ИЗ
        РегистрНакопления.ЗаказыПокупателей.Обороты(, , Регистратор, ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОбороты
    ГДЕ
        ЗаказыПокупателейОбороты.Регистратор.Дата <= &КП
    --- Объединение сообщений, 2 июл 2015 ---
    А ну ток там нужно будет итоги по Таблице получить.
    Типа
    СуммаПоЗаказу = ТЗСумма.Итог("СуммаУпрПриход");
    Последнее редактирование: 2 июл 2015
    Dem0lisher нравится это.
  9. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Или даже так :)
    Код:
    ВЫБРАТЬ
        ЕСТЬNULL(ЗаказыПокупателейОбороты.СуммаУпрПриход, 0) КАК СуммаУпрПриход
    ИЗ
        РегистрНакопления.ЗаказыПокупателей.Обороты(, , Регистратор, ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОбороты
    ГДЕ
        ЗаказыПокупателейОбороты.Регистратор.МоментВремени <= &КП
    --- Объединение сообщений, 2 июл 2015 ---
    МоментВремени я в консоли проверить не могу, ошибку выдаёт. Через параметры его задать не получается.
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.551
    Симпатии:
    716
    Баллы:
    204
    В момент проведения документа, движений еще нет. Они появятся после фиксации транзакций всех регистров, в которых документ является регистратором. Если документ перепроводится, то будут данные предыдущего проведения.
  11. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Нет ли какой-нибудь чудо-подписки, например на "ПослеПроведенияДокумента"
  12. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.742
    Симпатии:
    509
    Баллы:
    204
    Что мешает в обработчике проведения, в самом конце при условии что отказа не было, прописать нужный код ?
    Dem0lisher нравится это.
  13. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Ну дык подписка на проведение срабатывает после обработчика проведения в модуле объекта?
  14. Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Наверное, чтоб сохранить обновляемость.
    Dem0lisher нравится это.
  15. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.742
    Симпатии:
    509
    Баллы:
    204
    Т.е. вы хотите сказать, что если использовать подписку - то код проведения исполняется дважды ???
    Dem0lisher нравится это.
  16. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Если вы в модуле под первой строкой кода напишете вторую - она повторит то, что делает первая?! =)
  17. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.742
    Симпатии:
    509
    Баллы:
    204
    ну это смотря какая строка:), ну это лирика, на форуме постоянно поднимаются темы, по поводу этих подписок. Все зависит от реализации. Подписка лишь вызывается в тот момент, когда срабатывает определенный обработчик. И в этой подписке можно дописать дополнительный функционал.
    Dem0lisher нравится это.
  18. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.551
    Симпатии:
    716
    Баллы:
    204
    А какая финальная цель всех этих действий?
    Dem0lisher нравится это.
  19. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    А цель - понять, как изменилась сумма заказа после корректировки, и если она изменилась, то перезаполнить документ "ПланируемоеПоступлениеДенежныхСредств" новой суммой.
    Например, заказали позицию №1 на 100 рублей. и создали документ "ПланируемоеПоступлениеДенежныхСредств" на 100 рублей.
    А потом скорректировали заказ - добавили вторую позицию еще на 50 рублей. Теперь нужно изменить сумму в "ПланируемоеПоступлениеДенежныхСредств" на 150
  20. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.742
    Симпатии:
    509
    Баллы:
    204
    Ну вот и проверяйте. Когда изменяете документ, цепляйте его ПланируемоеПоступлениеДенежныхСредств и там меняйте.
    Dem0lisher нравится это.

Поделиться этой страницей