![]() |
|
Быстрый способ получить дату последнего поступления | ☑ | ||
---|---|---|---|---|
0
ksenod
01.11.18
✎
11:00
|
МАКСИМУМ(ВЫБОР
КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор.Дата КОНЕЦ) КАК ДатаПоследнего поступления К сожалению данный запрос отрабатывает очень долго, слишком уж долго он просматривает регистры 6 лет, есть идеи как сделать это побыстрее? |
|||
1
Базис
naïve
01.11.18
✎
11:01
|
Просматривай в обратную сторону, с конца.
|
|||
2
Timon1405
01.11.18
✎
11:16
|
(0)
ТОГДА выразить(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор как Документ.ПоступлениеТоваровУслуг).Дата |
|||
3
youalex
01.11.18
✎
11:19
|
или явное соединение с таблицей Документ.ПоступлениеТоваровУслуг (внутреннее)
|
|||
4
Serg_1960
01.11.18
✎
11:29
|
"ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор.Дата" - лишнее, слишком много точек. Нужная дата есть в самом регистре.
|
|||
5
ptiz
01.11.18
✎
11:34
|
(0) Не надо от нас скрывать весь запрос, не стесняйся.
|
|||
6
Serg_1960
01.11.18
✎
11:36
|
Остатки и обороты - тоже излишняя информация. Достаточно отбор по приходу остатков.
|
|||
7
ksenod
01.11.18
✎
11:45
|
(1) Не смог найти в гугле/документации как это делать, сам об этом думал.
(2) Можете подсказать что мне даст эта операция? (4)(6) Не понимаю как воспользоваться этой информацией, можете показать пример? (5) Я читал несколько веток этого форума, думаю учитывая качество моего кодинга на 1с(я сишарпер, наш 1с гуру в отпуске) все что я получу лишь негатив. |
|||
8
Tonik992
01.11.18
✎
11:46
|
(2) Однозначно, отсутствует ВЫРАЗИТЬ.
|
|||
9
Tonik992
01.11.18
✎
11:50
|
(7) >> Можете подсказать что мне даст эта операция?
Это вам даст то, что платформа 1С не будет выполнять много соединение к лишним таблицам. Наличие условия ССЫЛКА Документ.ПоступлениеТоваровУслуг не дает платформе 1С какой-либо информации о том, что ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор.Дата означает получать именно из таблица ПоступлениеТоваровУслуг |
|||
10
catena
01.11.18
✎
11:52
|
(7)"Можете подсказать что мне даст эта операция? "
Обращение Решистратор.Дата приводит к соединению со всеми таблицами всех возможных регистраторов. ВЫРАЗИТЬ или явное соединение с нужной таблицей значительно сократит выборку. А чем не устраивает Период самого регистра? Я понимаю, что он не всегда равен дате документа, но в типовый движениях обычно именно так. |
|||
11
Ботаник Гарден Меран
01.11.18
✎
12:04
|
ВЫБРАТЬ ПЕРВЫЕ 1
ПартииТоваровНаСкладах.Период КАК Период ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ГДЕ ПартииТоваровНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) И ПартииТоваровНаСкладах.Активность УПОРЯДОЧИТЬ ПО Период УБЫВ |
|||
12
ksenod
01.11.18
✎
12:04
|
Можете еще подсказать имеет ли такая конструкция право на жизнь?
СУММА(ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор.Дата > &НачПер И ТоварыНаСкладахОстаткиИОбороты.Регистратор.Дата < &КонПер ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КОНЕЦ) КАК КоличествоПриход, Не хочу накладывать ограничение на всю выборку, т.к. дату поступления получаю из этой же таблицы, и все что поступила раньше диапазона получается без даты. (9)(10) Спасибо за информацию, действительно стало на ~30% быстрее (10) Что вы имеете в виду под <Период самого регистра>? |
|||
13
ptiz
01.11.18
✎
12:06
|
(7) Задача непонятна.
Если нужно получить запросом одну дату по одному товару - это один способ решения, если нужно таблицу дат, например, по каждому товару - это другой способ решения. |
|||
14
ksenod
01.11.18
✎
12:07
|
(13) Таблицу дат для множества номенклатур
|
|||
15
catena
01.11.18
✎
12:10
|
(12)У оборотной таблицы регистра есть реквизит Период, который как правило равен дате документа. И не придется лезть внутрь регистратора.
|
|||
16
ksenod
01.11.18
✎
12:10
|
Вариант с Периодом не подходит, туда попадают перемещения товаров со склада на склад. Нужны только поступления от поставщиков
|
|||
17
catena
01.11.18
✎
12:11
|
(16)Смеешься?
ВЫБОР КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.ПЕРИОД КОНЕЦ |
|||
18
Eiffil123
01.11.18
✎
12:14
|
(17) +1.
И периодичность указать "Регистратор" в виртуальной таблице остатков и оборотов. |
|||
19
ksenod
01.11.18
✎
12:19
|
(10) Можете подсказать что должно произойти чтобы он стал не равен дате документа?
|
|||
20
ptiz
01.11.18
✎
12:19
|
(16) Это условие лучше запихнуть в ГДЕ: ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
и брать просто МАКСИМУМ(Период) |
|||
21
catena
01.11.18
✎
12:28
|
(19)Эм... В обработке проведения должна произойти запись туда произвольной даты, а не даты документа.
|
|||
22
ksenod
01.11.18
✎
12:35
|
Спасибо всем кто откликнулся, самый быстрый вариант из всех получился этот:
МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ТОГДА ТоварыНаСкладахОстаткиИОбороты.Период КОНЕЦ) КАК Период |
|||
23
ksenod
01.11.18
✎
12:43
|
ВЫБРАТЬ
СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.АртикулФабрики, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Колшт, ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.Цена, СУММА(ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.СписаниеТоваров ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КОНЕЦ) КАК КолСпис, МАКСИМУМ(ВЫБОР КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ТОГДА ТоварыНаСкладахОстаткиИОбороты.Период КОНЕЦ) КАК Период ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&началопериода, &конецпериода, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&конецпериода, ) КАК ТоварыВРезервеНаСкладахОстатки ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Ссылка, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.АртикулФабрики, ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Колшт, ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.Цена Отчет быстрый и почти то что мне нужно, но периодом я отрезаю даты поступления у части номенклатуры, можете подсказать как это обойти? мой вариант (12) но мне кажется я свернул не туда, явно есть способы адекватнее. |
|||
24
ptiz
01.11.18
✎
13:08
|
(23) Жуть какая...
У тебя выводятся и товары, которых нет на остатках - это надо? ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток - выдаёт неверные данные |
|||
25
ptiz
01.11.18
✎
13:09
|
Делай пакетный запрос:
1) Остатки резервов 2) Остатки товаров (если нужны только товары с остатками) 3) Цены (с отбором по списку товаров из п.1 и п.2) 4) Даты последнего прихода (с отбором по списку товаров из п.1 и п.2) 5) Всё склеиваем в конце |
|||
26
ksenod
01.11.18
✎
13:13
|
(24) да, если они продавались за этот период (25) Пойду пробовать
|
|||
27
ksenod
01.11.18
✎
13:14
|
(24) ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток - выдаёт неверные данные Можно вот про это поподробнее?
|
|||
28
ptiz
01.11.18
✎
15:46
|
(27) А ты проверь, какое количество в резерве выдается запросом по товарам, по которым было несколько документов прихода, реализации, списания (т.е.кроме перемещений).
|
|||
29
ksenod
06.11.18
✎
12:35
|
(28) попытался найти неверное, не смог, можете подсказать как надо делать правильно чтобы было с чем сравнивать
|
|||
30
d4rkmesa
гуру
06.11.18
✎
13:01
|
(0) Какая надобность за этим в ПартииТоваровНаСкладах лезть, к тому же еще и с виртуальной таблицей?
|
|||
31
ksenod
06.11.18
✎
13:47
|
(30) На момент написания (0) Это было первым найденым решением, буду рад услышать любое другое более быстрое чем (22)
|
|||
32
VS-1976
06.11.18
✎
14:13
|
(31) Ну так возьми физическую таблицу РегистрНакопления.ТоварыНаСкладах фильтрани по периоду и НЕ Регистратор ССЫЛКА Документ.ПеремещениеТоваров. Зачем тебе виртуальная ( и ладно бы просто обороты ), тем более что ты остатки берёшь на конец периода, при этом зачем-то полным соединением :)...
PS: Из поля ВидДвижения можно понять приход или расход к примеру ВидДвижения = ЗНАЧЕНИЕ( ВидДвиженияНакопления.Приход ) |
|||
33
gantonio
06.11.18
✎
14:14
|
сразу видно, что самого нужного в программе и нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |