Версия для печати темы (https://pro1c.org.ua/index.php?s=8134c410bcfacb9c7215e071f65af347&showtopic=46057)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Регистры накопления остатки: проставить дату на конец дня

Автор: Constantus 04.06.18, 12:06

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Использую:

РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&Дата, ) КАК Взаиморасчеты


Как я выяснил параметр &Дата ставит дату на начало дня, а хотелось бы на конец

Перепробовал несколько способов, найденных в интернете, но что-то никак не могу выйти на конец дня в данном случае.

Подскажите что и где прописать, чтобы отчет на конец дня выводил?

Автор: sava1 04.06.18, 13:20

запрос.УстановитьПараметр("Дата", КонецДня(ДатаОст));


Автор: Constantus 04.06.18, 13:24

sava1 @ Сегодня, 16:20 * ,

Цитата(sava1 @ 04.06.18, 16:20) *
запрос.УстановитьПараметр("Дата", КонецДня(ДатаОст));



У меня отчет СКД, а не отчет на базе классического запроса... Или при формировании СКД где-то можно прописать подобную конструкцию?

Автор: Gazulo 04.06.18, 14:16

Constantus @ Сегодня, 14:24 *
А каким образом устанавливается параметр &Дата?

Автор: Constantus 04.06.18, 14:19

Gazulo @ Сегодня, 17:16 * ,


В виртуальной таблице

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


Автор: sava1 04.06.18, 15:02

Цитата(Constantus @ 04.06.18, 15:19) *
РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки({&Дата},) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки



вооще-то в скд такая хрень не применяется - там есть параметры

Автор: Constantus 04.06.18, 15:10

Цитата(sava1 @ 04.06.18, 18:02) *
вооще-то в скд такая хрень не применяется - там есть параметры



Понял, переделаю, просто где-то когда-читал, что при параметрах в виртуальных таблицах отчет быстрее создается...

Автор: Bernet 04.06.18, 15:53

Constantus @ Сегодня, 13:06 * ,
Если у вас отчет на СКД и есть параметр &Дата, вы можете его установить в модуле объекта, событие "при компоновке результата". Пример:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ПараметрПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата");
    Если ПараметрПериод <> Неопределено Тогда
        ПараметрПериод .Значение = КонецДня(ТекущаяДата());
                ПараметрПериод .Использование = Истина;
    КонецЕсли;    
    
КонецПроцедуры

Автор: Batchir 04.06.18, 16:07

Constantus @ Сегодня, 14:24 * ,

КОНЕЦПЕРИОДА(&Дата, ДЕНЬ)

Но преобразование параметра не желательно, могут возникнуть проблемы с быстродействием.
Если есть возможность, то в запросы лучше передавать уже готовые параметры

Автор: Constantus 07.06.18, 10:33

Вот я тогда совсем ничего не понимаю...

У меня есть другой отчет:

ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(
            &Дата,
            &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
                ИЛИ Склад = &Склад) КАК ТоварыНаСкладахОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                &Дата,
                (&Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
                    ИЛИ Склад = &Склад)
                    И НЕ ТИПЗНАЧЕНИЯ(ДокументРезерва) = ТИП(Документ.ЗаказПокупателя)) КАК ТоварыВРезервеНаСкладахОстатки


Как видите, и мой первый пример и вот этот оба РН, оба по Остаткам, оба имеют параметр "Дата". Но первый пример при выборе даты дает начало дня, второй пример выводит четко на конец выбранного дня... Как такое может быть? Что я мог сотворить со вторым отчетом и недоделал с первым? icon_cuss.gif

При открытии второго отчета:
    УчетВремени = Ложь;    
    
    Если УчетВремени Тогда
        Дата = ТекущаяДата();
    Иначе
        Дата = КонецДня(ТекущаяДата());
    КонецЕсли;    
    
    ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата");
    ПараметрСКД.Значение = Дата;//КонецДня(ТекущаяДата());
    ПараметрСКД.Использование = Истина;



Вот при открытии первого (тема топика), который на экран выводит конец дня, но считает на начало...

    Дата = КонецДня(ТекущаяДата());
    ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Дата");
    ПараметрСКД.Значение = Дата;//КонецДня(ТекущаяДата());
    ПараметрСКД.Использование = Истина;


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua