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

Промлема с Дополнительными реквизитами.

Автор virus555, 12 мар 2011, 20:32

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

virus555

Работаю на 1С 8.2 Конфигурация - Управление торговлей 11.0.4.6
Подскажите пожалуйста - Справочник Номенклатура в модуле ФормаЭлемента я вставил функцию "СформироватьАвтоНаименование ()" (текст ниже) для того что бы Она объединяла поля из пунктов "Дополнительные реквизиты" в одну строчку. Эта строчка с помощью ф-ции "НаименованиеНачалоВыбораИзСписка" вставляется в поле "Наименование" (т.е. нажимаешь на кнопочку открытия списка, и из списка выбираешь сформированную строку).

Так вот хотелось бы сделать так, чтобы при выборе какого-либо пункта из "Дополнительных реквизитов" запускалась ф-ция "СформироватьАвтоНаименование()" и автоматом строка вставлялась в Объект Наименование.

Знаю есть ф-ция "ПриИзменении(Элемент)", но к какому объекту её привязать? Ведь все "Объекты" из "Дополнительных реквизитов" формируются динамически и их нет в реквизитах????????



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

Элементы.Наименование.СписокВыбора.Очистить();

ИспользоватьСвойства = ПолучитьФункциональнуюОпциюФормы("ИспользоватьДополнительныеРеквизитыИСведения") ;

СтрокаНаименования = "";
Если ИспользоватьСвойства Тогда

НомерСвойства = 0;
Для Каждого ДополнительноеСвойство Из ЭтаФорма.__Свойства_ОписаниеДополнительныхРеквизитов Цикл
ЗначениеСвойства = ЭтаФорма[ДополнительноеСвойство.ИмяРеквизитаЗначение];
Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
НомерСвойства = НомерСвойства + 1;
СтрокаНаименования = СтрокаНаименования + ?(НомерСвойства = 1,"", ", ") + ЗначениеСвойства;
КонецЕсли;
КонецЦикла;

Если ЗначениеЗаполнено(СтрокаНаименования) Тогда
Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
Объект.Наименование = СтрокаНаименования;
КонецЕсли;

КонецЕсли;

Возврат СтрокаНаименования;

КонецФункции // СформироватьАвтоНаименование()


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

СтандартнаяОбработка = Ложь;

СформироватьАвтоНаименование();
ВыбранныйЭлемент = ВыбратьИзСписка(Элементы.Наименование.СписокВыбора, Элемент);
Если ВыбранныйЭлемент <> Неопределено Тогда
Объект.Наименование = ВыбранныйЭлемент.Значение;
КонецЕсли;

КонецПроцедуры // НаименованиеНачалоВыбораИзСписка()

virus555

НомерСвойства = 0;
Для Каждого ДополнительноеСвойство Из ЭтаФорма.__Свойства_ОписаниеДополнительныхРеквизитов Цикл
ЗначениеСвойства = ЭтаФорма[ДополнительноеСвойство.ИмяРеквизитаЗначение];
Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
НомерСвойства = НомерСвойства + 1;
СтрокаНаименования = СтрокаНаименования + ?(НомерСвойства = 1,"", ", ") + ЗначениеСвойства;
КонецЕсли;
КонецЦикла;

Если ЗначениеЗаполнено(СтрокаНаименования) Тогда
Элементы.Наименование.СписокВыбора.Добавить(СтрокаНаименования);
Объект.Наименование = СтрокаНаименования;
КонецЕсли;

КонецЕсли;

Возврат СтрокаНаименования;

КонецФункции // СформироватьАвтоНаименование()


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

СтандартнаяОбработка = Ложь;

СформироватьАвтоНаименование();
ВыбранныйЭлемент = ВыбратьИзСписка(Элементы.Наименование.СписокВыбора, Элемент);
Если ВыбранныйЭлемент <> Неопределено Тогда
Объект.Наименование = ВыбранныйЭлемент.Значение;
КонецЕсли;

КонецПроцедуры // НаименованиеНачалоВыбораИзСписка()

virus555

Сори почему-то не получается вставить полный текст

cska-fanat-kz

Форум недолюбливает квадратные скобки (

Для динамически создаваемых ЭУ есть метод УстановитьДействие - задаете имя события и имя процедуры, которая будет по нему выполняться.
Подробности - в СП.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск