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

Создать программно СписокВыбора

Автор Public_enemy, 29 дек 2011, 20:42

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

Public_enemy

Чет совсем нет желающих подсказать.
Куда все пропали "спецы".  А-у блин..........

Dethmontt

В процедуру то входит хоть?

СтандартнаяОбработка = Ложь;
Элемент.Значение = ВыбранноеЗначение; //А так?
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Public_enemy

Весь текст кода изложен выше.  Осталась процедура обработки выбора

&НаКлиенте
Процедура
ТаблицаПокупокЦенаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   
     Строка = Элементы.ТаблицаПокупок.ТекущиеДанные;
     Строка.Цена = ВыбранноеЗначение;
     
КонецПроцедуры


В данном примере все прекрасно, но в результате присвоения значения получается ноль.

В варианте предложенном вами выпадает ошибка:{Документ.Покупки.Форма.ФормаДокумента.Форма(182)}: Поле объекта не обнаружено (Значение)
     Элемент.Значение = ВыбранноеЗначение;

Пробовал так:
&НаКлиенте
Процедура
ТаблицаПокупокЦенаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

Строка = Объект.ТаблицаПокупок;
Строка.Цена = ВыбранноеЗначение;

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

Результат: ошибка "Поле объекта не обнаружено"

Public_enemy

&НаКлиенте
Процедура
ТаблицаПокупокЦенаОбработкаВыбора(Элемент,ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
   
     Строка = Элементы.ТаблицаПокупок.ТекущиеДанные;
     Строка.Цена =ВыбранноеЗначение.Значение;
КонецПроцедуры


В таком варианте значение в Строка.Цена сохраняется но выпадает ошибка при записи:


Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'valList':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/logform}valList
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'value':
   форма: Элемент
   имя: {http://v8.1c.ru/8.1/data/core}value
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ЭлементСпискаЗначений'




Весь текст кода:

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


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

    Запрос.УстановитьПараметр("СтрокаТаблицы",СтрокаТаблицы);
    Результат = Запрос.Выполнить().Выбрать();
    Список = Новый  СписокЗначений;

    Пока Результат.Следующий() Цикл
         Список.Добавить(Результат.Цена);
       
    КонецЦикла;
   
     Возврат
Список;
КонецФункции

&НаКлиенте
Процедура
ТаблицаПокупокЦенаОбработкаВыбора(Элемент,ВыбранноеЗначение, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
   
     Строка = Элементы.ТаблицаПокупок.ТекущиеДанные;
     Строка.Цена = ВыбранноеЗначение.Значение;
КонецПроцедуры

Public_enemy

Вроде вопрос решил.   Текст  кода



Все получается: Список создается, выбор из списка обрабатывается, значение сохраняется.
Ошибок при проведении не выдает.


Тока при каждом нажатии на "КнопкаСпискаВыбора" под строкой, уже после выбора, появляется еще строка такого же размера,
исчезает когда строка становиться не активной (нажатие enter  либо переключение на другой объект)



Кто может объясните  почему так?????

vitaliyua

Ваша ошибка в следующем:

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

Теги:

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

Рейтинг@Mail.ru

Поиск