Горячая печать реквизитов (их значений ) документов с использованием FormEx

14.04.08

Учетные задачи - Печатные формы

Иногда хочется увидеть все реквизиты документа, в том числе и те, которые на форме отсутствуют.
Особенно, если они автоматом понаустанавливались.
Приведенный код позволяет по горячим клавишам CTRL+ALT+P получить распечатку ВСЕХ реквизитов, начиная от общих, заканчивая ТЧ. Код необходимо вставить в Глобальный модуль, или в Дополнительный глобальный модуль, подключенный с помощью Formex
// добавляем в ГМ или допГМ
// предопределенная процедура Formex.dll
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКл, Альт, Шифт, Контрол, Символ, ФСО)  
	ФормаРасш = СоздатьОбъект("РасширениеФормы");   
	Попытка
		ФормаРасш.УстановитьФорму(Конт.Форма);
	Исключение
		Возврат;
	КонецПопытки;   
	Тип=ФормаРасш.ТипОбъекта();  
	Если Тип="Документ" Тогда   
		// Распечатка документа по горячим клавишам CTRL+ALT+P   
		//(форма документа должна быть интерактивно открыта)
		Если (Контрол=1) И (Альт=1) И  (КодКл=80)   Тогда   
			Вид=Конт.Вид();  
			Таб=СоздатьОбъект("Таблица");
			Область=Таб.Область(1,1); 
			Область.РазмерШрифта(10);
			Область.Полужирный(1);   
			Область.ВысотаСтроки(12);
			Область.Текст=  Конт.ТекущийДокумент();       
			Область=Таб.Область(2,1); 
			Область.РазмерШрифта(10);
			Область.Полужирный(1);   
			Область.ВысотаСтроки(12);
			Область.РамкаОбвести(3,3,3,3);
			Область.ЦветФона(200,250,225); 
			Область.ШиринаСтолбца(20);    
			Область.Текст=  "ВР";       
			Область=Таб.Область(2,2);
			Область.РазмерШрифта(10);
			Область.Полужирный(1);   
			Область.ВысотаСтроки(12);
			Область.РамкаОбвести(3,3,3,3);
			Область.ЦветФона(200,250,225);
			Область.ШиринаСтолбца(20);    
			Область.Текст=  "Реквизит";       
			Область=Таб.Область(2,3);
			Область.РазмерШрифта(10);
			Область.ВысотаСтроки(12);
			Область.Полужирный(1);   
			Область.РамкаОбвести(3,3,3,3);
			Область.ЦветФона(200,250,225); 
			Область.ШиринаСтолбца(20);    
			Область.Текст=  "Значение";                     
			Стр=2;            
			// Общие реквизиты
			Для А=1 По Метаданные.ОбщийРеквизитДокумента() Цикл 
				Стр=Стр+1;
				ИД=Метаданные.ОбщийРеквизитДокумента(А).Идентификатор;
				Область=Таб.Область(Стр,1);
				Область.РамкаОбвести(3,3,3,3); 
				Область.РазмерШрифта(10);
				Область.Текст=  "ОБЩ"; 
				Область=Таб.Область(Стр,2);
				Область.РамкаОбвести(3,3,3,3);      
				Область.РазмерШрифта(10);
				Область.Текст=  ИД; 
				Область=Таб.Область(Стр,3);
				Область.РамкаОбвести(3,3,3,3);
				Область.РазмерШрифта(10);
				Область.Контроль(2);
				Область.Текст=  Конт.ПолучитьАтрибут(ИД); 
			КонецЦикла;             
			// Реквизиты шапки
			Для А=1 По Метаданные.Документ(Вид).РеквизитШапки() Цикл  
				Стр=Стр+1;
				ИД=Метаданные.Документ(Вид).РеквизитШапки(А).Идентификатор; 
				Область=Таб.Область(Стр,1);
				Область.РамкаОбвести(3,3,3,3);
				Область.РазмерШрифта(10);
				Область.Текст=  "  Ш"; 
				Область=Таб.Область(Стр,2);
				Область.РамкаОбвести(3,3,3,3);
				Область.РазмерШрифта(10);
				Область.Текст=  ИД; 
				Область=Таб.Область(Стр,3);
				Область.РамкаОбвести(3,3,3,3);
				Область.РазмерШрифта(10);   
				Область.Контроль(2);
				Область.Текст=  Конт.ПолучитьАтрибут(ИД); 
			КонецЦикла;  
			Если Конт.КоличествоСтрок()>0 Тогда
				Стр=Стр+1;  
				// выводим заголовки ТЧ (идентификаторы реквизитов)
				Для А=1  По Метаданные.Документ(Вид).РеквизитТабличнойЧасти() Цикл
					ИД=Метаданные.Документ(Вид).РеквизитТабличнойЧасти(А).Идентификатор;    
					Область=Таб.Область(Стр,А); 
					Область.РазмерШрифта(10);
					Область.Полужирный(1);   
					Область.ВысотаСтроки(12);
					Область.РамкаОбвести(3,3,3,3);
					Область.ЦветФона(200,250,225);    
					Область.ШиринаСтолбца(20);    
					Область.Контроль(2);
					Область.Текст=  ИД;       
				КонецЦикла;   
				// Выводим значения реквизитов ТЧ
				Конт.ВыбратьСтроки();
				Пока Конт.ПолучитьСтроку()=1 Цикл
					Стр=Стр+1;
					Для А=1 По Метаданные.Документ(Вид).РеквизитТабличнойЧасти() Цикл 
						ИД=Метаданные.Документ(Вид).РеквизитТабличнойЧасти(А).Идентификатор;  
						Область=Таб.Область(Стр,А);
						Область.РамкаОбвести(3,3,3,3);
						Область.РазмерШрифта(10); 
						Если Найти(ИД,"Номенклатура")=0 Тогда
							Область.Текст=  Конт.ПолучитьАтрибут(ИД);
						Иначе     
							Атр=Конт.ПолучитьАтрибут(ИД);
							Если Атр.НеВключатьВПрайс=1 Тогда
								Область.Текст=  "З:"+Конт.ПолучитьАтрибут(ИД); 
							Иначе
								Область.Текст=  "П:"+Конт.ПолучитьАтрибут(ИД); 
							КонецЕсли;  
						КонецЕсли; 
					КонецЦикла;   
				КонецЦикла;  
			КонецЕсли;
			Таб.Опции(0,0,1,0);
			Таб.Показать("Документ "+Вид); 
		КонецЕсли;            
	КонецЕсли;     
	ФормаРасш ="";     
КонецПроцедуры 

См. также

Печать документов от поставщика (счет, акт или торг-12, счет-фактура, универсальный передаточный документ) в Бухгалтерии 7.7 с учетом постановлений 625 и 981

Печатные формы Документооборот и делопроизводство (СЭД) Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)

Печать документов от поставщика (счет, акт или торг-12, счет-фактура, универсальный передаточный документ) в Бухгалтерии 7.7 на основании введенных в программу документов "Поступление товаров", "Услуги сторонних организаций" или "Поступление материалов". Доработка обработки от Harryson.

1 стартмани

04.05.2012    31398    114    ksv74    41    

59

Чек ККМ для 1С:Торговля и Склад 7.7 (внешняя печатная форма)

Печатные формы Кассовые операции Оперативный учет 7.7 1С:Торговля и склад 7.7 Платные (руб)

У Вас есть программа "1С:Торговля и Склад 7.7"... Вы знаете, что с ее помощью Вы можете легко и быстро автоматизировать свой магазин, не устанавливая дополнительных программ? Что для этого нужно? Нужна внешняя печатная форма чека. Стандартная программа не имеет в своем составе возможности печати чека ККМ из документа "Чек". Если же дополнить конфигурацию внешней печатной формой чека ккм (в его стандартном виде) - можно автоматизировать магазин с минимальными расходами и очень просто. Установите эту печатную форму и печатайте чеки из самого документа. Данное решение не организует рабочего места кассира (не предназначено для этого), но зато позволяет менеджеру распечатывать стандартные чеки очень просто и быстро - прямо из документа в программе 1С. Чтобы чек имел вид реального кассового чека - желательно использовать принтер чеков... и соответствующую к нему бумагу.

2400 руб.

01.05.2012    56672    13    20    

16

Печатные формы для печати от имени поставщика (Счет, ТОРГ-12, Счет-фактура)

Печатные формы Логистика, склад и ТМЦ Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)

Печать документов из Поступление товаров и Поступление материалов. Формы Счета, ТОРГ-12, Счет-фактура образца 2012 года.

1 стартмани

16.02.2012    18156    404    itsys    31    

26

Счет-фактура 2012 с выбором грузополучателя и грузоотправителя

Печатные формы Оптовая торговля Бухгалтер Оперативный учет 7.7 Бухгалтерский учет 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Россия Бухгалтерский учет Абонемент ($m)

Счет-фактура 2012 для 1С 7.7 "Торговля и склад" по Постановлению Правительства РФ от 26 декабря 2011 г. № 1137 с выбором грузополучателя и грузоотправителя.

1 стартмани

07.02.2012    22086    125    Ivanov_OM    7    

21

Счёт-фактура 1137 для "старых" ТиС

Печатные формы Оптовая торговля Бухгалтер Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Бухгалтерский учет Абонемент ($m)

Счёт-фактура по форме пост. 1137 для "старой" ТиС 7.7 (делалась под релиз 937)

1 стартмани

26.01.2012    28768    145    Timesoft    22    

28
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1550 14.04.08 10:26 Сейчас в теме
А еще лучше закинуть этот код в класс 1С++ и наслаждаться в любой конфе :)
2. maloi_a 14.04.08 17:54 Сейчас в теме
Внутренний оператор Если
Код
Если (Контрол=1) И (Альт=1) И  (КодКл=80)   Тогда
Показать полностью

надо сделать внешним, т. е. поставить его первым оператором,
и процедура будет эффективной.
3. Abadonna 3961 14.04.08 17:57 Сейчас в теме
>надо сделать внешним, т. е. поставить его первым оператором,
Тут ты неправ, потому как у меня лично на
Если Тип="Документ" Тогда срабатывает еще куча всяких прибамбасов, а это только кусок
4. CheBurator 3123 15.04.08 00:10 Сейчас в теме
..да... только русские с их изощренной фантазией могли назвать включатель выключателем...
5. O-Planet 6435 15.04.08 02:34 Сейчас в теме
Хм... А оно без FormEx-а - никак? Я вообще-то это делаю внешней обработкой...
6. Abadonna 3961 15.04.08 03:04 Сейчас в теме
>А оно без FormEx-а - никак?
>Я вообще-то это делаю внешней обработкой...
А еще можно на корове ездить, а не на лошади.
Ага! Запусти внешнюю обработку, выбери в ней документ... Планет, можно подумать, я до такой фигни не додумался.
Тут как раз весь смысл в горячих клавишах.
8. ADirks 186 15.04.08 12:37 Сейчас в теме
А кстати, на proclub'е есть обработина EditRekv.ert, которая позволяет не только просмотреть все реквизиты, но и отредактировать. Незаменимая вещь иногда.
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=1081
9. АЛьФ 15.04.08 22:30 Сейчас в теме
2(8) На прошлой моей работе она была подвешена на "клик по пустому месту на тулбаре". Жутко удобно :)
10. GSoft 2235 15.11.08 02:47 Сейчас в теме
Немножко изменил модуль
добавил печать синонима реквизита если он не совпадает с идентификатором и расшифровка

Код
//_____________________________________________________________________________
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКл, кнАльт, кнШифт, кнКонтрол, Символ)
   ФормаРасш = СоздатьОбъект("РасширениеФормы");   
   
   Попытка
      ФормаРасш.УстановитьФорму(Конт.Форма);
   Исключение
      Возврат;
   КонецПопытки;   
   
   Тип = ФормаРасш.ТипОбъекта();  
   
   Если Тип = "Документ" Тогда 
      //распечатка ВСЕХ реквизитов документа по горячим клавишам CTRL+ALT+P
      //начиная от общих, заканчивая ТЧ
      //(форма документа должна быть интерактивно открыта)
      Если (кнКонтрол = 1) И (кнАльт = 1) И  (КодКл = 80)   Тогда   
         Вид = Конт.Вид();  
         Таб = СоздатьОбъект("Таблица");
         Область = Таб.Область(1, 1); 
         Область.РазмерШрифта(10);
         Область.Полужирный(1);   
         Область.ВысотаСтроки(36);  
         Область.ВертикальноеПоложение(3);
         Область.Текст = Конт.ТекущийДокумент();       
         
         Область = Таб.Область(2, 1); 
         Область.РазмерШрифта(10);
         Область.Полужирный(1);   
         Область.ВысотаСтроки(12);
         Область.РамкаОбвести(3,3,3,3);
         Область.ЦветФона(200,250,225); 
         Область.ШиринаСтолбца(20);    
         Область.Текст = "ВР";       
         
         Область = Таб.Область(2,2);
         Область.РазмерШрифта(10);
         Область.Полужирный(1);   
         Область.ВысотаСтроки(12);
         Область.РамкаОбвести(3,3,3,3);
         Область.ЦветФона(200,250,225);
         Область.ШиринаСтолбца(20);    
         Область.Текст = "Реквизит";       
         
         Область = Таб.Область(2,3);
         Область.РазмерШрифта(10);
         Область.ВысотаСтроки(12);
         Область.Полужирный(1);   
         Область.РамкаОбвести(3,3,3,3);
         Область.ЦветФона(200,250,225); 
         Область.ШиринаСтолбца(20);    
         Область.Текст = "Значение";                     
         Стр = 2;        
         
         // Общие реквизиты
         Для А = 1 По Метаданные.ОбщийРеквизитДокумента() Цикл 
            Стр = Стр + 1;
            ИД = Метаданные.ОбщийРеквизитДокумента(А).Идентификатор;
            Пред = Метаданные.ОбщийРеквизитДокумента(А).Представление(); 
            Область = Таб.Область(Стр, 1);
            Область.РамкаОбвести(3,3,3,3); 
            Область.РазмерШрифта(10);
            Область.Текст = "ОБЩ"; 
         
            Область = Таб.Область(Стр, 2);
            Область.РамкаОбвести(3,3,3,3);      
            Область.РазмерШрифта(10);

            Если СокрЛП(ИД) = СокрЛП(Пред) Тогда
               Область.Текст = ИД; 
            Иначе
               Область.Текст = СокрЛП(ИД) + " (" + СокрЛП(Пред) + ")"; 
            КонецЕсли;
            
            Область = Таб.Область(Стр, 3);
            Область.РамкаОбвести(3,3,3,3);
            Область.РазмерШрифта(10);
            Область.Контроль(2);
            Область.Текст = Конт.ПолучитьАтрибут(ИД); 
            
            ТипЗначРекв = ТипЗначенияСтр(Конт.ПолучитьАтрибут(ИД));
            
            Если (ТипЗначРекв = "Справочник") или (ТипЗначРекв = "Документ") Тогда
                Область.Расшифровка(Конт.ПолучитьАтрибут(ИД)); 
            КонецЕсли;
         КонецЦикла;         
         
         // Реквизиты шапки
         Для А = 1 По Метаданные.Документ(Вид).РеквизитШапки() Цикл  
            Стр = Стр + 1;
            ИД = Метаданные.Документ(Вид).РеквизитШапки(А).Идентификатор; 
            Пред = Метаданные.Документ(Вид).РеквизитШапки(А).Представление(); 
            Область = Таб.Область(Стр, 1);
            Область.РамкаОбвести(3,3,3,3);
            Область.РазмерШрифта(10);
            Область.Текст = "  Ш"; 
            
            Область = Таб.Область(Стр, 2);
            Область.РамкаОбвести(3,3,3,3);
            Область.РазмерШрифта(10);
            
            Если СокрЛП(ИД) = СокрЛП(Пред) Тогда
               Область.Текст = ИД; 
            Иначе
               Область.Текст = СокрЛП(ИД) + " (" + СокрЛП(Пред) + ")"; 
            КонецЕсли;
            
            Область = Таб.Область(Стр, 3);
            Область.РамкаОбвести(3,3,3,3);
            Область.РазмерШрифта(10);   
            Область.Контроль(2);
            Область.Текст = Конт.ПолучитьАтрибут(ИД); 

            ТипЗначРекв = ТипЗначенияСтр(Конт.ПолучитьАтрибут(ИД));
            
            Если (ТипЗначРекв = "Справочник") или (ТипЗначРекв = "Документ") Тогда
                Область.Расшифровка(Конт.ПолучитьАтрибут(ИД)); 
            КонецЕсли;
         КонецЦикла;  
         
         Если Конт.КоличествоСтрок()>0 Тогда
            Стр = Стр + 1;  
            // выводим заголовки ТЧ (идентификаторы реквизитов)
            Для А = 1  По Метаданные.Документ(Вид).РеквизитТабличнойЧасти() Цикл
               ИД = Метаданные.Документ(Вид).РеквизитТабличнойЧасти(А).Идентификатор;    
               Пред = Метаданные.Документ(Вид).РеквизитТабличнойЧасти(А).Представление(); 
               Область = Таб.Область(Стр, А); 
               Область.РазмерШрифта(10);
               Область.Полужирный(1);   
               Область.ВысотаСтроки(12);
               Область.РамкаОбвести(3,3,3,3);
               Область.ЦветФона(200,250,225);    
               Область.ШиринаСтолбца(20);    
               Область.Контроль(2);

               Если СокрЛП(ИД) = СокрЛП(Пред) Тогда
                  Область.Текст = ИД; 
               Иначе
                  Область.Текст = СокрЛП(ИД) + " (" + СокрЛП(Пред) + ")"; 
               КонецЕсли;
            КонецЦикла;         
            
            // Выводим значения реквизитов ТЧ
            Конт.ВыбратьСтроки();
            Пока Конт.ПолучитьСтроку() = 1 Цикл
               Стр = Стр + 1;
               Для А = 1 По Метаданные.Документ(Вид).РеквизитТабличнойЧасти() Цикл 
                  ИД = Метаданные.Документ(Вид).РеквизитТабличнойЧасти(А).Идентификатор;  
                  Область = Таб.Область(Стр, А);
                  Область.РамкаОбвести(3,3,3,3);
                  Область.РазмерШрифта(10); 
                  Область.Текст = Конт.ПолучитьАтрибут(ИД); 

                  ТипЗначРекв = ТипЗначенияСтр(Конт.ПолучитьАтрибут(ИД));
                  
                  Если (ТипЗначРекв = "Справочник") или (ТипЗначРекв = "Документ") Тогда
                     Область.Расшифровка(Конт.ПолучитьАтрибут(ИД)); 
                  КонецЕсли;
               КонецЦикла;   
            КонецЦикла;  
         КонецЕсли;
      
         Таб.Опции(0,0,1,0);                 
           Таб.ТолькоПросмотр(1);
         Таб.Показать("Документ " + Конт.ТекущийДокумент()); 
      КонецЕсли;            
   КонецЕсли;     

   ФормаРасш = "";     
КонецПроцедуры 
Показать полностью
Abadonna; +1 Ответить
Оставьте свое сообщение