Передать ссылки на объекты справочника с сервера на клиент

1. user1996127 10.11.23 21:24 Сейчас в теме
Здравствуйте!

Есть небольшая обработка, которая переименовывает Номенклатуру из Справочника ВариантыКомплектации (Табличная часть элемента справочника). Работает корректно, но изменения видны только после перезагрузки Предприятия. Решила использовать метод ОповеститьОбИзменении. Однако он используется только на клиенте.

В связи с этим вопрос, как передать ссылки на объекты справочника с сервера на клиент? Создала на форме реквизит с типом ТаблицаЗначений тзИзменяемаяНоменклатура и пытаюсь его заполнить, но ругается на не соответствие типов, потому что этот реквизит с типом ДанныеФормыКоллекция, а не ТаблицаЗначений.

&НаСервере
Процедура ЗаполнитьНаСервере()
	
	тзИзменяемаяНоменклатура = Новый ТаблицаЗначений;
	тзИзменяемаяНоменклатура.Колонки.Добавить("Номенклатура");
	
	Для Каждого СтрокаВарКомплектации из Объект.ВариантыКомплектации Цикл
		
		спрВарКомплектации = СтрокаВарКомплектации.ВариантКомплектации;
		
		Для Каждого СтрокаНоменклатура из спрВарКомплектации.Товары Цикл 
			
			ОбъектНоменклатура = СтрокаНоменклатура.Номенклатура.ПолучитьОбъект();
			ОбъНоменклНаименБезПроб = СокрП(ОбъектНоменклатура.Наименование);
			ОбъектНоменклатура.Наименование = Лев(ОбъНоменклНаименБезПроб, СтрДлина(ОбъНоменклНаименБезПроб) - 1) +	
				СтрокаНоменклатура.НомерСтроки + ")";
			ОбъектНоменклатура.Записать();
			Стр = тзИзменяемаяНоменклатура.Добавить();
   			Стр.Номенклатура = ОбъектНоменклатура;
		КонецЦикла;
		
		Сообщить("Изменены наименования номенклатуры в варианте комплектации " + СтрокаВарКомплектации.ВариантКомплектации);	
		
	КонецЦикла;
	
	ЗначениеВРеквизитФормы(тзИзменяемаяНоменклатура,Объект.ИзменяемаяНоменклатура); 
	
КонецПроцедуры

&НаКлиенте
Процедура Заполнить(Команда)
	
	ЗаполнитьНаСервере();
	
	Для Каждого Элемент из Объект.ИзменяемаяНоменклатура Цикл
					
		ОповеститьОбИзменении(Элемент);
		
	КонецЦикла;
	
	Элементы.ВариантыКомплектации.Обновить(); 
	
КонецПроцедуры

Показать
По теме из базы знаний
Найденные решения
3. Sashares 34 11.11.23 12:18 Сейчас в теме
(1) У ОповеститьОбИзменении есть второй вариант синтаксиса, по типу.

&НаКлиенте
Процедура Заполнить(Команда)
    
    ЗаполнитьНаСервере();
    ОповеститьОбИзменении(Тип("СправочникСсылка.Номенклатура"));        
    Элементы.ВариантыКомплектации.Обновить(); 
    
КонецПроцедуры
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 34 11.11.23 12:18 Сейчас в теме
(1) У ОповеститьОбИзменении есть второй вариант синтаксиса, по типу.

&НаКлиенте
Процедура Заполнить(Команда)
    
    ЗаполнитьНаСервере();
    ОповеститьОбИзменении(Тип("СправочникСсылка.Номенклатура"));        
    Элементы.ВариантыКомплектации.Обновить(); 
    
КонецПроцедуры
2. starjevschik 11.11.23 09:09 Сейчас в теме
Ссылки можно просто передать любый способом, например как возвращаемое значение функции, или через хранилища, или еще как, вариантов много. Например, в приведенном коде заменить процедуру на функцию и возвращать список ссылок.
Но судя по постановке задачи, нужно не это, а обновление каких-то отображаемых данных в программе. Каких и где, неизвестно, поэтому трудно что-то сказать. Но есть кучка возможностей для решения подобных задач, типа ОбновитьОтображениеДанных() и прочее, наверное какой-то их этих вариантов решит проблему.
Оставьте свое сообщение

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