Из запроса в переменную "Заказ" передаётся как-то странно значение.
С одной стороны, метод ТипЗначенияСтр() выдает, что это "Документ".
С другой стороны, выполнение спотыкается на строке ЗаказДляПоиска.НайтиДокумент(Заказ); - пишет почему-то "Недопустимая операция".

```1c
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса=
    "//{{ЗАПРОС(Запрос)
    |Период с Дата1 по Дата2;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ОбрабатыватьДокументы Проведенные;
    |Заказ = Документ.ОказаниеУслуг.Заказ,
    | Документ.РасходнаяНакладная.Заказ;
    |ВидОплаты = Документ.ОказаниеУслуг.Заказ.ВидОплаты,
    | Документ.РасходнаяНакладная.Заказ.ВидОплаты;
    |Условие (ВидОплаты <> ВидОплатыВнутреннийЗачет);
    |Группировка Заказ;
    |"//}}ЗАПРОС
    ;

    Пока Запрос.Группировка("Заказ")=1 Цикл

    Заказ = Запрос.Заказ;

    Сообщить(ТипЗначенияСтр(Заказ));

    ЗаказДляПоиска = СоздатьОбъект("Документ");
    ЗаказДляПоиска.НайтиДокумент(Заказ);
```
---
Почему из запроса Заказ вытаскивается как некий "полудокумент" ? А ХЗ почему, надо по базе смотреть.

Навскидку: в ОказаниеУслуг и РасходнаяНакладная Заказ - это всегда ссылка на Документ.Заказ? Или, может, реквизит неопределенного вида, которому программно присваивается соответствующий тип, когда нужно?

И еще: эта ссылка всегда заполнена? Если нет, то что вернет запрос?

В-общем, я бы для верности нагородил бы костылей даже побольше:
1. Проверил Заказ на ПустоеЗначение()
2. У непустого выделил бы дату и номер и искал по ним.

Там кода на 5 строчек, а как-то спокойнее.
---
ЗаказДляПоиска.НайтиДокумент(Заказ);

Добрый день, попробуйте ЗаказДляПоиска.НайтиДокумент(Заказ.ТекущийДокумент())
---
А Заказ.Вид() что возвращает?
---
Возвращает "Заказ". Ещё интересно, что тип значения Заказ.ДатаДок - "Строка", а вовсе не "Дата".
---
Ещё интересно, что тип значения Заказ.ДатаДок - "Строка", а вовсе не "Дата" А само значение даты (в строковом представлении) - правильное? Если да, то можно преобразовать его в дату, получить Заказ.НомерДок и дальше искать документ по номеру - для этого все есть.
---
Да, значение правильное. Просто хочется написать "лаконичный" модуль, без всяких "извращений".
---
Просто хочется написать "лаконичный" модуль, без всяких "извращений". В таких случаях обычно спрашивают: "Вам шашечки или ехать?" Похоже, что шашечки важнее.

Для очистки совести можно вместо:

```1c
    Если ПодчДок.ВыбратьПодчиненныеДокументы(Дата1,Дата2,Заказ) = 1 Тогда
```
 попробовать:

```1c
    Если ПодчДок.ВыбратьПодчиненныеДокументы(Дата1,Дата2,Заказ.ТекущийДокумент()) = 1 Тогда
```

Если не сработает, тогда приступать к ваянию костылей.
---
не прокатило (((
А может в запросе ещё что-то можно поменять ?
Почему из запроса Заказ вытаскивается как некий "полудокумент" ?
---
Почему из запроса Заказ вытаскивается как некий "полудокумент" ? А ХЗ почему, надо по базе смотреть.

Навскидку: в ОказаниеУслуг и РасходнаяНакладная Заказ - это всегда ссылка на Документ.Заказ? Или, может, реквизит неопределенного вида, которому программно присваивается соответствующий тип, когда нужно?

И еще: эта ссылка всегда заполнена? Если нет, то что вернет запрос?

В-общем, я бы для верности нагородил бы костылей даже побольше:
1. Проверил Заказ на ПустоеЗначение()
2. У непустого выделил бы дату и номер и искал по ним.

Там кода на 5 строчек, а как-то спокойнее.
---
у вас скорее всего "заказ" совсем не документ, а справочник, в котором хранятся "ссылки" на "заказы" (м.б. "заказ" - более сложная сущность и не хватило возможнойстей "документа".

будут проблемы - стучитесь скайп Zlopun или здесь в личку - разрулим через тим операьтивно, там работы на 5-10 минут разобраться...
---
А разве после этого вы не получили ссылку на сам заказ ?
Заказ = Запрос.Заказ;
Зачем эти строки :
ЗаказДляПоиска = СоздатьОбъект("Документ");
ЗаказДляПоиска.НайтиДокумент(Заказ);
---
В том-то и дело, что ссылку вроде как получил, пытаюсь её подставить в 3-й параметр метода ВыбратьПодчиненныеДокументы(Дата1, Дата2, Заказ), а он ругается, что "Заказ" не Документ !!!
Поэтому захотел получить значение через СоздатьОбъект() и подставить уже его в ВыбратьПодчиненныеДокументы(), но там как видите тоже не прокатывает - метод НайтиДокумент(Заказ) тоже не хочет "принимать" Заказ.
Он, видимо, из запроса как-то неправильно извлекается ....
---
Попробуйте так :

Док=СоздатьОбъект("Документ");
Док.ВыбратьПодчиненныеДокументы(Дата1, Дата2, Заказ);
Пока Док.ПолучитьДокумент()=1 Цикл
   Сообщить(Док);
КонецЦикла;

Метод можно использовать только для объектов, созданных функцией СоздатьОбъект. Это описание для метода "ВыбратьПодчиненныеДокументы". т.е. Переменная Док должна так быть создана, что выше и сделано по коду.

Если не получится код весь сбросьте, просто отрывки кода ничего не дают....
---
<Дата1> - дата, документ или позиция начала выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа.
<Дата2> - дата, документ или позиция конца выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.

т.е. можно не указывать Дата1 и Дата2, тогда будут найдены все подчиненные документы не зависимо от периода.
---
Вот исходный код:

```1c
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса=
    "//{{ЗАПРОС(Запрос)
    |Период с Дата1 по Дата2;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ОбрабатыватьДокументы Проведенные;
    |Заказ = Документ.ОказаниеУслуг.Заказ,
    | Документ.РасходнаяНакладная.Заказ;
    |ВидОплаты = Документ.ОказаниеУслуг.Заказ.ВидОплаты,
    | Документ.РасходнаяНакладная.Заказ.ВидОплаты;
    |Условие (ВидОплаты <> ВидОплатыВнутреннийЗачет);
    |Группировка Заказ;
    |"//}}ЗАПРОС
    ;

    Запрос.Выполнить(ТекстЗапроса);

    Пока Запрос.Группировка("Заказ")=1 Цикл

    Заказ = Запрос.Заказ;

    ПодчДок = СоздатьОбъект("Документ");
    Если ПодчДок.ВыбратьПодчиненныеДокументы(Дата1,Дата2,Заказ) = 1 Тогда

    Пока ПодчДок.ПолучитьДокумент() = 1 Цикл

    Если ПодчДок.ПометкаУдаления()=1 Тогда
    Продолжить;
    КонецЕсли;

    Если ПодчДок.Проведен()=0 Тогда
    Продолжить;
    КонецЕсли;

    Если (ПодчДок.Вид() = "ОказаниеУслуг") ИЛИ (ПодчДок.Вид() = "РасходнаяНакладная") Тогда

    ДокументПервойОтгрузки = ПодчДок.ТекущийДокумент();
    Прервать;

    КонецЕсли;

    КонецЦикла;

    КонецЕсли;

    ДатаДокументаПервойОтгрузки = ДокументПервойОтгрузки.ДатаДок;
    Если (ДатаДокументаПервойОтгрузки<Дата1) ИЛИ (ДатаДокументаПервойОтгрузки>Дата2) Тогда
    Продолжить;
    КонецЕсли;
```

Но, как я говорил, метод ВыбратьПодчиненныеДокументы() почему-то ругается на переменную Заказ.
---
больше похоже на то, что проблема не там, где ее ищут. Там нет где-то рядом другой переменной Заказ? Реквизит может какой-то. Или что-то глобальное. Переименовать, поставить проверку на тип и заполненность значения...
---
Сделал Заказ1 = Запрос.Заказ; - не помогло ((
---
А может запрос по-другому построить? Ведь что мы ищем в цикле? Те же ОказаниеУслуг и РасходнаяНакладная.
Может надо получить запросом их, сгруппировать по Заказ, упорядочить по дате и брать самые ранние?
---
такая ошибка свидетельствует о том, что у вас в переменной "заказ" совсем не тот тип/вид, который нужен для использования в НайтиДокумент
---
Лишние строки
---
А не проще ли посмотреть в конфигурации на реквизит "заказ" документа. Какой там тип стоит? Документ или справочник? И главное совпадают ли типы реквизита "заказ" для двух документов "ОказаниеУслуг" и "РасходнаяНакладная"?