Имя: Пароль:
1C
1С v8
1с Отбор по регистратору в регистре накопления остатков и оборотов
,
0 jamesgold
 
17.07.18
14:14
Добрый день, прошу помочь!
Имеется регистр накопления у которого несколько документов регистраторов, как получить остатки и обороты задав условия для одного из регистраторов.
Должны быть остатки и оброты по номенклатуре за исключением тех, - которые исключаться в отборе по указанному регистратору. Исключаемая номенклатура также может быть и по другим регистраторам, соответственно по другим регистраторам движения этой номенклатуры должно остаться.
1 jamesgold
 
17.07.18
14:28
Идея была такая сначала получить только обороты за исключение тех оборотов которые не проходят отбор по указанному регистратору. Вот такой запрос:
ВЫБРАТЬ
    ТоварыНаСкладах.Период,
    ТоварыНаСкладах.Регистратор.СкладОтправитель,
    ТоварыНаСкладах.Регистратор.СкладПолучатель,
    ТоварыНаСкладах.СерияНоменклатуры
ПОМЕСТИТЬ ВТ_Лишнее
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
    И ТоварыНаСкладах.Склад В(&Склад)
    И ТоварыНаСкладах.Регистратор.СкладОтправитель = &Склад
    И ТоварыНаСкладах.Регистратор.СкладПолучатель = &Склад
    И ТоварыНаСкладах.Период > &НП
    И ТоварыНаСкладах.Период < &КП
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСкладахОбороты.Склад,
    ТоварыНаСкладахОбороты.Номенклатура,
    ТоварыНаСкладахОбороты.СерияНоменклатуры,
    ТоварыНаСкладахОбороты.КоличествоПриход,
    ТоварыНаСкладахОбороты.КоличествоРасход,
    ТоварыНаСкладахОбороты.Период
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(&НП, &КП, Запись, Склад В (&Склад)) КАК ТоварыНаСкладахОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Лишнее КАК ВТ_Лишнее
        ПО ТоварыНаСкладахОбороты.Период <> ВТ_Лишнее.Период
            И ТоварыНаСкладахОбороты.СерияНоменклатуры <> ВТ_Лишнее.СерияНоменклатуры

И после этого к каждой серии пристегнуть остатки
2 DrWatson
 
17.07.18
14:34
(0) А где вопрос, с чем помочь?
3 Джинн
 
17.07.18
14:36
(0) Остатки по регистратору? Вы что там курите?
4 jamesgold
 
17.07.18
14:37
Я меня  это не работает, ищу других идей
5 DrWatson
 
17.07.18
14:38
Проще не взлетит?
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НП, &КП, Регистратор, Склад В (&Склад)) КАК ТоварыНаСкладах
ГДЕ НЕ (
    ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
    И ТоварыНаСкладах.Склад В(&Склад)
    И ТоварыНаСкладах.Регистратор.СкладОтправитель = &Склад
    И ТоварыНаСкладах.Регистратор.СкладПолучатель = &Склад
    И ТоварыНаСкладах.Период > &НП
    И ТоварыНаСкладах.Период < &КП)
6 Garykom
 
гуру
17.07.18
14:38
(3) Да пофиг что, не понял почему не делятся?
7 Малыш Джон
 
17.07.18
14:40
(0) остатки по регистратору - это по конкретному регистратору или по типу регистратора?
8 jamesgold
 
17.07.18
14:43
Может будет идея как это сделать изящнее или правильнее?
9 Tonik992
 
17.07.18
14:46
(3) Стандартная одинэсовская смесь.

А что вообще за отчет такой, который остатки покажет за вычетом каких-то регистраторов? Если исключить регистратор, то цифра в поле "Остаток" что будет значить для пользователя?
10 Garykom
 
гуру
17.07.18
14:47
Остатки для регистров накопления хранятся в разрезе измерений.
Регистратор <> Измерение регистра.

Ответь за сколько лет работы хочешь получить "остатки"? Сколько там у вас номенклатуры и регистраторов для исключения?

Сколько времени оно потратит чтобы с начала времен пересчитать все движения "вручную" и вывести тебе требуемые остатки?
11 Михаил Козлов
 
17.07.18
14:49
(9) Скорее всего, пытаются получить обороты прихода/расходы без перемещений. Типа "со склада продано...".
12 jamesgold
 
17.07.18
14:50
Отчет исключить часть оборотов и остатков если они соответствуют отбору по одному из регистраторов
13 DrWatson
 
17.07.18
14:51
(9) по условию запроса в (1) там исключаются холостые обороты, перемещения со склада на этот же склад. Я так понял остаток при этом не меняется.
Откуда такие документы берутся - это уже другой вопрос.
14 jamesgold
 
17.07.18
14:52
Есть регистр товары на складах один из регистраторов перемещение нужно исключить движуху между своими складами теми которые в отборе
15 DrWatson
 
17.07.18
14:53
(14) складами?
У тебя в запросе равенство стоит
16 Tonik992
 
17.07.18
14:54
(14) Получи первым запросом остатки.
Присоедини со вторым запросом движения по нужным ("Исключающим") регистраторам.. И вычитай.
17 jamesgold
 
17.07.18
14:54
Если склад отправитель или склад получатель с списке заданных движуха перемещений по ним не нужна
18 Tonik992
 
17.07.18
14:55
(13) Это кстате интересное перемещение.. Наверное обусловлено каким-то особенным бизнес-процессом.. Что-то мутят ниподецки
19 Джинн
 
17.07.18
14:56
(17) А это ничего, что в итоге остатки по отчету не совпадут с реальными остатками на складе?
20 Вафель
 
17.07.18
14:57
(19) может это виртуальные склады?
21 jamesgold
 
17.07.18
15:00
(5) Должны совпасть
22 jamesgold
 
17.07.18
15:00
(5) ВЫБРАТЬ
    ТоварыНаСкладахОбороты.Склад,
    ТоварыНаСкладахОбороты.Номенклатура,
    ТоварыНаСкладахОбороты.СерияНоменклатуры,
    ТоварыНаСкладахОбороты.КоличествоПриход,
    ТоварыНаСкладахОбороты.КоличествоРасход,
    ТоварыНаСкладахОбороты.Период,
    ТоварыНаСкладахОбороты.Регистратор
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(&НП, &КП, Запись, Склад В (&Склад)) КАК ТоварыНаСкладахОбороты
ГДЕ
    НЕ(ТоварыНаСкладахОбороты.Склад В (&Склад)
                И ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                И ТоварыНаСкладахОбороты.Регистратор.СкладОтправитель В (&Склад)
                И ТоварыНаСкладахОбороты.Регистратор.СкладПолучатель В (&Склад)
                И ТоварыНаСкладахОбороты.Период > &НП
                И ТоварыНаСкладахОбороты.Период < &КП)
23 Джинн
 
17.07.18
15:01
(20) ?! Что есть "виртуальные склады"? Как обычно черный нал и пр. прелести "налоговой оптимизации"?
24 jamesgold
 
17.07.18
15:07
Го по делу. Есть идеи у кого еще? ПО идее те обороты что я в 22 получил к ним теперь осталось пристегнуть остатки на конец и начало периода
25 Tonik992
 
17.07.18
15:07
Остаток не будет правильный при таком запросе (22).
Вам надо нарастающим методом вычитать остатки по регистратору.
26 Малыш Джон
 
17.07.18
15:10
(24) выбери все остатки и обороты за период, выбери остатки и обороты по регистраторам за период
через ОБЪЕДИНИТЬ отними от первой ВТ вторую ВТ
27 Малыш Джон
 
17.07.18
15:13
+(26) во второй ВТ, естественно остатки не из ТОваров на складах брать
если расход, то начальный остаток = оборот, конечный = 0
если приход - наоборот
28 Малыш Джон
 
17.07.18
15:21
Хотя это я что-то погорячился...

остатки тут придется руками считать
29 Garykom
 
гуру
17.07.18
15:29
(28) угу см (10)
30 jamesgold
 
17.07.18
15:36
По идее простая задача а хрен сделаешь
31 Джинн
 
17.07.18
16:06
(30) Дебильную задачу никогда просто не сделаешь.
32 Garykom
 
гуру
17.07.18
16:15
(31) Она легко делается только подумать чуть надо же.

Копия базы, распроводим лишние документы перемещения, снимаем отчет.

Можно и в реальной базе в одной транзакции такой изврат провернуть )) с последующей отменой транзакции.
33 Джинн
 
17.07.18
16:21
(32) :) Вы в службе техподдержки 1С не работали?

Как-то мне после выхода ТиС с его хитрым способом упр/фин учета, при котором регистры не закрывались, ответили "А Вы поменяйте аналитику, перепроведите все документы, сформируйте отчет, а затем перепроведите обратно.".
34 Garykom
 
гуру
17.07.18
16:23
(33) Неа но приглашали, отказался ))
35 jamesgold
 
17.07.18
16:33
(32) Прикольно. И главное работать правильно будет
36 jamesgold
 
17.07.18
16:34
Хотелось бы менее радикальное
37 Джинн
 
17.07.18
16:37
(36) Для менее радикальных мер нужно проектировать изначально структуру регистров под задачу. А не пытаться достать гланды нетрадиционным способом.
38 Garykom
 
гуру
17.07.18
16:37
(36) Менее радикальное это самому остатки считать, все движения из регистра в ТЗ и вперед.
39 jamesgold
 
17.07.18
16:38
Может  типа получить 2 ТЗ, одну полную вторую исключающие обороты и просто перебором получить разницу?
40 Garykom
 
гуру
17.07.18
16:38
(37) Угу типа засунуть Регистратора в Измерения РН и перепровести все документы ))
41 Garykom
 
гуру
17.07.18
16:41
(39) Получи полную таблицу движений, приход с + расход с -.
С начала времен получи пропуская лишние документы.
(Склад, Номенклатура, Количество)

Затем просто Свернуть("Склад, Номенклатуры", "Количество").
42 jamesgold
 
17.07.18
16:49
(41) По идее это можно в запросе сделать и засунуть во временную таблицу из которой запросы потом делать можно будет
43 hhhh
 
17.07.18
17:33
(42) ну да. Только заранее предупреди юзеров, что отчет будет формироваться минут 40. Чтобы они предварительно сбегали.
44 jamesgold
 
18.07.18
07:31
Ап, прошу еще идей.
AdBlock убивает бесплатный контент. 1Сергей