|
Заполнение Таблицы Значений на управляемой форме при открытии | ☑ | ||
---|---|---|---|---|
0
Serdolik55
29.07.16
✎
14:25
|
Коллеги, доброго времени суток!
Мне нужно в форме Заказа покупателя организовать интерактивную проверку остатков. Сделал так: создал общую форму ("Табло остатков") на неё кинул Таблицу значений с 3-мя колонками. В документе "Заказ покупателя" создал команду (кнопку), при нажатии которой запросом проверяются остатки товара в заказе и должны вывестись в эту несчастную форму. Вроде всё элементарно, в обычных формах сделал бы на раз два,тут сижу уже полдня((( Код ниже: &НаКлиенте Процедура ПроверитьНаличие(Команда) ФормаОстатков = ПолучитьФорму("ОбщаяФорма.ТаблоОстатков"); ЗаполнитьФорму(ФормаОстатков); ФормаОстатков.Открыть(); КонецПроцедуры &НаСервере Процедура ЗаполнитьФорму(Форма) ТаблицаОстатков = ДанныеФормыВЗначение(Форма.ТаблицаОстатков, Тип("ТаблицаЗначений")); ТаблицаОстатков.Загрузить(ПолучитьОстаткиПоставщика(Объект)); ЗначениеВДанныеФормы(ТаблицаОстатков, Форма.ТаблицаОстатков); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьОстаткиПоставщика(Объект) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); Запрос.УстановитьПараметр("ДатаОстатков", ТекущаяДата()); Запрос.Текст = "ВЫБРАТЬ | ЗаказПокупателяЗапасы.Номенклатура |ПОМЕСТИТЬ Таб |ИЗ | Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы |ГДЕ | ЗаказПокупателяЗапасы.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ЗаказПокупателяЗапасы.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Э_ЗапасыПоставщикаОстатки.Номенклатура, | Э_ЗапасыПоставщикаОстатки.ОстатокОстаток КАК Остаток |ПОМЕСТИТЬ ТабОстатков |ИЗ | Таб КАК Таб | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Э_ЗапасыПоставщика.Остатки( | &ДатаОстатков, | Номенклатура В | (ВЫБРАТЬ | Таб.Номенклатура | ИЗ | Таб КАК Таб)) КАК Э_ЗапасыПоставщикаОстатки | ПО Таб.Номенклатура = Э_ЗапасыПоставщикаОстатки.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таб.Номенклатура, | Таб.Номенклатура.Артикул КАК Артикул, | ЕСТЬNULL(ТабОстатков.Остаток, 0) КАК Остаток |ИЗ | Таб КАК Таб | ЛЕВОЕ СОЕДИНЕНИЕ ТабОстатков КАК ТабОстатков | ПО Таб.Номенклатура = ТабОстатков.Номенклатура"; Возврат Запрос.Выполнить().Выгрузить(); КонецФункции Ругается, что типа нельзя управляемую форму на сервер передавать, в принциипе правильно, она и так на сервере, а тогда как таблицу то эту заполнить? |
|||
1
hhhh
29.07.16
✎
14:30
|
вот это что за бред?
ТаблицаОстатков = ДанныеФормыВЗначение(Форма.ТаблицаОстатков, Тип("ТаблицаЗначений")); пишите МояОфигеннаяТаблицаОстатков = ДанныеФормыВЗначение(Форма.ТаблицаОстатков, Тип("ТаблицаЗначений")); не надо дублировать имена. |
|||
2
Numerus Mikhail
29.07.16
✎
14:33
|
Передавай данные формы
ДанныеФормы = ФормаОстатков.Объект; ЗаполнитьФорму(ДанныеФормы); КопироватьДанныеФормы(ДанныеФормы, ФормаОстатков.Объект); |
|||
3
Serdolik55
29.07.16
✎
14:56
|
(2) Спасибо, разобрался. Заработало
|
|||
4
lodger
29.07.16
✎
15:32
|
"Неправильно ты, дядя Фёдор, бутерброд ешь" (с)
в современной идеологии надо было сделать так: 1) на любой форме с таблицей номенклатуры команда. команда уходит на сервер выгружает из таблицы формы колонку номенклатуры и необходимые характеристики\серии. возвращается на клиента и инициирует ОткрытьФорму("СуперФормаОстатков",Параметры), где в параметрах будет табличка с выгруженной ранее номенклатурой и прочим(туда же можно подать и необходимое число, чтобы сразу показать хват или нехват). 2) в СуперФормаОстатков ПриСозданииНаСервере происходит разбор входящих параметров, запрос к остаткам и все что еще заблагорассудится. в итоге выиграете на пропускной способности и количестве обращений к серверу, что ведет к ускорению работы пользовательского интерфейса. |
|||
5
lodger
29.07.16
✎
15:47
|
(4) ах да. и самый главный выигрыш - не надо записывать заказ, а работать с текущими данными в текущей форме.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |