Имя: Пароль:
1C
1С v8
Заполнить реквизит с типом ДанныеФормыКоллекция
0 Nerevar86
 
24.03.23
00:21
Добрый вечер,уважаемые форумчане.
Встала задача заполнить данными реквизит с типом ДанныеФормыКоллекция, который размещен на форме (УФ).
Вот код:

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

&НаКлиенте
&После("ПодборТаблицаНоменклатураПриАктивизацииСтроки")
Процедура ner_ПодборТаблицаНоменклатураПриАктивизацииСтроки(Элемент)  
	
	ner_СписокСтандартныйПоискНоменклатураПриАктивизацииСтрокиПослеНаСервере(Элемент.ТекущиеДанные.Номенклатура);
	
КонецПроцедуры


У меня есть реквизит "ТоварыВРезерве" с типом ДанныеФормыКоллекция. Я бы мог его конечно заполнить на сервере, если сделал бы контекстный вызов,но всю форму тянуть не хочется. Не подскажите как возможно это реализовать? Метод загрузить на клиенте насколько я знаю не работает:)
1 Волшебник
 
24.03.23
00:23
Покажите скриншот
2 Nerevar86
 
24.03.23
00:25
Скриншот чего именно?
3 Волшебник
 
24.03.23
00:25
Вашей формы
4 Nerevar86
 
24.03.23
00:37
5 H A D G E H O G s
 
24.03.23
01:08
Перебирай возвращенный массив структур на клиенте и добавляй построчно в коллекцию через Добавить()
6 eddy_n
 
24.03.23
02:43
В этой же серверной процедуре и заполняй свой реквизит формы 'ТоварыВРезерве' с типом таблица значений через всё тот же Добавить(). Только процедура должна быть контекстной.
7 Nerevar86
 
24.03.23
06:54
(6) В событии "ПриАктивизиацииСтроки" не предусмотрена возможность контекстного серверного вызова. В синтаксис-поомщнике так и неписано. Да и платформа сама не дает создать контекстный вызов. Можно конечно руками директиву поправить, но поведение платформы оставит желать лучшего.
8 Мультук
 
гуру
24.03.23
07:59
(7)

1) Прочитать в кэш все остатки по номенклатуре из коллекции и показывать не подходит ? Нужны остатки "прямо сейчас из базы" ?
2) Можно из события "" запускать "ПодключитьОбработчикОжидания"  

Вот так делают ребята из 1С

&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   [skip]    

   ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);


КонецПроцедуры

3) РегистрНакопления.СвободныеОстатки.Остатки(
Это необновленная УТ ?
9 Nerevar86
 
24.03.23
08:04
(8) Это типовая УТ 11.4
10 Nerevar86
 
24.03.23
08:05
(8) У меня есть расширение, где нужно в реквизите на форме с типом ТЗ (ДанныеФормыКоллекция) при активизации строки на форме, вывести информацию об остатках в этот реквизит.
11 eddy_n
 
24.03.23
09:02
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
    
    СервернаяПроцедура();
    
КонецПроцедуры  

Процедура СервернаяПроцедура()

    НовСтрока = ЭтаФорма.ТаблГТД.Добавить();
    НовСтрока.ГТД = "";
    
КонецПроцедуры
12 Nerevar86
 
24.03.23
09:25
(11) Так у меня платформа не дает создать процедуру с директивой &НаСервере.
13 eddy_n
 
24.03.23
09:52
(12) А почему у меня даёт?