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

1. IrinaBasova 15.08.18 11:31 Сейчас в теме
Добрый день. На обычном приложении работал вот такой код. Сейчас необходимо переписать на управляемые формы.
Процедура ВагоныНомерПломбыСтр7НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка = ложь;
	
	 получитьпломбу();

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

Функция получитьпломбу()

	//Пломба=справочники.Пломбы.ПустаяСсылка();
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	ВложенныйЗапрос.пломбы КАК пломбы
	               |ИЗ
	               |	(ВЫБРАТЬ
	               |		ЦЗС_ДвиженияПломб.пломбы КАК пломбы,
	               |		СУММА(ВЫБОР
	               |				КОГДА ЦЗС_ДвиженияПломб.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	               |					ТОГДА ЦЗС_ДвиженияПломб.Колво
	               |				ИНАЧЕ -ЦЗС_ДвиженияПломб.Колво
	               |			КОНЕЦ) КАК Поле1
	               |	ИЗ
	               |		РегистрНакопления.ЦЗС_ДвиженияПломб КАК ЦЗС_ДвиженияПломб
	               |	
	               |	СГРУППИРОВАТЬ ПО
	               |		ЦЗС_ДвиженияПломб.пломбы) КАК ВложенныйЗапрос
	               |ГДЕ
	               |	ВложенныйЗапрос.Поле1 = 1
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	пломбы";
				   

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

КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Doreng 27 15.08.18 11:57 Сейчас в теме
(1)
&НаКлиенте
Процедура ВагоныНомерПломбыСтр7НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = ложь;
  Тз = Новый ТаблицаЗначений;  
     получитьпломбу(ТЗ);

КонецПроцедуры
&НаСервере
Процедура получитьпломбу(ТЗ)

    //Пломба=справочники.Пломбы.ПустаяСсылка();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВложенныйЗапрос.пломбы КАК пломбы
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ЦЗС_ДвиженияПломб.пломбы КАК пломбы,
                   |        СУММА(ВЫБОР
                   |                КОГДА ЦЗС_ДвиженияПломб.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                   |                    ТОГДА ЦЗС_ДвиженияПломб.Колво
                   |                ИНАЧЕ -ЦЗС_ДвиженияПломб.Колво
                   |            КОНЕЦ) КАК Поле1
                   |    ИЗ
                   |        РегистрНакопления.ЦЗС_ДвиженияПломб КАК ЦЗС_ДвиженияПломб
                   |    
                   |    СГРУППИРОВАТЬ ПО
                   |        ЦЗС_ДвиженияПломб.пломбы) КАК ВложенныйЗапрос
                   |ГДЕ
                   |    ВложенныйЗапрос.Поле1 = 1
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    пломбы";
                   

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

КонецПроцедуры
Показать
4. IrinaBasova 15.08.18 12:03 Сейчас в теме
(3)не получается тз создать на клиенте
5. Boneman 298 15.08.18 12:05 Сейчас в теме
(4) и не получится.
Да и зачем он там нужен. У вас выборка из одной колонки состоит.
Это массива хватит, или списка значений.
6. IrinaBasova 15.08.18 12:09 Сейчас в теме
7. IrinaBasova 15.08.18 12:33 Сейчас в теме
(5)т.е. в итоге например, если это список значений, как его мы должны отобразить для выбора. поместить в параметр ДанныеВыбора?
(5)
8. IrinaBasova 15.08.18 12:39 Сейчас в теме
(7)И еще вопрос корректно ли будет отображаться список выбора к примеру при наличии более 100 наименований?
11. Fox-trot 158 16.08.18 17:49 Сейчас в теме
(8)поэтому безопаснее писать в запросе ПЕРВЫЕ надцать или после запроса ограничиться надцатью
2. IrinaBasova 15.08.18 11:33 Сейчас в теме
Получается, что запрос выполняется на сервере, тз тоже фрмируется там же. Вопрос какими методами можно все это передать на клиент и организовать выбор данных из этого списка.
9. SanyMaga 68 15.08.18 13:38 Сейчас в теме
&НаКлиенте
Процедура ВагоныНомерПломбыСтр7НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = ложь;
     получитьпломбу(ТЗ).ПоказатьВыборЭлемента (<ОписаниеОповещенияОЗакрытии>, <Заголовок>, <Элемент> ); //и тд.

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

    //Пломба=справочники.Пломбы.ПустаяСсылка();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВложенныйЗапрос.пломбы КАК пломбы
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ЦЗС_ДвиженияПломб.пломбы КАК пломбы,
                   |        СУММА(ВЫБОР
                   |                КОГДА ЦЗС_ДвиженияПломб.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                   |                    ТОГДА ЦЗС_ДвиженияПломб.Колво
                   |                ИНАЧЕ -ЦЗС_ДвиженияПломб.Колво
                   |            КОНЕЦ) КАК Поле1
                   |    ИЗ
                   |        РегистрНакопления.ЦЗС_ДвиженияПломб КАК ЦЗС_ДвиженияПломб
                   |    
                   |    СГРУППИРОВАТЬ ПО
                   |        ЦЗС_ДвиженияПломб.пломбы) КАК ВложенныйЗапрос
                   |ГДЕ
                   |    ВложенныйЗапрос.Поле1 = 1
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    пломбы";
                   

   
   Список= Новый СписокЗначений;  
Список.Загрузить(Запрос.Выполнить().Выгрузить("пломбы"));
    Возврат Список;
КонецФункции	
Показать
10. IrinaBasova 16.08.18 16:16 Сейчас в теме
(9)не получается установить значение в форму
(9)
12. SanyMaga 68 16.08.18 19:47 Сейчас в теме
(10)
Вы не учли что вам возвращается элемент списка значений поътом нужно брать .значение

//Пример обработки
&НаКлиенте
Процедура ПослеВыбораЭлемента(ВыбранныйЭлемент, СписокПараметров) Экспорт
    Если ВыбранныйЭлемент = Неопределено Тогда
        Сообщить("Тип цен не выбран.");
    Иначе
        объект.реквизит = ВыбранныйЭлемент.Значение;
    КонецЕсли;
КонецПроцедуры
Показать
13. SanyMaga 68 16.08.18 19:53 Сейчас в теме
(12)
Полный пример:
&НаКлиенте
Процедура ПослеВыбораЭлемента(ВыбранныйЭлемент, СписокПараметров) 
    Если ВыбранныйЭлемент = Неопределено Тогда
        Сообщить("Тип цен не выбран.");
    Иначе
        объект.реквизит = ВыбранныйЭлемент.Значение;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВагоныНомерПломбыСтр7НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = ложь;
     получитьпломбу(ТЗ).ПоказатьВыборЭлемента (Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтаФорма),"Выберети печать"); //и тд.

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

&НаСервере
Функция получитьпломбу()

    //Пломба=справочники.Пломбы.ПустаяСсылка();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ВложенныйЗапрос.пломбы КАК пломбы
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ЦЗС_ДвиженияПломб.пломбы КАК пломбы,
                   |        СУММА(ВЫБОР
                   |                КОГДА ЦЗС_ДвиженияПломб.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                   |                    ТОГДА ЦЗС_ДвиженияПломб.Колво
                   |                ИНАЧЕ -ЦЗС_ДвиженияПломб.Колво
                   |            КОНЕЦ) КАК Поле1
                   |    ИЗ
                   |        РегистрНакопления.ЦЗС_ДвиженияПломб КАК ЦЗС_ДвиженияПломб
                   |    
                   |    СГРУППИРОВАТЬ ПО
                   |        ЦЗС_ДвиженияПломб.пломбы) КАК ВложенныйЗапрос
                   |ГДЕ
                   |    ВложенныйЗапрос.Поле1 = 1
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    пломбы";
                   

   
   Список= Новый СписокЗначений;  
Список.Загрузить(Запрос.Выполнить().Выгрузить("пломбы"));
    Возврат Список;
КонецФункции
Показать
14. KlesAlex 3 22.08.18 12:15 Сейчас в теме
Как вариант можно открывать форму выбора из этого списка с заданным отбором и обрабатывать то что пользователь указал
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот