Универсальный вызов отчетов, обработок - внутренних и внешних - в 1С 7.7

05.06.24

Задачи пользователя - Менеджеры внешних отчетов

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
1с 7.7 универсальный вызов отчетов, обработок — внутренних и внешних:
.zip 2,99Kb
0
0 Скачать (2 SM) Купить за 2 150 руб.

В любой конфигурации 1С 7.7 изменения и доработки, сделанные в отчетах, обработках, требуют для сохранения монопольный режим. Для этого требуется «выгонять» всех пользователей из базы, или же программисту приходится сохранение изменений переносить на внерабочее время. А если эти изменения нужны пользователям срочно? Предлагаемое решение позволяет преодолеть это неудобство, как для программиста, так и для пользователей.

Релиз платформы 1С 7.7 не имеет значения, как и релиз и вид конфигурации, задействована внешняя компонента FormEx v. 2.0.5.124, чтобы получить полный тип вызываемого отчета, обработки.

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

Суть решения состоит в формате коммутационного файла и в функции, расположенной в Глобальном модуле конфигурации, которая, после прочтения этого коммутационного файла, возвращает значения:

1 - если внешний отчет, обработка находится в ..\EXTFORMS базы;

2 - если в другом указанном месте; в этом случае возвращается также место расположения соответствующего фала отчета, обработки;

0 - указывает, что будет выполняться внутренний отчет, обработка из конфигурации.

По этим, возвращенным функцией данным, происходит открытие формы отчета, обработки из каталога ..\EXTFORMS, либо из указанного места расположения внешнего отчета, обработки стандартной процедурой: ОткрытьФорму("Отчет",, ФайлВнешней), где ФайлВнешней — переменная с путём к внешнему отчету, либо из конфигурации.

Коммутационный файл должен располагаться в каталоге базы, у меня, например, он называется «StrtExtProc.txt». Тип этого файла текстовый. В начале располагается описание ключей управления, как памятка. Точка с запятой (;) в первой позиции строки содержимого файла указывает, что эта строка исключается из анализа содержимого, нечто вроде комментария в языке программирования.

 

; StrtExtProc.txt - файл настроек управленим вызова отчетов и обработок базы 1С
;
; РАЗМЕСТИТЬ В КАТАЛОГЕ БАЗЫ
;
; кофигурации или как внешнего отчета/обработки.
;
; Ключи управления;
; /N[<Пользователь>] - код элемента справочника пользователи, как он задан в базе
; /R[<ПолноеИмяОбъекта>] - имя отчета/обработки, как оно задано в конфигурации
; /O[<1 или 0>] - режим запуска: 1 - внешний; 0 - из конфигурации
; /F[<путь к файлу>] - путь к файлу внешней обработки/отчета
;
; Пустая строка или строка, начинающаяся с символа ";" не анализируются.
;
; Ключи управления со своими параметрами в строке могут следовать в любом порядкке. 
; Текст значения параметра (в квадратных скобках) не должен содержать предшествующих или
; заключительных пробелов. Например, так нельзя: /R[ Отчет.АвтоПрайс ]
; Пример строки со всеми параметрами:
;/R[Отчет.АвтоПрайс] /O[1] /N[Глазьев] /F[\\TEST1C\smp-2020-nn\EXTFORMS\РаскладкаППМаркета.ert]
;
; Шаблон строки:
;/N[] /R[] /O[]  /F[]
;


/O[1] /R[Отчет.АнализОборотов]

/O[1] /R[Обработка.ОбъединениеРасходных] /F[\\yugmp\1C\2024\EXTFORMS\ОбъединениеРасходных_2.ert]

/O[1] /R[Отчет.ПредзаказПоДатеВыхода]

/O[1] /R[Отчет.ПрайсПоНаименованиям] /N[Глазьев]
/O[1] /R[Отчет.ПрайсПоНаименованиям] /N[Плашкина]
/O[1] /R[Отчет.ПрайсПоНаименованиям] /N[Плашкина1]

/O[1] /R[Отчет.ВывозВозвратПродажа_Нов] /F[\\yugmp\1C\2024\EXTFORMS\ВывозВозвратПродажа_Нов_Стриж.ert] /N[Стрижакова]
;/O[1] /R[Отчет.Взаиморасчеты] /N[Глазьев] /F[\\yugmp\1C\2024\EXTFORMS\Взаиморасчеты - копия.ert]

 

Чтобы предлагаемое решение действовало, для каждого отчета, обработки конфигурации, необходимо в модуле формы в предопределенной процедуре «ПриОткрытии» («OnOpen») прописать следующие строки, располагаемые в самом начале процедуры:

 

Процедура ПриОткрытии() 

	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	ПолныйТипОбъекта = ФормаРасш.ПолныйТипОбъекта();
	ПолныйТипОбъекта = СтрЗаменить(ПолныйТипОбъекта, ".Форма", "");
	
	ФайлВнешней = "";
	Если ВнешнийЗапускОбъекта(Контекст, ПолныйТипОбъекта, ФайлВнешней) = 2 Тогда
		ОткрытьФорму("Отчет",, ФайлВнешней);
		СтатусВозврата(0);
		Возврат;

	ИначеЕсли ВнешнийЗапускОбъекта(Контекст, ПолныйТипОбъекта) = 1 Тогда

        // ВНИМАНИЮ ПРОГРАММИСТА: в следующей строке нужно заменить 
		// "АнализСчета" на имя соответствующего отчета, обработки, как оно задано в конфигурации
		ОткрытьФорму("Отчет",, КаталогИБ()+"EXTFORMS\АнализСчета.ert");
		СтатусВозврата(0);
		Возврат;
	КонецЕсли;
	// ********************** 

	. . .

КонецПроцедуры

R03;

Более того, в каждом новом отчете, обработке, добавляемых в конфигурацию, нужна процедура «ПриОткрытии». А вот, когда внутренний отчет, обработка сохраняются как внешние, приведённых выше строк кода в этой процедуре быть не должно.

После всех несложных, описанных выше доработок, можно будет без внесения изменений в конфигурацию сохранить любой отчет, обработку, как внешнюю, внести изменения, доработать их, в соответствии с заданием пользователя, добавить строку в коммутационный файл, и всё… отчет, обработка работает уже по-новому. Пользователь открывает в меню программы тот же отчет и видит, что он работает в соответствии с его требованиями. Что и нужно!

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

Вот такие удобства имеет предлагаемое решение универсального вызова отчетов, обработок в 1С 7.7.

 

В архиве находятся файлы:

Функция_в_Глоб_Модуль.txt — функция в Глобальный модуль

Проц_При_Открытии.txt — процедура ПриОткрытии

StrtExtProc.txt — коммутационный файл

Отчет обработка внешний универсальный вызов удобство для всех

См. также

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    22279    57    Gvozdod    8    

16

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    168352    1882    Alexoniq    1596    

499

Инструментарий разработчика Программист Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    33408    61    O-Planet    78    

49

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21798    Reptile    5    

35

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18345    36    MarSeN    14    

17

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36349    51    venger    7    

23

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    35452    249    adhocprog    51    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 815 05.06.24 11:38 Сейчас в теме
Удивляюсь консервативности контор, которые до сих пор ездят на семёрке.
PowerBoy; madonov; RocKeR_13; +3 Ответить
2. madonov 259 05.06.24 11:59 Сейчас в теме
(1) "да мы девятку подождем, чтобы софт не так часто менять".
4. user1416274 2 06.06.24 09:02 Сейчас в теме
(1) Семёрку контора получила по наследству, как правоприемник и успешно в ней работает. 7.7 мне нравится живеньким интерфейсом, в отличие от 8.Х.
by_1Cnik; +1 Ответить
3. Hitcher 178 06.06.24 08:45 Сейчас в теме
Удивляюсь, что еще есть программисты, которые знают и что-то делают на 7.7
5. user1416274 2 06.06.24 09:05 Сейчас в теме
(3) Я, наверное, этакий "динозавр", 1С прошел не только как сопровождающий, начиная ещё с 2.0 до ERP.
6. CheBurator 2712 13.06.24 01:25 Сейчас в теме
Могу ошибаться, но имхо как-то можно все проще сделать, по минимуму внедряя изменения кода конфигурации для встроенных отчетов и обработок, надо посмотреть в сторону глобального перехватчика ПриОткрытии (включить перехват событий).

https://infostart.ru/1c/articles/73221/
https://mista.ru/topic/891989

плюс в свежих релизах формекса есть транслирование локальных предопределенных процедур в глобальный модуль, это тоже должно упростить по идее реализацию...
7. user1416274 2 13.06.24 09:35 Сейчас в теме
(6) CheBurator, перехватчики событий это несколько не то, что реализовано и описано в этой публикации. Идея состоит в том, чтобы НЕ внося изменений в конфигурацию, что приводит к необходимости беспокоить пользователей (сохранение изменений), заменять вызов отчета, обработки из конфигурации (внутреннего) на внешний, используя некий коммутационный файл для указания места расположения заменяющих отчетов, обработок. Вся кухня этого процесса кроется в самом коммутационном файле (простейшая система управляющих ключей) и в функции глобального модуля, производящей "парсинг" этого коммутационного файла. И ВСЁ!

Пишешь отчеты, обработки и прописываешь в коммутационном файле пути доступа к ним, и указываешь, при необходимости, для кого из пользователей (по имени учетки) они предназначены. Последнее в определенной степени относится к системе прав доступа в базе.
8. CheBurator 2712 13.06.24 13:26 Сейчас в теме
(7)
тобы НЕ внося изменений в конфигурацию,

ага, только в конфигурацию напихать кучу дополнительного кода, причем этот код надо еще и во все новые вновь разрабатываемые отчеты не забывать впихивать.
.
Концепция про коммутационный файл понятна.
.
у меня замечание именно про то, что можно все дописки в конфигу по обеспечению обслуживания коммутационного файла - сделать проще и прозрачнее, без необходимости вносить измененяи в кучу мест конфиги.
.
в формексе в последних версиях появилась возможность вообще - и подменять формы обработок, и модули обработок, и вообще при вызове обработок делать подмену и еще полезного что можно приложить к этой задаче.
.
но это уже так.. перфекционизм...
работает и работает как описано - ну и ок.
Оставьте свое сообщение