Как правильно проверить оплачен ли заказ клиента на 100% ?
Из дополнительной обработки &НаСервере, если мы имеет доступ к объекту?
---
Я бы сказал, что постановка задачи не полная. Исходные данные, что нужно получить в итоге? Если просто, как у Вас указано, проверка на полную оплату, то (для УТ11.4):

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

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

Код не оптимальный и очень медленный, но понятный для понимания. Если уточнить задачу (например, что подразумевает "оплаченный" - оплаченный полностью, частично, включать ли "бесплатные"), то код можно оптимизировать...

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

    Запрос.УстановитьПараметр("Сделка", Сделка);
    Запрос.УстановитьПараметр("КонДата", ТекущаяДата());

    фЗаказОплачен = Ложь;

    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Если ВыборкаДетальныеЗаписи.Следующий() Тогда
    Если ВыборкаДетальныеЗаписи.Остаток = 0 и ВыборкаДетальныеЗаписи.ОплатаКлиента > 0 Тогда
    ОплатаКлиента = Истина;
    КонецЕсли;
    КонецЕсли;

    Если фЗаказОплачен Тогда
    Сообщить("Заказ "+Сделка+" оплачен");
    Иначе
    Сообщить("Заказ "+Сделка+" не оплачен");
    КонецЕсли;
```
---
Если это УТ-11, то такой запрос подойдет:

```1c
    ВЫБРАТЬ
    РасчетыСКлиентамиОстатки.КОплатеОстаток КАК КОплатеОстаток
    ИЗ
    РегистрНакопления.РасчетыСКлиентами.Остатки(, ЗаказКлиента = &ЗаказКлиента) КАК РасчетыСКлиентамиОстатки
```

Если остаток нулевой - оплачен на 100%, если положительный - то это недоплата, отрицательный - переплата.
---
Если это УТ11, то есть экспортная процедура в модуле заказа клиента
Документы.ЗаказКлиента.РассчитатьСостояние

```1c
    // Осуществляет вычисление текущего состояния заказа клиента
    //
    // Параметры:
    // ЗаказКлиента - ДокументСсылка.ЗаказКлиента - Документ, состояние которого необходимо вычислить
    // Договор - СправочникСсылка.ДоговорыКонтрагентов - Договор с клиентом
    // СостояниеРасчетов - ФормаКлиентскогоПриложения - Форма, в реквизиты которой будет помещено рассчитанное состояние.
    //
    Процедура РассчитатьСостояние(Знач ЗаказКлиента, Знач Договор, СостояниеРасчетов) Экспорт
```

Форму в нее передавать не обязательно. Можно передать нужную структуру.