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