Остатки на дату и время

1. echo77 1920 02.02.19 12:33 Сейчас в теме
Дорабатываю в БП 3.0 отчет ОстаткиТоваров - мне нужно всего-навсего реализовать вывод остатков на складе с точностью до времени, т.е. не просто на конец дня 02.02.2019, а например на 02.02.2019 10:00:00.

Что я сделал:
- добавил в расширение этот отчет
- добавил новый реквизит отчета Расш1_КонецПериода
- переопределил в форме расширения процедуру ПодготовитьПараметрыОтчетаНаСервере()

и все равно, остатки отображаются на конец дня. Куда копать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dnki 4 02.02.19 13:25 Сейчас в теме
* А Ваш отчет работает правильно?
* А вызывается именно он ? Вставить какое-то сообщение.
* А что изменил? Если только параметры, то сам запрос работаем по-старому
4. echo77 1920 03.02.19 16:41 Сейчас в теме
(2)
* А Ваш отчет работает правильно?

- это не мой отчет. Как я понял, это типовой отчет Бухгалтерии 3.0 - ОстаткиТоваров из подсистемы Склад.
* А вызывается именно он ? Вставить какое-то сообщение.

- да именно, он. Вызываю старый отчет, расширение подключено и ошибок нет. На форме вижу, что мой добавленный реквизит отображается, в отладчике вижу, что программа заходит в доработанную функцию и параметры в структуре меняются
* А что изменил? Если только параметры, то сам запрос работаем по-старому

Переставил параметры - для проверки сделал - на день назад. Отрабатывает! Показывает остатки на вчера.
&НаСервере
&Вместо("ПодготовитьПараметрыОтчетаНаСервере")
Функция Расш1_ПодготовитьПараметрыОтчетаНаСервере()
	
	МенеджерОтчета = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ЭтотОбъект.ИмяФормы);
	
	ПараметрыОтчета = МенеджерОтчета.ПустыеПараметрыКомпоновкиОтчета();
	
	// Моя вставка Крынецкий 02.02.19. Начало, Конец периода заменяем на наш параметр
	ПараметрыОтчета.НачалоПериода                     = Отчет.Расш1_КонецПериода - 86400;
	ПараметрыОтчета.КонецПериода                      = Отчет.Расш1_КонецПериода - 86400;
	// Конец моей вставки
	ПараметрыОтчета.Организация                       = Отчет.Организация;
	ПараметрыОтчета.ВключатьОбособленныеПодразделения = Отчет.ВключатьОбособленныеПодразделения;
	ПараметрыОтчета.РазмещениеДополнительныхПолей     = Отчет.РазмещениеДополнительныхПолей;
	ПараметрыОтчета.Группировка                       = Отчет.Группировка.Выгрузить();
	ПараметрыОтчета.ДополнительныеПоля                = Отчет.ДополнительныеПоля.Выгрузить();
	
	ПараметрыОтчета.ВыводитьЗаголовок                 = ВыводитьЗаголовок;
	ПараметрыОтчета.ВыводитьПодвал                    = ВыводитьПодвал;
	ПараметрыОтчета.МакетОформления                   = МакетОформления;
	ПараметрыОтчета.РежимРасшифровки                  = Отчет.РежимРасшифровки;
	ПараметрыОтчета.ДанныеРасшифровки                 = ДанныеРасшифровки;
	ПараметрыОтчета.СхемаКомпоновкиДанных             = ПолучитьИзВременногоХранилища(СхемаКомпоновкиДанных);
	ПараметрыОтчета.ИдентификаторОтчета               = БухгалтерскиеОтчетыКлиентСервер.ПолучитьИдентификаторОбъекта(ЭтотОбъект);
	
	БухгалтерскиеОтчетыКлиентСервер.УдалитьИдентификаторПользовательскойНастройкиИзОтбора(Отчет.КомпоновщикНастроек);
	ПараметрыОтчета.НастройкиКомпоновкиДанных         = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
	
	Возврат ПараметрыОтчета;

КонецФункции
Показать
3. alxarz 32 02.02.19 17:06 Сейчас в теме
так если в запрос передавалась только дата, а результаты на конец дня, может в запросе этот параметр используется с функцией КонецПериода(Дата,день) тогда без исправления запроса не обойтись одним изменением параметра.
5. echo77 1920 03.02.19 16:42 Сейчас в теме
(3) Вот запрос из схемы:
ВЫБРАТЬ
    ХозрасчетныйОстатки_КонОст.Счет КАК Счет,
    ХозрасчетныйОстатки_КонОст.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстатки_КонОст.СуммаОстаток КАК Сумма,
    ХозрасчетныйОстатки_КонОст.КоличествоОстаток КАК Количество,
    ХозрасчетныйОстатки_КонОст.Субконто2 КАК Склад,
    ХозрасчетныйОстатки_КонОст.Организация КАК Организация,
    ХозрасчетныйОстатки_КонОст.Подразделение КАК Подразделение
{ВЫБРАТЬ
    Счет.*,
    Номенклатура.*,
    Сумма,
    Количество,
    Склад.*,
    Организация.*,
    Подразделение.*}
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет В (&СчетаУчетаСкладИНоменклатура) {(Счет).*}, &СубконтоНоменклатураИСклад, {(Организация).* КАК Организация, (Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад, (Подразделение).* КАК Подразделение}) КАК ХозрасчетныйОстатки_КонОст
{ГДЕ
    ХозрасчетныйОстатки_КонОст.СуммаОстаток КАК Сумма,
    ХозрасчетныйОстатки_КонОст.КоличествоОстаток КАК Количество}
Показать


Схему тоже прикладываю. Как видно - какую дату-время передаем, такая и встает в параметры. Но, увы, где-то эта дата преобразовывается
Прикрепленные файлы:
Схема.xml
6. echo77 1920 03.02.19 16:45 Сейчас в теме
Если кому интересно, я пошел по пути упрощения:
Просто создал новый отчет без форм, вставил туда одну только схему. В настройках схемы указал какие поля, какие параметры отображать на форме. Параметры в схеме прописал вручную, благо там только ссылки на предопределенные счета БУ. Оно работает, но вопрос по отчетам БП 3.0 остается открытым - как передать в параметры Дату+Время?
7. oleg-x 23 04.02.19 12:40 Сейчас в теме
(6) Передать просто, ТекущаяДата() или из поля с дата и время, только если в самом запросе параметр в выражение КонецПериода(&Дата,День), то передавай любое время, в самом запросе время приводится к концу дня.
8. echo77 1920 04.02.19 12:41 Сейчас в теме
(7) Выше я приводил запрос из схемы - в нем параметр &КонецПериода устанавливается в неизменном виде (не выполняется приведение к концу дня).
9. oleg-x 23 04.02.19 12:48 Сейчас в теме
(8) Еще вариант, если там используется стандартный период, то там автоматически конец периода приводится к концу дня, тут только заменять стандартный период, на две отдельные даты.
10. echo77 1920 04.02.19 12:55 Сейчас в теме
(9) Выше приводил код функции Функция Расш1_ПодготовитьПараметрыОтчетаНаСервере()

&НаСервере
&Вместо("ПодготовитьПараметрыОтчетаНаСервере")
Функция Расш1_ПодготовитьПараметрыОтчетаНаСервере()
    
    МенеджерОтчета = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ЭтотОбъект.ИмяФормы);
    
    ПараметрыОтчета = МенеджерОтчета.ПустыеПараметрыКомпоновкиОтчета();
    
    // Моя вставка Крынецкий 02.02.19. Начало, Конец периода заменяем на наш параметр
    ПараметрыОтчета.НачалоПериода                     = Отчет.Расш1_КонецПериода - 86400;
    ПараметрыОтчета.КонецПериода                      = Отчет.Расш1_КонецПериода - 86400;
    // Конец моей вставки
    ПараметрыОтчета.Организация                       = Отчет.Организация;
    ПараметрыОтчета.ВключатьОбособленныеПодразделения = Отчет.ВключатьОбособленныеПодразделения;
    ПараметрыОтчета.РазмещениеДополнительныхПолей     = Отчет.РазмещениеДополнительныхПолей;
    ПараметрыОтчета.Группировка                       = Отчет.Группировка.Выгрузить();
    ПараметрыОтчета.ДополнительныеПоля                = Отчет.ДополнительныеПоля.Выгрузить();
    
    ПараметрыОтчета.ВыводитьЗаголовок                 = ВыводитьЗаголовок;
    ПараметрыОтчета.ВыводитьПодвал                    = ВыводитьПодвал;
    ПараметрыОтчета.МакетОформления                   = МакетОформления;
    ПараметрыОтчета.РежимРасшифровки                  = Отчет.РежимРасшифровки;
    ПараметрыОтчета.ДанныеРасшифровки                 = ДанныеРасшифровки;
    ПараметрыОтчета.СхемаКомпоновкиДанных             = ПолучитьИзВременногоХранилища(СхемаКомпоновкиДанных);
    ПараметрыОтчета.ИдентификаторОтчета               = БухгалтерскиеОтчетыКлиентСервер.ПолучитьИдентификаторОбъекта(ЭтотОбъект);
    
    БухгалтерскиеОтчетыКлиентСервер.УдалитьИдентификаторПользовательскойНастройкиИзОтбора(Отчет.КомпоновщикНастроек);
    ПараметрыОтчета.НастройкиКомпоновкиДанных         = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
    
    Возврат ПараметрыОтчета;

КонецФункции
Показать


Здесь видно что параметры НачалоПериода, КонецПериода устанавливается отдельно в структуре
12. Angealtor 24 23.08.21 19:56 Сейчас в теме
(10) Удалось решить вопрос? Примерно такая же задача и такая же проблема.
11. meriferi 04.02.19 18:45 Сейчас в теме
Используй момент времени или границу
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот