Ввод нового документа в общем журнале с фильтром по графе отбора журнала   

В есть единственная возможность сделать отбор в журнале по графе отбора – это сделать нужный нам журнал общим. Однако после этого, при попытке ввести новый документ нажатием клавиши «Insert» на экран выводится полный список документов в конфигурации. Мы же хотим, чтобы выводились только те, документы, которые участвуют в графе отбора. Сделать это несложно. Заставить выводить по клавише «Insert» нужный нам список мы не сможем, но можем сделать кнопку в журнале с надписью «Новый документ», при нажатии на которую в виде меню выводится список доступных для ввода документов.

Вот пример переделанного журнала «Касса» из стандартной бухгалтерской конфигурации, переделанной для многофирменного учета:

Журнал документов!

В журнале, при его открытии осуществляется отбор по текущей фирме, выбранной для работы. Соответственно, журнал сделан общим. Данная кнопка в сочетании с процедурой глобального модуля позволяет упростить работу бухгалтеров при вводе нового документа в переделанных журналах.

Формула для кнопки выглядит следующим образом: глВводНовогоДокументаПоГрафеОтбора(«КассаПоФирме»), где «КассаПоФирме» - название графы отбора журнала.

Текст процедуры глобального модуля представлен ниже:
Процедура глВводНовогоДокументаПоГрафеОтбора(ПармГрафаОтбора) Экспорт
    Если Метаданные.ГрафаОтбора(ПармГрафаОтбора).Выбран()=1 Тогда
        Колво=Метаданные.ГрафаОтбора(ПармГрафаОтбора).Ссылки.Количество();
        ТекСЗ=СоздатьОбъект("СписокЗначений");
        Для к=1 по Колво Цикл
            ТекСтрока=Метаданные.ГрафаОтбора(ПармГрафаОтбора).Ссылки.Получить(к).ПолныйИдентификатор();
            ТекПоз=Найти(ТекСтрока,"Документ.");
            Если ТекПоз>0 Тогда
                ТекСтрока=Сред(ТекСтрока,ТекПоз+9);
                ТекПоз=Найти(ТекСтрока,".");
                Если ТекПоз>0 Тогда
                    ТекСтрока=Лев(ТекСтрока,ТекПоз-1);
                    //теперь мы имеем документ
                    Если Метаданные.Документ(ТекСтрока).Выбран()=1 Тогда
                        ТекСиноним=Метаданные.Документ(ТекСтрока).Синоним;
                        Если ПустоеЗначение(ТекСиноним)=1 Тогда
                            ТекСЗ.ДобавитьЗначение(ТекСтрока,ТекСтрока);
                        Иначе
                            ТекСЗ.ДобавитьЗначение(ТекСтрока,ТекСиноним);
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        Колво=ТекСЗ.РазмерСписка();
        Если Колво>0 Тогда
            Если Колво=1 Тогда
                ОткрытьФорму("Документ."+ТекСЗ.ПолучитьЗначение(1));
            Иначе
                ТекПоз=0;
                Если ТекСЗ.ВыбратьЗначение(,,ТекПоз,,1)=1 Тогда
                    ОткрытьФорму("Документ."+ТекСЗ.ПолучитьЗначение(ТекПоз));
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры


 


 

Перепечатка, воспроизведение в любой форме, распространение, в том числе в переводе, любых материалов с сайта www.softpoint.ru возможны только с письменного разрешения компании "СофтПоинт". Это правило действует для всех без исключения случаев, кроме тех, когда в материале прямо указано разрешение на копирование (основание: Закон Российской Федерации "Об авторском праве и смежных правах").