Представление в списке выбора поля формы
Здравствуйте форумчане. Возникла проблема.
Есть документ с табличной частью. В ней есть поле "Номенклатура" с типом СправочникСсылка. По умолчанию необходимо сделать так, чтобы при наборе в списке выбора высвечивалось не только название, но и штрихкод номенклатуры. Причем именно при наборе, а не в форме выбора. При этом представление элемента менять нельзя, это должно быть просто название.
В модуле менеджера справочника номенклатура я изменил данные выбора
В параметр ДанныеВыбора попадает переменная с типом СписокЗначений, в которой каждый элемент это строка где наименование номенклатуры соединено со штрихкодом.
В модуле формы я добавил процедуру обработки выбора
В отладчике в переменную Элемент попадает ссылка на нужный элемент справочника, при этом на форме при выборе элемента ничего не происходит, ссылка в поле не попадает. В чем может быть причина?
Есть документ с табличной частью. В ней есть поле "Номенклатура" с типом СправочникСсылка. По умолчанию необходимо сделать так, чтобы при наборе в списке выбора высвечивалось не только название, но и штрихкод номенклатуры. Причем именно при наборе, а не в форме выбора. При этом представление элемента менять нельзя, это должно быть просто название.
В модуле менеджера справочника номенклатура я изменил данные выбора
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = ОбщийМодульСервер.ПолучитьДанныеВыбораДляНоменклатуры(Параметры.СтрокаПоиска)
КонецПроцедуры
В параметр ДанныеВыбора попадает переменная с типом СписокЗначений, в которой каждый элемент это строка где наименование номенклатуры соединено со штрихкодом.
В модуле формы я добавил процедуру обработки выбора
&НаКлиенте
Процедура НоменклатураНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ШтрихкодИзПредставления = ПолучитьШтрихкодИзПредставления(ВыбранноеЗначение);
Ссылка = ПолучитьНоменклатуруПоШтрихкодуБезКонтекста(ШтрихкодИзПредставления);
Элемент = Ссылка;
КонецПроцедуры
ПоказатьВ отладчике в переменную Элемент попадает ссылка на нужный элемент справочника, при этом на форме при выборе элемента ничего не происходит, ссылка в поле не попадает. В чем может быть причина?
По теме из базы знаний
- Выбор месяца (периода) на управляемой форме
- Простые радости жизни программиста 1С: выбор типа значения
- Готовые механизмы 1С: ЗУП, представления
- Решение задач на Управляемые формы из Сборника задач для подготовки к экзамену 1С:Специалист по платформе
- Дополнительные параметризуемые поля в динамических списках. Остатки и цены в списке номенклатуры
Найденные решения
Решение найдено.
Все очень просто. В список значений надо передавать не строку, а ссылку. А для того чтобы изменить представление ссылки в этом списке надо задать параметр, он так и называется "Представление" и никаких событий формы не надо, все идет в рамках модуля менеджера.
Все очень просто. В список значений надо передавать не строку, а ссылку. А для того чтобы изменить представление ссылки в этом списке надо задать параметр, он так и называется "Представление" и никаких событий формы не надо, все идет в рамках модуля менеджера.
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = ПолучитьДанныеВыбораДляНоменклатуры(Параметры.СтрокаПоиска)
КонецПроцедуры
Функция ПолучитьДанныеВыбораДляНоменклатуры(Элемент)
СписокНоменклатур = Новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СправчникНоменклатура.Наименование + "" ("" + ШтрихкодыНоменклатуры.Штрихкод + "")"" КАК Представление,
| СправчникНоменклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК СправчникНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО (ШтрихкодыНоменклатуры.Номенклатура = СправчникНоменклатура.Ссылка)
|ГДЕ
| СправчникНоменклатура.Наименование ПОДОБНО &Наименование";
Запрос.УстановитьПараметр("Наименование", "%" + Элемент + "%");
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СписокНоменклатур.Добавить(Выборка.Ссылка, Выборка.Представление)
КонецЦикла;
Возврат СписокНоменклатур
КонецФункции
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(4) Список значений формируется через запрос с условием Где Подобно %НаименованиеНоменклатуры%, там я объединяю два поля в представление где имя номенклатуры и штрихкод идут уже вместе.
ВыбранноеЗначение это тоже самое, то есть тоже строка. Но затем я с помощью 2 функций (ПолучитьШтрихкодИзПредставления и ПолучитьНоменклатуруПоШтрихкодуБезКонтекста) получаю ссылку, которую передаю в Элемент.
ВыбранноеЗначение это тоже самое, то есть тоже строка. Но затем я с помощью 2 функций (ПолучитьШтрихкодИзПредставления и ПолучитьНоменклатуруПоШтрихкодуБезКонтекста) получаю ссылку, которую передаю в Элемент.
Решение найдено.
Все очень просто. В список значений надо передавать не строку, а ссылку. А для того чтобы изменить представление ссылки в этом списке надо задать параметр, он так и называется "Представление" и никаких событий формы не надо, все идет в рамках модуля менеджера.
Все очень просто. В список значений надо передавать не строку, а ссылку. А для того чтобы изменить представление ссылки в этом списке надо задать параметр, он так и называется "Представление" и никаких событий формы не надо, все идет в рамках модуля менеджера.
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = ПолучитьДанныеВыбораДляНоменклатуры(Параметры.СтрокаПоиска)
КонецПроцедуры
Функция ПолучитьДанныеВыбораДляНоменклатуры(Элемент)
СписокНоменклатур = Новый СписокЗначений;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СправчникНоменклатура.Наименование + "" ("" + ШтрихкодыНоменклатуры.Штрихкод + "")"" КАК Представление,
| СправчникНоменклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК СправчникНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО (ШтрихкодыНоменклатуры.Номенклатура = СправчникНоменклатура.Ссылка)
|ГДЕ
| СправчникНоменклатура.Наименование ПОДОБНО &Наименование";
Запрос.УстановитьПараметр("Наименование", "%" + Элемент + "%");
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СписокНоменклатур.Добавить(Выборка.Ссылка, Выборка.Представление)
КонецЦикла;
Возврат СписокНоменклатур
КонецФункции
Показать
(11) Вообще, на будущее, в таких случаях синтакс-помощник может помочь) В котором написано подобное:
СписокЗначений (ValueList)
Добавить (Add)
Синтаксис:
Добавить(<Значение>, <Представление>, <Пометка>, <Картинка>)
Параметры:
<Значение> (необязательный)
Тип: Произвольный.
Значение, которое необходимо добавить.
<Представление> (необязательный)
Тип: Строка; ФорматированнаяСтрока.
Строковое выражение, содержащее представление добавляемого значения.
Значение по умолчанию: Пустая строка.
<Пометка> (необязательный)
Тип: Булево.
Определяет, создавать новое значение с установленной пометкой или без пометки.
Значение по умолчанию: Ложь.
<Картинка> (необязательный)
Тип: Картинка.
Визуальное представление значения.
Значение по умолчанию: Пустая картинка.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений.
Описание:
Добавляет новый элемент в конец списка значений.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
ПоказатьДобавить (Add)
Синтаксис:
Добавить(<Значение>, <Представление>, <Пометка>, <Картинка>)
Параметры:
<Значение> (необязательный)
Тип: Произвольный.
Значение, которое необходимо добавить.
<Представление> (необязательный)
Тип: Строка; ФорматированнаяСтрока.
Строковое выражение, содержащее представление добавляемого значения.
Значение по умолчанию: Пустая строка.
<Пометка> (необязательный)
Тип: Булево.
Определяет, создавать новое значение с установленной пометкой или без пометки.
Значение по умолчанию: Ложь.
<Картинка> (необязательный)
Тип: Картинка.
Визуальное представление значения.
Значение по умолчанию: Пустая картинка.
Возвращаемое значение:
Тип: ЭлементСпискаЗначений.
Описание:
Добавляет новый элемент в конец списка значений.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
В этой процедуре
Нужно сделать так:
&НаКлиенте
Процедура НоменклатураНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ШтрихкодИзПредставления = ПолучитьШтрихкодИзПредставления(ВыбранноеЗначение);
Ссылка = ПолучитьНоменклатуруПоШтрихкодуБезКонтекста(ШтрихкодИзПредставления);
Элемент = Ссылка;
КонецПроцедуры
Нужно сделать так:
&НаКлиенте
Процедура НоменклатураНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ШтрихкодИзПредставления = ПолучитьШтрихкодИзПредставления(ВыбранноеЗначение);
Ссылка = ПолучитьНоменклатуруПоШтрихкодуБезКонтекста(ШтрихкодИзПредставления);
ВыбранноеЗначение = Ссылка;
КонецПроцедуры
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)