Не могу вывести запрос в элемент формы Текст .
возникает ошибка:

```1c
    {Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(2833)}: Поле объекта недоступно для записи (Остаток)
    ЭлементыФормы.Остаток = ВыборкаОстатка.Остаток;
```

Код запроса:

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

    Момент = Новый МоментВремени (ЭтотОбъект.Дата, ЭтотОбъект.Ссылка);

    МойЗапрос.УстановитьПараметр("Момент", Момент);

    Для каждого ТекСтрокаТовары из Товары Цикл
    МойЗапрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    ВыборкаОстатка = МойЗапрос.Выполнить().Выбрать();
    Если ВыборкаОстатка.Следующий() Тогда
    ЭлементыФормы.Остаток = ВыборкаОстатка.Остаток;
    КонецЕсли;
    КонецЦикла;
```
---
ЭлементыФормы.Остаток - это не реквизит, а поле на форме. Конечно же, туда ничего не запишется. Гляньте, что у него в источнике данных, и кидайте туда результат ВыборкаОстатка.Остаток. Если это текстовое поле, а не поле ввода - то присваивайте в ЭлементыФормы.Остаток.Заголовок.
---
ЭлементыФормы.Остаток - это не реквизит, а поле на форме. Конечно же, туда ничего не запишется. Гляньте, что у него в источнике данных, и кидайте туда результат ВыборкаОстатка.Остаток. Если это текстовое поле, а не поле ввода - то присваивайте в ЭлементыФормы.Остаток.Заголовок.
---
можно и не создавать реквизита
---
http://infostart.ru/public/574802/
---
Спасибо, помогло, создал новый реквизит и записал значение в него.
Подскажите, сейчас выводиться общий остаток, а как сделать, что бы выводилось , количество и на каком складе. Имеем 2 склада, на одном может быть остаток к примеру 8 на втором 2, нужно что бы выводилось : Склад1: 8 , склад2: 2
Ут 10,3

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

    Для каждого ТекСтрокаТовары из Товары Цикл
    МойЗапрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура.Наименование);
    ВыборкаОстатка = МойЗапрос.Выполнить().Выбрать();
    Если ВыборкаОстатка.Следующий() Тогда
    ТекСтрокаТовары.Реквизит = ВыборкаОстатка.Остаток;
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры
```
---
Здравствуйте, делаю 2 запроса, но в запросе склад, все равно выводиться общий остаток по фирме, что не так?

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

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

    Для каждого ТекСтрокаТовары из Товары Цикл
    ЗапросСклад.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    ЗапросОбщий.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    ЗапросСклад.УстановитьПараметр("Склад", ЭтаФорма.Склад.Наименование);
    ОстСклд = ЗапросОбщий.Выполнить().Выбрать();
    ОстОбщ = ЗапросОбщий.Выполнить().Выбрать();
    ОстСклд.Следующий();
    ОстОбщ.Следующий();
    ТекСтрокаТовары.Реквизит = ("На Складе: " + ОстСклд.Остаток + " Шт." + " По Фирме: " + ОстОбщ.Остаток + " Шт.");

    КонецЦикла;
```
---
В начале почитайте про параметры виртуальных таблиц регистров. И про запросы в цикле.
---
| ТоварыНаСкладахОстатки.Склад.Наименование = &Склад)

Почему условие не по ссылке, а по наименованию?
---
Сделал по ссылке, только начинаю разбираться.
Попробовал вот так, не работает..тоже самое

```1c
    ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
    | ТоварыНаСкладахОстатки.Номенклатура
    |ИЗ
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    | ПО &Склад = ТоварыНаСкладахОстатки.Склад
    | И &Номенклатура = ТоварыНаСкладахОстатки.Номенклатура ";
```
---
Почитайте тут https://its.1c.ru/db/metod8dev/content/2594/hdoc
---
Спасибо, привел к такому виду, все работает как надо, посмотрите пожалуйста, так будет верно? И как привести в порядок вывод информации? глядя на все это, понимаю что есть какой то более просто путь, и избавиться от цикла.,

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

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

    Для каждого ТекСтрокаТовары из Товары Цикл
    ЗапросСклад.УстановитьПараметр("Склад", ЭтаФорма.Склад);
    ЗапросСклад.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    ЗапросОбщий.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    ОстСклд = ЗапросСклад.Выполнить().Выбрать();
    ОстОбщ = ЗапросОбщий.Выполнить().Выбрать();
    ОстСклд.Следующий();
    ОстОбщ.Следующий();
    ТекСтрокаТовары.Реквизит = ("На Складе: " + ОстСклд.Остаток + " Шт." + " По Фирме: " + ОстОбщ.Остаток + " Шт.");

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

    МассивНоменклатуры = Товары.ВыгрузитьКолонку("Номенклатура");
```

В общих чертах так
---
И еще Вопрос,

```1c
    ЗапросОбщий.Текст = "ВЫБРАТЬ
    | ЕСТЬNULL(КоличествоОстаток, 0) КАК Кол
    |ИЗ
    ..............
```

Почему то не возращает 0, хотя в описании используется именно так.
---
Это работает при соединении таблиц
---
Получился вот такой код

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

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

    ЗапросСклад.УстановитьПараметр("Склад", ЭтаФорма.Склад);
    ЗапросСклад.УстановитьПараметр("Номенклатура", ЭтаФорма.ЭлементыФормы.Товары.ТекущаяСтрока.Номенклатура);
    ЗапросОбщий.УстановитьПараметр("Номенклатура", ЭтаФорма.ЭлементыФормы.Товары.ТекущаяСтрока+.Номенклатура);
    ОстСклд = ЗапросСклад.Выполнить().Выбрать();
    ОстОбщ = ЗапросОбщий.Выполнить().Выбрать();
    ОстСклд.Следующий();
    ОстОбщ.Следующий();
    ОстСклад=ОстСклд.Остаток;
    ОстОбщий=ОстОбщ.Остаток;

    Если НЕ ЗначениеЗаполнено(ОстСклад) Тогда
    ОстСклад=0;
    КонецЕсли;

    Если (ОстСклад <= 1) Тогда
    ЭлементыФормы.Остаток.ЦветТекста=WebЦвета.Красный;
    ИначеЕсли (ОстСклад = 2) Тогда
    ЭлементыФормы.Остаток.ЦветТекста=WebЦвета.Черный;
    Иначе
    ЭлементыФормы.Остаток.ЦветТекста=WebЦвета.Зеленый;
    КонецЕсли;

    ЭтаФорма.ЭлементыФормы.Остаток.Значение= ("На Складе: " + ОстСклад + " Шт." + " По Фирме: " + ОстОбщий + " Шт.");
    КонецПроцедуры
```

Но смущает данное действие:
```1c
    ОстОбщ.Следующий();
```
 От этого можно как то избавиться?