Имя: Пароль:
1C
 
ПеремещениеТоваров. Приход и расход с одним периодом. Как выбрать последний?
0 altaykniga
 
29.02.24
07:18
Доброго времени суток! Прошу подсказки умных людей.

Необходимо из регистра ТоварыНаСкладах по каждой номенклатуре вычислить склад последнего движения.

В итоге получился следующий запрос:

ВЫБРАТЬ
	МАКСИМУМ(ТоварыНаСкладах.Период) КАК Период,
	ТоварыНаСкладах.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_Даты
ИЗ
	РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
	ТоварыНаСкладах.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
	ТоварыНаСкладах.Номенклатура
;

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


вопрос: если последнее движение породил документ ПеремещениеТоваров, то в выборку берется 2 строки: приход и расход, т.к. период у них одинаковый.

https://disk.yandex.ru/i/pF-31izHzwk3WA

Как получить последнее движение (логично, что сначала документ делает расход со склада, а затем приход на склад)
1 Волшебник
 
29.02.24
07:18
Если период прихода и расхода совпадает, то последний будет ЛЮБОЙ из них
2 altaykniga
 
29.02.24
07:18
хотел выбирать последнее движение по номеру строки, но, как ни странно, приход идет в строке №1, а расход - в строке №2
3 Irbis
 
29.02.24
07:20
(2) А в рамках одной хозяйственной операции (документа) есть разница?
4 Волшебник
 
29.02.24
07:21
Для поиска последнего склада (из перемещения) добавьте поле "тип документа числом", где приход будет 1, расход 2, а перемещение 3, например, через
ВЫБОР КОГДА Док ССЫЛКА Документ.Приход ТОГДА 1

Далее внутри периода сортируйте по "Тип документа числом" и в случае 3 (перемещения) в поле "склад" помещайте склад поступления.
5 Irbis
 
29.02.24
07:25
А потом начнутся вопросы а если в одном документе два движения одного направления по одной номенклатуре (всякие там партии, характеристики и прочая хня), то какое из них последнее. Снова условности и допущения, и будем на выходе сравнивать тёплое с мягким
6 Волшебник
 
29.02.24
07:41
(5) Ну надо, так надо...
7 Волшебник
 
29.02.24
07:42
Можно ещё завести регистр сведений, периодический, где фиксировать местонахождение товара. Только для этого надо ещё промаркировать каждую позицию уникальным кодом. Физически
8 vde69
 
29.02.24
09:09
заведи новый регистр сведений "ПоследнийСклад" и определяй при записи а в запросе будет все просто
9 Волшебник
 
29.02.24
09:11
(8) Это имеет смысл, если товары имеют уникальную маркировку вплоть до единицы, например, если это автомобили с VIN-номером.
10 Irbis
 
29.02.24
09:25
(9) И кроме этого в программном продукте отражается реальное перемещение физических объектов. В противном случае и маркировка не поможет, а такое я неоднократно наблюдал.
11 Волшебник
 
29.02.24
09:29
(10) Нужно что-то типа трекинг-номера на конверте/посылке. И нужен жесточайший входной и выходной контроль для каждой зоны/склада. Иначе спиздят.
12 vde69
 
29.02.24
09:36
(9) (10) смотря для каких целей это нужно, я много раз встречал хотелки прикрутить подобное к динамическому списку и там простой регистр (без истории и без всяких серий) идеально подходит.

Не понятно зачем это нужно автору по этому и решений может быть много
13 Волшебник
 
29.02.24
09:37
(12) пишется "поэтому"
14 Irbis
 
29.02.24
09:41
(12) Это всё как обычно, когда озвучивают не саму проблему, а проблему исполнения решения. Периодически с этим сталкиваюсь. У меня в зоне ответственности есть "расходка" с номерами, которая ФНС регистрируется и отслеживается. Так даже для неё мне и в голову не пришло реализовывать подобного рода учет. Наеборот, всячески от него открещиваюсь, оставляя место и время для "манёвра".
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший