![]() |
|
Внешняя обработка заполнения табличной части | ☑ | ||
---|---|---|---|---|
0
Flempy
04.03.22
✎
09:28
|
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Для каждого ТекущаяСтрока из ВладелецФормы.Объект.Товары Цикл ТекущаяСтрока.Номенклатура= ???; КонецЦикла ; КонецПроцедуры Так же есть функция, которая выгружает результат запроса Функция ПолучитьДанныеДокумента(СсылкаНаОбъект) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТМЦВЭксплуатацииОбороты.Номенклатура КАК Номенклатура, | ТМЦВЭксплуатацииОбороты.КоличествоОборот КАК Количество |ИЗ | РегистрНакопления.ТМЦВЭксплуатации.Обороты(, &Дата, , ФизическоеЛицо = &ФизЛицо) КАК ТМЦВЭксплуатацииОбороты"; Запрос.УстановитьПараметр("Дата",СсылкаНаОбъект.Дата); Запрос.УстановитьПараметр("ФизЛицо", УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект.Ссылка, ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ФизическоеЛицо"))); РезультатЗапроса = Запрос.Выполнить(); ТЗ = РезультатЗапроса.Выгрузить(); Возврат ТЗ; //Либо так //Выборка = Запрос.Выполнить().Выбрать; КонецФункции Как передать ТЗ на клиент, чтобы заполнить этими данными ТЧ формы, либо как заполнить ее на сервере, если есть такая возможность? |
|||
1
Мимохожий Однако
04.03.22
✎
09:34
|
Заполняй НаСервере
|
|||
2
lodger
04.03.22
✎
09:38
|
(0) из процедуры НаКлиенте ВыполнитьКоманду вызывай процедуру НаСервере и в ней пиши обход по строкам ТЧ.
|
|||
3
Flempy
04.03.22
✎
09:38
|
(1) на сервере не дает обращаться к элементам формам ТЧ или может я не так обращаюсь.
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт ПолучитьДанныеДокумента(ВладелецФормы.Объект); КонецПроцедуры Функция ПолучитьДанныеДокумента(СсылкаНаОбъект) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТМЦВЭксплуатацииОбороты.Номенклатура КАК Номенклатура, | ТМЦВЭксплуатацииОбороты.КоличествоОборот КАК Количество |ИЗ | РегистрНакопления.ТМЦВЭксплуатации.Обороты(, &Дата, , ФизическоеЛицо = &ФизЛицо) КАК ТМЦВЭксплуатацииОбороты"; Запрос.УстановитьПараметр("Дата",СсылкаНаОбъект.Дата); Запрос.УстановитьПараметр("ФизЛицо", УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект.Ссылка, ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ФизическоеЛицо"))); Выборка= Запрос.Выполнить().Выбрать(); Пока выборка.Следующий() Цикл СсылкаНаОбъект.Товары.Добавить() КонецЦикла; КонецФункции |
|||
4
Flempy
04.03.22
✎
09:53
|
Сделал следующим образом, вроде работает. Подскажите, так правильно будет?
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт ОбъектФормы = ВладелецФормы.Объект; ИзмененныйОбъект = ПолучитьДанныеДокумента(ОбъектФормы); КопироватьДанныеФормы(ИзмененныйОбъект, ВладелецФормы.Объект); КонецПроцедуры Функция ПолучитьДанныеДокумента(СсылкаНаОбъект) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТМЦВЭксплуатацииОбороты.Номенклатура КАК Номенклатура, | ТМЦВЭксплуатацииОбороты.КоличествоОборот КАК Количество |ИЗ | РегистрНакопления.ТМЦВЭксплуатации.Обороты(, &Дата, , ФизическоеЛицо = &ФизЛицо) КАК ТМЦВЭксплуатацииОбороты"; Запрос.УстановитьПараметр("Дата",СсылкаНаОбъект.Дата); Запрос.УстановитьПараметр("ФизЛицо", УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект.Ссылка, ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ФизическоеЛицо"))); Выборка = Запрос.Выполнить().Выбрать(); Пока выборка.Следующий() Цикл Сообщить(выборка.Номенклатура); НоваяСтрока = СсылкаНаОбъект.Товары.Добавить(); НоваяСтрока.Номенклатура = выборка.Номенклатура; КонецЦикла; Возврат СсылкаНаОбъект; КонецФункции |
|||
5
Мимохожий Однако
04.03.22
✎
10:26
|
Если работает, то правильно )
|
|||
6
Flempy
04.03.22
✎
10:47
|
В принципе работает и заполняет, но возникла ошибка при заполнении поля "Единица измерения" - Поле объекта недоступно для записи. вот код:
Выборка = Запрос.Выполнить().Выбрать(); СсылкаНаОбъект.Товары.Очистить(); Пока выборка.Следующий() Цикл НоваяСтрока = СсылкаНаОбъект.Товары.Добавить(); НоваяСтрока.Номенклатура = выборка.Номенклатура; НоваяСтрока.КоличествоУпаковок = выборка.Количество; НоваяСтрока.Номенклатура.ЕдиницаИзмерения = выборка.НоменклатураЕдиницаИзмерения; Сообщить(НоваяСтрока.Номенклатура.ЕдиницаИзмерения) КонецЦикла; Возврат СсылкаНаОбъект; |
|||
7
Мимохожий Однако
04.03.22
✎
10:56
|
(6) У ссылки не может быть реквизита. Из ссылки получи объект и туда запиши
|
|||
8
Flempy
04.03.22
✎
10:59
|
(7) Пробовал получить объект ссылки, но все равно почему-то выдавало ошибку. сделал вот так и заработало
ОбъектНоменклатуры = НоваяСтрока.Номенклатура.ПолучитьОбъект(); ОбъектНоменклатуры.ЕдиницаИзмерения = выборка.НоменклатураЕдиницаИзмерения; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |