Вывод остатков на на форму в табличную часть

1. farengeit00 23.03.20 14:09 Сейчас в теме
Всем добрый день. Подскажите почему не выводятся остатки на форму при нажатии кнопки "провести и закрыть"?
Есть документ Расход товаров, в табличной части есть колонка Остатки, в которую должны выводится остатки по товару. При нажатии кнопки "провести" всё работает.
код в модуле объекта:


Процедура ОбработкаПроведения(Отказ, Режим)

Если Клиент.ЗапретНаОтгрузку Тогда
Отказ = Истина;
КонецЕсли;

Движения.ОстаткиТоваров.Записывать = Истина;

Для Каждого ТекСтрокаПеречень Из Перечень Цикл

Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Товар = ТекСтрокаПеречень.Товар;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПеречень.Количество;
Движение.Остаток = ТекСтрокаПеречень.Остаток;

КонецЦикла;


Движения.Записать();

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

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

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не хватает" + Строка(-Результат.КоличествоОстаток)
+ "едениц продукта" + Результат.Товар;
Сообщение.Сообщить();
Отказ = Истина;

КонецЦикла;


Для Каждого Строка Из Перечень Цикл

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

Если Результат.Следующий() Тогда

Строка.Остаток = Результат.КоличествоОстаток;

КонецЕсли;
КонецЦикла;

КонецПроцедуры
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. hasan-rusel 11 23.03.20 14:15 Сейчас в теме
Попробуй использовать процедуру ПередЗаписью
3. farengeit00 23.03.20 14:24 Сейчас в теме
(2)Работает, но тогда не учитывается последнее списание товара...
4. starjevschik 23.03.20 14:39 Сейчас в теме
Тут надо кашку разобрать. Что именно нужно получить и что именно не работает. Вопрос не соответствует коду, так что не совсем понятно.
Из кода создается впечатление, что при проведении некоего документа некие товары списываются со склада, потом проверяются остатки на отрицательность, а потом остатками этих же товаров заполняется что-то в каком-то списке.
Что именно не так и при чем тут какая-то форма?
5. Sergex 57 23.03.20 14:42 Сейчас в теме
Покажите форму плиз? куда там должны остатки выводится и, главное, когда? Ведь если нажать провести и ЗАКРЫТЬ форма - закрывается...?
6. farengeit00 23.03.20 14:47 Сейчас в теме
Вот скрин. Закрыватся форма.
Прикрепленные файлы:
9. hasan-rusel 11 23.03.20 15:41 Сейчас в теме
(6) Ну ты провел, форма пересчитала. Закрыть - закрыла. что еще надо то ? )))
7. farengeit00 23.03.20 14:51 Сейчас в теме
Надо в поле Остатки получить остатки товара на текущем складе.
8. farengeit00 23.03.20 14:53 Сейчас в теме
После проведения этого же самого документа должны появляться остатки
10. hasan-rusel 11 23.03.20 15:41 Сейчас в теме
11. farengeit00 23.03.20 17:01 Сейчас в теме
А когда провести и закрыть нажимаешь, заново заходишь в документ - остатка нет
12. Tommy82 65 23.03.20 19:01 Сейчас в теме
остаток динамически что ли рассчитывается и в объекте его нет?
присозданиинасервере последний запрос исполняй
farengeit00; +1 Ответить
13. farengeit00 23.03.20 19:38 Сейчас в теме
В объекте он есть, Остаток - реквизит табличной части. Движение.Остаток = ТекСтрокаПеречень.Остаток - неверная строка
14. Sergex 57 24.03.20 13:50 Сейчас в теме
Получать остаток в документе - так себе затея.
Тут возможны несколько стратегий:
1 - сохранять остаток в таблицу объекта а не формы. Тогда после проведения надо модифицировать таблицу объекта (товары?) и записать его снова... что надо делать аккуратно, чтобы не вызвать его повторного проведения в той же транзакции. Но в этом случае остаток в таблице запишется однажды и вполне себе может не иметь ничего общего с реальным остатком на позицию по границе документа. Так как это динамическая функция являющаяся производной от всех документов сделавших движения по номенклатуре в конкретной строке.
2 - рассчитывать текущий остаток на позицию проведения документа по границе включая. Тогда можно колонку остатка иметь только на форме но заполнять ее надо при создании документа на сервере или при открытии. Во втором случае числа в колонке остатка могут меняться но всегда показывать правду :)

Вам что более симпатично?
farengeit00; +1 Ответить
15. farengeit00 24.03.20 23:19 Сейчас в теме
(14) спасибо за подсказки. Сделал сам вторым способом.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)