Ув. знатоки, столкнулся с магией, разумного объяснения которой не могу найти.

Суть в следующем: 1С-ка (1С:Предприятие 8.3 (8.3.13.1644), 1С:Учет в управляющих компаниях ЖКХ, ТСЖ и ЖСК, редакция 3.0 (3.0.71.1)) нашей компании расположена в облаке. Есть внешняя обработка, которая выгружает данные о поступлениях денег (выписки) в текстовый файл. Текст обработки примитивный:

```1c
    Организация=Справочники.Организации.НайтиПоРеквизиту("ИНН","000000000");
    СчетОрганизации= Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",НомерСчета,,Организация);

    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("ДатаС",ДатаПоступленийС);
    Запрос.УстановитьПараметр("ДатаПо",НачалоДня(ДатаПоступленийПо)+ 60 * 60 * 24);
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.УстановитьПараметр("СчетОрганизации",СчетОрганизации);
    Запрос.УстановитьПараметр("ВидОперации1",Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПоступленияОтПродажПоПлатежнымКартамИБанковскимКредитам);
    Запрос.УстановитьПараметр("ВидОперации2",Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя);

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

    Результат = Запрос.Выполнить().Выбрать();

    УдалитьФайлы(КаталогВременныхФайлов() + ИмяФайла);

    Текст = Новый ЗаписьТекста(КаталогВременныхФайлов() + ИмяФайла, КодировкаТекста.ANSI, Символы.ВК + Символы.ПС);
    Пока Результат.Следующий() Цикл
    Строка= Формат(Результат.Дата,"ДФ=yyyy/MM/dd"); // Дата документа
    Строка= Строка + ";" + Формат(Результат.СуммаДокумента,"ЧГ=0"); // Сумма
    Строка= Строка + ";" + СокрЛП(СтрЗаменить(СтрЗаменить(СтрЗаменить(Результат.НазначениеПлатежа,";",","),Символы.ПС," ")," "," ")); // Назначение платежа
    Строка= Строка + ";" + Результат.КодКонтрагента; // Код контрагента
    Строка= Строка + ";" + Результат.НаименованиеКонтрагента; // Наименование контрагента
    Строка= Строка + ";" + Результат.ИННКонтрагента; // ИНН контрагента
    Строка= Строка + ";" + Результат.НомерДоговораКонтрагента; // Договор контрагента
    Строка= Строка + ";" + Результат.НомерВходящегоДокумента; // Номер входящего документа
    Строка= Строка + ";" + Формат(Результат.ДатаВходящегоДокумента,"ДФ=yyyy/MM/dd"); // Дата входящего документа
    Строка= Строка + ";" + Результат.НомерСчетаОрганизации; // Номер счета организации
    Строка= Строка + ";" + Результат.ВидОперации; // ВидОперации

    Текст.ЗаписатьСтроку(Строка);
    Сообщить(Строка);
    КонецЦикла;
    Текст.Закрыть();
```

Так вот суть проблемы заключается в следующем - при запросе формирования файла по одному из двух р/сч все происходит нормально и данные сохраняются в файл. При запросе данных по второму р/счету создается всегда пустой файл и в сообщениях пусто - как будто поступлений на этот р/сч и не было.

Но вот если эту базу выгрузить из конфигуратора и загрузить её на локальном компьютере, открыть ту же самую обработку, данные с обоих счетов выгружаются нормально.

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

Так вот, после того как был изменен алгоритм получения записей на:

```1c
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("ДатаС",ДатаПлатежейС);
    Запрос.УстановитьПараметр("ДатаПо",КонецДня(ДатаПлатежейПо));
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.УстановитьПараметр("СчетОрганизации",СчетОрганизации);

    Запрос.УстановитьПараметр("ВыбСчет",
    ПланыСчетов.Хозрасчетный.НайтиПоКоду("51")); // Расчетный счет

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

А проблема оказалась в том, что у организации заведены 2 банковских счета с одинаковыми номерами счета, но один из них помечен на удаление. А поскольку метод НайтиПоРеквизиту:

```1c
    СчетОрганизации= Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",НомерСчета,,Организация);
```
возвращает первый попавшийся результат непредсказуемо, то получилось так, что на сервере он как раз возвращал расчетный счет помеченный на удаление, а на локалке - действующий.

Проблема решилась заменой поиска счета по реквизиту запросом:

```1c
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("НомерСчетаОрганизации",НомерСчета);
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    | БанковскиеСчета.Ссылка КАК БанковскийСчет
    |ИЗ
    | Справочник.БанковскиеСчета КАК БанковскиеСчета
    |ГДЕ
    | БанковскиеСчета.Владелец = &Организация
    | И БанковскиеСчета.НомерСчета=&НомерСчетаОрганизации
    | И БанковскиеСчета.ПометкаУдаления=Ложь";

    Результат = Запрос.Выполнить().Выбрать();
    //СчетОрганизации= Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",НомерСчета,,Организация);
    СчетОрганизации= Неопределено;
    Пока Результат.Следующий() Цикл
    СчетОрганизации=Результат.БанковскийСчет;
    Прервать;
    КонецЦикла;
```
---
А магия остается магией только до тех пор, пока не найдена причина проблемы...

Так вот, после того как был изменен алгоритм получения записей на:

```1c
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("ДатаС",ДатаПлатежейС);
    Запрос.УстановитьПараметр("ДатаПо",КонецДня(ДатаПлатежейПо));
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.УстановитьПараметр("СчетОрганизации",СчетОрганизации);

    Запрос.УстановитьПараметр("ВыбСчет",
    ПланыСчетов.Хозрасчетный.НайтиПоКоду("51")); // Расчетный счет

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

А проблема оказалась в том, что у организации заведены 2 банковских счета с одинаковыми номерами счета, но один из них помечен на удаление. А поскольку метод НайтиПоРеквизиту:

```1c
    СчетОрганизации= Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",НомерСчета,,Организация);
```
возвращает первый попавшийся результат непредсказуемо, то получилось так, что на сервере он как раз возвращал расчетный счет помеченный на удаление, а на локалке - действующий.

Проблема решилась заменой поиска счета по реквизиту запросом:

```1c
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("НомерСчетаОрганизации",НомерСчета);
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1
    | БанковскиеСчета.Ссылка КАК БанковскийСчет
    |ИЗ
    | Справочник.БанковскиеСчета КАК БанковскиеСчета
    |ГДЕ
    | БанковскиеСчета.Владелец = &Организация
    | И БанковскиеСчета.НомерСчета=&НомерСчетаОрганизации
    | И БанковскиеСчета.ПометкаУдаления=Ложь";

    Результат = Запрос.Выполнить().Выбрать();
    //СчетОрганизации= Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",НомерСчета,,Организация);
    СчетОрганизации= Неопределено;
    Пока Результат.Следующий() Цикл
    СчетОрганизации=Результат.БанковскийСчет;
    Прервать;
    КонецЦикла;
```
---
что говорит консоль запросов в облаке?
---
+1

(1) А если документ помечен на удаление? Без лишней надобности лучше не делать запрос по документам - используйте для этого движения
---
Без лишней надобности лучше не делать запрос по документам - используйте для этого движения
Далеко не все йогурты одинаково полезны.. Иногда правильнее сделать просто по документам, только делать это надо разумно.

ПоступленияНаРасчетныйСчет.Ссылка.Дата
тут скорее вопрос - вот это вот вообще зачем?

А по сути темы - почему бы не взять и не отладить все это добро? Даже если конфиг не доступен - всегда в своей обработке можно навтыкать записей в журнал регистрации - и смотреть, что там в переменных. Тем более, код данной обработки очень маленький.
---
```1c
    ПоступленияНаРасчетныйСчет.Ссылка.Дата
```

тут скорее вопрос - вот это вот вообще зачем?
Спасибо, поправлю.

(2) что говорит консоль запросов в облаке?
Посмотрю, отпишусь.

(5) Тогда почему не Конецдня(ДатаПоступленийПо) + 1 ?
Спасибо.
---
ПоступленияНаРасчетныйСчет.Ссылка.Дата

тут скорее вопрос - вот это вот вообще зачем?

Спасибо, поправлю.

Тогда правьте всё:

```1c
    | ПоступленияНаРасчетныйСчет.Дата МЕЖДУ &ДатаС И &ДатаПо
    | И ПоступленияНаРасчетныйСчет.Организация = &Организация
    | И (ПоступленияНаРасчетныйСчет.ВидОперации=&ВидОперации1 ИЛИ ПоступленияНаРасчетныйСчет.ВидОперации=&ВидОперации2)
    | И ПоступленияНаРасчетныйСчет.СчетОрганизации=&СчетОрганизации
```
---
Тогда правьте всё:
Поправил. Не помогает.

(2) что говорит консоль запросов в облаке?
Запрос в консоли выдает результаты. Тут же выгружаю обработкой - результатов нет.
---
А если документ помечен на удаление? Без лишней надобности лучше не делать запрос по документам - используйте для этого движения
Можете подробнее сформулировать - дальше сам докопаю.
---
что говорит консоль запросов в облаке?
Запрос в консоли выдает результаты. Тут же выгружаю обработкой - результатов нет.
---
нужен пересчет итогов на серверной базе.
когда локально разворачиваешь база пересчитывает итоги.
скорее всего есть движения но нет регистратора бывает такое.
---
Ничем тут пересчет не поможет, т.к. данные тянутся прямиком из документов, причем всех подряд, нет условия на "проведенность" или даже "пометкуна Удаление."

(1) Запрос.УстановитьПараметр("ДатаПо",НачалоДня(ДатаПоступленийПо)+ 60 * 60 * 24);
Я правильно понимаю, что Вы берете начало след дня? 60 * 60 * 24 = день в секундах
Тогда почему не Конецдня(ДатаПоступленийПо) + 1 ?
---
только увидел что запрос к документам (((
---
помогло?
---
Была похожая ситуация с ЗУП, стандартный алгоритм криво работал на сервере и правильно в локальной базе. Помогла перестановка Sql сервера.
---
На облаке проблематично переустановить SQL-сервер))
---
может проблема с моментом времени?
если в качестве дат указать параметры

Новый Граница(КонецДня(ДатаПоступленийПо), ВидГраницы.Включая)
---
Новый Граница(КонецДня(ДатаПоступленийПо), ВидГраницы.Включая)
А какая разница включать границы или нет, если выбирается полугодие и ничего не выбирается?
---
А попробуйте копнуть в сторону параметров. В настоящий момент для целей отладки Вы на каждой итерации цикла выводите строку, которая должна записываться в файл. Сделайте тоже самое и для параметров запроса непосредственно перед выполнением этого запроса. Например, так:

```1c
    Для каждого ЭлементПараметров Из Запрос.Параметры Цикл
    Сообщить(СтрШаблон(%1 = %2 (%3)", ЭлементПараметров.Ключ, Строка(ЭлементПараметров.Значение), Строка(ТипЗнч(ЭлементПараметров.Значение))));
    КонецЦикла;

    Результат = Запрос.Выполнить().Выбрать();
```
И воспроизведите проблемную ситуацию в облачной базе, когда данные по второму счету не выгружаются. Какие при этом параметры запроса? Корректные?
---
И воспроизведите проблемную ситуацию в облачной базе, когда данные по второму счету не выгружаются. Какие при этом параметры запроса? Корректные?
Абсолютно идентичные и в облаке и на локальном ПК - корректные.