Регистр накопления - ТоварыНаСкладах

1. TVA_11 14.12.15 11:18 Сейчас в теме
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТоварыНаСкладахОстаткиИОбороты.НомерСтроки,
	ТоварыНаСкладахОстаткиИОбороты.Регистратор,
	ТоварыНаСкладахОстаткиИОбороты.Склад,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.Качество,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
	ТоварыНаСкладах.СерияНоменклатуры,
	ТоварыНаСкладах.ВидДвижения
ИЗ
	РегистрНакопления.ТоварыНаСкладах
Показать


Задача относительно простая, быть может кто уже ее реализовывал?
Нужно указать остатки чьих поставщиков числятся на складах.
Чтобы вернуть. Кто первый из поставщиков присылал, у того первого и продаются.
А перемещения сделать как угодно, можно так же, а можно кто последний прислал у того первого и переслали на другой склад.
Важна и серия номенклатуры - она есть.

Нужен хотя-бы алгоритм, как это сделать.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
29. druv 192 15.12.15 09:47 Сейчас в теме
Если Не путаешь Серии и Серийные номера то как-то так:
ВЫБРАТЬ
	ТоварыНаСкладахОстатки.Склад,
	ТоварыНаСкладахОстатки.Номенклатура,
	ТоварыНаСкладахОстатки.СерияНоменклатуры,
	ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
;

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

Но работать будет медленно. Я бы в справочнике серии добавил реквизит "Поставщик" и при проведении поступления заполнял бы его. Тогда тоже в отчете по товарам на складах можно просто выбрать группировку СерияНоменклатуры.Поставщик и все.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Swetlana 26 14.12.15 11:47 Сейчас в теме
(1) TVA_11, в поле регистратор возможно имеется документ поступления. Нет под рукой УТ 10.3
5. TVA_11 14.12.15 11:53 Сейчас в теме
(3) Swetlana, Да имеется, и можно оттуда вытянуть данные.

Там есть и документы Поступления, Реализации и перемещения и списания.
Но воспользоваться остатками и оборотами этого регистра не выходит, у него обезличена - серия номеклатуры.

А вот в обычном регистре серия номенклатуры есть. Так что все данные есть.
17. Swetlana 26 14.12.15 13:21 Сейчас в теме
(5) TVA_11, )))

так соедините регистр остатки с обычным регистром и получайте серию номенклатуры
и вам достаточно регистра остатки, зачем вам иметь все движения ? у остатков получаете документ поступления и вуаля
сравниваете какой товар пришел раньше, тот и продаете.

допустим вы получите все движения товара, и что значит в разрезе складов если в регистре разрез склад уже имеется ?
18. TVA_11 14.12.15 13:53 Сейчас в теме
(17) Swetlana, пока я мыслю так.

Надо получить РегистрОстаткиИОбороты за год (независимо от запроса пользователя), к нему привязать "обычный регистр" и получим то, что нам надо.
Да, там склады есть!

Дальше надо этот поток информации в результате запроса обработать.
Тут уже будем учитывать период запрошенный пользователем.


Там под 100 000 строк. Это очень долго.
Как его можно быстрее обработать?
*********************************

Пока алгоритм такой.
Берем первую номеклатуру и серию.
Идем по выборке в прошлое, ищем похожие. Считаем остатки и обороты, выходим за ограничения данные пользователем (его временной диапазон - а наш должен быть на год длиннее).
И идем дальше в прошлое пока, не получим Остатки указанные в регистре.
В итоге имеем у каких Поставщиков мы эту характеристику продали, и чьи остатки остались по складам, (надо еще учитывать перемещения).
ВСЕ.

Потом берем следующую оригинальную номенклатуру+серию+поставщик и повторяем.
Хотелось бы "вычесть" то, что мы уже отработали из выборки - все проще и быстрее будет.

И так до конца. Это очень долго.
Есть идеи как сделать быстрее?
6. elisabet 101 14.12.15 12:15 Сейчас в теме
(1) TVA_11, вообще для этих целей есть регистр "Товары организаций" который содержит всю необходимую информацию. Зачем городить огород?
10. TVA_11 14.12.15 12:32 Сейчас в теме
13. TVA_11 14.12.15 12:59 Сейчас в теме
(6) elisabet, разницы существенной между регистрами нет, только организация добавлена.
15. elisabet 101 14.12.15 13:16 Сейчас в теме
(13) TVA_11, РАУЗ или партионка?
Если партионка - то тогда надо смотреть в партии, для РАУЗа сейчас найду где взять.
16. TVA_11 14.12.15 13:16 Сейчас в теме
19. elisabet 101 14.12.15 14:04 Сейчас в теме
(16) TVA_11, Если в учетной политике стоит "по средней" - то тогда никак не найти, все остатки смешанные.
А вообще для чего весь сыр-бор? Если у вас ваши товары стоят в коробках - то обычно для транспортной компании приклеено что то типа упаковочного листа. Ну и вообще программная отгрузка и отгрузка в жизни существенно отличаются друг от друга.
20. TVA_11 14.12.15 14:11 Сейчас в теме
(19) elisabet, на складе их неразличить по умолчанию.

И нужно реализовать метод наибольшего правдоподобия. Как будто бы - метод предложен. Но он странен.
И кажется можно придумать, что-то попроще.
2. dchumak 42 14.12.15 11:39 Сейчас в теме
Вообще для этого нужно перебирать не остатки товаров на складах, а регистры партионного учета. Партии товаров на складах, партии товаров организаций и др. И должен быть включен партионый учет, партии должны быть актуальные. Только тогда можно решить подобную задачу правильно.
4. TVA_11 14.12.15 11:51 Сейчас в теме
(2) dchumak, Нам не нужно совершенно правильно.

Нам хотя-бы приблизительно правильно и партионный учет не включен.
Кроме того, что при условии - Первый пришел, первый ушел по времени - и ошибки большой не будет.
7. SerLeon 14.12.15 12:18 Сейчас в теме
Если вам нужно приблизительно, а точнее просто получить первый документ поступления, так и выбирайте данные из документов, зачем тут регистры?
8. SerLeon 14.12.15 12:19 Сейчас в теме
Вы же все равно будете "спускаться" до регистратора, это составной тип, а вам наверняка нужны только "Поступления товаров и услуг", так проще и быстрее сразу выбрать из физической таблицы документов
9. TVA_11 14.12.15 12:32 Сейчас в теме
(8) SerLeon, нет мне нужны все, так как важно получить данные в разрезе складов.

Мне придется учитывать все документы, Отчеты о продажах, реализацию, поступление, перемещение.
12. SerLeon 14.12.15 12:34 Сейчас в теме
(9) Что значит все? причем тут реализация, отчет о проджах и тд? вам нужны насколько я понял документы поступления, чтобы понять от кого приходила номенклатура или нет?
14. TVA_11 14.12.15 13:00 Сейчас в теме
(12) SerLeon, так ведь приходит номенклатура от многих Поставщиков, и чтобы знать от кого остались остатки, надо знать и расход.

ФИФО ЛИФО.
11. SerLeon 14.12.15 12:33 Сейчас в теме
пример (на ут11 делал)

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

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

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


вернет первый введенный документ поступления по аналитике номенклатуры
21. Infector 203 14.12.15 14:18 Сейчас в теме
Думаю можно сделать, если забить на виртуальные таблицы и работать непосредственно с записями регистров.

1. Берутся приходы с учетом Регистратор.Контрагент
2. Берутся расходы.
3. Исключаются внутренние перемещения между складами (если они есть)
4. Теперь можно сортировать по периоду, складывать и вычитать
22. TVA_11 14.12.15 15:09 Сейчас в теме
(21) Infector,

Есть перемещения между складами, терять их не будем.
Надо заменять в поступление товаров (например), на тот склад , который в перемещении. (ну в регистре)


Вопрос, а в чем можно так работать? (Программируя на 1С - в чем будет удобно?)
Запрос для этого не подойдет.

В таблицы выгружать и потом, одну правильную создавать?
Надо было чтобы удобно перемещаться, удалять строки, вставлять куда надо.
Какой для этого объект 1С использовать?
24. TVA_11 14.12.15 15:58 Сейчас в теме
(21) Infector,

кстати, там в регистре и так уже все по времени отсортировано.
Но вы предлагаете отсортировать

по Номенклатуре, серии, времени и уже внутри этого отработать все.
Запомнить и отбрасывать уже потом.


Или вы про запрос говорите?
23. Infector 203 14.12.15 15:55 Сейчас в теме
Работать так можно в именно 1с

Просто изначально обращаемся в запросе к "ТоварыНаСкладах" (это и есть непосредственные записи регистра) а не к "ТоварыНаСкладах.ОстаткиИОбороты" и не к "ТоварыНаСкладах.Остатки". Тогда раздельно получить приходы и расходы труда не составит.

Не уверен реально ли все, что нужно внутри запроса организовать, но циклами соотнести расход с конкретным приходом точно можно. С конкретным способом решения, если циклы устраивают, могут быть вариации. Зависит от того насколько требуется заморочится с быстродействием и сколько времени есть в распоряжении.
25. Infector 203 14.12.15 16:02 Сейчас в теме
Начальные данные в любом случае запросом брать будете, а там "Упорядочить По" как привычка, что бы заведомо исключить элементы случайности

Кстати, если в регистре есть измерения, вас не интересующие (возможно - та же серия) можно на уровне запроса исключать и суммировать ресурсы. Если серии включены, а в данном случае не нужны - хороший шанс сократить количество первоначальных строк на обработку.
27. TVA_11 15.12.15 09:11 Сейчас в теме
(25) Infector, серии мне нужны.

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

(кстати куда СМ девается? - просто исчезает или кому-то все-таки уходит?)
26. druv 192 15.12.15 05:29 Сейчас в теме
Все зависит от цели и необходимой погрешности. Если товар поступает как правило от одних и тех же поставщиков, то (или поставщики не меняются) то можно использовать совершенно другое решение. В карточке номенклатуры есть поле "Основной поставщик", если его заполнить, то можно будет без написания дополнительных отчетов сформировать отчет по остаткам с указанием основного поставщика. Подобную задачу мне ставил один из клиентов. В итоге после переговоров мы так и сделали. Все ограничилось небольшим изменением документа "Поступление товаров и услуг" при проведении которого проверялось, если в указанных товарах не указан основной поставщик, или основной поставщик отличался от контрагента в документе, то в номенклатуре менялся основной поставщик.
28. TVA_11 15.12.15 09:12 Сейчас в теме
(26) druv, нет там много разных поставщиков на уровне серий.

(кстати куда СМ девается? - просто исчезает или кому-то все-таки уходит?)
Жалко если ушло в никуда.
43. Infector 203 15.12.15 12:14 Сейчас в теме
(28) TVA_11, СМ с платных вопросов в доход инфостарта уходит понемногу.
29. druv 192 15.12.15 09:47 Сейчас в теме
Если Не путаешь Серии и Серийные номера то как-то так:
ВЫБРАТЬ
	ТоварыНаСкладахОстатки.Склад,
	ТоварыНаСкладахОстатки.Номенклатура,
	ТоварыНаСкладахОстатки.СерияНоменклатуры,
	ТоварыНаСкладахОстатки.КоличествоОстаток
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
;

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

Но работать будет медленно. Я бы в справочнике серии добавил реквизит "Поставщик" и при проведении поступления заполнял бы его. Тогда тоже в отчете по товарам на складах можно просто выбрать группировку СерияНоменклатуры.Поставщик и все.
30. TVA_11 15.12.15 10:49 Сейчас в теме
(29) druv, круто, еще не осмыслил,но идея добавить реквизит должна работать!
31. TVA_11 15.12.15 11:05 Сейчас в теме
(29) druv, а впрочем нет.

Там одну серию могут продавать разные Поставщики.
Видимо туда придется добавить таблицу с двумя полями.
Дата с секундами, и Поставщика. Тогда правда будет копиться..
**************************

Видимо в регистр надо добавить, в ТоварыНаСкладах, Поставщика и все.
Чем и каким боком это может грозить?
33. druv 192 15.12.15 11:34 Сейчас в теме
(31) TVA_11, Если одна серия может поступать от разных поставщиков, то возможен такой вариант - добавить в серию поставщика и "дробить серию" при поступлении, т.е. указывать "Серия12323/ОООРомашка" или Серия12323/ОООМотылек". Конечно возможны проблемы в плане пересортицы, но других вариантов я не вижу.
35. TVA_11 15.12.15 11:36 Сейчас в теме
(33) druv, ссылку на проводящий документ и поставщика вписывать в таблицу.
Это решит вопрос.


Либо в регистр, где ссылка уже есть. Либо в серию.

Но по любому приедестся менять проводки во всех документах.
38. druv 192 15.12.15 11:46 Сейчас в теме
(35) TVA_11,
ссылку на проводящий документ и поставщика вписывать в таблицу.
Это решит вопрос.

На самом деле этот механизм предусмотрен - партионный учет называется. И если есть в этом необходимость - то лучше не городить огород и использвать партионный учет.
40. TVA_11 15.12.15 11:50 Сейчас в теме
(38) druv, ну им для этого года надо сделать. Может в будущем и перейдут. Почему-то не переходят. Отказывается главный бух.
41. TVA_11 15.12.15 12:03 Сейчас в теме
(38) druv,

Пока решил отчет в помощь написать. Чтобы удобно было смотреть, сверять.
37. TVA_11 15.12.15 11:45 Сейчас в теме
(33) druv, Перемещения все портят.

Для них сложно решать, чью Номенклатуру они перемещают.
42. Infector 203 15.12.15 12:13 Сейчас в теме
(29) druv, Тогда уже лучше не "Поставщик" а "Документ поступления", что бы партионный учет имитировался сериями.
44. druv 192 15.12.15 12:42 Сейчас в теме
(42) Infector, С одной стороны да. Но с другой стороны для решения задачи этого достаточно, а при использовании ссылки на документ, на случай свертки базы у них будут проблемы.
32. druv 192 15.12.15 11:21 Сейчас в теме
В регистр "Товары на складах" нельзя добавлять поставщика. В этом случае при перемещениях и списаниях он не будет автоматом заполняться, и регистр перестанет нормально работать. А чтобы все работало придется переписывать проведение документов Поступление, перемещение, реализация, требование, списание товаров, оприходвание..
34. TVA_11 15.12.15 11:34 Сейчас в теме
(32) druv, так ведь придется все равно, все документы изменять на уровне проводок.

Либо для записи в регистр, либо для записи в таблицу в сериях.
Я это правильно понимаю?
36. druv 192 15.12.15 11:43 Сейчас в теме
(34) TVA_11, не совсем. Если реквизит добавлен в качестве измерения таблицы Товары на складах, то во всех проводках надо будет указывать значение реквизита, иначе неверные будут остатки: Н-р Если В поступлении указано Номенклатура1 Поставщик1 +10 шт. на склад1, то при проведении у тебя будет движение Номенклатура1 Пусто -10 шт. Склад1. и в отчете по остаткам будет числиться "Номенклатура1, Поставщик1 Склад 1 остаток 10шт", Номенклатара1, Пусто, Склад1 остаток -10Шт;.
А когда в серии указан поставщик, то ты что при списании, что при поступлении указываешь серию и у тебя все хорошо. Надо будет одну запись в процедуре "перед записью" документа поступление:
Для каждого СтрокаТЧ из Товары Цикл 
Если ЗначениеЗаполнено(СтрокаТЧ.СерияНоменклатуры) Тогда
СерияОбъект = СтрокаТЧ.СерияНоменклатуры.ПолучитьОбъект();
СерияОбъект.Поставщик = Контрагент;
КонецЕсли;
КонецЦикла;

И больше ничего. Никаких движений не понадобится. Все будет работать стандартно.
39. TVA_11 15.12.15 11:48 Сейчас в теме
(36) druv, как это поможет определить чьи остатки на складе?

И как можно будет узнать, чье продано или перемещено? Не пойму.
45. TVA_11 15.12.15 13:39 Сейчас в теме
Как в запросе по Регистратору и номеру строки в таблице получить строку?
Учитывая, что регистратор может быть разным, а следовательно и именования таблиц тоже.
46. TVA_11 15.12.15 13:53 Сейчас в теме
Так, узнал, что НомерСтроки может не совпадать с номером в таблице.

А есть регистр, по которому можно видеть не количество - ТоварыНаСкладах, а Сумму?
47. druv 192 15.12.15 14:00 Сейчас в теме
(46) TVA_11, При РАУЗ регистр "УчетЗатрат" но наличие суммы зависит от учетной политики и там еще с ключам небольшой гемморой.
48. TVA_11 15.12.15 14:14 Сейчас в теме
49. TVA_11 16.12.15 08:37 Сейчас в теме
(47) druv, Да, действительно, совсем не те цифры.

Все равно сделаю )
Оставьте свое сообщение

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