Уже 4 дня борюсь с практической частью курсовой работы. Послезавтра - сдача.
Активно гуглил решение проблемы - не помогло.
 Нужно реализовать автозаполнение реквизита СуммаОплаты, при выборе реквизита Объект. Данные берутся из регистра накопления.

```1c
    &НаСервере
    Функция СуммаДолга (ЭлементНоменклатуры) экспорт
    Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ
    | СУММА(ЗадолжностиКлиентовОстатки.СуммаОстаток) КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.ЗадолжностиКлиентов.Остатки КАК ЗадолжностиКлиентовОстатки
    |ГДЕ
    | ЗадолжностиКлиентовОстатки.Объект = &Объект";

    Запрос.УстановитьПараметр("Объект",ЭлементНоменклатуры);
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    Возврат РезультатЗапроса;
    КонецФункции

    &НаКлиенте
    Процедура ОбъектПриИзменении(Элемент)
    ВыбранныйОБ=Элемент.Объект;
    Элемент.СуммаОплаты=СуммаДолга(ВыбранныйОБ);
    КонецПроцедуры
```
---
Да, функцию тоже надо изменить.

```1c
    &НаСервере
    Функция СуммаДолга (ЭлементНоменклатуры) экспорт
    Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ
    | СУММА(ЗадолжностиКлиентовОстатки.СуммаОстаток) КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.ЗадолжностиКлиентов.Остатки(,Объект = &Объект) КАК ЗадолжностиКлиентовОстатки";

    Запрос.УстановитьПараметр("Объект",ЭлементНоменклатуры);
    РезультатЗапроса = Запрос.Выполнить();
    Сумма = 0;
    Выборка = РезультатЗапроса.Выбрать();
    Если Выборка.Следующий() Тогда
    Сумма = Выборка.СуммаОстаток;
    КонецЕсли;
    Возврат Сумма ;
    КонецФункции
```
---
Мда, сложно вам будет, если вы с этим 4 дня бьетесь.
---
С самой работой, а не этой конкретной проблемой. + 1с после конца этого семестра я заниматься не буду.
---
Покажите скрин формы из конфигуратора.
---
вот
---
Так надо:

&НаКлиенте
Процедура ОбъектПриИзменении(Элемент)
ВыбранныйОБ=Объект.Объект;
Объект.СуммаОплаты=СуммаДолга(ВыбранныйОБ);
КонецПроцедуры
---
а параметр отбора из секции ГДЕ перенести в параметры виртуальной таблицы? :)
---
И без этого заработает))
---
вопрос оптимизации)
---
Ошибка при вызове метода контекста (СуммаДолга)
{Документ.Оплата.Форма.ФормаДокумента.Форма(52)}:Объект.СуммаОплаты=СуммаДолга(ВыбранныйОБ);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'

Вот, что выдало
---
Вот, что выдало:
---
Да, функцию тоже надо изменить.

```1c
    &НаСервере
    Функция СуммаДолга (ЭлементНоменклатуры) экспорт
    Запрос = Новый Запрос;
    Запрос.Текст =

    "ВЫБРАТЬ
    | СУММА(ЗадолжностиКлиентовОстатки.СуммаОстаток) КАК СуммаОстаток
    |ИЗ
    | РегистрНакопления.ЗадолжностиКлиентов.Остатки(,Объект = &Объект) КАК ЗадолжностиКлиентовОстатки";

    Запрос.УстановитьПараметр("Объект",ЭлементНоменклатуры);
    РезультатЗапроса = Запрос.Выполнить();
    Сумма = 0;
    Выборка = РезультатЗапроса.Выбрать();
    Если Выборка.Следующий() Тогда
    Сумма = Выборка.СуммаОстаток;
    КонецЕсли;
    Возврат Сумма ;
    КонецФункции
```
---
как-то громоздко

```1c
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    Возврат Выборка.СуммаОстаток;
    КонецЕсли;

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

    Запрос.УстановитьПараметр("Объект",ЭлементНоменклатуры);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
    Результат = Выборка. СуммаОстаток;
    КонецЦикла;
    Возврат Результат;
    КонецФункции
```

Я очень сильно сомневаюсь, что сработает установка параметра, но как-то так...

А какой процент студентов Вашего учебного заведения после этого семестра не будет заниматься 1с?
Интересуюсь в плане изучения будущего рынка труда программистов 1с :-)
---
Всем ОГРОМНОЕ СПАСИБО