Имя: Пароль:
1C
1С v8
Выгрузка результата запроса на форму
0 Swetlana521911
 
05.11.13
18:02
Помогите...SOS..
Имеется регистр сведений Коды, по которому нужно выполнить поиск. Сделала общую форму. Сделала запрос к регистру. А вывести на форму результат не могу(((. Нужно, что бы при вводе в поле ввода кода и нажатия на кнопку "Искать" выводилось нужное значение.
Делаю так
&НаКлиенте
Процедура кодКодГНГПриИзменении(Элемент)
  Если ЗначениеЗаполнено(кодГНГ) Тогда

КодГНГ1 = КодГНГ;      
КодЕТСНГ1 = ПолучитьКодЕТСНГ(КодГНГ);
НаименованиеГНГ1 = ПолучитьКодЕТСНГ(КодГНГ);
    КонецЕсли;
КонецПроцедуры

&наСервере
Функция ПолучитьКодЕТСНГ(КодГНГ)
    Запрос = Новый Запрос;
    Запрос.Текст =  
    "ВЫБРАТЬ
    |    коды.КодГНГ,
    |    коды.КодЕТСНГ,
    |    коды.НаименованиеГНГ
    |ИЗ
    |    РегистрСведений.Коды КАК коды
    |ГДЕ
    |    коды.КодГНГ ПОДОБНО &КодГНГ";
    
    
    Запрос.УстановитьПараметр("КодГНГ",КодГНГ);
     Результат = Запрос.Выполнить();
    Реквизит1 = Результат.Выгрузить();// реквизит1 это таблица значений на форме
          
    
КонецФункции
1 Wobland
 
05.11.13
18:29
держи идею


&НаКлиенте
Процедура Команда1(Команда)
    НаСервер();
КонецПроцедуры

&НаСервере
Процедура НаСервер()
    ТЗ=РеквизитФормыВЗначение("Реквизит1");
    Для Каждого ТекЭлемент Из Метаданные.Справочники Цикл
        НоваяСтрока=ТЗ.Добавить();
        НоваяСтрока.Наименование=ТекЭлемент.Имя;
        НоваяСтрока.ДлинаКода=ТекЭлемент.ДлинаКода;
    КонецЦикла;
    ЗначениеВРеквизитФормы(ТЗ, "Реквизит1");
КонецПроцедуры
2 andreymongol82
 
05.11.13
18:31
(0) Общая форма управляемая или обычная?
3 Swetlana521911
 
05.11.13
18:39
управляемая
4 Swetlana521911
 
05.11.13
18:50
(1) Если я правильно все вставила..
Функция ПолучитьКодЕТСНГ(КодГНГ2)
    Запрос = Новый Запрос;
    Запрос.Текст =  
    "ВЫБРАТЬ
    |    коды.КодГНГ,
    |    коды.КодЕТСНГ,
    |    коды.НаименованиеГНГ
    |ИЗ
    |    РегистрСведений.Коды КАК коды
    |ГДЕ
    |    коды.КодГНГ ПОДОБНО &КодГНГ";
    
    
    Запрос.УстановитьПараметр("КодГНГ",КодГНГ2);
    Реквизит1 = Запрос.Выполнить().Выгрузить();
     ТЗ = РеквизитФормыВЗначение("Реквизит1");
     Для Каждого ТекущийЭлемент Из Метаданные.РегистрыСведений.Коды Цикл
         НоваяСтрока = ТЗ.Добавить();
         НоваяСтрока.КодГНГ = ТекущийЭлемент.КодГНГ;
         НоваяСтрока.ЕТСНГ = ТекущийЭлемент.КодЕТСНГ;
         НоваяСтрока.НаименованиеГНГ = ТекущийЭлемент.НаименованиеГНГ;
     КонецЦикла;
     ЗначениеВРеквизитФормы(ТЗ, "Реквизит1");
    
и выходит ошибка
{ОбщаяФорма.Форма1.Форма(31)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
     ТЗ = РеквизитФормыВЗначение("Реквизит1");
Недопустимое значение параметра (параметр номер '1')
5 Wobland
 
05.11.13
18:54
ТЗ = РеквизитФормыВЗначение(ПравильноеИмяРеквизитаНаФорме);
ТЗ = Запрос.Выполнить().Выгрузить();
ЗначениеВРеквизитФормы(ТЗ, ПравильноеИмяРеквизитаНаФорме);
6 Swetlana521911
 
05.11.13
18:57
(5) {ОбщаяФорма.Форма1.Форма(34)}: Итератор для значения не определен
     Для Каждого ТекущийЭлемент Из Метаданные.РегистрыСведений.Коды Цикл

((((((((((((((
7 Wobland
 
05.11.13
18:57
(6) слово "идея" в (1) ключевое
8 Wobland
 
05.11.13
18:58
медитируй над (5), пока не снизойдёт
9 Swetlana521911
 
05.11.13
19:05
я с утра уже медитирую..мозг уже не варит(((
10 Wobland
 
05.11.13
19:11
&НаКлиенте
Процедура кодКодГНГПриИзменении(Элемент)
    Если ЗначениеЗаполнено(кодГНГ) Тогда
        ПоискатьКодЕТСНГ(КодГНГ);
    КонецЕсли;
КонецПроцедуры

&наСервере
Процедура ПоискатьКодЕТСНГ(КодГНГ)
    ТЗ = РеквизитФормыВЗначение(ПравильноеИмяРеквизитаНаФорме);
    Запрос = Новый Запрос;
    Запрос.Текст =  
    "ВЫБРАТЬ
    |    коды.КодГНГ,
    |    коды.КодЕТСНГ,
    |    коды.НаименованиеГНГ
    |ИЗ
    |    РегистрСведений.Коды КАК коды
    |ГДЕ
    |    коды.КодГНГ ПОДОБНО &КодГНГ";
    Запрос.УстановитьПараметр("КодГНГ",КодГНГ);
    ТЗ = Запрос.Выполнить().Выгрузить();
    ЗначениеВРеквизитФормы(ТЗ, ПравильноеИмяРеквизитаНаФорме);
КонецПроцедуры
11 Wobland
 
05.11.13
19:13
и предлагаю отказаться от Если ЗначениеЗаполнено(кодГНГ)
12 andreymongol82
 
05.11.13
19:14
(9) ТЗ на форме и ТЗ из запроса должны совпадать вплоть до типа. Тогда ЗначениеВРеквизт отработает.
Либо, если на форме точно ТЗ, тогда можно Реквизит1.Загрузить(Запрос.Выполнить().Выгрузить())
13 Swetlana521911
 
05.11.13
19:30
(11) ааа я скоро с ума сойду.... ошибок нет.. но и ничего не выводит..может проблема с реквизитом на форме? у меня он "Значение" с типом список значений и еще колонки сделала одноименные (или их не надо?)
14 Swetlana521911
 
06.11.13
09:28
Спасиииибо!!!! Все поняла!!
15 Wobland
 
06.11.13
09:30
(14) выспалась? ну с добрым утром ;)
16 1dvd
 
06.11.13
09:33
ДинамическийСписок не предлагали ещё?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой