|
Вопрос по запросу к регистру накопления. | ☑ | ||
---|---|---|---|---|
0
asder117
04.09.15
✎
18:16
|
Я в прошлый раз задал вопрос Мне в 1с БП 2.0 надо организовать сдачу в аренду весов (для торговли). Спасибо всем кто ответил. Меня натолкнули на мысль и я ее сделал получая данные из регистра по дням но вот вопрос:
Запрос ВЫБРАТЬ РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря ПОМЕСТИТЬ Дни ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Движения.Договор, ДНИ.ДатаКалендаря КАК ДатаКалендаря, Движения.Оборудование, Движения.КоличествоНачальныйОстаток, Движения.КоличествоКонечныйОстаток, Движения.КоличествоОборот, Движения.КоличествоПриход, Движения.КоличествоРасход ИЗ Дни КАК ДНИ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Агро_ПередачаДополнительногоОборудования.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Движения ПО (Движения.Период <= ДНИ.ДатаКалендаря) УПОРЯДОЧИТЬ ПО ДатаКалендаря движения по регистру у меня (2 пришло 1 числа, 12 - 1 ушел, 27 - 1 еще ушел) т.е конечный остаток 0. В консоли запросов я получаю следующее: до 12 числа все нормально, по одной записи в день. а с 12 чехарда. с 12 по 27 число - по две записи в день, а с 27 когда уже 0 вообще 3 записи. Что не так подскажите плз. Заранее спасибо. |
|||
1
Брегорьян
04.09.15
✎
18:18
|
естьнулла нет. но, может, так задумано
|
|||
2
Tateossian
04.09.15
✎
18:32
|
А зачем такое условие "<="? Ты для каждого дня календаря получаешь все записи за предыдущий период.
|
|||
3
RomanYS
04.09.15
✎
19:13
|
(0) "Что не так подскажите плз"
Всё так: результат точно соответствует приведенным запросу и движениям. Например для 27-го числа три записи движений соответствуют твоему соединению. Что-то не так у тебя в ожиданиях...и понимании, как минимум соединений. Непонятно, что вообще ты хотел получить таким запросом. |
|||
4
asder117
04.09.15
✎
20:42
|
(3) я хочу получить остаток на каждый день просто
|
|||
5
asder117
04.09.15
✎
20:51
|
(3) блин звиняйте вроде ступил. надо было просто по регистру остаток взять и по периоду циклом пройтись на каждый день
|
|||
6
RomanYS
04.09.15
✎
20:54
|
(5) Зачем тебе вообще остатки на каждый день? Получай периоды и считай.
Запрос в цикле конечно может решить твою проблему. Но это со всех сторон плохое решение. |
|||
7
asder117
04.09.15
✎
20:57
|
(6) Я просто думаю использовать такую конструкцию
ДеньРасчета = 0; Пока ДеньРасчета <= (ДнейВМесяце-1) Цикл Если РасчетСДняСдачи Тогда Период = КонецДня(ПериодВзаиморасчетов + ДеньРасчета*24*60*60); Иначе Период = НачалоДня(ПериодВзаиморасчетов + ДеньРасчета*24*60*60); КонецЕсли; ЗапросТР.УстановитьПараметр("Период", Период); Таблица = ЗапросТР.Выполнить().Выгрузить(); |
|||
8
RomanYS
04.09.15
✎
21:01
|
Идея такова:
ВЫБРАТЬ Движения.Период как ДеньС, ЕстьNULL(Минимум(Движения1.Период), &КонецПериода) как ДеньПо, Движения.Договор, Движения.Оборудование, Движения.КоличествоКонечныйОстаток КАК ОстатокНаКонецДня ИЗ РегистрНакопления.Агро_ПередачаДополнительногоОборудования.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Движения ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Агро_ПередачаДополнительногоОборудования.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Движения1 ПО Движения.Договор = Движения1.Договор И Движения.Оборудование = Движения1.Оборудование И Движения.Период < Движения1.Период Если сможешь разобраться, получишь решение на порядок быстрее цикла по периодам. Иначе делай как знаешь. |
|||
9
asder117
04.09.15
✎
21:05
|
(8) матюгается на поле не входит в группу Движения.Период
|
|||
10
asder117
04.09.15
✎
21:05
|
(8) а так в принципе идея интересная
|
|||
11
RomanYS
04.09.15
✎
21:06
|
добавь
Сгруппировать по Движения.Период, Движения.Договор, Движения.Оборудование, Движения.КоличествоКонечныйОстаток |
|||
12
asder117
04.09.15
✎
21:13
|
(11) т.е. потом получить разность дат в днях, это число умножить на ставку за день и получить сколько арендатор должен за данный период. напомню задачу
Мне 1с БП 2.0. надо организовать сдачу в аренду весов (для торговли). так вот. Я сделал документ акт передачи весов арендатору и акт возврата весов арендатору. А дальше ступор. Если у меня арендатор ими полный месяц пользуется то никаких проблем, я делаю регистр ив конце месяца по срезу последних забираю. Но а если у меня движение весов происходит в середине месяца? к примеру: 1. арендатор взял 1 числа 1 весы, 10 еще одни. по срезу последних я с него должен взять за 2 весов. Мне надо чтобы за первые 10 дней у меня посчитались 1 весы а за вторые 2. 2. У арендатора были 2 весов он одни в середине месяца сдал. расчет тот-же. а так спасибо большое за помощь |
|||
13
RomanYS
04.09.15
✎
21:15
|
(12) удачи
не забудь узнать как учитывать дни выдачи/возврата |
|||
14
asder117
04.09.15
✎
21:16
|
(13) в смысле?
разность дат то будет ДатаПо-ДатаС |
|||
15
asder117
04.09.15
✎
21:21
|
(8) Кстати это работает когда дата окончания (возврата есть), а так он мне выдает два периода с 1 по 31 и с 31 по 31
|
|||
16
RomanYS
04.09.15
✎
21:24
|
(14) если сегодня взял - завтра вернул. Это один день или два?
Если взял в прошлом месяце, вернул 1-го. Это один день или 0? Если взял 31-го. Это один день или 0? (15) это идея, с границами там надо тонко поработать. Но сначала определиться с (13) |
|||
17
asder117
04.09.15
✎
21:28
|
(16) учитывать дни выдачи/возврата - задается в константах и они булево и равно истина
(14) если сегодня взял - завтра вернул. Это один день или два? если с утра взял и вечером следующего дня вернул то 2 если с утра вернул то 1 Если взял в прошлом месяце, вернул 1-го. Это один день или 0? тоже самое что и первое Если взял 31-го. Это один день или 0? 31 с утра день (15) это идея, с границами там надо тонко поработать. Но сначала определиться с (13) |
|||
18
asder117
04.09.15
✎
21:29
|
(16) когда в цикле по датам то вроде получается то что надо
|
|||
19
RomanYS
04.09.15
✎
21:33
|
(18) (17) )))) и как ты в цикле по датам узнаешь утром/вечером у тебя взяли, а если в обед??)))
(18) если "получается", то не заморачивайся, делай как получается |
|||
20
asder117
04.09.15
✎
21:47
|
(19) мне проще менеджеров зоствить, что если 1 день чтобы возврат следующим днем а дни получить
(НачалоДня(Датаконца)-НачалоДня(ДатаНачала)) /(60*60*24); |
|||
21
Мимохожий Однако
04.09.15
✎
22:03
|
В чем смысл использования регистра накопления?
|
|||
22
asder117
04.09.15
✎
22:19
|
(21) так подскажите как по другому плз
|
|||
23
asder117
05.09.15
✎
00:12
|
(19) а как можно чтобы он последнюю запись к пример один день конца месяца не выводил
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |