Добрый день, прощу помощи по данной теме, своих знаний не хватает.
Розница, редакция 2.0 (2.0.5.7)
требуется добавить колонку остатки в документе ОтчетОРозничныхПродажах и РеализацияТоваров.
Напишите пожалуйста подробный алгоритм действий, или примеры, буду очень признателен.
---
По вашему вопросу, для начала надо открыть для редактирования текст формы документа о продажах. Делается это в конфигураторе Конфигурация/Поддержка/НастройкаПоддержки. Будьте внимательны, если вы получаете обновления конфигурации то откройте для редактирования только нужные части конфигурации с сохранением поддержки если это необходимо вам.

Далее нужно в самом документе в табличной части товары добавить реквизит и назвать остаток. Это добавляется в (объект/табличная чать/добавить нужный реквизит).

После этого этот реквизит нужно перетащить на форму в табличную часть и расположить в нужном месте.

Собственно по процедурам, нужно создать ОбщийМодуль с галочками сервер и вызов сервера чтоб там размещать свои функции и процедуры, в это модуле напишите функцию которая будет получать остатки из регистра ТоварыНаСкладах.

Например такой код

```1c
    Функция ПолучитьОстаток(ВыбДата, Номенклатура, Характеристика, Склад) Экспорт
    //получим остаток
    Фильтр = Новый Структура;
    Фильтр.Вставить("Номенклатура", Номенклатура);
    Фильтр.Вставить("Характеристика", Характеристика);
    //Фильтр.Вставить("Склад", Склад);
    Возврат РегистрыНакопления.ТоварыНаСкладах.Остатки(ВыбДата, Фильтр, "Номенклатура, Характеристика", "Количество").Итог("Количество");
    КонецФункции
```

либо написать простой запрос, сравнить по производительности что будет быстрее получать остаток и оставить более быстрый вариант.

Далее просто в документе в процедуре ТоварыНоменклатураПриИзменении() вписываете вызов этой функции для получения остатков прописываете в самом конце процедуры чтоб потом долго не сикать

```1c
    //получим остаток
    ТекущаяСтрока.Остаток = ДополнительныеФункции.ПолучитьОстаток(Объект.Дата, ТекущаяСтрока.Номенклатура, ТекущаяСтрока.Характеристика, Объект.Магазин);
```

Соответственно нужно еще прописать в обработке подбора получение остатков по выбранным позициям, делается аналогично, чтоб долго не мучатся и производительность не важна тогда после подбора можно просто перебрать строки и в каждую получить остаток, но это требует много ресурсов и времени. Оптимальнее всего получать остатки в процессе подбора. Ну и еще если этот документ создается каким-то другим автоматом, то необходимо в том участке кода тоже добавить получение количества.
---
Очень рекомендовал бы использовать для этого отчет, а не табличную часть документа. Будет очень сильно лагать у всех, т.к. это документы ходовые.

Либо заполнять колонку не при открытии, а по дополнительной кнопке.

По поводу подробного алгоритма. Если сосем туго с навыками, лучше отбашлять профессионалам, меньшей кровью отделаетесь.
---
По вашему вопросу, для начала надо открыть для редактирования текст формы документа о продажах. Делается это в конфигураторе Конфигурация/Поддержка/НастройкаПоддержки. Будьте внимательны, если вы получаете обновления конфигурации то откройте для редактирования только нужные части конфигурации с сохранением поддержки если это необходимо вам.

Далее нужно в самом документе в табличной части товары добавить реквизит и назвать остаток. Это добавляется в (объект/табличная чать/добавить нужный реквизит).

После этого этот реквизит нужно перетащить на форму в табличную часть и расположить в нужном месте.

Собственно по процедурам, нужно создать ОбщийМодуль с галочками сервер и вызов сервера чтоб там размещать свои функции и процедуры, в это модуле напишите функцию которая будет получать остатки из регистра ТоварыНаСкладах.

Например такой код

```1c
    Функция ПолучитьОстаток(ВыбДата, Номенклатура, Характеристика, Склад) Экспорт
    //получим остаток
    Фильтр = Новый Структура;
    Фильтр.Вставить("Номенклатура", Номенклатура);
    Фильтр.Вставить("Характеристика", Характеристика);
    //Фильтр.Вставить("Склад", Склад);
    Возврат РегистрыНакопления.ТоварыНаСкладах.Остатки(ВыбДата, Фильтр, "Номенклатура, Характеристика", "Количество").Итог("Количество");
    КонецФункции
```

либо написать простой запрос, сравнить по производительности что будет быстрее получать остаток и оставить более быстрый вариант.

Далее просто в документе в процедуре ТоварыНоменклатураПриИзменении() вписываете вызов этой функции для получения остатков прописываете в самом конце процедуры чтоб потом долго не сикать

```1c
    //получим остаток
    ТекущаяСтрока.Остаток = ДополнительныеФункции.ПолучитьОстаток(Объект.Дата, ТекущаяСтрока.Номенклатура, ТекущаяСтрока.Характеристика, Объект.Магазин);
```

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