![]() |
![]() |
![]() |
|
8.2 как правильно заполнить ТЧ на форме значением по имолчанию? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
15.12.09
✎
10:21
|
У услуги есть "типовой" набор используемых материалов
надо при выборе в документе оказанной услуги заполнить таблицу на управляемой форме набором материалов для последующего редактирования (исправить количество, добавить строки/удалить) (набор потом записывается в ТЧ документа) как это правильно сделать? что разместить на форме? как заполнить? |
|||
1
NcSteel
15.12.09
✎
10:23
|
Вызываешь из формы серверную процедуру, получаешь материалы и заполняешь объект.
|
|||
2
RomaH
naïve
15.12.09
✎
10:27
|
материалы отображать именно как ТЧ документа?
как заполнить таблицу из запроса? что во что преобразовывать? обход по строкам или можно в таблицу (элемент управляемой формы) запихнуть сразу ТЗ или результат запроса? |
|||
3
NcSteel
15.12.09
✎
10:37
|
ТЗ не поддерживает управляемая форма. Проще всего ТЧ , если надо передать ТЗ на клиента то использую Массив структур.
|
|||
4
TitanLuchs
15.12.09
✎
10:43
|
(3) Эээээй, ты что такое говоришь, неправильно. При выборе услуги вызывать серверную процедуру, в ней получить нужную информацию запросом, затем просто выгрузить в ТЧ:
Объект.ТЧ.Загрузить(Запрос.Выполнить().Выгрузить()); |
|||
5
RomaH
naïve
15.12.09
✎
10:44
|
... другими словами
на форму кладу таблицу с источником данных "табличная часть документа" потом на сервере выполняю запрос для получения таблицы материалов (например Материал/Количество) как запихнуть полученный результат запроса в таблицу? |
|||
6
RomaH
naïve
15.12.09
✎
10:45
|
(4) а потом просто перечитать/обновить объект на форме?
|
|||
7
TitanLuchs
15.12.09
✎
10:46
|
(6) Само обновится
|
|||
8
RomaH
naïve
15.12.09
✎
10:52
|
&НаСервере
Процедура ПолучитьТаблицуМатериалов() Документ = РеквизитФормыВЗначение"Объект"); Документ.Материалы.Загрузить(...); ЗначениеВРеквизитФормы(Документ,"Объект"); КонецПроцедуры (пример из книги Радченко) так? |
|||
9
NcSteel
15.12.09
✎
11:00
|
(4) В каком месте я не правильно сказал.
|
|||
10
TitanLuchs
15.12.09
✎
11:25
|
(8) Я делал без строк
Документ = РеквизитФормыВЗначение"Объект"); ЗначениеВРеквизитФормы(Документ,"Объект"); Просто Объект.Материалы.Загрузить(...); (9) Твой вариант сработает, но нет смысла конвертить ТЗ в массив структур и заполнять ТЧ из него построчно на клиенте. Лучше все сразу сделать на сервере. То есть твой вариант имеет место быть, но он неоптимален. Оговорюсь, что сам прибегал к подобному алгоритму, но это было исключение, так как просто загрузкой нужный функционал не получалось реализовать. |
|||
11
NcSteel
15.12.09
✎
12:15
|
(10) ПОчитай 1,2,3
Я предложил сперва заполнить объект (тобишь ТЧ), но автор захотел в ТЗ все иметь , вот и родилось 3. |
|||
12
TitanLuchs
15.12.09
✎
12:52
|
(11) Ну он неоптимально захотел, а ты неоптимально предложил )
|
|||
13
RomaH
naïve
15.12.09
✎
13:36
|
т.е. то что нарисовано в (8) в принципе работает
только не понятно ... если надо править именно сам объект - то можно вроде и так писать Объект.материалы.загрузить() а вот если объявлен реквизит формы ... ну например ФИО - то к нему уже через реквизитФормыВЗначение ? |
|||
14
TitanLuchs
15.12.09
✎
13:48
|
(13) Нет, к реквизиту формы из модуля формы обращаешься как к обычной переменной, без "Объект." и "РеквизитФормыВЗначение".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |