Нужна помощь с запросом

1. user1302499 27.09.23 15:57 Сейчас в теме
Возник вопрос с запросом. Есть 2 таблицы (скрин 1), доп расходы начисляются ежедневно, можно ли к допрасходам прикрутить себестоимость с прихода, который был не день в день с доп расходом? (скрин 2)

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
ДополнительныеРасходы.День КАК День,
ДополнительныеРасходы.Товар КАК Товар,
ДополнительныеРасходы.ДопРасходыПриход КАК ДопРасходыПриход,
Себестоимость.СебестоимостьПриход КАК СебестоимостьПриход
ИЗ
ДополнительныеРасходы КАК ДополнительныеРасходы
ЛЕВОЕ СОЕДИНЕНИЕ Себестоимость КАК Себестоимость
ПО (ДополнительныеРасходы.День = Себестоимость.День
И ДополнительныеРасходы.Товар = Себестоимость.Товар)
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. glek 119 27.09.23 16:32 Сейчас в теме
(1) Можно. Если в СКД, то я использовал 2 набора данных.
У меня была задача связать план продаж и фактические продажи. При этом план продаж вносился всегда за месяц но несколькими датами и всегда с 1 числа. Использовал следующий алгоритм: запросом определял какие даты фактических продаж относятся к какому периоду плана и с помощью 2 наборов данных (ведущим выступал план) соединял по этим датам.
2. makfromkz 35 27.09.23 16:18 Сейчас в теме
Я так понимаю, себестоимость считают на конец периода, например месяца, поэтому будут собираться расходы/затраты этого периода по номенклатуре или (укрупненно) по номенклатурной группе, и косвенные затраты будут распределяться согласно правилам их распределения.
5. user1302499 27.09.23 20:35 Сейчас в теме
(2) доп расходы начисляются ежедневно. Это для тестового задания
4. Dr.HiHi 3 27.09.23 19:29 Сейчас в теме
можно, только, скорее всего, вопрос не правильно поставлен
и Вам нужны остатки на каждое движение
Вы же не знаете, что доп. расходы относятся к конкретному приходу??
тем более если выберут период, где не будет прихода, а будет только доп.расходы
6. user1302499 28.09.23 12:46 Сейчас в теме
(4)
(4) Вы правы, не понятно как это сделать
7. Said-We 28.09.23 13:38 Сейчас в теме
(1) Результат, который должен получиться на бумаге нарисуйте. Я правильно понимаю, что надо максимальный по дате приход, но равный или меньший от даты начисления доп расходов? Если да, то в чём вопрос?
8. user1302499 28.09.23 13:53 Сейчас в теме
(7) Не Ваш понял вопрос... в Отчете должно быть, как я думаю, период из регистра, товар и (ДопРасходы+СебестоимостьПервоначальная)/СебестоимостьПервоначальна*100 = Процент. Не понимаю как организовать регистр чтобы вытаскивать себестоимость первоначальную на любой день. Чтобы подсчитать процент
9. Said-We 28.09.23 14:10 Сейчас в теме
(8) Чем данная задача отличается от вытаскивания цены на товар, например при перемещении?
Цена тоже не каждый день устанавливается, а перемещение как есть так и есть.
10. Said-We 28.09.23 14:19 Сейчас в теме
(1) Вам вот это надо?
Прикрепленные файлы:
11. user1302499 28.09.23 14:30 Сейчас в теме
14. Said-We 28.09.23 14:38 Сейчас в теме
(11) Отлично. Тогда решение в (10), только осталось запрос перевести на язык запросов 1С.
В 1С это стандартная задача решается через поиск ближайшей даты, на которую надо брать и потом прицеплять уже по связи товар + дата, либо коррелированный запрос, в котором это делается сразу.
12. user1302499 28.09.23 14:37 Сейчас в теме
(10) На 1С этот запрос возможно переписать?
15. Said-We 28.09.23 14:41 Сейчас в теме
(12) Конечно. Производительность и читабельность такого запроса серьёзно храмает по сравнению с (10), но можно. И это стандартная задача для 1С, со стандартным решением.
13. user1302499 28.09.23 14:37 Сейчас в теме
16. Said-We 28.09.23 14:43 Сейчас в теме
(13) Нет. Это не вложенный запрос. Хотя визуально да.
Вложенным обычно считают запрос который внутри FROM.
Внутри SELECT это не считается вложенным запросом. И такую стандартную конструкцию 1С не поддерживает. Только через LEFT JOIN.
17. user1302499 28.09.23 14:53 Сейчас в теме
(16)
ВЫБРАТЬ
         КурсыВалютСрезПоследних.Валюта,
         КурсыВалютСрезПоследних.Период КАК ПоследняяДата,
         КурсыВалют.Период КАК ПредпоследняяДата,
         КурсыВалютСрезПоследних.Курс КАК ПоследнийКурс,
         КурсыВалют.Курс КАК ПредпоследнийКурс
ИЗ
       РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
ПО ((КурсыВалют.Валюта, КурсыВалют.Период) В
            (ВЫБРАТЬ
                      КурсыВалют.Валюта,
                      МАКСИМУМ(КурсыВалют.Период) КАК Период
              ИЗ
                      РегистрСведений.КурсыВалют КАК КурсыВалют
              ГДЕ
              КурсыВалют.Период < КурсыВалютСрезПоследних.Период
              И КурсыВалют.Валюта = КурсыВалютСрезПоследних.Валюта
              СГРУППИРОВАТЬ ПО
              КурсыВалют.Валюта))
Показать


Нашел пример в инете, как-то так должно выглядеть?
18. Said-We 28.09.23 14:58 Сейчас в теме
19. user1302499 28.09.23 15:37 Сейчас в теме
(18)
У меня почему то как полное соединение отрабатывает?

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДополнительныеРасходы.День КАК День,
	ДополнительныеРасходы.Товар КАК Товар,
	ДополнительныеРасходы.ДопРасходыПриход КАК ДопРасходыПриход,
	Себестоимость.СебестоимостьПриход КАК СебестоимостьПриход
ИЗ
	ДополнительныеРасходы КАК ДополнительныеРасходы
		ЛЕВОЕ СОЕДИНЕНИЕ Себестоимость КАК Себестоимость
		ПО ((ДополнительныеРасходы.День, ДополнительныеРасходы.Товар) В
				(ВЫБРАТЬ
					МАКСИМУМ(Себестоимость.День),
					Себестоимость.Товар
				ИЗ
					Себестоимость
				ГДЕ
					Себестоимость.День <= ДополнительныеРасходы.День
					И ДополнительныеРасходы.Товар = Себестоимость.Товар
				СГРУППИРОВАТЬ ПО
					Себестоимость.Товар)) 
Показать
Прикрепленные файлы:
21. Said-We 28.09.23 19:09 Сейчас в теме
(19) А если так (писал на коленке - проверяйте)....
ВЫБРАТЬ
    ДополнительныеРасходы.День КАК День,
    ДополнительныеРасходы.Товар КАК Товар,
    ДополнительныеРасходы.ДопРасходыПриход КАК ДопРасходыПриход,
    Себестоимость.СебестоимостьПриход КАК СебестоимостьПриход
ИЗ
    ДополнительныеРасходы КАК ДополнительныеРасходы
        ЛЕВОЕ СОЕДИНЕНИЕ Себестоимость КАК Себестоимость
        ПО ДополнительныеРасходы.Товар = Себестоимость.Товар
                И Себестоимость.День В
                (ВЫБРАТЬ
                    МАКСИМУМ(Себестоимость.День),
                    Себестоимость.Товар
                ИЗ
                    Себестоимость
                ГДЕ
                    Себестоимость.День <= ДополнительныеРасходы.День
                    И ДополнительныеРасходы.Товар = Себестоимость.Товар
                СГРУППИРОВАТЬ ПО
                    Себестоимость.Товар) 
Показать
20. Dr.HiHi 3 28.09.23 17:11 Сейчас в теме
(19) приблизительно, но могу ошибаться
ВЫБРАТЬ
	&НачалоПериода КАК Период,
	СебестоимостьТоваров.ТоварКАК Товар,
	СебестоимостьТоваров.СтоимостьОстаток КАК СебестоимостьНачальныйОстаток,
	0 КАК СебестоимостьОборот,
	СебестоимостьТоваров.СуммаДопРасходовОстаток КАК ДопРасходыНачальныйОстаток,
	0 КАК ДопРасходыОборот
ПОМЕСТИТЬ СебестоимостьТоваров
ИЗ
	РегистрНакопления.СебестоимостьТоваров.Остатки(&НачалоПериода, ) КАК СебестоимостьТоваров

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СебестоимостьТоваров.Период КАК Период,
	СебестоимостьТоваров.Товар,
	МАКСИМУМ(СебестоимостьТоваров.СебестоимостьНачальныйОстаток) + СУММА(ЕСТЬNULL(СебестоимостьТоваров1.СебестоимостьНачальныйОстаток, 0) + ЕСТЬNULL(СебестоимостьТоваров1.СебестоимостьОборот, 0)) КАК СебестоимостьНачальныйОстаток,
	МАКСИМУМ(СебестоимостьТоваров.СебестоимостьОборот) КАК СебестоимостьОборот,
	МАКСИМУМ(СебестоимостьТоваров.СебестоимостьНачальныйОстаток + СебестоимостьТоваров.СебестоимостьОборот) + СУММА(ЕСТЬNULL(СебестоимостьТоваров1.СебестоимостьНачальныйОстаток, 0) + ЕСТЬNULL(СебестоимостьТоваров1.СебестоимостьОборот, 0)) КАК СебестоимостьКонечныйОстаток,
	МАКСИМУМ(СебестоимостьТоваров.ДопРасходыНачальныйОстаток) + СУММА(ЕСТЬNULL(СебестоимостьТоваров1.ДопРасходыНачальныйОстаток, 0) + ЕСТЬNULL(СебестоимостьТоваров1.ДопРасходыОборот, 0)) КАК ДопРасходыНачальныйОстаток,
	МАКСИМУМ(СебестоимостьТоваров.ДопРасходыОборот) КАК ДопРасходыОборот,
	МАКСИМУМ(СебестоимостьТоваров.ДопРасходыНачальныйОстаток + СебестоимостьТоваров.ДопРасходыОборот) + СУММА(ЕСТЬNULL(СебестоимостьТоваров1.ДопРасходыНачальныйОстаток, 0) + ЕСТЬNULL(СебестоимостьТоваров1.ДопРасходыОборот, 0)) КАК ДопРасходыКонечныйОстаток
ИЗ
	СебестоимостьТоваров КАК СебестоимостьТоваров
		ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьТоваров КАК СебестоимостьТоваров1
		ПО СебестоимостьТоваров.Товар = СебестоимостьТоваров1.Товар
			И СебестоимостьТоваров.Период > СебестоимостьТоваров1.Период

СГРУППИРОВАТЬ ПО
	СебестоимостьТоваров.Период,
	СебестоимостьТоваров.Товар
Показать
22. Said-We 29.09.23 00:46 Сейчас в теме
К (21) Вместо:
...(ВЫБРАТЬ
                    МАКСИМУМ(Себестоимость.День),
                    Себестоимость.Товар
                ИЗ...
Точно минимум поправить на:
...(ВЫБРАТЬ
                    МАКСИМУМ(Себестоимость.День)
                ИЗ...
Может ещё где "навоял" :-)
23. Said-We 29.09.23 17:07 Сейчас в теме
+ К (22) И группировка тут тоже не сильно нужна. :-)
В общем смотрите, корректируйте.
Оставьте свое сообщение
Вакансии
Программист 1С
Кемерово
зарплата от 200 000 руб.
Полный день

Программист 1С
Киров (Кировская обл.)
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день