Отбор по нескольким реквизитам в журнале (www.sinor.ru) Ключевые слова: отбор, журнал, справочник, реквизит, одновременно, множественный, документ, УстановитьОтбор
// Заводим общий реквизит документов "ВидДокументаКлиент"
// В Глобальном модуле.
Функция ПолучитьВнутрКод(Клиент) Экспорт
СписокЗн = СоздатьОбъект("СписокЗначений");
СписокЗн.ИзСтрокиСРазделителями(ЗначениеВСтрокуВнутр(Клиент));
ИД = СписокЗн.ПолучитьЗначение(7);
Возврат Сред(ИД,2,9);
КонецФункции
// Вызывается из документов ПриЗаписи()
Процедура глУстановитьРеквизитыОтбора(Конт) Экспорт
Конт.ВидДокументаКлиент=Конт.Вид();
Если глЕстьРеквизитШапки("Клиент",Конт.Вид()) = Да Тогда
Если ПустоеЗначение(Конт.Клиент) = 0 Тогда
Конт.ВидДокументаКлиент = СокрЛП(Конт.Вид())+СокрЛП(ПолучитьВнутрКод(Конт.Клиент));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// В журнале
УстановитьОтбор("ВидДокументаКлиент",ВыбВидДокумента.ПолучитьЗначение(ТС)+СокрЛП(ПолучитьВнутрКод(ВыбКлиент)));
Можно пойти и другим путем - завести в Конфигурации доп.справочник с реквизитами, соотвествующими значениям отбора и устанавливать отбор по элементам этого справочника. Пример реализации (одновременный отбор по выбранным фирме, контрагенту и виду документа) можно посмотреть здесь (http://www.sinor.ru/~filez/jur_otb3.zip).
От romix'а: если база SQL, то имеется возможность подменять SQL-запросы внешней компонентой.
Книга знаний: Множественный отбор в журналах и справочниках 7.7 заменой запросов SQL
Дополнение от Сергей Палыч:
правомочно ли так смело отрезать префикс базы создавшей объект
ИД = СписокЗн.ПолучитьЗначение(7);
Возврат Сред(ИД,2,9);
|