Добрый день! С толкнулся с такой проблемой: Мне нужно запросом получить остатки по каждому регистратору, т.е. после проведения конкретного документа найти значения, после чего найти минимальное значение...т.е минимальный остаток...может кто то с этим сталкивался или у кого то есть идея...подскажите пожалуйста!
По теме из базы знаний
- Расчет с помощью СКД остатков регистра по реквизиту регистратора
- Исправление отрицательных остатков по организациям в УТ 11.4, КА 2.4, ЕРП 2.4. Интеркампани, механизм формирования резервов
- Партионный учет ФИФО ЛИФО. Остатки поступлений, пример получения данных партионного учета, если его нет. Вернуть остатки партий. Списать по срокам годности ФИФО ЛИФО
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Регистры бухгалтерии. Виртуальная таблица остатков
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Например: У меня есть реализации и поступления, я хочу сделать так чтобы у меня находило минимально допустимы остаток на сколько я могу изменить документ!
т.е у меня было поступление товаров, потом реализация и вдруг кто то из пользователей захотел изменить поступление по той или иной причине, и мне нужно найти минимально допустимое количество на сколько пользователь может изменить документ поступления!
т.е у меня было поступление товаров, потом реализация и вдруг кто то из пользователей захотел изменить поступление по той или иной причине, и мне нужно найти минимально допустимое количество на сколько пользователь может изменить документ поступления!
(9)Ну это понятно что реализации нужно перепроводить только вот в том и загвоздка что пользователи натворят дел за месяц, а потом в конце месяца при перепроведении начинает все всплывать и мешать, вот поэтому и хотелось сделать такую фигню чтобы не было таких проблем!
Остатки по каждому регистратору - это и есть таблица остатков и оборотов. А минимальный остаток найти - это уже задача посложнее. Нужно выбрать записи и сгруппировать по документу партии, а по количеству конечный остаток например (можно и по КоличествоНачальныйОстаток) поставить Минимум(), затем вывести все регистраторы, у которых КОличество остаток = минимум(КоличетсвоОстаток)
По моему Вы не правильно поставили задачу. Остаток по регистратору невозможно получить, поскольку регистратор не измерение Т.е. регистратор делает движения по измерениям. Скорее всего по партиям. При приходе он создается, при реализации по нему производятся вычисления и добавляются движения. Поэтому Вам нужно смотреть остатки по партиям
(17)Хорошо, а как мне получить минимальный остаток за период???...Вот пример который я писал выше: "Например:
т.е у меня было поступление товаров, потом реализация и вдруг кто то из пользователей захотел изменить поступление по той или иной причине, и мне нужно найти минимально допустимое количество на сколько пользователь может изменить документ поступления!"
т.е у меня было поступление товаров, потом реализация и вдруг кто то из пользователей захотел изменить поступление по той или иной причине, и мне нужно найти минимально допустимое количество на сколько пользователь может изменить документ поступления!"
(18) Если не используются партии, то можно так
Думаю дальше понятно...
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.Склад,
ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, , Авто, ,Номенклатура = &Номенклатура ) КАК ТоварыНаСкладахОстаткиИОбороты
Думаю дальше понятно...
Нужно сделать запрос по движениям с отбором по этой партии и номенклатуре. Посчитать остаток с учётом введенного пользователем кол-ва. Если ушли в минус, то в отказ. Что-то в этом роде -
... ошибка
Запрос = Новый Запрос;
Запрос.Текст = "
| ВЫБРАТЬ
| ЗапасыОбороты.Номенклатура,
| ЗапасыОбороты.КоличествоПриход,
| ЗапасыОбороты.КоличествоРасход
|ИЗ
| РегистрНакопления.Запасы.Обороты(, , , Номенклатура = &Номенклатура И Партия = &Партия) КАК ЗапасыОбороты
"
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Итог("КоличествоПриход") - ТЗ.Итог("КоличествоРасход") <0 Тогда
КонецЕсли;
Показать... ошибка
ВЫБРАТЬ ПЕРВЫЕ 10
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&дн, &до, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
СГРУППИРОВАТЬ ПО
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток
ИМЕЮЩИЕ
ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток = МИНИМУМ(ТоварыНаСкладахОстаткиИОбороты.КоличествоОстаток)
УПОРЯДОЧИТЬ ПО
КоличествоОстаток
Показать
(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.Номенклатура
;
Спасибо, вы чудо!
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура
ПОМЕСТИТЬ ВТ_ТоварыНаСкладахБыл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.Номенклатура
;
Спасибо, вы чудо!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот