Версия для печати темы (https://pro1c.org.ua/index.php?s=76913422ed7b7e87684a6d4947557591&showtopic=55353)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Очистить список выбора - не работает

Автор: Inkognito 22.11.19, 12:57

Бухгалтерия 2.0, управляемые формы
Необходимо получить список операций накладной запросом (т.к. в разных конфигурациях перечисление для "ВидаОперации" называется по разному; будет параметром), и дать пользователю возможность выбора. На форме: список выбора.
Обнаружил, что после того, как пользователь внес значение со списка - повторный клик на списке вызывает дублирование списка. Хотя список очищаю, перед выполнением запроса.

&НаКлиенте
Процедура ОперацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    Элементы.Операция.СписокВыбора.Очистить(); //???
    Элементы.Операция.СписокВыбора.ЗагрузитьЗначения(Получить_Операцию());

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

Функция Получить_Операцию()
    
    Запрос= Новый  Запрос();            
    Запрос.Текст= "ВЫБРАТЬ
    |    ВидыОперацийНалоговаяНакладная.Ссылка КАК ВидОперации
    |ИЗ
    |    Перечисление.ВидыОперацийНалоговаяНакладная КАК ВидыОперацийНалоговаяНакладная";
    Выборка  =  Запрос.Выполнить();        
    Если Не Выборка.Пустой() Тогда
        Возврат Выборка.Выгрузить().ВыгрузитьКолонку("ВидОперации");
    КонецЕсли;

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

Автор: fly 22.11.19, 16:10

Inkognito @ Сегодня, 12:57 * ,
взял ваш код засунул в обработку = работает, не задваивает

Автор: fly 22.11.19, 18:17

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

уберите ДанныеВыбора... так как они лишние, там в расширении формы ДанныеВыбора = Элемент.

Процедура ОперацияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)


fly @ Сегодня, 17:46 * ,

&НаКлиенте
Процедура ОперацияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    
    Элемент.СписокВыбора.Очистить(); //???
    МассивЗначений = ПолучитьОперацию();
    Элемент.СписокВыбора.ЗагрузитьЗначения(МассивЗначений);

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

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

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


Автор: Inkognito 24.11.19, 23:15

fly
1) "пробуйте событие поставить не в НачалоВыбора а в НачалоВыбораИзСписка".
Теперь вообще нет списка. Проверил, процедура вообще не отрабатывает:

&НаКлиенте
Процедура ОперацияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
       Элементы.Операция.СписокВыбора.Очистить();
       Элементы.Операция.СписокВыбора.ЗагрузитьЗначения(Получить_Операцию());
КонецПроцедуры

П.С. если перенести в процедуру "ПриИзменении" - тоже нет списка.

2) "уберите ДанныеВыбора... так как они лишние, там в расширении формы ДанныеВыбора = Элемент."
Ничего не изменилось
//---------------------------------------------
UPD: Поставил в свойствах поля флажок "РежимВыбораИзСписка" и заработало в процедуре "НачалоВыбора", дублирование исчезло. 32000000.gif

Автор: fly 25.11.19, 9:51

Цитата(Inkognito @ 24.11.19, 23:15) *
Теперь вообще нет списка. Проверил, процедура вообще не отрабатывает:

ок, значит работает в событии
НачалоВыбора

там какая то беда в 1С, в событии начало выбора из списка....
хз, ранее встречал проблему писали, что не отрабатывается

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

просто изменить в коде Вместо Элементы.Оперция.... - поставьте Элемент.СписокВыбора

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua