Имя: Пароль:
1C
 
Регистр накопления остатки не захватывает последний день ☑
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) есть одна единица номенклатуры которая учавствует в движении. а насчет того что если бы номенклатура была разная то я понимаю там легче. тут номенклатура как услуга идет вообще
AdBlock убивает бесплатный контент. 1Сергей