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

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

  Все выпуски  

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 57
от 13.10.2005, 08:33

Администратор:Калашников О.А.
В рассылке:Подписчиков: 135, Экспертов: 15
В номере:Вопросов: 1, Ответов: 4


Вопрос № 27407: Здравствуйте, уважаемые эксперты! У меня вопрос по работе с объектом формы "Поле выбора"(или как его там). Если в атрибут "Формула" данного объекта прописать какую-нибудь процедуру, а затем описать ее в модуле формы, то он...

Вопрос № 27.407
Здравствуйте, уважаемые эксперты!
У меня вопрос по работе с объектом формы "Поле выбора"(или как его там).
Если в атрибут "Формула" данного объекта прописать какую-нибудь процедуру, а затем описать ее в модуле формы, то она выполнится, только, когда будет выбрано какое-то значение из справочника.
А мне необходимо, к примеру, чтобы в открываемом справочнике отображались только записи, удовлетворяющие заданным условиям
Отправлен: 08.10.2005, 07:46
Вопрос задал: Александр Веклюк (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Крайнов Александр Юрьевич
Здравствуйте, Александр Веклюк!
Для того, чтобы в открываемом справочнике отображались записи, удовлетворяющие заданным условиям необходимо:
1. К элемнту диалога (например к кнопке) привязать процедуру в атрибуте "Формула". так как у вас написано
2. В процедуре создать параметр, который будет передоваться открываемой форме справочника, например так:

СписокПараметровПодбора = СоздатьОбъект("СписокЗначений");
СписокПараметровПодбора.Установить("ТипНоменклатуры ", ТипНоменклатуры );
где ТипНоменклатуры, как раз условие.

3. Открыть форму подбора:
ОткрытьПодбор("Справочник.Номенклатура, "ДляПодбора", СписокПараметровПодбора);

В форме подбора справочника "Номенклатура" в модуле должна быть процедура
ПриОткрытии()
В ней мы проверяем полученный параметр, например так:

Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда

ТипНоменклатуры = Форма.Параметр.Получить("ТипНоменклатуры");

Если (ПустоеЗначение(ТипНоменклатуры) = 0) Тогда

УстановитьОтбор("ТипНоменклатуры", ТипНоменклатуры);

КонецЕсли;

КонецЕсли;

Строчка: УстановитьОтбор("ТипНоменклатуры", ТипНоменклатуры); как раз и есть фильтр.

Реквизит справочника ТипНоменклатуры должен иметь установленный флаг "Отбор по реквезиту"
---------
Эх, бананы кокосы...
Ответ отправил: Крайнов Александр Юрьевич (статус: 1-ый класс)
Отправлен: 08.10.2005, 08:57
Оценка за ответ: 5
Комментарий оценки:
спасибо за такой развернутый ответ

Отвечает: Temniy
Здравствуйте, Александр Веклюк!
Делаешь элемент диалога "реквизит диалога", рядом ставишь маленькую кнопку.
В процедуре этой кнопки пишешь:
справ=создатьОбъект("Справочник.Клиенты");
фильтр=<Строка по каким элементам хочешь фильтровать>; Например "Иванов" (это глобальная переменная)
справ.Выбрать("Выбор","Клиенты");
<твой реквизит диалога>=справ.ФИО;

В справочнике пишешь
Процедура ПриОткрытии()
УстановитьОтбор("фио",Фильтр);
КонецПроцедуры
Напоминаю у справочника есть несколько форм.
Это один из вариантов. Счастливо чё-то непонятно пиши помогу аська 291249458
---------
Не забывайте! Время идёт
Ответ отправил: Temniy (статус: 3-ий класс)
Отправлен: 08.10.2005, 17:33
Оценка за ответ: 5
Комментарий оценки:
тоже неплохой ответ

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Александр Веклюк!
Прийдется Вам поэкспериментировать с процедурой
ПриНачалеВыбораЗначения(ИдентЭлемДиалога,ФлагСтандОбр)
Если ИдентЭлемДиалога="МойРеквизит" Тогда
ФлагСтандОбр=0;
далее делаем, что хотим. Например, если выбираемых элементов справочника мало, меньше 10-15, тогда их вписываем в список значений и формируем выбор из списка
Если Сп.ВыбратьЗначение(Результ,"Выберите материально ответственное лицо", Поз, ,1)=1 Тогда
МойРеквизит=Результ;
Иначе Возврат;
КонецЕсли;
Если же список доступных элементов больше, то есть если список значений не будет вмещаться в экран (проверяется экспериментально) то можно сделать
так:
Создать в справочнике форму списка "ДляВыбораМоегоЗначения", в этой форме списка ПриОткрытии определяем список элементов для отображения и засовываем в список элементов. Далее даем этот список для отображения ИспользоватьСписокЭлементов(Сп) и устанавливаем неираерхический список ИерархическийСписок(0,0);(важно, иначе при отображении будут сплошные знаки вопроса)
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: 4-ый класс)
Отправлен: 10.10.2005, 10:07

Отвечает: Ovr1970
Здравствуйте, Александр Веклюк!
Для ограничения выбора справочника и не только используют процедуру ПриНачалеВыбораЗначения. Эта процедура вызывается перед выбором значения, соответственно Вы можете ограничивать список выбора как угодно и даже менять тип переменной (если она неопределенного типа).
Для ограничения элементов справочника используется процедура ИспользоватьСписокЭлементов(), но имейте ввиду, она действует только для текущего отображения (т.е. если вы отображаете первый уровень, то в списке должен присутствовать только первый уровень, а если весь справочник без учета иерархии, то , соответственно, все разрешенные элементы). При этом список разрешенных элементов Вам придется передать в модуль формы списка справочника , например через глобальную переменную.
Кстати, использовать атрубут формула принято только у реквизитов типа строка, число или дата. Для других типов реквизитов использование возможно, но является плохим тоном.
Ответ отправил: Ovr1970 (статус: 1-ый класс)
Отправлен: 10.10.2005, 10:17


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.1cprogfaq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное