Не отображаются изменения на форме после заполнения табличной части реквизита объекта формы

1. dklp 42 15.04.16 16:54 Сейчас в теме
Пишу внешнюю обработку для заполнения табличной части документа Реализация товаров и услуг в Конфигурации УТ 11. Суть в том, что нужно скорректировать количество для каждой позиции номенклатуры в зависимости от того, сколько данного товара есть на складе.

Код модуля объекта самой обработки:
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
	ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Корректировка количества товара в РТУ");
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
	ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка для корректировки количества товара в табличной части документа Реализация товаров и услуг");
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, "Корректировка количества по остаткам", "КорректировкаКоличестваПоОстаткам", "ВызовКлиентскогоМетода", Истина);
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Возврат Команды;
КонецФункции

Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецФункции
Показать
Здесь вопросов нет. При подключении обработки в форме документа добавляется кнопка "Заполнение / Корректировка количества по остаткам".

Дальше создаю в обработке форму и в модуле формы пишу следующий код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
	ДанныеФормыРТУОбъект = ВладелецФормы.Объект;
	ЗаполнитьОбъектНаСервере(ДанныеФормыРТУОбъект);
	КопироватьДанныеФормы(ДанныеФормыРТУОбъект, ВладелецФормы.Объект);		
	ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьОбъектНаСервере(ДанныеФормыОбъект)
	ТЧ = ДанныеФормыОбъект.Товары;
	Для Каждого Строка Из ТЧ Цикл
		// здесь будет запрос к регистру накопления ТоварыНаСкладахОстатки, чтобы узнать остатки товара
		// пока для наглядности пусть в документе будет каждого товара по одной штуке
		Строка.Количество = 1; 
	КонецЦикла;
КонецПроцедуры
Показать
Собственно и всё, а пользователь пусть сам решает сохранять ему документ или продолжить редактирование.

Вопрос лишь в том, что изменение количества в реквизите "Товары" никак не отображается на форме документа, то есть в данном конкретном случае пользователь после изменения объекта увидит не единички в поле "Количество", а прежнее количество. Кроме того, если нажать кнопку "Записать объект", закрыть и заново открыть документ, то там по-прежнему будет старое количество, а не единички.

Как это исправить?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. artfa 58 15.04.16 17:30 Сейчас в теме
КопироватьДанныеФормы(<Источник>, <Приемник>)
3. dklp 42 15.04.16 17:51 Сейчас в теме
(2) artfa, там же это есть уже в коде. данные формы копируются, но сама форма не обновляется.
4. artfa 58 15.04.16 18:07 Сейчас в теме
создайте в обработке копию таб части модифицируемого объекта, загружайте в нее данные из мод объекта, изменяйте, затем КопироватьДанныеФормы
5. dklp 42 15.04.16 23:16 Сейчас в теме
На самом деле, первоначальный код, можно сказать, полностью рабочий. Просто изначально какая-то подстава вышла с колонкой таблицы Количество, в которой почему-то отображается не количество штук, а количество упаковок. Поскольку я менял значения поля Количество (а не КоличествоУпаковок), то на экране табличная часть для меня оставалась неизменной. В общем, дальше нужно разбираться именно с логикой отображения количества штук и количества упаковок табличной части реквизита Товары в форме документа РеализацияТоваровУслуг, но это уже, как говорится, другая история.
6. dklp 42 25.04.16 12:23 Сейчас в теме
в продолжение темы... если в сведениях о внешней обработке указать тип команды использования ЗаполнениеФормы, а не ВызовКлиентскогоМетода, то можно в самом модуле внешней обработки через ПараметрыВыполнения.ЭтаФорма непосредственно работать с контекстом формы документа, из которого эта обработка вызывается. тогда ничего не нужно никуда копировать. боле того, можно сходу (прямо из внешней обработки) менять форму стандартного документа: применять условное оформление, добавлять новые реквизиты вместе с элементами формы и выводить в них дополнительную информацию из регистров и справочников. правда, для этого нужно, чтобы типовая конфигурация поддерживала более-менее новую версию БСП. если интересно, вот ссылка на мою публикацию по этой теме: http://infostart.ru/public/518037/
8. Xershi 1535 01.03.21 18:49 Сейчас в теме
(6)
ЗаполнениеФормы
увы это серверный метод, а еще нужно немножко интерактива.
Поэтому после вызова серверного кода сделал так:
КопироватьДанныеФормы(ДокументОбъект.Товары, ДополнительныеПараметры.ВладелецФормы.Объект.Товары);
ДополнительныеПараметры.ВладелецФормы.Модифицированность = Истина;

У вас наверное "ДополнительныеПараметры" не будет, это я через оповещения пробрасывал, а "ДокументОбъект.Товары" это уже присвоенная переменная.
7. TanyTany 01.12.16 13:01 Сейчас в теме
Спасибо, тоже уперлась в это)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот