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

Вывод результат запроса из регистра сведений в табличной части документа

Автор Александр Ярмола, 28 окт 2016, 11:53

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

alex0402

Цитата: Александр Ярмола от 01 ноя 2016, 16:02И как можно это решыть?
разделить код. все запросы в базу на стороне сервера, все интерактивные действия - на стороне клиента.

&НаКлиенте
Процедура ВодійПриИзменении(Элемент)
   Автомоб = ПолучитьАвто();
   Если Автомоб.Количество()=1 Тогда
      Авто=Автомоб[0].Техніка;   
   Иначе     
      Автомоблі=Автомоб.ВыбратьСтроку("Виберіть техніку");       
   Если Автомоблі <> Неопределено Тогда
      Авто=Автомоблі.Техніка;
   Иначе
      Авто="";
КонецЕсли
КонецПроцедуры

&НаСервер
Фунция ПолучитьАвто()
//звапросы в базу
КонецФункции
Спасибо за Сказать спасибо

Kironten

Будете корявую конфу переписывать?
Вряд ли.
Сосредоточьтесь уж лучше на своей задаче.
Начните с того, что хотя бы проверьте, а привязан ли обработчик к элементу формы.
А вообще почитайте про отладку/точки останова - вам это пригодится.

Александр Ярмола

Ну неуч я, вот что сделал...


&НаКлиенте
Процедура ВодійПриИзменении(Элемент)
      // Вставить содержимое обработчика.
   СТЧ = Элементы["ТЧасть"].ТекущиеДанные;
   Водій = СТЧ.Водій;
   Авто = СТЧ.Авто;

   Автомоб= ПолучитьАвто(Водій);
 
   Если Автомоб.Количество()=1 Тогда
      Авто=Автомоб[0].Техніка;   
   Иначе     
      Автомоблі=Автомоб.ВыбратьСтроку("Виберіть техніку");       
   Если Автомоблі <> Неопределено Тогда
      Авто=Автомоблі.Техніка;
   Иначе
      Авто="";
    КонецЕсли   
    КонецЕсли
     
КонецПроцедуры

&НаСервере
Функция ПолучитьАвто(Водій);
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ЗакріпленняВодіїв.Техніка,
      |   ЗакріпленняВодіїв.НомернийЗнак
      |ИЗ
      |   РегистрСведений.ЗакріпленняВодіїв КАК ЗакріпленняВодіїв
      |ГДЕ
      |   ЗакріпленняВодіїв.Водій = &Водій";
      Запрос.УстановитьПараметр("Водій", Водій);
   Запрос.Выполнить().Выгрузить();

   КонецФункции

:trhregerhg:
Вот ругается на ....
Значение не является значением объектного типа (Количество)
      Если Автомоб.Количество()=1 Тогда

alex0402

Спасибо за Сказать спасибо

Александр Ярмола

{Документ.ЗапасніЧастиниСписання.Форма.ФормаДокумента.Форма(118)}: Ошибка при вызове метода контекста (ПолучитьАвто)
   Автомоб= ПолучитьАвто(Водій);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret   Форма: Элемент   Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
Добавлено: 03 ноя 2016, 13:33


Уже разобрался, ошыбик не выдает, но все равно не заполняет авто...:dfbbdrfb:

alex0402

а разобрался как? на клиент нельзя передать таблицу значений. нужно передавать массив структур например.
т.е. где-то так:

Результат = Новый Массив;

Выборка = Запрос.Выполнить.Выбрать();
Пока Выборка.Следующий() Цикл
Структ = Новый Структура("Колонка1,Колонка2",Выборка.Значение1,Выборка.Значение2);
Результат.Добавить(Структ);
КонецЦикла;
Возврат Результат;
Спасибо за Сказать спасибо

ilyay

запросом данные получить, в реквизит типа таблица значений положить, выбор пользователя производить на клиенте. Или динамический список. Смотря что требуется.

Теги:

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

Рейтинг@Mail.ru

Поиск