Получить остатки на каждый регистратор

1. doctorov_s 40 18.10.17 15:27 Сейчас в теме
Добрый день! С толкнулся с такой проблемой: Мне нужно запросом получить остатки по каждому регистратору, т.е. после проведения конкретного документа найти значения, после чего найти минимальное значение...т.е минимальный остаток...может кто то с этим сталкивался или у кого то есть идея...подскажите пожалуйста!
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 18.10.17 15:30 Сейчас в теме
(1) что подразумеваете под "остатки по регистратору" ?

( по регистратору движения обычно, а остатки по измерениям)
3. alex-l19041 8 18.10.17 15:32 Сейчас в теме
4. doctorov_s 40 18.10.17 15:42 Сейчас в теме
(3)т.е. мне нужно найти остаток после каждого движения любого документа (найти минимальный остаток за период).
6. alex-l19041 8 18.10.17 15:49 Сейчас в теме
используйте виртуальную таблицу остатки и обороты
5. doctorov_s 40 18.10.17 15:48 Сейчас в теме
Например: У меня есть реализации и поступления, я хочу сделать так чтобы у меня находило минимально допустимы остаток на сколько я могу изменить документ!
т.е у меня было поступление товаров, потом реализация и вдруг кто то из пользователей захотел изменить поступление по той или иной причине, и мне нужно найти минимально допустимое количество на сколько пользователь может изменить документ поступления!
7. alex-l19041 8 18.10.17 15:50 Сейчас в теме
(5)
изменить поступление
- этого лучше не делать...
10. doctorov_s 40 18.10.17 16:07 Сейчас в теме
8. Nadushka74 5 18.10.17 15:51 Сейчас в теме
(5) Остаток на текущий момент, остатки на конец каждого последующего дня от поступления до текущего. и сверяем чтоб ни какой показатель меньше нуля не упал при изменении.
12. doctorov_s 40 18.10.17 16:30 Сейчас в теме
(8)А как быть если несколько поступлений за период
9. alex-l19041 8 18.10.17 15:55 Сейчас в теме
(5) если уж действительно необходимо изменить поступление задним числом, то потом надо перепроводить все реализации...
11. doctorov_s 40 18.10.17 16:11 Сейчас в теме
(9)Ну это понятно что реализации нужно перепроводить только вот в том и загвоздка что пользователи натворят дел за месяц, а потом в конце месяца при перепроведении начинает все всплывать и мешать, вот поэтому и хотелось сделать такую фигню чтобы не было таких проблем!
13. doctorov_s 40 19.10.17 09:28 Сейчас в теме
Что никто не делал такого рода задачи...подскажите))
14. JohnGalt 57 19.10.17 10:00 Сейчас в теме
Остатки по каждому регистратору - это и есть таблица остатков и оборотов. А минимальный остаток найти - это уже задача посложнее. Нужно выбрать записи и сгруппировать по документу партии, а по количеству конечный остаток например (можно и по КоличествоНачальныйОстаток) поставить Минимум(), затем вывести все регистраторы, у которых КОличество остаток = минимум(КоличетсвоОстаток)
15. doctorov_s 40 19.10.17 10:19 Сейчас в теме
(14)Не очень вас понял, можно конкретный пример??
16. doctorov_s 40 19.10.17 10:20 Сейчас в теме
(14)Ну если я получу остатки по регистру, то они у меня получаться на конкретную дату, а мне вот и дело что нужно смотреть после каждого регистратора остаток!
17. alexz69 19.10.17 10:26 Сейчас в теме
По моему Вы не правильно поставили задачу. Остаток по регистратору невозможно получить, поскольку регистратор не измерение Т.е. регистратор делает движения по измерениям. Скорее всего по партиям. При приходе он создается, при реализации по нему производятся вычисления и добавляются движения. Поэтому Вам нужно смотреть остатки по партиям
18. doctorov_s 40 19.10.17 10:33 Сейчас в теме
(17)Хорошо, а как мне получить минимальный остаток за период???...Вот пример который я писал выше: "Например:
т.е у меня было поступление товаров, потом реализация и вдруг кто то из пользователей захотел изменить поступление по той или иной причине, и мне нужно найти минимально допустимое количество на сколько пользователь может изменить документ поступления!"
19. EVKash 14 19.10.17 10:44 Сейчас в теме
(18) Если не используются партии, то можно так
ВЫБРАТЬ
	ТоварыНаСкладахОстаткиИОбороты.Регистратор,
	ТоварыНаСкладахОстаткиИОбороты.Склад,
	ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, , Авто, ,Номенклатура = &Номенклатура ) КАК ТоварыНаСкладахОстаткиИОбороты

Думаю дальше понятно...
20. alexz69 19.10.17 10:47 Сейчас в теме
Нужно сделать запрос по движениям с отбором по этой партии и номенклатуре. Посчитать остаток с учётом введенного пользователем кол-ва. Если ушли в минус, то в отказ. Что-то в этом роде -

Запрос = Новый Запрос;
Запрос.Текст = "
|	ВЫБРАТЬ
|	ЗапасыОбороты.Номенклатура,
|	ЗапасыОбороты.КоличествоПриход,
|	ЗапасыОбороты.КоличествоРасход
|ИЗ
|	РегистрНакопления.Запасы.Обороты(, , , Номенклатура = &Номенклатура И Партия = &Партия) КАК ЗапасыОбороты
"
ТЗ = Запрос.Выполнить().Выгрузить();

Если ТЗ.Итог("КоличествоПриход") - ТЗ.Итог("КоличествоРасход") <0 Тогда
КонецЕсли;
Показать

... ошибка
21. alexz69 19.10.17 10:49 Сейчас в теме
Лучше это делать в блоке проведения, поскольку кто-то может еще изменить движения пока он корректирует документ
22. doctorov_s 40 19.10.17 11:24 Сейчас в теме
(21)Хорошо, а если мы изменили не поступление, а реализацию задним числом???...как быть в этой ситуации??
24. alexz69 19.10.17 18:23 Сейчас в теме
(22) по такой же аналогии. Т.е. если меняют документ задним числом, проверяются все расходы и не давать проводить в случае выхода в красноту.

PS: разумеется после создания новых движений.
25. EVKash 14 20.10.17 10:31 Сейчас в теме
(22) чем в (19) вариант не нравится? али $m зажал?
Для наглядности не стал добавлять
"ВЫБРАТЬ ПЕРВЫЕ 1" в начале
и "УПОРЯДОЧИТЬ ПО ВНаличииКонечныйОстаток ВОЗР" в конце.
23. JohnGalt 57 19.10.17 16:07 Сейчас в теме
ВЫБРАТЬ ПЕРВЫЕ 10
	ТоварыНаСкладахОстаткиИОбороты.Регистратор,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток КАК КоличествоОстаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&дн, &до, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты

СГРУППИРОВАТЬ ПО
	ТоварыНаСкладахОстаткиИОбороты.Регистратор,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток

ИМЕЮЩИЕ
	ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток = МИНИМУМ(ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток)

УПОРЯДОЧИТЬ ПО
	КоличествоОстаток
Показать
26. TokarevV 30 21.03.23 12:58 Сейчас в теме
(23) Надо было выяснить кончался ли товар в выбранном периоде, получилось :

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

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

ИМЕЮЩИЕ
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток = 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ТоварыВРозницеОстаткиИОбороты.Регистратор,
ТоварыВРозницеОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
ТоварыВРозницеОстаткиИОбороты.Номенклатура
ПОМЕСТИТЬ ВТ_ТоварыВРозницеБыл0
ИЗ
РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Номенклатура.Маркетплейс) КАК ТоварыВРозницеОстаткиИОбороты

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

ИМЕЮЩИЕ
ТоварыВРозницеОстаткиИОбороты.КоличествоКонечныйОстаток = 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА ВТ_ТоварыВРозницеБыл0.Номенклатура ЕСТЬ NULL
И НЕ ВТ_ТоварыНаСкладахБыл0.Номенклатура ЕСТЬ NULL
ТОГДА ВТ_ТоварыНаСкладахБыл0.Номенклатура
КОГДА НЕ ВТ_ТоварыВРозницеБыл0.Номенклатура ЕСТЬ NULL
И ВТ_ТоварыНаСкладахБыл0.Номенклатура ЕСТЬ NULL
ТОГДА ВТ_ТоварыВРозницеБыл0.Номенклатура
КОНЕЦ КАК Номенклатура,
ВЫБОР
КОГДА ЕСТЬNULL(ВТ_ТоварыВРозницеБыл0.КоличествоКонечныйОстаток, 0) = 0
И ЕСТЬNULL(ВТ_ТоварыНаСкладахБыл0.КоличествоКонечныйОстаток, 0) = 0
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ТоварКончалсяВЭтомПериоде
ПОМЕСТИТЬ ВТ_ТоварКончалсяВЭтомПериоде
ИЗ
ВТ_ТоварыНаСкладахБыл0 КАК ВТ_ТоварыНаСкладахБыл0
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ТоварыВРозницеБыл0 КАК ВТ_ТоварыВРозницеБыл0
ПО ВТ_ТоварыНаСкладахБыл0.Номенклатура = ВТ_ТоварыВРозницеБыл0.Номенклатура
;
Спасибо, вы чудо!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот