Обновить форм документа

1. sys1c 21.11.17 16:15 Сейчас в теме
Всем привет.

Конфигурация УТ11.
В документе "Установка цен номенклатуры", нарисовал кнопку, которая делает некоторые манипуляции с табличной частью, но они не отображаются на форме. Только если закрыть-открыть документ.

Вот это читал, https://forum.infostart.ru/forum9/topic95539/ , но не получается хоть тресни. Данные в форме не обновляются.

Моя кнопка:

&НаКлиенте
Процедура ЗаполнитьПоАртикулу(Команда)
	ЗаполнитьПоАртикулуНаСервере();		
КонецПроцедуры

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

	ЭтотОбъект.Записать();

КонецПроцедуры
Показать


ЭтотОбъект.Записать() в этом проблема? нужно для записи по другому процедуру вызывать?
+
По теме из базы знаний
Найденные решения
5. DarkUser 21.11.17 16:44 Сейчас в теме
А если потом, после вашего кода, на клиенте выполнить ЭтотОбъект.Прочитать()?
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 21.11.17 16:26 Сейчас в теме
(1) Да запись там и не нужна особо
ДокументОбъект = РеквизитФормыВЗначение("Объект");
	ДокументОбъект.ЗаполнениеТЧ(); //тут заполняешь
	ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
+
4. sys1c 21.11.17 16:38 Сейчас в теме
(2) честно говоря не понимаю как использовать ваш код.

(3) так если я вызову эти процедуры, они затрут же мои изменения
+
6. Boneman 298 21.11.17 16:45 Сейчас в теме
(4)
так если я вызову эти процедуры, они затрут же мои изменения

У документа есть реквизиты объекта, а есть реквизиты формы.
Реквизиты объекта - это то, что сохраняется в базе данных.
Реквизиты формы - нужны только для открытой формы, для визуализации. Это как монитор, вот у тебя есть системный блок, который подключен к монитору. Выключи монитор - изображение пропало, включи - появилось. При этом системный блок как работал, выдавал информацию, так и работает.
Вот ты своей обработкой изменил реквизиты объекта, а на экране ты видишь совсем другую таблицу, которая формируется при открытии документа, на основании реквизитов объекта.
Тебе эту таблицу на форме, надо заново пересоздать.
alex-l19041; +1
3. Boneman 298 21.11.17 16:29 Сейчас в теме
(1) потому что в этом документе, на форме документа ты видишь не табличную часть документа, а таблицу значений "выбранные цены", которая существует только на форме и заполняется в момент открытия документа.

и для обновления этих данных тебе надо вызывать эти процедуры.
Сильно ковырятся лень, но похоже на
		УстановкаЦенСервер.ИнициализироватьВыбранныеЦены(ЭтаФорма);
	и	
		ЗаполнитьДокумент();
+
5. DarkUser 21.11.17 16:44 Сейчас в теме
А если потом, после вашего кода, на клиенте выполнить ЭтотОбъект.Прочитать()?
+
7. sys1c 21.11.17 16:48 Сейчас в теме
(5) громадное спасибо!

ЭтотОбъект.Прочитать(); сработало
+
8. Boneman 298 21.11.17 16:55 Сейчас в теме
ну мягко говоря, записывать документ при нажатии кнопки заполнить, не совсем корректно. Решение о записи документа должен принимать пользователь. Вдруг там что-то не то назаполнялось, и тут же записалось, как потом вернуть исходное состояние ?.
Или новый документ создали, заполнили, и он записался...хотя может он нафиг не нужен.
А так да, тоже вариант, при прочитать срабатывает обработчик при чтении на сервере, где также вызываются все эти инициализирующие процедуры.
+
Внимание! Тема сдана в архив

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