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

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

 

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

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4511    dsdred    53    

71

Как готовить и есть массивы

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

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

24.01.2024    5287    YA_418728146    25    

63

Планы обмена VS История данных

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

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6408    dsdred    36    

111

1С-ная магия

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

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18473    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

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

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12087    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8818    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

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

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

20.08.2023    6279    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

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

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15983    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
93. daho 8 14.02.17 14:09 Сейчас в теме
(92) Да, спасибо.. Так в принципе и мыслил. Думал может кто уже наковырял. )
94. Aphanas 92 01.03.17 15:47 Сейчас в теме
Коллеги, подскажите кто знает, возможно ли выдернуть подобным образом обработку конструктора запроса?
95. mszsuz 322 05.03.17 22:34 Сейчас в теме
(94) Да. Именно она и упомянута в описании под номером 10.
96. fishca 1254 28.03.17 16:48 Сейчас в теме
97. Aprobator 21.06.17 10:07 Сейчас в теме
Обалденно, у меня просто других слов нет )
98. sss999 48 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 4896 11.12.17 17:21 Сейчас в теме
(101) Это уже к стандартным не относится. Про неё не знаю :(
102. b-dm 171 11.12.17 16:51 Сейчас в теме
Оригинальный и нестандартный подход.
104. JohnyDeath 301 09.02.18 08:17 Сейчас в теме
Обработку по просмотру встроенной истории из 8.3.11 никто не находил?
romankoav; +1 Ответить
105. ekaruk 4896 09.02.18 11:07 Сейчас в теме
(104) А в каком релизе она появилась?
Вроде только "Управление системой взаимодействия" добавилось.
106. JohnyDeath 301 09.02.18 12:28 Сейчас в теме
(105) там как-то мутно. В файлике ресурсов нет прям отдельной обработки, но есть код формы (скорее всего она как бы "общая форма" получается)
Я смотрю в платформе 8.3.11.2867
107. ekaruk 4896 09.02.18 13:01 Сейчас в теме
(106) Да, похоже, это общая форма.
Называется DataHistoryVersions.lf
Где-то был пост о том, как эти формы преобразовывать в нормальный читабельный вид. Но не могу сейчас найти.
108. JohnyDeath 301 09.02.18 14:14 Сейчас в теме
(107) Если найдешь - поделись, а то мы уже начинаем свою рисовать
109. VKislitsin 960 14.03.18 15:42 Сейчас в теме
110. ekaruk 4896 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 4896 04.06.18 15:12 Сейчас в теме
(112) Может, это те же самые? Не проверяла, может в этих два варианта форм.
114. Alex10166 30 24.07.18 14:54 Сейчас в теме
115. unknown181538 151 13.10.18 20:02 Сейчас в теме
С настройкой панели навигации можно что-нибудь сделать? отключить в частности?
116. unknown181538 151 13.10.18 23:27 Сейчас в теме
(115)
В ПриНачалеРаботыСистемы:
ЭА_Сервер.ПереопределитьНастройкуНавигации();



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

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

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


Что-то не подменяется форма
118. AlexO 135 26.01.19 14:41 Сейчас в теме
Я, ребята, может и ошибаюсь, или все эти "стандартные обработки, вшитые в платформу, и с таким трудом вытащенные" - выкладываются на диске ИТС? И их смело можно оттуда взять?
119. nomadon 367 27.01.19 07:25 Сейчас в теме
Форму блокировки приложения находили?
120. Simonov_NPM 04.09.19 08:07 Сейчас в теме
Подскажите как вытащить обработку проведения с обычной формой, вытаскиваю "StandardDocumentsPosting.epf", она на управляемых.
121. ekaruk 4896 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 724 08.11.19 00:11 Сейчас в теме
В публикации добавлена ссылка на второисточник.
Недокументированное использование стандартных форм
Реализовал преобразование стандартных обычных форм без модуля.
124. TreeDogNight 22 31.01.20 15:14 Сейчас в теме
Можно ли таким образом выгрузить стандартную форму Обсуждений Системы взаимодействий?
125. andryandry 94 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 322 07.07.21 11:49 Сейчас в теме
в 8.3.20 прикрыли лавочку.
136. tormozit 7136 07.07.21 12:00 Сейчас в теме
137. mszsuz 322 07.07.21 12:04 Сейчас в теме
(136) Поторопился. Просто переименовали некоторые, н-р:
StandardFindByRef -> StandardFindByReference
138. mszsuz 322 07.07.21 12:10 Сейчас в теме
StandardExtensionsManagement -> StandardConfigurationExtensionsManagement
139. Necessitudo 23.11.21 14:29 Сейчас в теме
Управление серверами - "StandartServersControl"
140. alexander-lubich 26 31.05.22 00:04 Сейчас в теме
Файл не обнаружен 'v8res://mngbase/StandardActiveUsers.epf' ресурс не найден платформа 8.3.20.1789

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

тут раскрыто https://infostart.ru/public/538300/
142. ZhokhovM 724 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 331 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 Тогда 
			ЭтаОбработкаИмеетДругойПуть = Истина;
		КонецЕсли;
		
		//
		СписокСтандартныхОбработок.Добавить(ИмяСтандартнойОбработки, ПутьСтандартнойОбработки);
		
	КонецЦикла;
	
	//
	Возврат СписокСтандартныхОбработок;
	
КонецФункции // ПолучитьСписокСтандартныхОбработок()

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

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

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

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

Показать
ZhokhovM; sashocq; +2 Ответить
Оставьте свое сообщение