Добрый день
пытаюсь получить запросом получить информацию идентичную оборотно-сальдовой ведомости по счету (ОСВ) 41.02.1. В результате для ряда позиций номенклатур значения не совпадают. К примеру выбранная позиция на 31.07.2019 имеет количественный остаток по ОСВ - 10 шт а мой запрос - 12 шт. (см вложение) По регистру есть движение (расход) на 2 шт в 31.07.2019.23.59.59. Если поставить время 01082019 000000 - значения по этой позиции совпадают, но начинают разлетаться другие позиции.
Складывается мнение что ОСВ учитывает движение в 31.07.2019.23.59.59 а мой запрос нет и по разному работают со временем.

Вопрос
Прошу посоветовать пути по оптимизации запроса. Может кто сталкивался с подобным явлением? Возможно для 1с УПП 1.3. есть опыт использования глобальных обработок конфигурации для ОСВ для внешних обработок без подобного внешнего запроса? Посоветуйте как поступить.

(запрос)

```1c
    ВЫБРАТЬ
    ХозрасчетныйОстатки.Счет КАК Счет,
    ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ХозрасчетныйОстатки.КоличествоРазвернутыйОстатокКт,
    ХозрасчетныйОстатки.КоличествоРазвернутыйОстатокДт,
    ХозрасчетныйОстатки.КоличествоОстатокКт,
    ХозрасчетныйОстатки.КоличествоОстатокДт
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(ДАТАВРЕМЯ(2019, 7, 31, 23, 59, 59), , , ) КАК ХозрасчетныйОстатки
    ГДЕ
    ХозрасчетныйОстатки.Счет = &Счет
    И ХозрасчетныйОстатки.Субконто1 = &Субконто1
    И ХозрасчетныйОстатки.Субконто2 = &Субконто2

    СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Счет,
    ХозрасчетныйОстатки.КоличествоОстаток,
    ХозрасчетныйОстатки.КоличествоРазвернутыйОстатокКт,
    ХозрасчетныйОстатки.КоличествоРазвернутыйОстатокДт,
    ХозрасчетныйОстатки.КоличествоОстатокКт,
    ХозрасчетныйОстатки.КоличествоОстатокДт
```
---
Не надо торопиться, смотрите внимательно, что пишете:

РегистрБухгалтерии.Хозрасчетный.Остатки(&Граница)
Запрос.УстановитьПараметр("КонГраница", Граница);
---
Делайте запрос на границу
---
вот что у меня получается во внешней обработке с учетом рекомендаций

```1c
    ДатаЗапроса=КонецДня(ЭлементыФормы.СменныйОтчет.Значение.Дата);
    год=Формат(год(ДатаЗапроса),"ЧГ=0"); // Формат(Год("20031120"),"ЧГ=0"));
    месяц=Формат(месяц(ДатаЗапроса),"ДФ=ММ");
    число =Формат(день(ДатаЗапроса),"ДФ=ДД");
    Час= Формат(ДатаЗапроса,"ДФ=ЧЧ");
    мин= Формат(ДатаЗапроса,"ДФ=мм");
    сек= Формат(ДатаЗапроса,"ДФ=сс");

    Параметры = Новый Массив(2);
    Параметры[0] = ДатаЗапроса;
    Параметры[1] = ВидГраницы.Включая;
    Граница = Новый(Тип("Граница"),Параметры);
    Запрос.УстановитьПараметр("КонГраница", Граница);

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ХозрасчетныйОстатки.Счет КАК Счет,
    | ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Остатки(ДАТАВРЕМЯ("+
    год+","+
    месяц+","+
    число+","+
    час+","+
    мин+","+
    сек+")"+
    ", , , ) КАК ХозрасчетныйОстатки
    |ГДЕ
    | ХозрасчетныйОстатки.Счет = &Счет
    | И ХозрасчетныйОстатки.Субконто1 = &Субконто1
    | И ХозрасчетныйОстатки.Субконто2 = &Субконто2";

    Запрос.УстановитьПараметр("Субконто1",номенклатура);
    Запрос.УстановитьПараметр("Субконто2", ЭлементыФормы.СменныйОтчет.Значение.Ресурс.Склад.Ссылка);
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.02.1"));
    Запрос.УстановитьПараметр("Организация", Справочники.Организации.ГазэнергосетьАстрахань);
    // Запрос.УстановитьПараметр("Счет7606",ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.06"));
    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    //СуммаОборотаЗаПериод1С=0;
    //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ВыборкаДетальныеЗаписи.Следующий();
    // Вставить обработку выборки ВыборкаДетальныеЗаписи
    возврат ВыборкаДетальныеЗаписи. КоличествоОстаток;
```
---
```1c
    Параметры = Новый Массив(2);
    Параметры[0] = ДатаЗапроса;
    Параметры[1] = ВидГраницы.Включая;
    Граница = Новый(Тип("Граница"),Параметры);

    Запрос = Новый Запрос;
    //Запрос.УстановитьПараметр("КонГраница", Граница);

    Запрос.Текст =
    "ВЫБРАТЬ
    | ХозрасчетныйОстатки.Счет КАК Счет,
    | ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоОстаток
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Остатки(&Граница)КАК ХозрасчетныйОстатки
    |ГДЕ
    | ХозрасчетныйОстатки.Счет = &Счет
    | И ХозрасчетныйОстатки.Субконто1 = &Субконто1
    | И ХозрасчетныйОстатки.Субконто2 = &Субконто2";

    Запрос.УстановитьПараметр("КонГраница", Граница);
    Запрос.УстановитьПараметр("Субконто1",номенклатура);
    Запрос.УстановитьПараметр("Субконто2", ЭлементыФормы.СменныйОтчет.Значение.Ресурс.Склад.Ссылка);
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.02.1"));
    Запрос.УстановитьПараметр("Организация", Справочники.Организации.ГазэнергосетьАстрахань);
    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ВыборкаДетальныеЗаписи.Следующий();
    // Вставить обработку выборки ВыборкаДетальныеЗаписи
    возврат ВыборкаДетальныеЗаписи. КоличествоОстаток;
```
---
Не надо торопиться, смотрите внимательно, что пишете:

РегистрБухгалтерии.Хозрасчетный.Остатки(&Граница)
Запрос.УстановитьПараметр("КонГраница", Граница);
---
https://its.1c.ru/db/metod8dev#content:2610:hdoc
---
вероятно Вы правы, не подскажите как МоментВремени прикрутить к моему запросу?
---
Вам не нужен момент, вам нужна граница

```1c
    Параметры = Новый Массив(2);
    Параметры[0] = Дата;
    Параметры[1] = ВидГраницы.Включая;
    Граница = Новый(Тип("Граница"),Параметры);
    Запрос.УстановитьПараметр("КонГраница", Граница);
```
---
попробовал во внешней обработке (где используется запрос) указать КонецДня() для передачи параметра - для указанной позиции вроде получилось
---
попробую по этой рекомендации т.к. по другим позициям проблема сохраняется ...
---
попробуйте вот это
РегистрБухгалтерии.Хозрасчетный.Остатки(ДАТАВРЕМЯ(2019, 7, 31, 23, 59, 59), , , ) КАК ХозрасчетныйОстатки
заменить на это
РегистрБухгалтерии.Хозрасчетный.Остатки(ДАТАВРЕМЯ(2019, 8, 1), , , ) КАК ХозрасчетныйОстатки

вообще дату лучше передавать в виде парамтера (тогда для следующего месяца не придется код править, хотя для проверки в консоли сойдет и так)
---
или вот эта часть вообще уже не нужна после добавления массива?
| РегистрБухгалтерии.Хозрасчетный.Остатки(ДАТАВРЕМЯ("+
год+","+
месяц+","+
число+","+
час+","+
мин+","+
сек+")"+
 ", , , ) КАК ХозрасчетныйОстатки
---
А зачем так извращаться с датой?
---
пытались подогнать под формат консоли запроса ДАТАВРЕМЯ(2019, 7, 31, 23, 59, 59),
---
Используйте параметр запроса.
---
не пойму как мне новый параметр Граница прикрутить к своему запросу. Понимаю, что мой фрагмент нужно убрать
---
| РегистрБухгалтерии.Хозрасчетный.Остатки(Граница) КАК ХозрасчетныйОстатки
Так?
---
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(319)}: Ошибка при вызове метода контекста (Выполнить): {(5, 42)}: Не задано значение параметра "Граница"
РегистрБухгалтерии.Хозрасчетный.Остатки(<<?>>&Граница)КАК ХозрасчетныйОстатки
---
Огромное спасибо за разъяснение ситуации. Работает!!!