Вопрос № 60538: Здравствуйте, эксперты! Нужно, чтобы из формы элемента справочника (Спр1) ,
при нажатии на кнопку, открывалась форма подбора другого справочника (Спр2),
но в ней отражались не все элементы Спр2, а только те, которые имеют такое же
знач...Вопрос № 60637: Есть форма на ней нисподающие списки
имя у них не затейливое ВыбГруппаN где N=1..13
вопрос как их обработать в цикле??? а не каждое имя вдабливать в модуль
ну что бы получилось что то вроде
см. приложение
оно работа...
Вопрос № 60.538
Здравствуйте, эксперты! Нужно, чтобы из формы элемента справочника (Спр1) ,
при нажатии на кнопку, открывалась форма подбора другого справочника (Спр2),
но в ней отражались не все элементы Спр2, а только те, которые имеют такое же
значение определенного реквизита, как и текущий элемент Спр1. Т.е если текущий элемент
Спр1 имеет значение реквизита Цвет "Черный", то отображаться в форма подбора будут только
те элементы Спр2, которые имеют значение реквизита Цвет "Черный".
Для этого, в форме элемента Спр1 определяю значение нужного реквизита и передаю
в форму подбора в качестве контекста :
ОткрытьПодбор("Справочник.Спр2", "ФормаПодбора", конт, 1)
Затем в модуле формы подбора надо создать процедуру (При Открытии???) и с помощью
метода УстановитьОтбор, выбрать нужные элементы. Пробовала по-разному.
Теперь форма не окрывается. Подскажите, что там писать в процедуре в форме подбора?
Отправлен: 29.10.2006, 10:45
Вопрос задала: Lena (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Elric
Здравствуйте, Lena!
Рекомендую в данном случае пользоваться не отбором по реквизиту, а методом формы списка справочника ИспользоватьСписокЭлементов(). Т. е. сначала запросом формируете список элементов (список значений), которые должны отображаться в форме списка для выбора, затем применяете в этой форме указанный метод.
--------- Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 29.10.2006, 14:05
Вопрос № 60.637
Есть форма на ней нисподающие списки
имя у них не затейливое ВыбГруппаN где N=1..13
вопрос как их обработать в цикле??? а не каждое имя вдабливать в модуль
ну что бы получилось что то вроде
см. приложение
оно работает если ИмяОбъекта это явно указанно ВыбГруппа1...ВыбГруппа13
а как сделать что бы оно работало по имени объекта,
а то ломает меня 13 раз копировать один и тот же блок.................
Приложение:
Отправлен: 30.10.2006, 08:32
Вопрос задал: Владислав (статус: Студент)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ATan
Здравствуйте, Владислав!
Процедура Сформировать()
спрПоставщики = СоздатьОбъект("Справочник.Поставщик");
Для к = 1 По 4 Цикл
ТекПоставщик = "ВыбПоставщик"+Строка(к);
Шаблон("[спрПоставщики.НайтиЭлемент("+ТекПоставщик+")]");
//в перем. спрПоставщики будет то самое значение
//которое было на форме в перемнных ВыбПоставщик1,
//ВыбПоставщик2,ВыбПоставщик3,ВыбПоставщик4....
КонецЦикла;
КонецПроцедуры
Удачи.
Ответ отправил: ATan (статус: 1-ый класс)
Ответ отправлен: 30.10.2006, 11:11 Оценка за ответ: 3 Комментарий оценки: ну пишу я ему ИмяОбъекта="ВыбГруппа"+Строка(Сч); Шаблон("["+ИмяОбъекта+".УдалитьВсе()]");
а в ответ получаю Обращение к процедуре объекта как к функции (УдалитьВсе)
Отвечает: Ahab
Здравствуйте, Владислав!
К предыдущему ответу:
Ну да, функция Шаблон возвращает строку заменяя вычисляя то что находится в квадратных скобках - а там у тебя как раз процедура, не возвращающая никакого значения...
Как я помню, тебе надо создать функцию типа
Функция УдалитьЗначенияСписка(Спис)
Спис.УдалитьВсе();
Возврат 1;
КонецФункции;
И использовать:
Шаблон("[УдалитьЗначенияСписка("+ИмяОбъекта+")]");
попробуй.... давно было, но я кажется так делал ;)
Ответ отправил: Ahab (статус: 3-ий класс)
Ответ отправлен: 30.10.2006, 14:14 Оценка за ответ: 5 Комментарий оценки: Огромное СПАСИБО!!! Работает!!
Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Владислав!
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 19:59 Оценка за ответ: 3 Комментарий оценки: не работает :)
Отвечает: Elric
Здравствуйте, Владислав!
К предыдущему ответу от Ahab.
Какой смысл писать функцию для удаления значений списка? Логичнее написать функцию, выполняющую сразу все действия... А то ведь если на каждое отдельное действие со списком новую функцию писать...
Функция ДействияСоСписком(Список, СсылкаНаТовар, ТабКальк)
ТабКальк.ВыбратьСтроки();
Список.УдалитьВсе();
Пока ТабКальк.ПолучитьСтроку()=1 Цикл
Если (ТабКальк.Товар.ПринадлежитГруппе(СсылкаНаТовар)=1) и (ТабКальк.ОстТовара>0) тогда
Список.ДобавитьЗначение(ТабКальк.Товар.Код,ТабКальк.Товар.Наименование);
КонецЕсли;
КонецЦикла;
Возврат 1;
КонецФункции;
И потом вызов функции в цикле
Для сч=1 По 13 Цикл
СправочникТовара.НайтиПоКоду(КодГруппы[сч],0);
//Это масив кодов нужных мне групп товаров
СсылкаНаТовар=СправочникТовара.ТекущийЭлемент();
Шаблон("[ДействияСоСписком(ВыбГруппа"+Сч+",СсылкаНаТовар,ТабКальк)]");
КонецЦикла;
--------- Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 31.10.2006, 00:35 Оценка за ответ: 5
Отвечает: Karanskiy Arkadiy
Здравствуйте, Владислав!
Если я Вас правильно понял, то попробуйте воспользоваться методом ПолучитьАтрибут("ВыбГруппа"+к);, где к - это число с 1..13.
Успехов...
Ответ отправил: Karanskiy Arkadiy (статус: 4-ый класс)
Ответ отправлен: 31.10.2006, 16:37 Оценка за ответ: 3 Комментарий оценки: не пашет ответ 1С не известный объект