Горячая печать реквизитов (их значений ) документов с использованием 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);
			Таб.Показать("Документ "+Вид); 
		КонецЕсли;            
	КонецЕсли;     
	ФормаРасш ="";     
КонецПроцедуры 

См. также

Новые печатные формы Счет-фактур и УПД с 01.07.2021 постановления Правительства от 2 апреля 2021 г. № 534 (Архив для всех конфигураций)

Печатные формы Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Производство+Услуги+Бухгалтерия Россия Бухгалтерский учет Налоговый учет Абонемент ($m)

Внешние печатные формы Счета-Фактуры( СФ ) и Универсального Передаточного Документа( УПД ) (в редакции постановления Правительства Российской Федерации от 2 апреля 2021 г. № 534) для большинство конфигураций (УТ,БП,УПП,УСО,ЕРП,УНФ,Розница,КА) одним архивом. . Бонус печатные формы Счета-фактур и УПД для Бух.учета, ТиС, Комплексная конфигурация 4.5 1С 7.7; универсального корректировочного документа (УКД) для УТ10/УПП1/КА1 Внешние печатные формы (УПД, счет фактура) за поставщика из Управление торговли 10.3 (все релизы); УПП 1.3; УСО 1.3; КА 1.1; БП 2.0. Так же формы для прослеживаемых товаров с колонками (c РНПТ) . *поправлено от 19.12.2023

3 стартмани

25.06.2021    90819    1298    Kontakt    318    

24

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10094    malovandrey    2    

18

Счет-фактура и УПД 2017 (новые печатные формы для Бухгалтерии 7.7 и ТиС 7.7) с выводом на печать идентификатора госконтракта

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

Еще одна поделка на заданную тему. Отличается от аналогичных разработок и от типового решения тем, что не только выводится новая строка в шапке "Идентификатор государственного контракта, договора (соглашения)", но и печатается этот самый идентификатор госконтракта. Может пригодиться тем, кто осуществляет поставки по госконтрактам - с 01.07.2017 они обязаны указывать ИГК в счетах-фактурах и УПД, а не просто печатать пустографку.

1 стартмани

04.07.2017    39834    335    Cooler    49    

18

1С: 7.7. Функции-обертки, функторы, отложенный вызов, карринг параметров на примере функции чтения табличных данных

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

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

1 стартмани

17.09.2015    15011    3    rozhkovdmitriy    21    

24

Универсальный способ сравнения таблиц

Универсальные функции Запросы Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    21652    json    3    

22

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7

Универсальные функции Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Абонемент ($m)

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    38951    4    Serginio    4    

4

Печать универсального передаточного документа (УПД) из поступления в Бухгалтерии 7.7

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

Внешняя обработка, позволяющая выводить на печать УПД из документа "Поступление товаров". Сделано в виде внешней обработки, а не печатной формы, потому что в типовой форме поступления отсутствует кнопка "Печать".

2 стартмани

06.05.2015    23717    35    cargobird    5    

28

Внешняя печатная форма М4

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

М4 (внешняя), для групповой печати данного вида документов.

1 стартмани

18.07.2013    26738    30    sHkZ    1    

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

надо сделать внешним, т. е. поставить его первым оператором,
и процедура будет эффективной.
3. Abadonna 3958 14.04.08 17:57 Сейчас в теме
>надо сделать внешним, т. е. поставить его первым оператором,
Тут ты неправ, потому как у меня лично на
Если Тип="Документ" Тогда срабатывает еще куча всяких прибамбасов, а это только кусок
4. CheBurator 3119 15.04.08 00:10 Сейчас в теме
..да... только русские с их изощренной фантазией могли назвать включатель выключателем...
5. O-Planet 6431 15.04.08 02:34 Сейчас в теме
Хм... А оно без FormEx-а - никак? Я вообще-то это делаю внешней обработкой...
6. Abadonna 3958 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 Ответить
Оставьте свое сообщение