Имя: Пароль:
1C
1С v8
Отсечь в запросе повторные перемещения указанной партии на тот же склад
0 Vladal
 
08.04.16
15:24
Всем привет! Пятница, но все-же...

Производство продуктов.
Есть отчет, основанный на движениях партий товаров. Общий принцип складских перемещений таков:
1. Вначале любой помещается на промежуточный склад "Карантин".
2. Далее с этого склада товар перемещается на склад продаж.
3. Со склада продаж этот товар отгружается покупателю. Туда же он и возвращался при возвратах от покупателя.

До этого момента отчет работал нормально и показывал всё правильно.
Но затем изменили работу этой схемы, связанной с возвратами:

4. От покупателя возврат приходуется на склад "Карантин", независимо от того, с какого склада он был отправлен покупателю.
5. Комиссия проверяет этот товар и либо его уничтожают (брак, порча и т.д.) либо перемещают на склад продаж.

И вот здесь при втором перемещении появляется вторая запись с этой же партией и количеством, которые не надо учитывать.

Правильно ли я понимаю, что мне надо сначала получить все перемещаемые партии со склада Карантин на Склад продаж, а потом в выборке остатков исключать эти регистраторы?
Примерно так:

|выбрать Различные
|    *
|поместить
|    ВТ_Партии
|из
|    РегистрНакопления.ПартииТоваров как Партии
|где
|    истина
|    И Партии.Номенклатура = &Номенклатура
|    И Партии.Серия = &Серия
|    И партии.Склад = &Склад
|;
|выбрать
|    ... выборка остатков партий
|    внутреннее соединение ВТ_Партии
|        по ВТ_Партии.Номенклатура = ВыборкаОстатков.номенклатура
|        и ВТ_Партии.Серия = Выборкаостатков.Серия
|        и ВТ_Партии.Регистратор = ВыборкаОстатков.ДокументПартии
|

По идее, внутреннее соединение по "ВТ_Партии.Регистратор = ВыборкаОстатков.ДокументПартии" должно отсечь все последующие перемещения?
Или надо еще по дате проверять, чтобы всегда брать более ранний документ оприходования партии?

Подскажите, если есть ошибка в моих рассуждениях или как лучше сделать.
1 AceVi
 
08.04.16
15:49
(0) Здесь это где? у тебя нет задвоенной записи.
Товар уходит со склада покупателю. ПРи возврате приходуеться на другой склад, потом перемещение межуд складами. где тут задвоенная запись?
2 Vladal
 
08.04.16
16:51
(1) Запись не задваивается, а партия попадает второй раз в отчет при выполнении пунктов 4 и 5.
В движениях получается такое:

|документ     | склад                   | товар  | партия  | кол-во | остаток карантин | остаток склад продаж
|-------------+-------------------------+--------+---------+--------+------------------+----------------------
|Перемещение 1| карантин - склад продаж | товар1 | партия1 | 10 шт  | 0 шт             | 10 шт
|Продажа 1    | склад продаж            | товар1 | партия1 | 10 шт  | 0 шт             | 0 шт
|возврат 1    | карантин                | товар1 | партия1 | 3 шт   | 3 шт             | 0 шт
|перемещение 2| карантин - склад продаж | товар1 | партия1 | 3 шт   | 0 шт             | 3 шт

Вот этот самый документ Перемещение 2 переносит товар из ранее выпущенной и проданной партии.
А раз партия одна и та же, то её повторно считать не надо.

Раньше была такая картина:

|документ     | склад                   | товар  | партия  | кол-во | остаток склад продаж
|-------------+-------------------------+--------+---------+--------+----------------------
|Перемещение 1| карантин - склад продаж | товар1 | партия1 | 10 шт  | 10 шт
|Продажа 1    | склад продаж            | товар1 | партия1 | 10 шт  | 0 шт
|возврат 1    | склад продаж            | товар1 | партия1 | 3 шт   | 3 шт
3 Ёпрст
 
08.04.16
16:56
при возврате создавай новую партию и проблем не будет
4 Ёпрст
 
08.04.16
16:57
(0) у тя документ партии в останках всегда разный..
5 Ёпрст
 
08.04.16
16:57
у одной партии
6 Ёпрст
 
08.04.16
16:58
вот и "задвоение" перемещения
7 Vladal
 
08.04.16
16:58
(3) Нет, не надо при возврате её создавать. Она в типовых документах мигрирует себе да и пусть мигрирует.
Только в этом отчете она делает фиктивный оборот, поэтому все последующие перемещения не нужно учитывать.
8 Vladal
 
08.04.16
16:59
(6) Это не задвоение. Нет никакого задвоения, потому как из производства партия в первый раз пришла как 10 штук, а с возврата 3 штуки.
Просто не надо отражать все последующие перемещения этой партии, кроме первого.
9 Vladal
 
