|
Обработка табличной части УТ 10.3 | ☑ | ||
---|---|---|---|---|
0
d_pinchuk
24.03.21
✎
15:07
|
Почему при добавлении новой строки в типовую обработкуТЧ кнопкой "добавить" Невозможно изменить текущую строку?
{Обработка.ОбработкаТабличнойЧастиТовары.Форма.Форма.Форма(2122)}: Ошибка при установке значения атрибута контекста (ТекущаяСтрока) ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока = Товары[ИндексСтроки]; по причине: Невозможно изменить текущую строку Если же идет речь о существующих строках, то замена происходит без проблем. Ошибку то не сложно было обойти конструкцией "попытка-исключение-конецпопытки", но, все же, вопрос остался. Ниже типовая функция, в которой дописано пару строк, для того, чтобы не обновлялась текущая строка, после метода ТЗ.Загрузить() // Функция выполняет пересчет автоматических скидок. // // Возвращаемое значение: // Булево - Истина, если автоматические скидки были рассчитаны. // Функция ПересчитатьАвтоматическиеСкидки() // Добавим переменную для сохранения индекса, под которым хранятся данные Текущей Строки. Перем ИндексСтроки; Если мРассчитыватьАвтоматическиеСкидки Тогда мСуммаДокументаБезСкидок = Ценообразование.ПолучитьСуммуДокументаБезСкидки(Товары); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ВидРеализации" , Перечисления.ВидыСкидок.Оптовая); СтруктураПараметров.Вставить("СуммаДокумента" , мСуммаДокументаБезСкидок); СтруктураПараметров.Вставить("Карта" , ДокументОбъект.ДисконтнаяКарта); СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", мВалютаРегламентированногоУчета); Если мЕстьНДС Тогда СтруктураПараметров.Вставить("УчитыватьНДС" , ДокументОбъект.УчитыватьНДС); СтруктураПараметров.Вставить("СуммаВключаетНДС", ДокументОбъект.СуммаВключаетНДС); КонецЕсли; СтруктураПараметров.Вставить("УчетнаяПолитика", мУчетнаяПолитика); Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("Качество", мМетаданныеДокумента, "Товары") Тогда ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ДокументОбъект, Товары, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров); Иначе ТЗТовары = Товары.Выгрузить(); ТЗТовары.ЗаполнитьЗначения(Справочники.Качество.Новый, "Качество"); ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ДокументОбъект, ТЗТовары, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров); КолонкаКачество = Товары.ВыгрузитьКолонку("Качество"); // Сохраним Индекс, под которым хранятся данные Текущей Строки в ТЗТовары. ИндексСтроки = ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока.НомерСтроки - 1; Товары.Загрузить(ТЗТовары); // очищает ТЧ, ТекущаяСтрока = Неопределено Товары.ЗагрузитьКолонку(КолонкаКачество, "Качество"); КонецЕсли; // Заменим данные Текущей Строки на прежние. Попытка ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока = Товары[ИндексСтроки]; Исключение КонецПопытки; Возврат Истина; Иначе Возврат Ложь; КонецЕсли; КонецФункции // ПересчитатьАвтоматическиеСкидки() |
|||
1
d_pinchuk
29.03.21
✎
12:43
|
Вариантов нет?
|
|||
2
Малыш Джон
29.03.21
✎
12:54
|
(1) варианты всегда есть
Если на строке присваивания остановиться, что отладчик про ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока и про Товары[ИндексСтроки] говорит? |
|||
3
Галахад
гуру
29.03.21
✎
13:07
|
(0) Редактирование новой строки, скорее всего еще не закончено.
|
|||
4
d_pinchuk
30.03.21
✎
09:55
|
(2) ЭлементыФормы.Товары.ТекущаяСтрока = Неопределено
Товары[ИндексСтроки] = ОбработкаТабличнаяЧастьСтрока.ОбработкаТабличнойЧастиТовары.Товары (Объект с номером строки = создаваемой строке) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |