В общем. Имеется запрос общий с табличными частями. Параметром передается наименование номенклатуры. Результат запроса: набор данных (ТЧ: длина, ширина, комплектующие - значениями выступают конкретные размеры (например: Длина: 1200,1400,1800)
Имеется поле выбора в который передается список вы
Нужно написать условие, которое выполняет следующий алгоритм:
Если в табличной части есть какие то записи то:
Если запись одна - сразу эту запись передавать в поле ввода.
Если записей несколько - передавать значения как форму списка.
Иначе поле делается недоступным.
Наличие/отсутствие записей лечится с помощью метода Пустой(). А вот как регулировать 1 запись или несколько я не совсем понял
Имеется поле выбора в который передается список вы
Нужно написать условие, которое выполняет следующий алгоритм:
Если в табличной части есть какие то записи то:
Если запись одна - сразу эту запись передавать в поле ввода.
Если записей несколько - передавать значения как форму списка.
Иначе поле делается недоступным.
Наличие/отсутствие записей лечится с помощью метода Пустой(). А вот как регулировать 1 запись или несколько я не совсем понял
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) К сожалению это не срабатывает.
В выборке есть ТЧ. Т.е. как это реализовано сейчас:
Пытаюсь приладить .Количество() - жалуется на метод
В выборке есть ТЧ. Т.е. как это реализовано сейчас:
Запрос.УстановитьПараметр("Ссылка",Изделие);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
//ДлинаКровати
ЭлементыФормы.ДлинаКровати.Доступность = Истина;
ЭлементыФормы.ДлинаКровати.Значение = "";
ВыборкаТЧ = Выборка.ДлинаКровати;
Если Не ВыборкаТЧ.Пустой() Тогда
ЭлементыФормы.ДлинаКровати.СписокВыбора.ЗагрузитьЗначения(ВыборкаТЧ.Выгрузить().ВыгрузитьКолонку("Значение"));
Иначе
ЭлементыФормы.ДлинаКровати.Доступность = Ложь
КонецЕсли;
ПоказатьПытаюсь приладить .Количество() - жалуется на метод
(10)
ВыборкаТЧ = Выборка.ДлинаКровати;
Если ВыборкаТЧ.Пустой() Тогда
ЭлементыФормы.ДлинаКровати.Доступность = Ложь
Иначе
Если (В выборке один элемент) Тогда (Сразу заполняем поле ввода и делаем его недоступным)
Иначе
ЭлементыФормы.ДлинаКровати.СписокВыбора.ЗагрузитьЗначения(ВыборкаТЧ.Выгрузить().ВыгрузитьКолонку("Значение"));
КонецЕсли;
КонецЕсли;
Показать
(11) Проверять количество ТЧ.
ВыборкаТЧ = Выборка.ДлинаКровати;
ТЧ = ВыборкаТЧ.Выгрузить();
Если ТЧ.Количество() = 0 Тогда
// нет элементов в ТЧ
ИначеЕсли ТЧ.Количество() = 1 Тогда
// 1 элемент. Делаем что нужно
ЭлементыФормы.ДлинаКровати.Доступность = Ложь
Иначе
ЭлементыФормы.ДлинаКровати.СписокВыбора.ЗагрузитьЗначения(ТЧ.ВыгрузитьКолонку("Значение"));
КонецЕсли;
Показать
(12)
Нужно не количество ТЧ проверять а количество записей внутри одной ТЧ.
Например: в ТЧ ШиринаКровати есть 5 записей (1200,1400,1600,1800,2000). Соответственно получаем форму списка для поля ввода.
в ТЧ ДлинаКровати есть только одно значение 2000 - вводим это значение в поле ввода и делаем поле недоступным.
в ТЧ Механизм подъема записей нет. Соответственно поле ввода сразу становится некдоступным
Нужно не количество ТЧ проверять а количество записей внутри одной ТЧ.
Например: в ТЧ ШиринаКровати есть 5 записей (1200,1400,1600,1800,2000). Соответственно получаем форму списка для поля ввода.
в ТЧ ДлинаКровати есть только одно значение 2000 - вводим это значение в поле ввода и делаем поле недоступным.
в ТЧ Механизм подъема записей нет. Соответственно поле ввода сразу становится некдоступным
(14)
Сделал так:
Если есть возможность было бы неплохо проверить на избыточность кода. В целом все работает
Сделал так:
Если есть возможность было бы неплохо проверить на избыточность кода. В целом все работает
ЭлементыФормы.ДлинаКровати.Доступность = Истина;
ЭлементыФормы.ДлинаКровати.Значение = "";
ВыборкаТЧ = Выборка.ДлинаКровати;
ТЧ = ВыборкаТЧ.Выбрать();
Если Не ВыборкаТЧ.Пустой() Тогда
Если ТЧ.Количество() = 1 Тогда
ТЧ.Следующий();
ЭлементыФормы.ДлинаКровати.Значение = ТЧ.Значение;
ЭлементыФормы.ДлинаКровати.Доступность = Ложь
Иначе
ЭлементыФормы.ДлинаКровати.СписокВыбора.ЗагрузитьЗначения(ВыборкаТЧ.Выгрузить().ВыгрузитьКолонку("Значение"));
КонецЕсли;
Иначе
ЭлементыФормы.ДлинаКровати.Доступность = Ложь
КонецЕсли;
ПоказатьЗапрос.Текст =
"ВЫБРАТЬ
| эл_Изделие.Ссылка,
| эл_Изделие.Код,
| эл_Изделие.Наименование,
| эл_Изделие.эл_СпинкаS,
| эл_Изделие.эл_КонтрастнаяОтстрочка,
| эл_Изделие.эл_Заглушка,
| эл_Изделие.эл_Стразы,
| эл_Изделие.ДлинаКровати.(
| Значение
| ),
| эл_Изделие.ШиринаКровати.(
| Значение
| ),
| эл_Изделие.Ткани.(
| Значение
| ),
| эл_Изделие.ОпорыДекоративныеФорма.(
| Значение
| ),
| эл_Изделие.ОпорыДекоративныеЦвет.(
| Значение
| ),
| эл_Изделие.ОпорыМеталлические.(
| Значение
| ),
| эл_Изделие.Царги.(
| Значение
| ),
| эл_Изделие.МеханизмПодъема.(
| Значение
| )
|ИЗ
| Справочник.эл_Изделие КАК эл_Изделие
|ГДЕ
| эл_Изделие.Ссылка = &Ссылка
| И НЕ эл_Изделие.ПометкаУдаления"
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот