Остаток на каждую дату

1. LevLeopold 08.07.20 14:55 Сейчас в теме
Всем привет.
Может кто сталкивался, или уже обсуждали, а поиском я найти не смог. Если дадите ссылку на вопрос/обсуждение, будет круто.

Есть регистр накопления с видом регистра "остатки", нужно получить остатки на каждый день, но не запросом, а с помощью СКД. Может кто сталкивался с такой задачей? Может какую то формулу нужно прописать на вкладке "Ресурсы"?

При таком запросе в скд:

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


Пришел к такой формуле:
ВычислитьВыражение(
"Выбор
Когда Сумма(Остаток) ЕСТЬ NULL Тогда
0
Иначе
Сумма(Остаток)
Конец",
"Период", "Группировка", "Предыдущая", "Текущая")

Но она берет остаток на текущую строку и следующую, а дальше 0 ставит на последующие дни.


P.s. Еще раз повторюсь, запрос знаю как сделать, в интернетах уже информацию прочитал. Хотелось бы именно через СКД.
По теме из базы знаний
Найденные решения
21. oleg-x 27 08.07.20 16:09 Сейчас в теме
Вот пример отчета СКД с остатками по дням.
Прикрепленные файлы:
ОстаткиПоДням.erf
16. vasgius 08.07.20 15:44 Сейчас в теме
Что нужно поменять:
- изменить расчет ресурса, достаточно просто "Сумма(ОстатокНаНачало)"
- проверить, что есть поля начального и конечного остатка
- проверить что корректно настроены роли полей: периоды, измерения, начальный и конечный остаток.
17. RustamZz 08.07.20 15:48 Сейчас в теме
(11)
1. Должны быть оба поля начальный и конечный остаток
2. У всех полей должны быть прописаны роли
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1490 08.07.20 15:08 Сейчас в теме
(1) речь идет о том как в типовых реализована возможность крутить отчет, чтобы оно работало на любой вкус?
Посмотри запрос и настройки схемы в типовом отчете и сделай также.
5. LevLeopold 08.07.20 15:17 Сейчас в теме
(2) А в каком типовом отчете это реализовано?
Я смотрел типовые отчет в УТ 11, я не нашел такого чтобы там брался остаток на каждую дату, через СКД.
7. Xershi 1490 08.07.20 15:26 Сейчас в теме
(5) потому что их настраивать нужно.
4. alex-l19041 8 08.07.20 15:17 Сейчас в теме
11. LevLeopold 08.07.20 15:34 Сейчас в теме
(4) Читал, все делал как было описано, но все равно данные вот такие получаются
Прикрепленные файлы:
17. RustamZz 08.07.20 15:48 Сейчас в теме
(11)
1. Должны быть оба поля начальный и конечный остаток
2. У всех полей должны быть прописаны роли
3. user995537 38 08.07.20 15:15 Сейчас в теме
Выкручивался заполняя по датам расчетным методом. Может кто знает способ лучше.
Прикрепленные файлы:
Остатки товаров в рознице по периодам.erf
6. oleg-x 27 08.07.20 15:25 Сейчас в теме
Возьмите виртуальную таблицу остатки и обороты с периодичностью день. В группировках укажите день и будут остатки по дням.
9. LevLeopold 08.07.20 15:33 Сейчас в теме
(6) Я так делаю, но получается как во вложении
Прикрепленные файлы:
10. LevLeopold 08.07.20 15:34 Сейчас в теме
(9) Вот настройка
Прикрепленные файлы:
12. oleg-x 27 08.07.20 15:36 Сейчас в теме
(9) А что не устраивает Вас в таком варианте?
13. LevLeopold 08.07.20 15:39 Сейчас в теме
(12) У меня на 1 число остаток 0, на 2 число уже 100, у меня не было расхода 3 числа, значит 3 числа должно быть тоже 100. Остаток 100 должен держаться до 11 числа, когда идет расход на 50, и получается что 11 числа остаток 50.

Я хочу видеть актуальные данные на каждый день, а отчет показывает пустой остаток
14. oleg-x 27 08.07.20 15:43 Сейчас в теме
(13)
ВычислитьВыражение(
"Выбор
Когда Сумма(Остаток) ЕСТЬ NULL Тогда
0
Иначе
Сумма(Остаток)
Конец",
"Период", "Группировка", "Предыдущая", "Текущая")
Но она берет остаток на текущую строку и следующую, а дальше 0 ставит на последующие дни.

Вот этого всего не надо, остаток надо добавить в ресурсы без изменения выражения. СКД сама все должна сделать.
8. VictorRGB2 14 08.07.20 15:26 Сейчас в теме
где-то на просторах инфорстарта нашел давно такой запрос, до сих пор пользуюсь
как переложить в скд уж сами... в моей практике такого не требовалось, потому практически первоисточник...

	тзнСЦифрами = Новый ТаблицаЗначений();
	КЧ = Новый КвалификаторыЧисла(12,2);
	Массив = Новый Массив;
	Массив.Добавить(Тип("Число"));
	ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); 
	
	тзнСЦифрами.Колонки.Добавить("Цифра", ОписаниеТиповЧ);
	Для Счетчик = 0 по лМаксимальноеЧислоДней Цикл
		НоваяСтрока = тзнСЦифрами.Добавить();
		НоваяСтрока.Цифра = Счетчик;
	КонецЦикла;
	
	лЗапрос.Текст = "ВЫБРАТЬ
	|	ТБДаты.Цифра
	|ПОМЕСТИТЬ Единицы
	|ИЗ
	|	&ТБДаты КАК ТБДаты
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Единицы.Цифра) КАК Период
	|ПОМЕСТИТЬ Дни
	|ИЗ
	|	Единицы КАК Единицы
	|ГДЕ
	|	Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ДвиженияОстатки.Номенклатура КАК Номенклатура,
	|	ДНИ.Период КАК Период,
	|	СУММА(ВЫБОР
	|			КОГДА ДвиженияОстатки.Период = &НачалоПериода
	|				ТОГДА ДвиженияОстатки.КоличествоКонечныйОстаток
	|			ИНАЧЕ ВЫБОР
	|					КОГДА ДвиженияОстатки.Период <= ДНИ.Период
	|						ТОГДА ДвиженияОстатки.КоличествоОборот
	|					ИНАЧЕ 0
	|				КОНЕЦ
	|		КОНЕЦ) КАК СвободныйОстаток,
	|	ДвиженияОстатки.Склад КАК Склад
	|ИЗ
	|	Дни КАК ДНИ,
	|	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Номенклатура В (&массивНоменклатуры)) КАК ДвиженияОстатки
	|
	|СГРУППИРОВАТЬ ПО
	|	ДНИ.Период,
	|	ДвиженияОстатки.Склад,
	|	ДвиженияОстатки.Номенклатура
	|
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР
	|			КОГДА ДвиженияОстатки.Период = &НачалоПериода
	|				ТОГДА ДвиженияОстатки.КоличествоКонечныйОстаток
	|			ИНАЧЕ ВЫБОР
	|					КОГДА ДвиженияОстатки.Период <= ДНИ.Период
	|						ТОГДА ДвиженияОстатки.КоличествоОборот
	|					ИНАЧЕ 0
	|				КОНЕЦ
	|		КОНЕЦ) <> 0
	|
	|ОБЪЕДИНИТЬ
	|
	|ВЫБРАТЬ
	|	ДвиженияРезервы.Номенклатура,
	|	ДНИ.Период,
	|	СУММА(ВЫБОР
	|			КОГДА ДвиженияРезервы.Период = &НачалоПериода
	|				ТОГДА ДвиженияРезервы.КоличествоКонечныйОстаток
	|			ИНАЧЕ ВЫБОР
	|					КОГДА ДвиженияРезервы.Период <= ДНИ.Период
	|						ТОГДА ДвиженияРезервы.КоличествоОборот
	|					ИНАЧЕ 0
	|				КОНЕЦ
	|		КОНЕЦ),
	|	ДвиженияРезервы.Склад
	|ИЗ
	|	Дни КАК ДНИ,
	|	РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, ,Номенклатура В (&массивНоменклатуры)) КАК ДвиженияРезервы
	|
	|СГРУППИРОВАТЬ ПО
	|	ДНИ.Период,
	|	ДвиженияРезервы.Склад,
	|	ДвиженияРезервы.Номенклатура
	|
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР
	|			КОГДА ДвиженияРезервы.Период = &НачалоПериода
	|				ТОГДА ДвиженияРезервы.КоличествоКонечныйОстаток
	|			ИНАЧЕ ВЫБОР
	|					КОГДА ДвиженияРезервы.Период <= ДНИ.Период
	|						ТОГДА ДвиженияРезервы.КоличествоОборот
	|					ИНАЧЕ 0
	|				КОНЕЦ
	|		КОНЕЦ) <> 0
	|
	|УПОРЯДОЧИТЬ ПО
	|	Период,
	|	Склад,
	|	Номенклатура";
	
	лЗапрос.УстановитьПараметр("КонецПериода", КонецДня(ДатаСинхронизации));
	лЗапрос.УстановитьПараметр("НачалоПериода",  НачалоДня(ДатаНачалаПериодаСинхронизации));
	лЗапрос.УстановитьПараметр("ТБДаты", тзнСЦифрами);
	лЗапрос.УстановитьПараметр("массивНоменклатуры", тзНомеклатура.ВыгрузитьКолонку("Ссылка"));
Показать
15. LevLeopold 08.07.20 15:44 Сейчас в теме
(8)
Кодом и запросом знаю как сделать, уже реализовывал.

Вот запрос для скд, который получает на каждую дату:

ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ ВТ_Цифры

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	5

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	6

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	7

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	8

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	9
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ВТ_Цифры0.Цифра + 10 * ВТ_Цифры1.Цифра) КАК Дата
ПОМЕСТИТЬ ВТ_Даты
ИЗ
	ВТ_Цифры КАК ВТ_Цифры0
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Цифры КАК ВТ_Цифры1
		ПО (ИСТИНА)
ГДЕ
	ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ВТ_Цифры0.Цифра + 10 * ВТ_Цифры1.Цифра) МЕЖДУ &ДатаНачала И &ДатаОкончания
;

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

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

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

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

УПОРЯДОЧИТЬ ПО
	Дата
Показать
16. vasgius 08.07.20 15:44 Сейчас в теме
Что нужно поменять:
- изменить расчет ресурса, достаточно просто "Сумма(ОстатокНаНачало)"
- проверить, что есть поля начального и конечного остатка
- проверить что корректно настроены роли полей: периоды, измерения, начальный и конечный остаток.
20. LevLeopold 08.07.20 16:06 Сейчас в теме
(16) Сделал как вы написали, получилось но частично (картинка во вложении).
Т.е. после этого уже формулу писать чтобы конечный остаток был = начальному, где скд это сделало не правильно?
Прикрепленные файлы:
18. M_A_D 184 08.07.20 15:50 Сейчас в теме
Регистр накопелний остатки не хранит ни каких данных за день, когда остатки не менялись, и получается. что остаток в этот день равен остатку на конец прошлого дня, думаю отталкиваться нужно от этого...
у меня я уже писал топик по ээтой теме:
http://forum.infostart.ru/forum9/topic237093/message2403347/#message2403347
посмотри вдруг поможет, там есть запрос для примера.

Но не понимаю, почему нужно именно с помощью СКД а не в запросе?
19. LevLeopold 08.07.20 15:57 Сейчас в теме
(18) Да я понимаю что вы говорите, я вашу тему находил насчет этого. и (8) как раз ответил запросом который у вас описан.

У СКД есть функционал который может так сделать чтобы не писать такие алгоритмы.

Отвечая на ваш вопрос, сейчас уже больше для саморазвития и уже из принципа, ну просто эта проблема, что там можно сделать, не дает мне нормально спать :D
22. M_A_D 184 08.07.20 16:13 Сейчас в теме
(19)
Могу предположить только если)))
Я бы попробовал сделать в СКД 2 набор данных в первом остатки по срезу последних
с условиями по номенклатуре и по дате
в во второй набор вывел бы даты производственно календаня и подружил бы наборы по дате, причем тянул бы даты календаря в параметр даты в наборе по остаткам.
В таком случае будет выводиться не остаток на каждый день периода, а будет выводиться остаток на каждый день в отдельности)
21. oleg-x 27 08.07.20 16:09 Сейчас в теме
Вот пример отчета СКД с остатками по дням.
Прикрепленные файлы:
ОстаткиПоДням.erf
23. LevLeopold 08.07.20 16:16 Сейчас в теме
(21)
Спасибо, я понял свою ошибку, обязательно нужно было взять начальный остаток и указывать роли. Так же как и описал (16), но там уже был мой косяк, не правильно сделал.
24. oleg-x 27 08.07.20 16:19 Сейчас в теме
(23) В большинстве случаев роли трогать не надо, если идет автозаполнение. Они сами выставляются как положено. Их менять надо, только если знаете зачем это вам нужно. В своей практике я такое встречал 1 раз.
Оставьте свое сообщение

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