08.04.16
17:03
(4) Документ партии всегда один и тот же - отчет производства за смену. Это же и партия, это же и серия и товар идентифицируется по ним.
При возврате товар назад приходуется с тем же документом партии, с каким он был продан. Т.е. партия одна и та же.
10 AceVi
 
08.04.16
17:25
(2) Тыкни пальцем что тут неверно? в обоих случая в конце вернгый остаток 3 на складе продаж по партии 1. В чем проблема?
11 Карупян
 
08.04.16
17:30
сделай групировку по перемещениям по партии и максимум количества
12 Карупян
 
08.04.16
17:32
хотя может быть ситуация когда разные перемещения в разных периодах
13 Vladal
 
08.04.16
18:11
(10) Надо отражать только первое перемещение, все последующие это повторное перемещение товара со склад Карантин на склад продаж.
14 Vladal
 
08.04.16
18:12
(11)  и (12) нет, надо бы по дате отсечь - первое перемещение на склад продаж, остальные в отчет попадать не должны.
15 ОчкарикСлава
 
08.04.16
19:02
А что за инфу ты этим отчетом получаешь?  Какая конечная задача?
16 Vladal
 
11.04.16
09:02
(15) Инфу получаю - выяснить количество проиозведенной продукции на складе.
Конечная задача - при подсчете остатков считать только первое преремещение из цеха на склад, не учитывая повторные перемещения этой партии между складами.
17 Serg_1960
 
11.04.16
09:26
У автора в регистре есть измерение "Документ оприходования" (партияобразующий документ)? Если "да" - документ возврата там упоминается? Если "нет" - "ты сам себе Злобный Буратино"(цы)
18 Vladal
 
11.04.16
10:40
(17) Да. Такой реквизит есть, называется ДокументПартии, о нём я написал в (1). Документ возврата от покупателя не создаёт новую партию, он использует партию отгрузки.

Одна и та же партия проходит по цепочке:
производство -> склад карантиин -> перемещение на склад отгрузки -> продажа.

А при возврате на основании отгрузки покупателю создаётся возврат и та же самая партия идёт по цепочке: (пункты 4 и 5 в (1))
(продажа) -> возврат на склад карантина -> перемещение на склад отгрузки.

Второе перемещение возвращенного товара увеличивает оборот товара, но мне нужно учитывать только количество партии, поступившее из производства.
19 Vladal
 
11.04.16
11:21
Вроде что-то получилось.
В упрощенном виде это выглядит так:

|выбрать вложенныйзапрос.регистратор поместить ПервоеПеремещение
|из (выбрать минимум(партии.регистратор) как регистратор
|    из регистранакопления.партиитоваровнаскладах как партии
|    где товары.регистратор ссылка документ.перемещениетоваров
|      и товары.организация = &организация
|      и товары.номенклатура =&номенклатура
|      и товары.серияноменклатуры = &серия
|      и ....
|    ) как вложенныйзапрос
|    внутреннее соединение регистрнакопления.партиитоваровнаскладах как партитоваровнаскладах
|    по вложенныйзапрос.регистратор = партиитоваровнаскладах.регистратор
|;

и далее уже в выборке остатков склада применить фильтр по полученному документу из временной таблицы.
20 Serg_1960
 
11.04.16
11:48
Даже если Вы получите все документы-регистраторы по одной единственной партии товара, где были возвраты, Вы не сможете с 100% гарантией отделить одно от другого в документе перемещения - партии не отличаются друг от друга (на то она и партия). Анализ прихода/расхода/оборотов регистра даст однозначный результат только в одном случае: когда вся партия товара была реализована на момент возврата, то последующие реализации - исключительно из возвращенного товара.
21 Vladal
 
11.04.16
12:09
(20) Задача упрощается за счет того, что один выпуск продукции - одна партия, один документ перемещения. Все остальные перемещения - "побочные" вследствие возвратов.
Нет такой ситуации, что часть товара из производства переместили на склад продаж одним перемещением, потом еще часть другим.

> Анализ прихода/расхода/оборотов регистра даст однозначный результат только в одном случае: когда вся партия товара была реализована на момент возврата, то последующие реализации - исключительно из возвращенного товара.

Не совсем так. У меня могут оставаться 100 единиц от первоначальной партии, еще 5 единиц вернулись. Но в остатке по этой партии мне надо показывать именно остаток партии из производства. Т.е. мой отчет покажет не 105 (это покажут типовые ведомость остатков товаров на складах и ведомость партий на складах), а 100 единиц. Задача решена.
22 Vladal
 
11.04.16
12:11
+(21) А если весь товар продан на момент возврата, то отчет покажет остаток выпущенной из производства партии = 0.