1С 8.3 (обычное). Как получить новое значение строки табличного поля без переоткрывания документа?
Вид табличного поля:
Значение меняется с помощью сканера штрихкодов.
Для имитации сканера с помощью кнопки изменяю значение табличного поля:
ДокКоличество = Документы.ЗаказНаряд.НайтиПоНомеру("КТ3405").Ссылка.ПолучитьОбъект();
ДокКоличество.Товары.Количество = ДокКоличество.Товары.Количество+1;
Но запись нужно произвести не в обработчике кнопки, а в обработчике документа, сканер же не нажмет на кнопку, а сразу изменяет значение количества (нас интересует, чтобы если количество товара изменится, то он его покажет).
По логике нужно сделать так:
- Изменять значение количества товара в табличном поле;
- Записать значение
ДокКоличество.Записать();. Значение не хочет в форме документа записаться (а в обработчике кнопки записывается). - Обновить значение с помощью:
ЭтотОбъект.Прочитать(), либоЭтаФорма.Прочитать()и т.п.
Как это реализовать?
Ответы (1 шт):
Автор решения: santavital
→ Ссылка
Новое (оно же текущее) значение хранится в Табличной части документа;
// Объект.Товары - табличная часть документа
// Получим строку тч на которой стоит курсор
_Стр = Элементы.ЭлТчТовары.ТекущиеДанные; // не помню точно, но вроде
// это можно сделать только &НаКлиенте
// Далее можно Прочитать значения
_Номенклатура = _Стр.Номенклатура;
_Количество = _Стр.Количество;
_НомерСтроки = _Стр.НомерСтроки; // НомерСтроки
// Исходные значения доступны при обращении через Ссылка
_Товары = Ссылка.ПолучитьОбъект().Товары;
_Стр0 = _Товары[_НомерСтроки - 1] // Индекс начинается с 0
// Обращаю внимание, что если порядок строк в тч будет изменен, по _НомерСтроки обратимся не туда куда нужно ! Лучше искать старое значение по Номенклатуре + ?!
// Старые значения: Ссылка.* ; Новые значения Объект.* ;
