Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор значения реквизита из нескольких видов документов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
vadim007
В общем, на форме есть реквизит неопределенного типа, в котором будут храниться ссылки на документы из журнала Складские.
Как при нажатии на кнопку выбора на таком реквизите получить список (диалог) выбора документов в стиле журнала Складские?
igmig65
Сделайте реквизит недоступным, а просто рядом создайте кнопку, и уже в ней пропишите процедуру, в которой опишите алгоритм заполнения вашего реквизита, можно ч-з ОткрыитПодбор(...), можно ч-з ОткрытьФорму, можно с-з Выбрать(...). Все зависит от конечного результата, который вы хотите получить.
Цитата(vadim007)
есть реквизит неопределенного типа, в котором будут храниться ссылки на документы из журнала Складские.

Зачем неопр.типа, скорей всего вам лучше сделать список, или поле со списком, а кнопкой заполнять этот список нужными доками.
vadim007
Немного расширю пояснение: я сейчас использую следующий вызов
ОткрытьПодбор("Журнал.Складские",,Контекст,0);

Журнал открывается, по двойному клику на строке журнала (при выборе) журнал закрывается, но вызова процедуры ОбработкаПодбора(..) не происходит.
Почему?
Стрелок
Цитата(vadim007 @ 14.08.12, 8:36) необходимо зарегистрироваться для просмотра ссылки
Немного расширю пояснение: я сейчас использую следующий вызов
ОткрытьПодбор("Журнал.Складские",,Контекст,0);

Журнал открывается, по двойному клику на строке журнала (при выборе) журнал закрывается, но вызова процедуры ОбработкаПодбора(..) не происходит.
Почему?


Форма.ВыполнитьВыбор(<?>);
Синтаксис:
Форма.ВыполнитьВыбор(<Знач>)
Назначение:
Осуществляет выбор в форме, открытой для подбора или выбора значения (аналогично интерактивному двойному клику в подборе).
Параметры:
<Знач> - значение, которое выбирается в форме, открытой для подбора или выбора значения.
Замечание:
Доступ к методу возможен только в контексте Модуля формы через атрибут Форма.

Процедура ПриВыбореСтроки()
КонецПроцедуры
Синтаксис:
ПриВыбореСтроки()
Назначение:
Предопределенная процедура при выборе строки списка.
Замечание:
Режим обработки выбора строки (двойной щелчок мыши или клавиша Enter) предопределенной процедурой ПриВыбореСтроки включается в форме списка справочника, журнала, счетов, журнала операций, журнала проводок при помощи метода Форма.ОбработкаВыбораСтроки(1). Данная процедура может располагаться только в программном модуле формы.
vadim007
Удалось победить с помощью процедуры ОбработкаВыбораЗначения(..).
Так что получается:
- при работе с подбором для справочников система вызывает процедуру ОбработкаПодбора(..)
- при работе с подбором для журналов система вызывает процедуру ОбработкаВыбораЗначения(..)
Странно...
Cthulhu
Цитата(vadim007 @ 14.08.12, 8:48) необходимо зарегистрироваться для просмотра ссылки
Удалось победить с помощью процедуры ОбработкаВыбораЗначения(..).
Так что получается:
- при работе с подбором для справочников система вызывает процедуру ОбработкаПодбора(..)
- при работе с подбором для журналов система вызывает процедуру ОбработкаВыбораЗначения(..)
Странно...

Не странно. Потому что совсем все не так. Не следует путать "выбор" с "подбором" - это, как говорят в Одессе, "две большие разницы".

При нажатии на кнопку выбора значения срабатывают:
1) ПриНачалеВыбораЗначения - перед началом открытия формы для выбора (стандартной формы списка для агрегатных данных)
2) ОбработкаВыбораЗначения - при завершении выбора (без отказа от выбора).

При программном(!) вызове системной процедуры "ОткрытьПодбор" - открывается указанная в параметрах форма (вообще, в принципе, любая - прикольно, можно даже форму документа открыть или обработки; для агрегатных данных открывается указанная форма списка или стандартная). Если в такой форме списка выполнить выбор - вызывается процедура ОбработкаПодбора модуля формы, из которой был открыт подбор.

В вашем случае "более идеальным" было бы использование следующего приема (прием "подмена штатной формы выбора").
1. Не открывать никаких подборов.
2. В процедуре ПриНачалеВыбораЗначения:
2.1. Обнулить флаг стандартной обработки (второй параметр процедуры).
2.2. Принудительно открыть для выбора нужную форму нужного журнала.\
При этом после выбора система отработает точно так, как будто вы выполнили штатный выбор (не путать с подбором!) - получит выбранное значение "куда надо" и передаст управление в ОбработкаВыбораЗначения.

added:
п.2.2. - "Принудительно открыть для выбора нужную форму нужного журнала" - в смысле программно, тут же, с помощью "ОткрытьФорму" - она откроется в режиме выбогра значения. wink.gif
xxc
Удалось победить:
Процедура ПриНачалеВыбораЗначения( ид, фл )
    фл = 0;
    ОткрытьПодбор( "Журнал.Складские" );
КонецПроцедуры

Процедура ОбработкаВыбораЗначения( зн )
    Форма.Документ.УстановитьТип( зн );
КонецПроцедуры


Пример: необходимо зарегистрироваться для просмотра ссылки (82 944 байт) - фор
Cthulhu
Цитата(xxc @ 18.08.12, 13:52) необходимо зарегистрироваться для просмотра ссылки
Удалось победить:

читайте внимательнее. правильнее не "открытьподбор", но "открытьформу".

added:
и тогда не нужно никакой явной установки значения реквизита в "обработкавыборазначения" - само отработает так, как будто форма выбора просто подменена.
Cthulhu
added:
не, я неправ. работает - не трогай, Ok.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.