Недокументированное использование стандартных обработок из меню "Все функции".

09.02.18

Разработка - Механизмы платформы 1С

Рассмотрены возможности произвольного использования стандартных функций, вызываемых из меню платформы "Все функции" - "Стандартные" (Активные пользователи, Журнал регистрации, Поиск ссылок на объект, Проведение документов ...).

В платформе 1С предприятие есть очень удобные стандартные функции:

1. Активные пользователи;
2. Журнал регистрации;
3. Поиск ссылок на объект;
4. Проведение документов;
5. Удаление помеченных объектов;
6. Управление внешними источниками данных;
7. Управление итогами;
8. Управление полнотекстовым поиском;
9. Управление расширениями конфигурации;

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

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

Рассмотрим несколько способов их использования на примере стандартной обработки "Поиск ссылок на объекты".

1. Вызов стандартной обработки из любого пункта меню. Обработка "Поиск ссылок на объекты" достаточно удобна и может пригодиться обычным пользователям. Однако не всегда возможно давать им доступ к меню "Все функции" из-за ограниченного уровня доступа пользователя. В этом случае можно добавить вызов обработки из стандартного меню.

Добавляем в конфигурацию новую команду и в модуле команды прописываем текст:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ПодключитьВнешнююОбработкуНаСервере();
    ОткрытьФорму("ВнешняяОбработка.StandardFindByRef.Форма");
КонецПроцедуры

&НаСервере
Процедура ПодключитьВнешнююОбработкуНаСервере()
    ВнешниеОбработки.Подключить("v8res://mngbase/StandardFindByRef.epf", "StandardFindByRef", false);
КонецПроцедуры

При выборе этой команды у пользователя запустится обработка "Поиск ссылок на объекты" из обычного меню. 

2. Подмена стандартной обработки. Допустим, по какой-то причине нас не устраивает стандартная обработка. В этом случае мы можем ее подменить любой другой. Выполняем на сервере следующий код (например в "ПриЗапуске()" конфигурации) и после этого из стандартного меню "Все функции" - "Поиск ссылок на объект" будет вызываться наша собственная внешняя либо встроенная в конфигурацию обработка. 

	ДвоичныеДанные = Новый ДвоичныеДанные("C:\ВнешняяОбработка.epf");
	АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные); 
	ВнешниеОбработки.Подключить(АдресХранилища, "StandardFindByRef", false);

3. Изменение стандартной обработки. Стандартные обработки очень удобны, однако иногда в них не хватает какой-то мелочи. Например, нам может понадобиться добавить в обработку "Поиск ссылок на объект" фильтр для поиска только по документам. Можно, конечно, написать такую же обработку самостоятельно, а можно просто взять встроенную и немного изменить. Чтобы получить встроенную в виде отдельно файла, выполняем код:

КопироватьФайл("v8res://mngbase/StandardFindByRef.epf","C:\ВнешняяОбработка.epf");

Теперь у нас есть стандартный 1С-ный файл "C:\ВнешняяОбработка.epf" с встроенной обработкой. Его можно открыть в конфигураторе и внести любые нужные изменения. В дальнейшем модифицированную обработку можно использовать просто как внешнюю либо подключить обратно вместо встроеной.

Ну и напоследок соответствие стандартных обработок внутренним адресам платформы.

1. Активные пользователи - "v8res://mngbase/StandardActiveUsers.epf";
2. Журнал регистрации - "v8res://mngbase/StandardEventLog.epf";
3. Поиск ссылок на объект - "v8res://mngbase/StandardFindByRef.epf";
4. Проведение документов - "v8res://mngbase/StandardDocumentsPosting.epf";
5. Удаление помеченных объектов - "v8res://mngbase/StandardDeleteMarkedObjects.epf";
6. Управление внешними источниками данных - "v8res://mngbase/StandardExternalDataSourcesManagement.epf";
7. Управление итогами - "v8res://mngbase/StandardTotalsManagement.epf";
8. Управление полнотекстовым поиском - "v8res://mngbase/StandardFullTextSearchManagement.epf";
9. Управление расширениями конфигурации - "v8res://mngbase/StandardExtensionsManagement.epf";
10. upd. с 8.3.11. Управление системой взаимодействия  - "v8res://mngbase/StandardECSRegister.epf"

И еще одна обработочка. Не входит в стандартные, но тоже полезна для ознакомления.

11. Конструктор запросов на управляемых формах - "v8res://mngbase/QueryWizard.epf";

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

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

 

Активные пользователи Журнал регистрации Поиск ссылок на объект Проведение документов Удаление помеченных объектов Управление внешними источниками данных Управление итогами Управление полнотекстовым поиском Управление расширениями конфигурации

См. также

Механизмы платформы 1С Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    7372    bayselonarrend    126    

61

Механизмы платформы 1С Программист Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    10458    dsdred    62    

113

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    14549    bayselonarrend    21    

165

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    8665    dsdred    18    

82

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    31777    YA_418728146    33    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
93. daho 8 14.02.17 14:09 Сейчас в теме
(92) Да, спасибо.. Так в принципе и мыслил. Думал может кто уже наковырял. )
94. Aphanas 92 01.03.17 15:47 Сейчас в теме
Коллеги, подскажите кто знает, возможно ли выдернуть подобным образом обработку конструктора запроса?
95. mszsuz 346 05.03.17 22:34 Сейчас в теме
(94) Да. Именно она и упомянута в описании под номером 10.
96. fishca 1260 28.03.17 16:48 Сейчас в теме
97. Aprobator 21.06.17 10:07 Сейчас в теме
Обалденно, у меня просто других слов нет )
98. sss999 49 24.07.17 08:41 Сейчас в теме
99. vladismi 168 14.09.17 10:27 Сейчас в теме
100. vs84 09.11.17 15:39 Сейчас в теме
А можно выдернуть форму поиска в динсписке, которая по Ctrl+F?
101. jif 20.11.17 17:47 Сейчас в теме
Добрый день, а которая Shift+F11 ? Спасибо
103. ekaruk 5014 11.12.17 17:21 Сейчас в теме
(101) Это уже к стандартным не относится. Про неё не знаю :(
102. b-dm 180 11.12.17 16:51 Сейчас в теме
Оригинальный и нестандартный подход.
104. JohnyDeath 302 09.02.18 08:17 Сейчас в теме
Обработку по просмотру встроенной истории из 8.3.11 никто не находил?
METAL; romankoav; +2 Ответить
105. ekaruk 5014 09.02.18 11:07 Сейчас в теме
(104) А в каком релизе она появилась?
Вроде только "Управление системой взаимодействия" добавилось.
106. JohnyDeath 302 09.02.18 12:28 Сейчас в теме
(105) там как-то мутно. В файлике ресурсов нет прям отдельной обработки, но есть код формы (скорее всего она как бы "общая форма" получается)
Я смотрю в платформе 8.3.11.2867
107. ekaruk 5014 09.02.18 13:01 Сейчас в теме
(106) Да, похоже, это общая форма.
Называется DataHistoryVersions.lf
Где-то был пост о том, как эти формы преобразовывать в нормальный читабельный вид. Но не могу сейчас найти.
108. JohnyDeath 302 09.02.18 14:14 Сейчас в теме
(107) Если найдешь - поделись, а то мы уже начинаем свою рисовать
109. VKislitsin 1027 14.03.18 15:42 Сейчас в теме
110. ekaruk 5014 14.03.18 18:46 Сейчас в теме
(109) Да, вторая ссылка как раз оно.
Работа с формами платформы.
ZhokhovM; romankoav; +2 Ответить
129. Leon29 13.10.20 16:11 Сейчас в теме
(104) Я искал и нашёл неожиданно для себя здесь: в конфигурации общие формы - добавить. В списке выбрать нужную форму истории, например, "Форма истории изменений истории данных" и готово.
112. RoleXX 31.05.18 17:13 Сейчас в теме
В платформе явно вшиты и обработки с обычными формами (самописная конфа на обычных формах и через меню вызываются эти обработки с обычными формами) вопрос только где их искать...
113. ekaruk 5014 04.06.18 15:12 Сейчас в теме
(112) Может, это те же самые? Не проверяла, может в этих два варианта форм.
114. Alex10166 33 24.07.18 14:54 Сейчас в теме
115. unknown181538 161 13.10.18 20:02 Сейчас в теме
С настройкой панели навигации можно что-нибудь сделать? отключить в частности?
116. unknown181538 161 13.10.18 23:27 Сейчас в теме
(115)
В ПриНачалеРаботыСистемы:
ЭА_Сервер.ПереопределитьНастройкуНавигации();



В модуле ЭА_Сервер:
Процедура ПереопределитьНастройкуНавигации()Экспорт

ДвоичныеДанные = Новый ДвоичныеДанные("C:\Database\ВнешняяОбработка1.epf");
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
// так
ВнешниеОбработки.Подключить(АдресХранилища, "v8res://mngbase/dcschangesettingsstructure.epf", false);
// Или так
ВнешниеОбработки.Подключить(АдресХранилища, "8res://mngbase/dcschangesettingsstructure", false);

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


Что-то не подменяется форма
118. AlexO 136 26.01.19 14:41 Сейчас в теме
Я, ребята, может и ошибаюсь, или все эти "стандартные обработки, вшитые в платформу, и с таким трудом вытащенные" - выкладываются на диске ИТС? И их смело можно оттуда взять?
119. nomadon 369 27.01.19 07:25 Сейчас в теме
Форму блокировки приложения находили?
120. Simonov_NPM 04.09.19 08:07 Сейчас в теме
Подскажите как вытащить обработку проведения с обычной формой, вытаскиваю "StandardDocumentsPosting.epf", она на управляемых.
121. ekaruk 5014 04.09.19 09:19 Сейчас в теме
(120) Подозреваю, что она существует в платформе только в варианте на управляемых формах.
122. Simonov_NPM 04.09.19 09:43 Сейчас в теме
(121) Все верно, в файле mngbase_ru.res лежат управляемые, обычные (судя по содержимому) лежат в basicui_ru.res, вот только как их от туда вытащить. Пробовал
КопироватьФайл("v8res://basicui/StandardFindByRef.epf","C:\ВнешняяОбработка.epf");
, но там нет строк с расширением epf. Все что удалось вытащить так это форму )))
КопироватьФайл("v8res://basicui/DocumentsPostingDlg.f","D:\Новая папка\DocumentsPosting81.epf"); и все на этом.
tormozit; +1 Ответить
123. ZhokhovM 768 08.11.19 00:11 Сейчас в теме
В публикации добавлена ссылка на второисточник.
Недокументированное использование стандартных форм
Реализовал преобразование стандартных обычных форм без модуля.
124. TreeDogNight 22 31.01.20 15:14 Сейчас в теме
Можно ли таким образом выгрузить стандартную форму Обсуждений Системы взаимодействий?
125. andryandry 100 26.02.20 09:16 Сейчас в теме
подскажите, а как получить двоичные данные встроенной обработки? хочу заменить стандартный поиск в расширении конфигурации, предварительно сохранив в нем измененную форму обработки
126. user1279577 18.03.20 13:40 Сейчас в теме
Про обычные формы и не только есть отдельная публикация: https://infostart.ru/public/538300/
127. Trise 139 09.04.20 08:26 Сейчас в теме
Подскажите, может знает кто как вытащить форму справки... Прям так и охота туда всяких кнопочек понавтыкат=))
130. adva 45 24.12.20 16:22 Сейчас в теме
А нельзя случайно открыть программно Все функции?

p.s. Кажется нашел в ответах выше, попробую
131. androidT1C 76 25.02.21 12:46 Сейчас в теме
8.3.12

Делаю:
КопироватьФайл("v8res://mngbase/StandardECSRegister.epf", "D:\StandardECSRegister.epf");

Результат:
{ВнешняяОбработка.КопироватьФайл_v8res_mngbase.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (КопироватьФайл)
КопироватьФайл("v8res://mngbase/StandardECSRegister.epf", "D:\StandardECSRegister.epf");
по причине:
Ошибка копирования файлов
по причине:
Каталог не обнаружен 'v8res://mngbase/StandardECSRegister.epf'

Почему? Аналогичная ошибка с StandardFindByRef и другими.
Что на клиенте, что на сервере.
132. M_Volkov 5 14.04.21 09:23 Сейчас в теме
При выборе константы из "Все функции" отрывается форма константы. Можно ли ее как-то достать, посмотреть, доработать для типа ХранилищеЗначения?
135. mszsuz 346 07.07.21 11:49 Сейчас в теме
в 8.3.20 прикрыли лавочку.
136. tormozit 7277 07.07.21 12:00 Сейчас в теме
137. mszsuz 346 07.07.21 12:04 Сейчас в теме
(136) Поторопился. Просто переименовали некоторые, н-р:
StandardFindByRef -> StandardFindByReference
138. mszsuz 346 07.07.21 12:10 Сейчас в теме
StandardExtensionsManagement -> StandardConfigurationExtensionsManagement
139. Necessitudo 23.11.21 14:29 Сейчас в теме
Управление серверами - "StandartServersControl"
1c-kt; Live; +2 Ответить
140. alexander-lubich 29 31.05.22 00:04 Сейчас в теме
Файл не обнаружен 'v8res://mngbase/StandardActiveUsers.epf' ресурс не найден платформа 8.3.20.1789

видимо обработки теперь называются по другому или вызывать их надо иначе
141. alexander-lubich 29 31.05.22 00:17 Сейчас в теме
(137) да , я тоже . работает в новых платформах
имя другое (Поторопился. Просто переименовали некоторые, н-р:
StandardFindByRef -> StandardFindByReference)

тут раскрыто https://infostart.ru/public/538300/
142. ZhokhovM 768 04.08.22 09:49 Сейчас в теме
на всякий если вдруг переименовали имена файлов ресурса возьмите к примеру публикацию
https://infostart.ru/public/1691321/
выбрать файл mngbase_ru.res и нажать "Распаковать", в папке распаковки будут распакованы файлы-контейнеры. Приложил скриншот.
Прикрепленные файлы:
143. user1395119 01.09.22 13:02 Сейчас в теме
Добрый день!

Спасибо, работает.
144. user1486489 15.12.22 08:39 Сейчас в теме
Добрый день! Спасибо) Спустя столько лет все еще актуально!
145. user958974 30.01.23 17:52 Сейчас в теме
Коллеги, подскажите, а какой адресс нужно вставить в
ВнешниеОбработки.Подключить("v8res://mngbase/StandardFindByRef.epf", "StandardFindByRef", false);

Что бы таким образом открывались "Функции для технического специалиста" (Все функции)?
147. user958974 31.01.23 16:05 Сейчас в теме
Коллеги а какое наименование у "Все функции" ? Что нужно подставить в "ВнешниеОбработки.Подключить(" первым параметром , что бы подключить именно "Все функции" и потом открыть?
149. Alexwarsis 11.04.23 13:42 Сейчас в теме
// Инициализация внешнего объекта
&AtClient
Procedure Init(extObject)
HelpExtObj = extObject;
EndProcedure

А можно как-то получить extObject, никто не знает?
150. Mopo3 335 21.02.24 17:24 Сейчас в теме

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	СписокСтандартныхОбработок = ПолучитьСписокСтандартныхОбработок();
	
	Для Каждого СтандартнаяОбработка Из СписокСтандартныхОбработок Цикл
		
		ИмяОбработки = ПодключитьВнешнююОбработкуНаСервере(СтандартнаяОбработка.Значение, СтандартнаяОбработка.Представление);
		ФормаВнешнейОбработки = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
		
		Элементы.СтандартнаяОбрабтка.СписокВыбора.Добавить(ИмяОбработки, ФормаВнешнейОбработки.Заголовок);
		
	КонецЦикла;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСписокСтандартныхОбработок()
	
	СписокСтандартныхОбработок = Новый СписокЗначений;
	
	//
	ФайлСтандартныхОбработок = НайтиФайлы(КаталогПрограммы(), "mngbase_ru.res").Получить(0);
	
	ЧтениеТекста = Новый ЧтениеТекста(ФайлСтандартныхОбработок.ПолноеИмя,,,, Ложь);
	ТекстСтандартныхОбработок = ЧтениеТекста.Прочитать();
	ЧтениеТекста.Закрыть();
	
	//
	НомерВхождения = 0;
	Последний_разделитель = Неопределено;
	
	Пока Истина Цикл
		
		НомерВхождения = НомерВхождения + 1;
		Позиция_epf = СтрНайти(ТекстСтандартныхОбработок, ".epf",,, НомерВхождения);
		
		Если Позиция_epf = 0 Тогда 
			Прервать;
		КонецЕсли;
		
		//
		Позиция_разделитель = СтрНайти(ТекстСтандартныхОбработок, Символ(0), НаправлениеПоиска.СКонца, Позиция_epf, 1);
		Позиция_слэш = СтрНайти(ТекстСтандартныхОбработок, "/",,, НомерВхождения);
		
		Если Позиция_epf > Позиция_слэш И Позиция_слэш > Позиция_разделитель Тогда 
			Прервать;
		КонецЕсли;

		//
		ИмяСтандартнойОбработки = Сред(ТекстСтандартныхОбработок, Позиция_разделитель + 1, Позиция_epf - Позиция_разделитель - 1);
		
		Если СтрЧислоСтрок(ИмяСтандартнойОбработки) > 1 Тогда 
			Прервать;
		КонецЕсли;
		
		//
		ПутьСтандартнойОбработки = СтрШаблон("v8res://mngbase/%1.epf", ИмяСтандартнойОбработки);
		
		Если СтрНайти(ТекстСтандартныхОбработок, ПутьСтандартнойОбработки) = 0 Тогда 
			ЭтаОбработкаИмеетДругойПуть = Истина;
		КонецЕсли;
		
		//
		СписокСтандартныхОбработок.Добавить(ИмяСтандартнойОбработки, ПутьСтандартнойОбработки);
		
	КонецЦикла;
	
	//
	Возврат СписокСтандартныхОбработок;
	
КонецФункции // ПолучитьСписокСтандартныхОбработок()

&НаСервереБезКонтекста
Функция ПодключитьВнешнююОбработкуНаСервере(Имя, Путь)
	
	ИмяОбработки = ВнешниеОбработки.Подключить(Путь, Имя, Ложь);
	
	Возврат ИмяОбработки;
	
КонецФункции

//
&НаКлиенте
Процедура СтандартнаяОбрабткаПриИзменении(Элемент)
	
	ОткрытьВыбраннуюФорму();
	
КонецПроцедуры

&НаКлиенте
Процедура СтандартнаяОбрабткаОткрытие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьВыбраннуюФорму();
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьВыбраннуюФорму()
	
	ОткрытьФорму("ВнешняяОбработка." + СтандартнаяОбрабтка + ".Форма");	
	
КонецПроцедуры // ОткрытьВыбраннуюФорму()

Показать
swimdog; vvlas; BigB; ZhokhovM; sashocq; +5 Ответить
151. mxs89 5 17.07.24 10:48 Сейчас в теме
Приветствую.
9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Файл не обнаружен 'v8res://mngcore/_bubbleDoublle.zip'. Ресурс не найден: src\resNative.cpp(145): Ресурс не найден"
Может кто сталкивался? Что это за ресурс?
Оставьте свое сообщение