Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Быстрый способ получить дату последнего поступления

Быстрый способ получить дату последнего поступления
Я
   ksenod
 
01.11.18 - 11:00
МАКСИМУМ(ВЫБОР
            КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор.Дата
        КОНЕЦ) КАК ДатаПоследнего поступления
К сожалению данный запрос отрабатывает очень долго, слишком уж долго он просматривает регистры 6 лет, есть идеи как сделать это побыстрее?
 
 
   Базис
 
1 - 01.11.18 - 11:01
Просматривай в обратную сторону, с конца.
   Timon1405
 
2 - 01.11.18 - 11:16
(0)
ТОГДА выразить(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор как Документ.ПоступлениеТоваровУслуг).Дата
   youalex
 
3 - 01.11.18 - 11:19
или явное соединение с таблицей Документ.ПоступлениеТоваровУслуг (внутреннее)
   Serg_1960
 
4 - 01.11.18 - 11:29
"ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор.Дата" - лишнее, слишком много точек. Нужная дата есть в самом регистре.
   ptiz
 
5 - 01.11.18 - 11:34
(0) Не надо от нас скрывать весь запрос, не стесняйся.
   Serg_1960
 
6 - 01.11.18 - 11:36
Остатки и обороты - тоже излишняя информация. Достаточно отбор по приходу остатков.
   ksenod
 
7 - 01.11.18 - 11:45
(1) Не смог найти в гугле/документации как это делать, сам об этом думал.
(2) Можете подсказать что мне даст эта операция?
(4)(6)  Не понимаю как воспользоваться этой информацией, можете показать пример?
(5) Я читал несколько веток этого форума, думаю учитывая качество моего кодинга на 1с(я сишарпер, наш 1с гуру в отпуске) все что я получу лишь негатив.
   Tonik992
 
8 - 01.11.18 - 11:46
(2) Однозначно, отсутствует ВЫРАЗИТЬ.
   Tonik992
 
9 - 01.11.18 - 11:50
(7) >> Можете подсказать что мне даст эта операция?

Это вам даст то, что платформа 1С не будет выполнять много соединение к лишним таблицам.

Наличие условия ССЫЛКА Документ.ПоступлениеТоваровУслуг не дает платформе 1С какой-либо информации о том, что
ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор.Дата  означает получать именно из таблица ПоступлениеТоваровУслуг
   catena
 
10 - 01.11.18 - 11:52
(7)"Можете подсказать что мне даст эта операция? "

Обращение Решистратор.Дата приводит к соединению со всеми таблицами всех возможных регистраторов. ВЫРАЗИТЬ или явное соединение с нужной таблицей значительно сократит выборку.
А чем не устраивает Период самого регистра? Я понимаю, что он не всегда равен дате документа, но в типовый движениях обычно именно так.
 
 Рекламное место пустует
   Ботаник Гарден Меран
 
11 - 01.11.18 - 12:04
ВЫБРАТЬ ПЕРВЫЕ 1
    ПартииТоваровНаСкладах.Период КАК Период
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
    ПартииТоваровНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    И ПартииТоваровНаСкладах.Активность 

УПОРЯДОЧИТЬ ПО
    Период УБЫВ
   ksenod
 
12 - 01.11.18 - 12:04
Можете еще подсказать имеет ли такая конструкция право на жизнь?
СУММА(ВЫБОР
            КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор.Дата > &НачПер
                    И ТоварыНаСкладахОстаткиИОбороты.Регистратор.Дата < &КонПер
                ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
        КОНЕЦ) КАК КоличествоПриход,
Не хочу накладывать ограничение на всю выборку, т.к. дату поступления получаю из этой же таблицы, и все что поступила раньше диапазона получается без даты.


(9)(10)  Спасибо за информацию, действительно стало на ~30% быстрее
(10) Что вы имеете в виду под <Период самого регистра>?
   ptiz
 
13 - 01.11.18 - 12:06
(7) Задача непонятна.
Если нужно получить запросом одну дату по одному товару - это один способ решения, если нужно таблицу дат, например, по каждому товару - это другой способ решения.
   ksenod
 
14 - 01.11.18 - 12:07
(13) Таблицу дат для множества номенклатур
   catena
 
15 - 01.11.18 - 12:10
(12)У оборотной таблицы регистра есть реквизит Период, который как правило равен дате документа. И не придется лезть внутрь регистратора.
   ksenod
 
16 - 01.11.18 - 12:10
Вариант с Периодом не подходит, туда попадают перемещения товаров со склада на склад. Нужны только поступления от поставщиков
   catena
 
17 - 01.11.18 - 12:11
(16)Смеешься?

ВЫБОР
            КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.ПЕРИОД
        КОНЕЦ
   Eiffil123
 
18 - 01.11.18 - 12:14
(17) +1.
И периодичность указать "Регистратор" в виртуальной таблице остатков и оборотов.
   ksenod
 
19 - 01.11.18 - 12:19
(10) Можете подсказать что должно произойти чтобы он стал не равен дате документа?
   ptiz
 
20 - 01.11.18 - 12:19
(16) Это условие лучше запихнуть в ГДЕ: ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
и брать просто МАКСИМУМ(Период)
   catena
 
21 - 01.11.18 - 12:28
(19)Эм... В обработке проведения должна произойти запись туда произвольной даты, а не даты документа.
   ksenod
 
22 - 01.11.18 - 12:35
Спасибо всем кто откликнулся, самый быстрый вариант из всех получился этот:
МАКСИМУМ(ВЫБОР
            КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                ТОГДА ТоварыНаСкладахОстаткиИОбороты.Период
        КОНЕЦ) КАК Период
   ksenod
 
23 - 01.11.18 - 12:43
ВЫБРАТЬ
    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.АртикулФабрики,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Колшт,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
    ЦеныНоменклатурыСрезПоследних.Цена,
    СУММА(ВЫБОР
            КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.СписаниеТоваров
                ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход
        КОНЕЦ) КАК КолСпис,
    МАКСИМУМ(ВЫБОР
            КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                ТОГДА ТоварыНаСкладахОстаткиИОбороты.Период
        КОНЕЦ) КАК Период
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&началопериода, &конецпериода, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&конецпериода, ) КАК ТоварыВРезервеНаСкладахОстатки
        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
    НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.АртикулФабрики,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Колшт,
    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
    ЦеныНоменклатурыСрезПоследних.Цена

Отчет быстрый и почти то что мне нужно, но периодом я отрезаю даты поступления у части номенклатуры, можете подсказать как это обойти? мой вариант (12) но мне кажется я свернул не туда, явно есть способы адекватнее.
   ptiz
 
24 - 01.11.18 - 13:08
(23) Жуть какая...
У тебя выводятся и товары, которых нет на остатках - это надо?
ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток - выдаёт неверные данные
   ptiz
 
25 - 01.11.18 - 13:09
Делай пакетный запрос:
1) Остатки резервов
2) Остатки товаров (если нужны только товары с остатками)
3) Цены (с отбором по списку товаров из п.1 и п.2)
4) Даты последнего прихода (с отбором по списку товаров из п.1 и п.2)
5) Всё склеиваем в конце
   ksenod
 
26 - 01.11.18 - 13:13
(24) да, если они продавались за этот период (25) Пойду пробовать
   ksenod
 
27 - 01.11.18 - 13:14
(24) ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток - выдаёт неверные данные Можно вот про это поподробнее?
   ptiz
 
28 - 01.11.18 - 15:46
(27) А ты проверь, какое количество в резерве выдается запросом по товарам, по которым было несколько документов прихода, реализации, списания (т.е.кроме перемещений).
   ksenod
 
29 - 06.11.18 - 12:35
(28) попытался найти неверное, не смог, можете подсказать как надо делать правильно чтобы было с чем сравнивать
   d4rkmesa
 
30 - 06.11.18 - 13:01
(0) Какая надобность за этим в ПартииТоваровНаСкладах лезть, к тому же еще и с виртуальной таблицей?
   ksenod
 
31 - 06.11.18 - 13:47
(30) На момент написания (0) Это было первым найденым решением, буду рад услышать любое другое более быстрое чем (22)
   VS-1976
 
32 - 06.11.18 - 14:13
(31) Ну так возьми физическую таблицу РегистрНакопления.ТоварыНаСкладах фильтрани по периоду и НЕ Регистратор ССЫЛКА Документ.ПеремещениеТоваров. Зачем тебе виртуальная ( и ладно бы просто обороты ), тем более что ты остатки берёшь на конец периода, при этом зачем-то полным соединением :)...

PS: Из поля ВидДвижения можно понять приход или расход к примеру ВидДвижения = ЗНАЧЕНИЕ( ВидДвиженияНакопления.Приход )
   gantonio
 
33 - 06.11.18 - 14:14
сразу видно, что самого нужного в программе и нет.
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует