|
Проблема с программным добавлением поля ввода на форму списка в 1с УНФ | ☑ | ||
---|---|---|---|---|
0
zuu_soo
13.08.24
✎
13:33
|
Здравствуйте! прошу помочь, хочу добавить поле ввода для осуществления отбора на форму списка, поле ввода добавляется, но оно почему-то неактивно, хотя на форме документа проверяла, там все ок.
Прикрепила, как это должно выглядеть, первые отборы это встроенные, а последнее пустое поле ввода это мое: https://disk.yandex.ru/i/yZEBAE5FNqPE-Q Подскажите пожалуйста, почему не дает возможности выбирать из списка выбора? Процедура Расш1_ПриСозданииНаСервереПосле(Форма, ДополнительныеПараметры) ГруппаОтборСтатусЗаказа = Элементы.Вставить("ГруппаОтборСтатусЗаказа", Тип("ГруппаФормы"), Элементы.ГруппаОтборы); ГруппаОтборСтатусЗаказа.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаОтборСтатусЗаказа.Заголовок = "Статус заказа"; ГруппаОтборСтатусЗаказа.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение; ГруппаОтборСтатусЗаказа.ОтображатьЗаголовок = Ложь; ГруппаОтборСтатусЗаказа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; ГруппаОтборСтатусЗаказа.РастягиватьПоГоризонтали = ИСТИНА; ОтборСтатусЗаказа = Элементы.Добавить("ОтборСтатусЗаказа ", Тип("ПолеФормы"), Элементы.ГруппаОтборСтатусЗаказа); ОтборСтатусЗаказа .Вид = ВидПоляФормы.ПолеВвода; ОтборСтатусЗаказа .ПутьКДанным = "Список.ОтборСтатусЗаказа"; ОтборСтатусЗаказа .Заголовок = НСтр("ru='Статус заказа'"); ОтборСтатусЗаказа .РежимВыбораИзСписка = Истина; ОтборСтатусЗаказа .ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; //вызов функции для отбора по статусу заказа ЗаполнитьСписокВыбораОтборСтатусЗаказа(ЭтаФорма, "ОтборСтатусЗаказа "); КонецПроцедуры Процедура ЗаполнитьСписокВыбораОтборСтатусЗаказа(Форма, ИмяПоляОтбора, СОтступом = Истина, МассивИсключений = Неопределено) КомпонентыФС = Новый Массив; Если МассивИсключений = Неопределено Тогда МассивИсключений = Новый Массив; КонецЕсли; Отступ = ?(СОтступом, " ", ""); Если МассивИсключений.Найти(1) = Неопределено Тогда // Группа КомпонентыФС.Добавить(БиблиотекаКартинок.БезОплатыОжидаетсяСегодня); КомпонентыФС.Добавить(" "); КомпонентыФС.Добавить(НСтр("ru='Создан'")); СтрокаПредставления = Новый ФорматированнаяСтрока(КомпонентыФС); Форма.Элементы[ИмяПоляОтбора].СписокВыбора.Добавить("Создан", СтрокаПредставления); КонецЕсли; Если МассивИсключений.Найти(2) = Неопределено Тогда // Группа КомпонентыФС.Очистить(); КомпонентыФС.Добавить(БиблиотекаКартинок.ОплаченЧастичноОжидаетсяСегодня); КомпонентыФС.Добавить(НСтр("ru='Готов к отгрузке'")); КомпонентыФС.Добавить(" "); СтрокаПредставления = Новый ФорматированнаяСтрока(КомпонентыФС); Форма.Элементы[ИмяПоляОтбора].СписокВыбора.Добавить("'Готов к отгрузке", СтрокаПредставления); КонецЕсли; Если МассивИсключений.Найти(3) = Неопределено Тогда КомпонентыФС.Очистить(); КомпонентыФС.Добавить(БиблиотекаКартинок.ОплаченЧастичноНеПросрочено); КомпонентыФС.Добавить(" "); КомпонентыФС.Добавить(НСтр("ru='На отгрузке'")); СтрокаПредставления = Новый ФорматированнаяСтрока(КомпонентыФС); Форма.Элементы[ИмяПоляОтбора].СписокВыбора.Добавить("На отгрузке", СтрокаПредставления); КонецЕсли; Если МассивИсключений.Найти(4) = Неопределено Тогда КомпонентыФС.Очистить(); КомпонентыФС.Добавить(БиблиотекаКартинок.ОплаченПолностью); КомпонентыФС.Добавить(" "); КомпонентыФС.Добавить(НСтр("ru='Отгружен'")); СтрокаПредставления = Новый ФорматированнаяСтрока(КомпонентыФС); Форма.Элементы[ИмяПоляОтбора].СписокВыбора.Добавить("Отгружен", СтрокаПредставления); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОтборСтатусЗаказаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) //срабатывает, когда жмешь на элемент из списка Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда Возврат; КонецЕсли; Если ВыбранноеЗначение = "Создан" Или ВыбранноеЗначение = "Готов к отгрузке" Или ВыбранноеЗначение = "На отгрузке" ИЛИ ВыбранноеЗначение = "Отгружен" Тогда УстановитьМеткуИОтборСписка("ОтборСтатусЗаказа", Элемент.Родитель.Имя, ВыбранноеЗначение); Иначе УстановитьМеткуИОтборСписка("НомерКартинкиСтатусаЗаказа", Элемент.Родитель.Имя, ВыбранноеЗначение); КонецЕсли; ВыбранноеЗначение = Неопределено; КонецПроцедуры //отбор по статусу заказа &НаКлиенте Процедура ОтборСтатусЗаказа(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда Возврат; КонецЕсли; УстановитьМеткуИОтборСписка("ОтборСтатусЗаказа", Элемент.Родитель.Имя, ВыбранноеЗначение); ВыбранноеЗначение = Неопределено; КонецПроцедуры |
|||
1
Мультук
13.08.24
✎
13:53
|
(0)
P.S. 1) Создаем внешнюю обработку. Создаем там динамический список. И начинаем "мама мыла раму". Внешняя обработка: а) быстро перезапускается б) Можно писать всякое и экспериментировать (учиться) 2) Статус это точно Строка, а не перечисление ? |
|||
2
zuu_soo
13.08.24
✎
13:57
|
(1) Статус это перечисление
|
|||
3
Мультук
13.08.24
✎
14:02
|
(2)
1) >> Статус это перечисление Где здесь перечисление ? Форма.Элементы[ИмяПоляОтбора].СписокВыбора.Добавить("На отгрузке", СтрокаПредставления); 2) У вас на рис есть поле отбора "Организация", что у нее написано в "ПутьКДанным" ? Мне лень думать, но имхо у вас в ПутьКДанным написано "не то, что надо" ОтборСтатусЗаказа = Элементы.Добавить("ОтборСтатусЗаказа ", Тип("ПолеФормы"), Элементы.ГруппаОтборСтатусЗаказа); ОтборСтатусЗаказа.Вид = ВидПоляФормы.ПолеВвода; ОтборСтатусЗаказа.ПутьКДанным = "Список.ОтборСтатусЗаказа"; |
|||
4
Garykom
13.08.24
✎
14:03
|
ОтборСтатусЗаказа.ПутьКДанным = "Список.ОтборСтатусЗаказа";
ху из? |
|||
5
zuu_soo
13.08.24
✎
16:44
|
(2) у организации путь к данным СправочникСсылка.Организация, если я ставлю в путь
ОтборСтатусЗаказа.ПутьКДанным = "ПеречислениеСсылка.СостоянияОтгрузкиЗаказа"; то падает ошибка при открытии формы списка: ПеречислениеСсылка.СостоянияОтгрузкиЗаказа Ошибка при установке значения атрибута контекста (ПутьКДанным) {Расширение Документ.ЗаказПокупателя.Форма.ФормаСписка.Форма(289)}:ОтборСтатусЗаказа.ПутьКДанным = "ПеречислениеСсылка.СостоянияОтгрузкиЗаказа"; |
|||
6
Мультук
13.08.24
✎
17:04
|
(5)
>>у организации путь к данным СправочникСсылка.Организация Это тип. Смотрите глазами внимательно (можно скриншот приложить) >>если я ставлю в путь >>ОтборСтатусЗаказа.ПутьКДанным = "ПеречислениеСсылка.СостоянияОтгрузкиЗаказа"; Если делать всякую хрень, то да -- будет хрень. Если к этому совсем не понимать, что делаешь -- вообще беда. P.S. Совет: Создайте этот реквизит "ОтборСтатусЗаказа" в форме руками с типом ПеречислениеСсылка.СостоянияОтгрузкиЗаказа Вытащите его опять же руками на форму. Посмотрите "а что там у него" в ПутьКДанным |
|||
7
zuu_soo
13.08.24
✎
17:08
|
(6)
Скриншот, где путь: https://disk.yandex.ru/i/gXe3jSogDwD2eA Скриншот свойств реквизита: https://disk.yandex.ru/i/bBMaCOfmVXdYvQ |
|||
8
Мультук
13.08.24
✎
17:25
|
(7)
И что мы видим? Поле ввода "ОтборОрганизация" смотрит на реквизит формы ОтборОрганизация А ваше поле ввода "ОтборСтатусЗаказа" которое вы создаете смотрит "хрен знает куда",а реквизит формы для вашего поля вы вообще не создаёте. а) Создайте руками реквизит формы "ОтборСтатусЗаказа" б) Вытащите его на форму в) далее занимайтесь ЗаполнитьСписокВыбораОтборСтатусЗаказа Сначала без всяких картинок Для динамического создания стоит прочитать https://infostart.ru/1c/articles/1118319/#_Toc18589859
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |