Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 338
от 04.11.2006, 11:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 276, Экспертов: 37
В номере:Вопросов: 2, Ответов: 6


Вопрос № 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С не известный объект


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное