ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТоварыНаСкладахОстаткиИОбороты.НомерСтроки,
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.Склад,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.Качество,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
ТоварыНаСкладах.СерияНоменклатуры,
ТоварыНаСкладах.ВидДвижения
ИЗ
РегистрНакопления.ТоварыНаСкладах
ПоказатьЗадача относительно простая, быть может кто уже ее реализовывал?
Нужно указать остатки чьих поставщиков числятся на складах.
Чтобы вернуть. Кто первый из поставщиков присылал, у того первого и продаются.
А перемещения сделать как угодно, можно так же, а можно кто последний прислал у того первого и переслали на другой склад.
Важна и серия номенклатуры - она есть.
Нужен хотя-бы алгоритм, как это сделать.
По теме из базы знаний
- Заметки по SQL: Генерация ряда дат и данные из периодических регистров на каждый день
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Доработка проведения в ERP 2.5 (регистр бухгалтерии Хозрасчетный)
- Корректировка записей регистра и ОперацияБух в примерах
- Исправление регистра сведений "Распределение запасов" по данным регистра накопления "Товары на складах" после перехода с ред. 2.4 на ред. 2.5 для конфигураций УТ, КА, ЕРП
Найденные решения
Если Не путаешь Серии и Серийные номера то как-то так:
Но работать будет медленно. Я бы в справочнике серии добавил реквизит "Поставщик" и при проведении поступления заполнял бы его. Тогда тоже в отчете по товарам на складах можно просто выбрать группировку СерияНоменклатуры.Поставщик и все.
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад,
ТоварыНаСкладахОстатки.Номенклатура,
ТоварыНаСкладахОстатки.СерияНоменклатуры,
ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
ВТ_Остатки.Склад,
ВТ_Остатки.Номенклатура,
ВТ_Остатки.СерияНоменклатуры,
ВТ_Остатки.КоличествоОстаток
ИЗ
ВТ_Остатки КАК ВТ_Остатки
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО ВТ_Остатки.СерияНоменклатуры = ПоступлениеТоваровУслугТовары.СерияНоменклатуры
И (ВТ_Остатки.СерияНоменклатуры <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
ПоказатьНо работать будет медленно. Я бы в справочнике серии добавил реквизит "Поставщик" и при проведении поступления заполнял бы его. Тогда тоже в отчете по товарам на складах можно просто выбрать группировку СерияНоменклатуры.Поставщик и все.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Swetlana, Да имеется, и можно оттуда вытянуть данные.
Там есть и документы Поступления, Реализации и перемещения и списания.
Но воспользоваться остатками и оборотами этого регистра не выходит, у него обезличена - серия номеклатуры.
А вот в обычном регистре серия номенклатуры есть. Так что все данные есть.
Там есть и документы Поступления, Реализации и перемещения и списания.
Но воспользоваться остатками и оборотами этого регистра не выходит, у него обезличена - серия номеклатуры.
А вот в обычном регистре серия номенклатуры есть. Так что все данные есть.
(5) TVA_11, )))
так соедините регистр остатки с обычным регистром и получайте серию номенклатуры
и вам достаточно регистра остатки, зачем вам иметь все движения ? у остатков получаете документ поступления и вуаля
сравниваете какой товар пришел раньше, тот и продаете.
допустим вы получите все движения товара, и что значит в разрезе складов если в регистре разрез склад уже имеется ?
так соедините регистр остатки с обычным регистром и получайте серию номенклатуры
и вам достаточно регистра остатки, зачем вам иметь все движения ? у остатков получаете документ поступления и вуаля
сравниваете какой товар пришел раньше, тот и продаете.
допустим вы получите все движения товара, и что значит в разрезе складов если в регистре разрез склад уже имеется ?
(17) Swetlana, пока я мыслю так.
Надо получить РегистрОстаткиИОбороты за год (независимо от запроса пользователя), к нему привязать "обычный регистр" и получим то, что нам надо.
Да, там склады есть!
Дальше надо этот поток информации в результате запроса обработать.
Тут уже будем учитывать период запрошенный пользователем.
Там под 100 000 строк. Это очень долго.
Как его можно быстрее обработать?
*********************************
Пока алгоритм такой.
Берем первую номеклатуру и серию.
Идем по выборке в прошлое, ищем похожие. Считаем остатки и обороты, выходим за ограничения данные пользователем (его временной диапазон - а наш должен быть на год длиннее).
И идем дальше в прошлое пока, не получим Остатки указанные в регистре.
В итоге имеем у каких Поставщиков мы эту характеристику продали, и чьи остатки остались по складам, (надо еще учитывать перемещения).
ВСЕ.
Потом берем следующую оригинальную номенклатуру+серию+поставщик и повторяем.
Хотелось бы "вычесть" то, что мы уже отработали из выборки - все проще и быстрее будет.
И так до конца. Это очень долго.
Есть идеи как сделать быстрее?
Надо получить РегистрОстаткиИОбороты за год (независимо от запроса пользователя), к нему привязать "обычный регистр" и получим то, что нам надо.
Да, там склады есть!
Дальше надо этот поток информации в результате запроса обработать.
Тут уже будем учитывать период запрошенный пользователем.
Там под 100 000 строк. Это очень долго.
Как его можно быстрее обработать?
*********************************
Пока алгоритм такой.
Берем первую номеклатуру и серию.
Идем по выборке в прошлое, ищем похожие. Считаем остатки и обороты, выходим за ограничения данные пользователем (его временной диапазон - а наш должен быть на год длиннее).
И идем дальше в прошлое пока, не получим Остатки указанные в регистре.
В итоге имеем у каких Поставщиков мы эту характеристику продали, и чьи остатки остались по складам, (надо еще учитывать перемещения).
ВСЕ.
Потом берем следующую оригинальную номенклатуру+серию+поставщик и повторяем.
Хотелось бы "вычесть" то, что мы уже отработали из выборки - все проще и быстрее будет.
И так до конца. Это очень долго.
Есть идеи как сделать быстрее?
(16) TVA_11, Если в учетной политике стоит "по средней" - то тогда никак не найти, все остатки смешанные.
А вообще для чего весь сыр-бор? Если у вас ваши товары стоят в коробках - то обычно для транспортной компании приклеено что то типа упаковочного листа. Ну и вообще программная отгрузка и отгрузка в жизни существенно отличаются друг от друга.
А вообще для чего весь сыр-бор? Если у вас ваши товары стоят в коробках - то обычно для транспортной компании приклеено что то типа упаковочного листа. Ну и вообще программная отгрузка и отгрузка в жизни существенно отличаются друг от друга.
Вообще для этого нужно перебирать не остатки товаров на складах, а регистры партионного учета. Партии товаров на складах, партии товаров организаций и др. И должен быть включен партионый учет, партии должны быть актуальные. Только тогда можно решить подобную задачу правильно.
пример (на ут11 делал)
вернет первый введенный документ поступления по аналитике номенклатуры
ВЫБРАТЬ
ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры,
ТоварыОрганизацийОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
РегистрНакопления.ТоварыОрганизаций.Остатки(, ) КАК ТоварыОрганизацийОстатки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
МИНИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК ДокументПоступления,
ПоступлениеТоваровУслугТовары.АналитикаУчетаНоменклатуры
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
ПоступлениеТоваровУслугТовары.Ссылка.Проведен
И ПоступлениеТоваровУслугТовары.АналитикаУчетаНоменклатуры В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Остатки.АналитикаУчетаНоменклатуры
ИЗ
Остатки КАК Остатки)
СГРУППИРОВАТЬ ПО
ПоступлениеТоваровУслугТовары.АналитикаУчетаНоменклатуры
Показатьвернет первый введенный документ поступления по аналитике номенклатуры
Думаю можно сделать, если забить на виртуальные таблицы и работать непосредственно с записями регистров.
1. Берутся приходы с учетом Регистратор.Контрагент
2. Берутся расходы.
3. Исключаются внутренние перемещения между складами (если они есть)
4. Теперь можно сортировать по периоду, складывать и вычитать
1. Берутся приходы с учетом Регистратор.Контрагент
2. Берутся расходы.
3. Исключаются внутренние перемещения между складами (если они есть)
4. Теперь можно сортировать по периоду, складывать и вычитать
(21) Infector,
Есть перемещения между складами, терять их не будем.
Надо заменять в поступление товаров (например), на тот склад , который в перемещении. (ну в регистре)
Вопрос, а в чем можно так работать? (Программируя на 1С - в чем будет удобно?)
Запрос для этого не подойдет.
В таблицы выгружать и потом, одну правильную создавать?
Надо было чтобы удобно перемещаться, удалять строки, вставлять куда надо.
Какой для этого объект 1С использовать?
Есть перемещения между складами, терять их не будем.
Надо заменять в поступление товаров (например), на тот склад , который в перемещении. (ну в регистре)
Вопрос, а в чем можно так работать? (Программируя на 1С - в чем будет удобно?)
Запрос для этого не подойдет.
В таблицы выгружать и потом, одну правильную создавать?
Надо было чтобы удобно перемещаться, удалять строки, вставлять куда надо.
Какой для этого объект 1С использовать?
Работать так можно в именно 1с
Просто изначально обращаемся в запросе к "ТоварыНаСкладах" (это и есть непосредственные записи регистра) а не к "ТоварыНаСкладах.ОстаткиИОбороты" и не к "ТоварыНаСкладах.Остатки". Тогда раздельно получить приходы и расходы труда не составит.
Не уверен реально ли все, что нужно внутри запроса организовать, но циклами соотнести расход с конкретным приходом точно можно. С конкретным способом решения, если циклы устраивают, могут быть вариации. Зависит от того насколько требуется заморочится с быстродействием и сколько времени есть в распоряжении.
Просто изначально обращаемся в запросе к "ТоварыНаСкладах" (это и есть непосредственные записи регистра) а не к "ТоварыНаСкладах.ОстаткиИОбороты" и не к "ТоварыНаСкладах.Остатки". Тогда раздельно получить приходы и расходы труда не составит.
Не уверен реально ли все, что нужно внутри запроса организовать, но циклами соотнести расход с конкретным приходом точно можно. С конкретным способом решения, если циклы устраивают, могут быть вариации. Зависит от того насколько требуется заморочится с быстродействием и сколько времени есть в распоряжении.
Начальные данные в любом случае запросом брать будете, а там "Упорядочить По" как привычка, что бы заведомо исключить элементы случайности
Кстати, если в регистре есть измерения, вас не интересующие (возможно - та же серия) можно на уровне запроса исключать и суммировать ресурсы. Если серии включены, а в данном случае не нужны - хороший шанс сократить количество первоначальных строк на обработку.
Кстати, если в регистре есть измерения, вас не интересующие (возможно - та же серия) можно на уровне запроса исключать и суммировать ресурсы. Если серии включены, а в данном случае не нужны - хороший шанс сократить количество первоначальных строк на обработку.
(25) Infector, серии мне нужны.
Основная проблема - это перемещение между складами, там уже гораздо сложнее установить от кого было перемещение.
И уже точно не в запросе, хотя запрос говорят универсальный язык, так что можно, но как неясно.
(кстати куда СМ девается? - просто исчезает или кому-то все-таки уходит?)
Основная проблема - это перемещение между складами, там уже гораздо сложнее установить от кого было перемещение.
И уже точно не в запросе, хотя запрос говорят универсальный язык, так что можно, но как неясно.
(кстати куда СМ девается? - просто исчезает или кому-то все-таки уходит?)
Все зависит от цели и необходимой погрешности. Если товар поступает как правило от одних и тех же поставщиков, то (или поставщики не меняются) то можно использовать совершенно другое решение. В карточке номенклатуры есть поле "Основной поставщик", если его заполнить, то можно будет без написания дополнительных отчетов сформировать отчет по остаткам с указанием основного поставщика. Подобную задачу мне ставил один из клиентов. В итоге после переговоров мы так и сделали. Все ограничилось небольшим изменением документа "Поступление товаров и услуг" при проведении которого проверялось, если в указанных товарах не указан основной поставщик, или основной поставщик отличался от контрагента в документе, то в номенклатуре менялся основной поставщик.
Если Не путаешь Серии и Серийные номера то как-то так:
Но работать будет медленно. Я бы в справочнике серии добавил реквизит "Поставщик" и при проведении поступления заполнял бы его. Тогда тоже в отчете по товарам на складах можно просто выбрать группировку СерияНоменклатуры.Поставщик и все.
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Склад,
ТоварыНаСкладахОстатки.Номенклатура,
ТоварыНаСкладахОстатки.СерияНоменклатуры,
ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
ВТ_Остатки.Склад,
ВТ_Остатки.Номенклатура,
ВТ_Остатки.СерияНоменклатуры,
ВТ_Остатки.КоличествоОстаток
ИЗ
ВТ_Остатки КАК ВТ_Остатки
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО ВТ_Остатки.СерияНоменклатуры = ПоступлениеТоваровУслугТовары.СерияНоменклатуры
И (ВТ_Остатки.СерияНоменклатуры <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
ПоказатьНо работать будет медленно. Я бы в справочнике серии добавил реквизит "Поставщик" и при проведении поступления заполнял бы его. Тогда тоже в отчете по товарам на складах можно просто выбрать группировку СерияНоменклатуры.Поставщик и все.
(29) druv, а впрочем нет.
Там одну серию могут продавать разные Поставщики.
Видимо туда придется добавить таблицу с двумя полями.
Дата с секундами, и Поставщика. Тогда правда будет копиться..
**************************
Видимо в регистр надо добавить, в ТоварыНаСкладах, Поставщика и все.
Чем и каким боком это может грозить?
Там одну серию могут продавать разные Поставщики.
Видимо туда придется добавить таблицу с двумя полями.
Дата с секундами, и Поставщика. Тогда правда будет копиться..
**************************
Видимо в регистр надо добавить, в ТоварыНаСкладах, Поставщика и все.
Чем и каким боком это может грозить?
(31) TVA_11, Если одна серия может поступать от разных поставщиков, то возможен такой вариант - добавить в серию поставщика и "дробить серию" при поступлении, т.е. указывать "Серия12323/ОООРомашка" или Серия12323/ОООМотылек". Конечно возможны проблемы в плане пересортицы, но других вариантов я не вижу.
В регистр "Товары на складах" нельзя добавлять поставщика. В этом случае при перемещениях и списаниях он не будет автоматом заполняться, и регистр перестанет нормально работать. А чтобы все работало придется переписывать проведение документов Поступление, перемещение, реализация, требование, списание товаров, оприходвание..
(34) TVA_11, не совсем. Если реквизит добавлен в качестве измерения таблицы Товары на складах, то во всех проводках надо будет указывать значение реквизита, иначе неверные будут остатки: Н-р Если В поступлении указано Номенклатура1 Поставщик1 +10 шт. на склад1, то при проведении у тебя будет движение Номенклатура1 Пусто -10 шт. Склад1. и в отчете по остаткам будет числиться "Номенклатура1, Поставщик1 Склад 1 остаток 10шт", Номенклатара1, Пусто, Склад1 остаток -10Шт;.
А когда в серии указан поставщик, то ты что при списании, что при поступлении указываешь серию и у тебя все хорошо. Надо будет одну запись в процедуре "перед записью" документа поступление:
И больше ничего. Никаких движений не понадобится. Все будет работать стандартно.
А когда в серии указан поставщик, то ты что при списании, что при поступлении указываешь серию и у тебя все хорошо. Надо будет одну запись в процедуре "перед записью" документа поступление:
Для каждого СтрокаТЧ из Товары Цикл
Если ЗначениеЗаполнено(СтрокаТЧ.СерияНоменклатуры) Тогда
СерияОбъект = СтрокаТЧ.СерияНоменклатуры.ПолучитьОбъект();
СерияОбъект.Поставщик = Контрагент;
КонецЕсли;
КонецЦикла;
И больше ничего. Никаких движений не понадобится. Все будет работать стандартно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот