|
Регистр накопления остатки не захватывает последний день | ☑ | ||
---|---|---|---|---|
0
asder117
05.09.18
✎
22:10
|
Доброе время суток. Есть запрос
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Агро_ПередачаДополнительногоОборудованияОстатки.Контрагент, | Агро_ПередачаДополнительногоОборудованияОстатки.Договор, | Агро_ПередачаДополнительногоОборудованияОстатки.Оборудование КАК Номенклатура, | Агро_ПередачаДополнительногоОборудованияОстатки.КоличествоОстаток, | Агро_ПередачаДополнительногоОборудованияОстатки.Объект |ИЗ | РегистрНакопления.Агро_ПередачаДополнительногоОборудования.Остатки(&Начало,Договор В (&Договоры)) КАК Агро_ПередачаДополнительногоОборудованияОстатки"; Запрос.УстановитьПараметр("Договоры", МассивДоговоров); //// ДеньРасчета = 0; Пока ДеньРасчета <= (ДнейВМесяце-1) Цикл Если РасчетСДняСдачи Тогда Период = КонецДня(ПериодВзаиморасчетов + ДеньРасчета*24*60*60); Иначе Период = КонецДня(ПериодВзаиморасчетов + ДеньРасчета*24*60*60); КонецЕсли; Запрос.УстановитьПараметр("Начало", Новый Граница(Период, ВидГраницы.Включая)); Таблица1 = Запрос.Выполнить().Выбрать(); Пока Таблица1.Следующий() цикл //КолвоДни = Таблица1.КоличествоОстаток; строкаТ = ТаблицаРасчетовПредварительная.Добавить(); строкаТ.Арендатор = Таблица1.Контрагент; строкаТ.Договор = Таблица1.Договор; строкаТ.Номенклатура = Таблица1.Номенклатура; строкаТ.Объект = Таблица1.Объект; строкаТ.РезультатДней = Таблица1.КоличествоОстаток; строкаТ.СуммаИтого = 1; КонецЦикла; ДеньРасчета = ДеньРасчета + 1; КонецЦикла; Если по регистру нет движения расход, то последний день к примеру 31.08.2018 23:59:59 результат захватывает и данные есть. Если же есть движение "расход" по данной дате, то за этот день данные не попадают в результат. Последний день за который есть данные (запрос получает) 30.08.2018 23:59:59. Что можно сделать и как решить эту проблему. Проводить документ 01.09.2018 00:00:00 не предлагать. От этого зависит расчет суммы оплаты. Документ делает движения Движения.Агро_ПередачаДополнительногоОборудования.Очистить(); Для Каждого ТекСтрокаДопОборудование Из ДопОборудование Цикл Движение = Движения.Агро_ПередачаДополнительногоОборудования.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; //08072018 проба для правильного расчета Движение.Период = КонецДня(Дата); Движение.Контрагент = Контрагент; Движение.Договор = Договор; Движение.Объект = ТекСтрокаДопОборудование.Объект; Движение.Оборудование = ТекСтрокаДопОборудование.Оборудование; Движение.Количество = ТекСтрокаДопОборудование.Количество; КонецЦикла; |
|||
1
PR
05.09.18
✎
22:23
|
Уговорил, рассказывай, как решил
|
|||
2
asder117
05.09.18
✎
22:27
|
(1) что решил? я решение и спрашиваю
|
|||
3
PR
05.09.18
✎
22:28
|
(2) Спрашиваешь? Где? В (0) же нет знаков вопроса.
|
|||
4
asder117
05.09.18
✎
22:29
|
(3) Ну звиняйте. Что можно сделать и как решить эту проблему?
|
|||
5
hhhh
05.09.18
✎
23:14
|
(4) исправить ошибку. Чтобы остатки брались на 1 сентября.
|
|||
6
catena
06.09.18
✎
05:34
|
(4)Делать заполнение от дат, а не от наличия остатка. Сделать один запрос вместо тридцати. Не писать странное, типа
Если РасчетСДняСдачи Тогда Период = КонецДня(ПериодВзаиморасчетов + ДеньРасчета*24*60*60); Иначе Период = КонецДня(ПериодВзаиморасчетов + ДеньРасчета*24*60*60); КонецЕсли; |
|||
7
los_hooliganos
06.09.18
✎
05:41
|
Надо сделать запрос остатки на каждый день.
Точкой отсчета вообще должно быть наличие оборудования на начало дня судя по той логике/методологии которую вы рассказываете. |
|||
8
Пробел
06.09.18
✎
06:14
|
Вас волнует, что Запрос.Выполнить() оказывается пустым, я правильно понял? Тогда попробуйте использовать виртуальную таблицу ОстаткиИОбороты с пустым началом периода, с периодичностью "Период" и методом дополнения "ДвиженияИГраницыПериода". Она покажет остатки по всем существующим ключам, даже если они нулевые.
А вообще лучше получить "ТаблицаРасчетовПредварительная" одним запросом. В первом пакете определить список дней, от НачалоПериода до КонецПериода, во втором получить ОстаткиИОбороты за период с периодичностью "День", в третьем к списку дней присоединить ключи из второго, в четвертом - к третьему пакету присоединить остатки из второго. |
|||
9
asder117
06.09.18
✎
07:00
|
(6) это битовский разработчиков код я его менять не стал. "Делать заполнение от дат, а не от наличия остатка"- это как лучше? (7) так он и берет на каждый день выкидывает ее в тз а потом сворачивает (8) да когда в значение периода приходит 31 число когда прошло движение расход. а остальное надо размылять но пока не догоню
|
|||
10
catena
06.09.18
✎
07:18
|
(9)"это как лучше?" - подробно написано в (8), прям пошаговая инструкция.
|
|||
11
asder117
06.09.18
✎
21:31
|
(10) Это то я понял
согласно (8) я сделал ВЫБРАТЬ Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Период, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Контрагент, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Договор, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Объект, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Оборудование, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоНачальныйОстаток, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоКонечныйОстаток, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоОборот, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоПриход, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоРасход ИЗ РегистрНакопления.Агро_ПередачаДополнительногоОборудования.ОстаткиИОбороты(&НачалоПериода, &КонецПериода,День, ДвиженияИГраницыПериода, ) КАК Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты Согласен обороты я получил за все дни т.е. на начало периода и на конец периода т.е. последнюю дату я получил это есть гуд. А теперь как я понял опять в конец периода подставлять каждое число и потом сворачивать таблицу т.к. в результате запроса количество дней не получить. Буду думать над вторым предложение и общим запросом |
|||
12
asder117
06.09.18
✎
22:02
|
(8) А такой общий получился...и блин работает ведь..не пойму почему разрабы сразу так не сделали
ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) КАК Поле1 ПОМЕСТИТЬ ТаблицаДней ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Период, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Контрагент, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Договор, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Объект, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.Оборудование, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоНачальныйОстаток, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоКонечныйОстаток, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоОборот, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоПриход, Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты.КоличествоРасход ПОМЕСТИТЬ ТаблицаЗанятостиВесов ИЗ РегистрНакопления.Агро_ПередачаДополнительногоОборудования.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Агро_ПередачаДополнительногоОборудованияОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаДней.Поле1 КАК Поле1, ТаблицаЗанятостиВесов.Контрагент КАК Контрагент, ТаблицаЗанятостиВесов.Договор КАК Договор, ТаблицаЗанятостиВесов.Оборудование КАК Оборудование ИЗ ТаблицаДней КАК ТаблицаДней, ТаблицаЗанятостиВесов КАК ТаблицаЗанятостиВесов ИТОГИ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поле1) ПО Контрагент, Договор, Оборудование |
|||
13
asder117
06.09.18
✎
22:03
|
(12) Вопрос остается только если рваный период...т.е в середине меся взял или отдал или добавил или и то и другое
|
|||
14
CepeLLlka
06.09.18
✎
22:14
|
(13)Период задаёшь датой или границей? Попробуй границей..
|
|||
15
asder117
06.09.18
✎
22:22
|
(14) рано радовался. сейчас смотрю чел взял оборудование 2 августа, в результате у него должен быть 30 дней а в результате запроса показывает что и 1.08 тоже было оборудование на руках..т.е. количество 31.в чем собака порылась не пойму
|
|||
16
asder117
06.09.18
✎
22:42
|
(14) а период датой. границей попробовал не помогло
|
|||
17
unregistered
06.09.18
✎
23:31
|
Я правильно понимаю, что в последний день регистр закрывается в ноль (списываются в расход все остатки), но вы хотите видеть какие-то остатки на конец этого дня?
Если это так, то поведение системы нормально. Так и должно быть. Раз регистр закрылся в ноль остатков быть не должно и результат запроса пустой. Виртуальные таблицы нулевые остатки не выводят. Сама задача мне не понятна. Что конкретно нужно. В зависимости от задачи решения могут быть разными. |
|||
18
unregistered
06.09.18
✎
23:40
|
(15) > количество 31.в чем собака порылась не пойму
В том, что в таблице ТаблицаДней 31 день. В последнем запросе не указан вид и условие соединения таблиц. А значит выводятся все записи из обеих таблиц. |
|||
19
unregistered
06.09.18
✎
23:53
|
Поищи на тему "Запрос остатков на каждый день".
В найденный запрос добавь условие исключающее записи где остаток нач. и кон., и обороты нулевые |
|||
20
asder117
07.09.18
✎
09:24
|
(17) Задача вкадце такая. Контрагентам передается определеннное оборудование. оно может быть передано в начале года в середине месяца и т.д. Также это оборудование может быть возвращено в любое время. Цель в конце каждого месяца получить итог сколько дней он этим оборудованием пользовался. Приэтом учитывается и деть сдачи и день возврата
|
|||
21
asder117
07.09.18
✎
09:27
|
(17) а остатки само собой если в ноль то не будет но у многих оборудование на месте и исчисление идет.
Расчет дней помесячно |
|||
22
asder117
07.09.18
✎
09:31
|
(17) И еще оборудование может добавляться и убавляться в любой день
|
|||
23
тарам пам пам
07.09.18
✎
10:11
|
(20) в описанном тобой виде нужно отслеживать каждую конкретную единицу оборудования. Иначе получится ситуация:
передали оборудование 1 01.01.2018 в количестве 10 ед., передали оборудование 1 10.01.2018 в количестве 10 ед., вернули оборудование 1 15.01.2018 в количестве 5 ед. Непонятно, вернули оборудование, которое передали 01 числа или 10 числа? Соответственно использовали его 15 дней или 5 дней? |
|||
24
asder117
07.09.18
✎
10:37
|
(23) в точку. С эти и мучаюсь. У меня надо в конце получить к примеру оборудование в начале 1 числа взяли 2 штуки 10 числа еще одну штуку. В конце надо видеть что 2 штуки оборудования использовалось весь месяц а одна штука только 21 день
|
|||
25
тарам пам пам
07.09.18
✎
14:13
|
(24) А что мучаться - с текущей структурой ты эту задачу никак не решишь. Это орг. вопрос - готов ли заказчик учитывать каждую единицу оборудования.
Если готов - то пусть вносят каждую единицу оборудования в виде отдельного элемента справочника Оборудование с идентификацией по серийному номеру, например. Тогда и отчет можно будет достаточно просто сделать. Если не готов - то и отчета, показывающего адекватные данные, не построишь. Можно только придумывать всякую хрень типа ФИФО, которая будет иметь мало общего с реальностью. |
|||
26
Вафель
07.09.18
✎
14:16
|
нужны остатки на каждый день? чтоб посчитать среднюю?
|
|||
27
asder117
07.09.18
✎
17:03
|
(26) я задачу описал выше (20) средняя тут не нужна
(25) есть одна единица номенклатуры которая учавствует в движении. а насчет того что если бы номенклатура была разная то я понимаю там легче. тут номенклатура как услуга идет вообще |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |