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

Процедура ОбработкаВыбора

Автор Lea, 26 дек 2015, 16:25

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

Lea

В пользовательском режиме не выбираются соответствующие документы при нажатии на документ основание, но выборка работает. Подскажите как заполнить ДокументОснование?

Процедура АбонентОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
   //выбираю все документы абонента   
      Запрос=Новый Запрос;
    Запрос.УстановитьПараметр("Абонент",ВыбранноеЗначение.Ссылка);
    Запрос.Текст= "ВЫБРАТЬ
                  |   ВыдачаКниг.Ссылка                
               |ИЗ
                  |   Документ.ВыдачаКниг КАК ВыдачаКниг
                  |ГДЕ
                  |   ВыдачаКниг.Абонент = &Абонент";
    Сообщить("Работает"+ВыбранноеЗначение);
    Выборка = Запрос.Выполнить().Выбрать();   
    Пока Выборка.Следующий() Цикл
ДокументОснование=Выборка.Ссылка.ПолучитьОбъект();
Сообщить("Выборка"+Выборка.Ссылка.ПолучитьОбъект());
КонецЦикла;

КонецПроцедуры

Psm_2015

Если это то, о чем я думаю, то попробуйте так:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Строка(Выборка.Ссылка);
Сообщение.КлючДанных = Выборка.Ссылка;
Сообщение.Сообщить();


Lea

Цитата: Psm_2015 от 26 дек 2015, 17:12
Если это то, о чем я думаю, то попробуйте так:
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Строка(Выборка.Ссылка);
Сообщение.КлючДанных = Выборка.Ссылка;
Сообщение.Сообщить();

Мне нужно чтобы при выборе абонента открывался список документов только его при нажатии на кнопку документ основание

1Cnastroika

Цитата: Lea от 26 дек 2015, 19:17

Мне нужно чтобы при выборе абонента открывался список документов только его при нажатии на кнопку документ основание

Можно сделать через таблицу значений.
Выгрузите результат запроса в таблицу значений.

ТЗ = Запрос.Выполнить().Выгрузить();


По кнопке "Выбрать" делайте выбор строки ТЗ.

    Результат = ТЗ.ВыбратьСтроку("Выберите документ основание.");
       
    Если Результат <> Неопределено Тогда
        ДокументОснование = Результат.Ссылка;
    КонецЕсли;

Lea

Цитата: 1Cnastroika от 26 дек 2015, 19:38
Цитата: Lea от 26 дек 2015, 19:17

Мне нужно чтобы при выборе абонента открывался список документов только его при нажатии на кнопку документ основание

Можно сделать через таблицу значений.
Выгрузите результат запроса в таблицу значений.

ТЗ = Запрос.Выполнить().Выгрузить();


По кнопке "Выбрать" делайте выбор строки ТЗ.

    Результат = ТЗ.ВыбратьСтроку("Выберите документ основание.");
       
    Если Результат <> Неопределено Тогда
        ДокументОснование = Результат.Ссылка;
    КонецЕсли;


Если я вас правильно поняла, то выдает ошибку что ТЗ переменная не определена

Процедура АбонентОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
// Вставить содержимое обработчика.
//выбираю все документы абонента   
  Запрос=Новый Запрос;
Запрос.УстановитьПараметр("Абонент",ВыбранноеЗначение.Ссылка);
Запрос.Текст= "ВЫБРАТЬ
               | ВыдачаКниг.Ссылка              
   |ИЗ
               | Документ.ВыдачаКниг КАК ВыдачаКниг
               |ГДЕ
               | ВыдачаКниг.Абонент = &Абонент";
Сообщить("Работает"+ВыбранноеЗначение);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДокументОснование=Выборка.Ссылка.ПолучитьОбъект();
Сообщить("Выборка"+Выборка.Ссылка.ПолучитьОбъект());
ТЗ = Запрос.Выполнить().Выгрузить();
КонецЦикла;

КонецПроцедуры
Процедура ВыбратьНажатие(Элемент)
Результат = ТЗ.ВыбратьСтроку("Выберите документ основание.");     
    Если Результат <> Неопределено Тогда
        ДокументОснование = Результат.Ссылка;
    КонецЕсли;
КонецПроцедуры

Добавлено: 26 дек 2015, 20:41


Цитата: 1Cnastroika от 26 дек 2015, 19:38
Цитата: Lea от 26 дек 2015, 19:17

Мне нужно чтобы при выборе абонента открывался список документов только его при нажатии на кнопку документ основание

Можно сделать через таблицу значений.
Выгрузите результат запроса в таблицу значений.

ТЗ = Запрос.Выполнить().Выгрузить();


По кнопке "Выбрать" делайте выбор строки ТЗ.

    Результат = ТЗ.ВыбратьСтроку("Выберите документ основание.");
       
    Если Результат <> Неопределено Тогда
        ДокументОснование = Результат.Ссылка;
    КонецЕсли;

я все поняла, получилось,спасибо!

1Cnastroika

Когда результат запроса выгружается в ТЗ, то выборка из результата запроса и обход результата запроса не нужны.
Эта часть кода не нужна:

  Выборка = Запрос.Выполнить().Выбрать();   
     Пока Выборка.Следующий() Цикл
ДокументОснование=Выборка.Ссылка.ПолучитьОбъект();
Сообщить("Выборка"+Выборка.Ссылка.ПолучитьОбъект());
КонецЦикла;


Вместо этого кода нужно написать:

    ТЗ = Запрос.Выполнить().Выгрузить();


И нужно обеспечить видимость переменной ТЗ в процедуре, в которой происходит обращение к ТЗ. Значение переменной ТЗ устанавливается при выборе абонента. Нужно, чтобы переменная ТЗ была определена при выборе Документа до выбора абонента.

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

Рейтинг@Mail.ru

Поиск