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

Список значений в поле ввода, как правильно реализовать?

Автор SJslava, 13 апр 2015, 11:30

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

SJslava

Всем привет.
Работаю в 8.3.5
Только начинаю разбираться в платформе, до этого с 1С имел дело только как пользователь. Сейчас стоит задача написать свою небольшую конфу для нашего маленького предприятия. Накупил кучку книжек, сижу изучаю. Голова уже пухнет. Не могу своим мозгом понять как реализовать такой функционал:

Есть документ ЗаказНаряд в котором есть реквизит Комплектность с типом Поле ввода.
Ясен пень, у документа есть форма с этим реквизитом.
В форме документа, требуется вызывать кнопкой выбора (...) у этого поля, окно в котором можно отметить галочками значения которые по нажатию ОК в этом окне, попадут в это поле ввода.
Сами значения в этом окне должны браться из наименований элементов справочника Подстановки, причем из элементов находящихся в определенной группе этого справочника.
Поле ввода необходимо, что бы помимо того, что выберет пользователь, он мог в некоторых случаях дописать некоторые данные руками.

Прошу ткнуть носом как это сделать, ибо голова уже кипит...

SJslava

На всякий набросал как я себе это вижу.

cska-fanat-kz

если из справочника нужно выбрать НЕСКОЛЬКО значений то логично что их выбирают в ТАБЛИЧНУЮ ЧАСТЬ
а вот тип колонки может быть как ссылка на справочник, так и строка или составной (ссылка+строка).
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

SJslava

Цитата: cska-fanat-kz от 13 апр 2015, 13:08
если из справочника нужно выбрать НЕСКОЛЬКО значений то логично что их выбирают в ТАБЛИЧНУЮ ЧАСТЬ
а вот тип колонки может быть как ссылка на справочник, так и строка или составной (ссылка+строка).

Подскажите пожалуйста подробнее. Если возможно с примером кода.
Насколько я понимаю, в модуле формы где находится поле ввода, нужно создать две процедуры. Одна на сервере, которая будет получать таблицу элементов справочника. Вторая по событию НачалоВыбора у поля ввода в которой я задаю список значений и помещаю туда эту таблицу. Верно?

cska-fanat-kz

1. Посмотрите на Help1C.com примеры работы со справочником (https://helpf.pro/faq8/cat/9.html) и формами (https://helpf.pro/faq8/cat/39.html).
2. Основная мысль: список выбранных элементов из справочника должны "сидеть" не внутри поля ввода а в ТАБЛИЧНОЙ ЧАСТИ. Не спорю, что есть возможность задать полю ввода тип "СписокЗначений", но потом чтобы сохранить этот список в базе - замучаетесь.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

SJslava

Путем долгих мучений получилось добиться промежуточного результата.

Я написал функцию которая получает колонку "Наименование" справочника Подстановки, и вызвал ее в событии начала выбора в поле комплектности.

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

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Подстановки.Наименование КАК Наименование,
| Подстановки.ЭтоГруппа,
| Подстановки.Родитель
|ИЗ
| Справочник.Подстановки КАК Подстановки
|ГДЕ
|    Подстановки.ЭтоГруппа = ЛОЖЬ
| И Подстановки.Родитель = &Родитель";

Запрос.УстановитьПараметр("Родитель", Справочники.Подстановки.НайтиПоНаименованию("Комплектность"));

РезультатЗапроса = Запрос.Выполнить();


Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Наименование"));
Возврат Список;

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


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

Объект.Комплектность=ВыбратьИзСписка(Комплектность(), Элементы.Комплектность);

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


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

Но как я писал выше, мне требуется вызывать окно, в котором можно отметить галочками нужные мне значения и в результате заполнять этими значениями поле Комплектность.

Тут у меня случился ступор, из которого я не могу выйти. Прошу подсказать как это сделать.

cska-fanat-kz

Цитата: cska-fanat-kz от 14 апр 2015, 08:19
1. Посмотрите на Help1C.com примеры работы со справочником (https://helpf.pro/faq8/cat/9.html) и формами (https://helpf.pro/faq8/cat/39.html).
2. Основная мысль: список выбранных элементов из справочника должны "сидеть" не внутри поля ввода а в ТАБЛИЧНОЙ ЧАСТИ. Не спорю, что есть возможность задать полю ввода тип "СписокЗначений", но потом чтобы сохранить этот список в базе - замучаетесь.

вы пункт 2 читали? :kmtu:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

SJslava

Цитата: cska-fanat-kz от 17 апр 2015, 03:46вы пункт 2 читали?

Да, читал.


Насколько я понял Вы предлагаете, в форму документа поместить таблицу с значениями и флажками?
Мне очень критично именно поле ввода с таким функционалом как я описал выше, просто таблица в форме не подойдет :fdbsdfbsd:

cska-fanat-kz

Цитата: SJslava от 17 апр 2015, 07:26Мне очень критично именно поле ввода с таким функционалом как я описал выше, просто таблица в форме не подойдет

Почему?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

SJslava


  • К этому привыкли пользователи предыдущей базы.
  • Эту строку потом будет необходимо вывести на печатную форму.
  • Это экономит место на форме.
  • Да и просто это логичнее и удобнее целой таблицы на форме.

Подобная реализация в будущем будет прикручиваться к другим полям разных форм, поэтому все крутиться вокруг справочника Подстановки. Пойму как сделать с одним полем, смогу сделать с остальными.

Вроде осталось немного. Код:

        Если Комплектность().ОтметитьЭлементы("Комплектность") Тогда
        Для каждого Элемент из Комплектность() Цикл
Если Элемент.Пометка Тогда

                 //Тут не могу сообразить как действовать дальше
         
        КонецЕсли;
        КонецЦикла;
КонецЕсли;


Я доверяю Вашему опыту, я отразил Ваше предупреждение, но ведь возможно сделать так как это пытаюсь сделать я. Подскажите пожалуйста конкретнее, что мне делать дальше.

Теги:

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

Рейтинг@Mail.ru

Поиск