Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 02:06

Передача результатов запроса между клиентом и сервером

Автор gigi1988, 06 дек 2010, 17:26

0 Пользователей и 1 гость просматривают эту тему.

markantonio

Цитата: gigi1988 от 07 дек 2010, 16:40
В общем данные на сервере есть. А как теперь их добавить в таблицу формы?

см. в примере процедуру Подбор()

Если ЗначениеЗаполнено(АдресЗапасовВХранилище) Тогда
       ПолучитьТаблицуИзХранилища(АдресЗапасовВХранилище);
   КонецЕсли;




// Функция получает список товаров из временного хранилища и заполняет табличную часть дока
//
&НаСервере
Функция ПолучитьТаблицуИзХранилища(АдресЗапасовВХранилище)
ТаблицаНомеровБревен = ПолучитьИзВременногоХранилища(АдресЗапасовВХранилище); // таблица переданная из подбора
ТаблицаСырья = Объект.ТаблицаСырья; // таблица документа
Для каждого СтрокаТЗ Из ТаблицаНомеровБревен Цикл

Отбор = Новый Структура;
Отбор.Вставить("НомерБревна", СтрокаТЗ.НомерБревна);
Отбор.Вставить("Партия", СтрокаТЗ.Партия);
Выборка = РегистрыСведений.ХарактеристикиБревна.Получить(Отбор);

НоваяСтрока = ТаблицаСырья.Добавить();
НоваяСтрока.Партия = СтрокаТЗ.Партия;
....................................................
НоваяСтрока.Объем = Выборка.Объем;
НоваяСтрока.ПолезныйОбъем = Выборка.ПолезныйОбъем;

КонецЦикла;
КонецФункции


gigi1988

Цитата: markantonio от 07 дек 2010, 17:16
Цитата: gigi1988 от 07 дек 2010, 16:40
В общем данные на сервере есть. А как теперь их добавить в таблицу формы?

см. в примере процедуру Подбор()

Если ЗначениеЗаполнено(АдресЗапасовВХранилище) Тогда
        ПолучитьТаблицуИзХранилища(АдресЗапасовВХранилище);
    КонецЕсли;




// Функция получает список товаров из временного хранилища и заполняет табличную часть дока
//
&НаСервере
Функция ПолучитьТаблицуИзХранилища(АдресЗапасовВХранилище)
ТаблицаНомеровБревен = ПолучитьИзВременногоХранилища(АдресЗапасовВХранилище); // таблица переданная из подбора
ТаблицаСырья = Объект.ТаблицаСырья; // таблица документа
Для каждого СтрокаТЗ Из ТаблицаНомеровБревен Цикл

Отбор = Новый Структура;
Отбор.Вставить("НомерБревна", СтрокаТЗ.НомерБревна);
Отбор.Вставить("Партия", СтрокаТЗ.Партия);
Выборка = РегистрыСведений.ХарактеристикиБревна.Получить(Отбор);

НоваяСтрока = ТаблицаСырья.Добавить();
НоваяСтрока.Партия = СтрокаТЗ.Партия;
....................................................
НоваяСтрока.Объем = Выборка.Объем;
НоваяСтрока.ПолезныйОбъем = Выборка.ПолезныйОбъем;

КонецЦикла;
КонецФункции



Спасибо. С этим разобрался. Еще один вопрос. Какое событие происходит при нажатии на кнопку провести и закрыть?

mohock

Как тут круто завернули...
Но вроде если у тебя объект имеет табличную часть, которая выведена на форме, твоя процедура может иметь такой вид:

Процедура ГрОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Выборка=Получить(ВыбранноеЗначение);
Пока Выборка.Следующий() Цикл

ТЧ = НазваниеТвоейТабличнойЧасти.Добавить();
ТЧ.Название = Выборка.Название;
ТЧ.Фамилия = Выборка.Фамилия;
ТЧ.Код = Выборка.Код;

   КонецЦикла;
КонецПроцедуры

Про цедуру следует делать экспортной и вместе с запросом на сервер помещать в модуль объекта. А вызов процедуры следует цеплять на события формы или элементов формы (например кнопку). И с параметрами ГрОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) ты тоже загнул. У тебя кажись простая задача послать запрос на сервер и получить результат в виде выборки (.Выбрать()) или таблицы значений (.Выгрузить()). Обычно это оформляется отдельной функцией в модуле объекта. Затем надо пройтись циклом по результату функции и добавить результат в табличную часть. Обычно это делается другой процедурой, тоже расположенной в модуле объекта. Как правило ее называют типа "Загрузить..." А после всего этого мы возвращаемся в форму и через меню или элементы формы или через сами события формы вызываем нашу процедуру "Загрузить...", которая должна быть экспортной...

markantonio

Какое событие происходит при нажатии на кнопку провести и закрыть?

"ПередЗакрытием", "ПриЗакрытии" при Закрыть

"ПередЗаписьюНаКлиенте", "ПередЗаписьюНаСервере", "ПриЗаписиНаСервере" при Провести

так вроде если по хронологии

gigi1988

Цитата: markantonio от 08 дек 2010, 11:10
Какое событие происходит при нажатии на кнопку провести и закрыть?

"ПередЗакрытием", "ПриЗакрытии" при Закрыть

"ПередЗаписьюНаКлиенте", "ПередЗаписьюНаСервере", "ПриЗаписиНаСервере" при Провести

так вроде если по хронологии
А как определить, что это запись именно с проводкой документа, а не просто сохранение?

markantonio


gigi1988

Цитата: markantonio от 08 дек 2010, 12:11
Ну приехали! а книжку пачытать слабо?
Ну в радченко написано, что в модуле объекта должна быть процедура ОбработчикПроведения, но у меня таковой нет. Для этого нужно установить движения документов, а соответственно для этого нужен регистр. Вот пока не пойму как все это дело увязать вместе

markantonio

делай обработчик проведения, а в него вставляй

Сообщить("я провожусь!);

все. Если ты это имеешь ввиду.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск