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

Программирование - Практика программирования

85
Вам не хватает возможностей в платформе 1С или у Вас нет времени на углубленное изучение платформы 1С? Рассмотрены возможности использования стандартных форм, вызываемых из платформы.

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

Отличие: в первоисточнике используются стандартные обработки из меню "Все функции", в данном источнике используются стандартные формы, вызываемые из платформы.

В этой статье я буду писать про недокументированное использование стандартных форм.

LF - это стандартная компилированная форма, вызываемая платформой. В платформе 1с предприятия есть стандартные формы: "Все функции", "Все сообщения", "Выбрать цвет", "Выбрать тип документа", "Выбрать шрифт" и т.д. тому подобно.

Основная цель: Как из компилированной формы перенести данные в форму с модулями из внешней обработки? Все очень просто.

Порядок выполнения действий:

  1. Открыть и выполнить обработку "Преобразование стандартных форм", указав каталог и отметив необходимые формы.
  2. Открыть любую обработку из каталога в режиме конфигуратора.
  3. Открыть форму обработки, восстановить в ней связи между элементами и реквизитами, записать и закрыть.
  4. Открыть записанную обработку в режиме предприятия.

Что делает обработка "Преобразование стандартных форм":

  1. Получает встроенную в виде отдельного файла LF.
  2. Получает готовый шаблон внешней обработки из макета обработки и сохраняет его во временный файл.
  3. Распаковывает временный файл внешней обработки во временный каталог.
  4. Заменяет файл "<guid.0>" на содержимое файла LF.
  5. Упаковывает в обработку обратно в обычный каталог.

Можно ли сделать самому себе обработку "AllFunction.lf", имея на руках V8Unpack?  Конечно, можно. Вот, что Вам нужно:

  1. Создать в конфигураторе новую обработку.
  2. Создать в ней новую управляемую форму.
  3. Сохранить обработку.
  4. Распаковать получившуюся обработку с помощью V8Unpack.
  5. Там должен быть один файл с именем вида <guid>.0 - поменять его содержимое на содержимое файла "AllFunctions.lf".
  6. После этого обратно собрать обработку с помощью V8Unpack.

Чтобы получить встроенную в виде отдельного файла "AllFunctions.lf", нужно выполнить код:

КопироватьФайл("v8res://mngbase/AllFunctions.lf","C:\AllFunctions.lf");

Информация обо всех файлах в формате LF лежит в файле:

C:\Program Files (x86)\1cv8\хх.хх.хх.хх\bin\mngbase_root.res

Помимо этого была сделана внешняя обработка для тестирования для конфигураций 1С: Предприятия 8. Все изменения касательно внешней обработки "Все функции":

  1. Восстановлена связь между элементами и реквизитами
  2. Закомментирован код закрытия формы обработки после выбора формы
  3. Изменено поведение Enter в форме обработки выбора
  4. Изменено поведение Esc (запрашивает подтверждение при закрытии приложения)

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

Выражаю благодарность awa за оказанную помощь.

85

Скачать файлы

Наименование Файл Версия Размер
Преобразование стандартных форм
.epf 100,12Kb
22.07.16
33
.epf 100,12Kb 33 Скачать
Стандартная форма "Все функции" для УТ
.epf 10,51Kb
19.04.18
7
.epf 10,51Kb 7 Скачать
Стандартная форма "Все функции" для ERP
.epf 10,73Kb
19.04.18
0
.epf 10,73Kb Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. klinval 266 26.07.16 13:41 Сейчас в теме
А "Все действия" - "Настроить список" - эту форму/обработку можно получить вашей обработкой?
2. ZhokhovM 331 26.07.16 14:21 Сейчас в теме
(1) klinval, конечно, есть стандартная форма "UniversalListSettings.lf". В ней нужно восстанавливать связи между элементами и реквизитами непосредственно в обработке, такие как: Filter, Order, Group и т.д.
3. LSV79 27.07.16 07:14 Сейчас в теме
А зачем такие сложности?
http://infostart.ru/public/369487/ тут вариант значительно проще
Yashazz; serg_infostart; Spacer; ardn; kraynev-navi; JohnyDeath; kuntashov; +7 3 Ответить
4. ZhokhovM 331 27.07.16 09:24 Сейчас в теме
(3) LSV79, там нет вариантов со стандартными формами, только упоминания в комментариях
5. Serj1C 472 28.07.16 07:38 Сейчас в теме
Ой, ой, ой... На фоне шумихи с вирусом для 1С... Т.е. теперь можно подложить файлы в каталог бин и пользователь сам когда-нибудь да откроет обработку.
А также можно обойти ограничение на открытие внешних обработок...
Большая-большая дыра в безопасности каждой компании, где у пользователей есть доступ на запись в каталог bin
Danil.Potapov; uncle_Vasya; kiv1c; Sergey-MX; ZhokhovM; AnryMc; the1; +7 Ответить
6. the1 321 28.07.16 09:02 Сейчас в теме
7. vano-ekt 1128 29.07.16 05:19 Сейчас в теме
екарук писала уже, но плюсану за обработку, лень копаться :-)
8. ZhokhovM 331 29.07.16 09:29 Сейчас в теме
10. fishca 1130 30.08.16 14:11 Сейчас в теме
11. ZhokhovM 331 30.08.16 15:06 Сейчас в теме
12. dolter 116 21.01.17 22:47 Сейчас в теме
А действительно... можно ли вытянуть стандартную форму, слегка ее переделать (например вставить попытку открыть другую форму из состава конфигурации в случае ее там присутствия) и поместить ее обратно в bin?
13. ZhokhovM 331 22.01.17 14:13 Сейчас в теме
(12)я знаю только вытянуть и переделать форму но поместить ее обратно в бин нет, не пробовал
14. dolter 116 28.01.17 22:40 Сейчас в теме
Нашел инструмент у Орефкова на сайте... Полностью разобрать получилось, а вот собрать пока не очень...
15. ander_ 18.05.17 05:55 Сейчас в теме
Что-то я не в теме. А зачем все это? Поясните плиз где и как это может пригодиться
16. ZhokhovM 331 18.05.17 09:51 Сейчас в теме
(15)
где и как это может пригодиться

Мне она пригодилась для тестирования для конфигураций: "Управление торговлей, редакция 11" и "Управление предприятием, редакция 2". На всякий случай указал первоисточник.
17. ander_ 18.05.17 16:35 Сейчас в теме
(16)
а еще чуть подробней.. :)
что здесь имеется ввиду под "тестированием"?
может пример тестового сценария, в котором это используется... может так понятнее будет :(
18. ZhokhovM 331 18.05.17 17:26 Сейчас в теме
(17)ну изначально я тестировал руками все формы, вызываемые через меню все функции, например, открыть и закрыть формы документа или справочника, но после длительного использования были проблемы, что автоматически закрывается стандартная форма "Все функции" после выбора любой формы и деактивируется строка дерева значений "Table" после переоткрытия стандартной формы "Все функции", что практически невозможно было выбрать следующую форму нажатием стрелочки "вниз" или "вверх", так вот решил создать тему https://partners.v8.1c.ru/forum/topic/1510855, но ответа там до сих пор не дали, затем вспомнил про статью "Недокументированное использование стандартных обработок из меню "Все функции"" на инфостарте от автора екарук и мне нужно было придумать как стандартную форму "Все функции" вызываемую из платформы перенести во внешнюю обработку с формой для этого и была придумана мной статья. Все изменения касательно внешней обработки "Все функции" я писал выше.
19. ander_ 19.05.17 07:20 Сейчас в теме
(18)
Спасибо, теперь более-менее понятно.
20. ZhokhovM 331 19.05.17 09:15 Сейчас в теме
21. ZhokhovM 331 28.07.17 11:50 Сейчас в теме
28.07.2017:
Что изменилось:
Добавил внешнюю обработку "Стандартная форма "Все функции" для ERP". Проверял на версии ERP 2.4.1.126. На УТ данная обработка не подходит, так как к каждой конфигурации проверяется право доступа "TotalsControl", "CollaborationSystemInfoBaseRegistration" и т.д.
22. tormozit 4932 15.04.18 12:40 Сейчас в теме
Спасибо. Познавательно. Пометки в списке не учитываются при выгрузке (ошибка). Добавил формы истории данных
	л_Формы.Добавить("DataHistoryVersionData", "Data history data");
	л_Формы.Добавить("DataHistoryVersions", "Data history versions");
	л_Формы.Добавить("DataHistoryVersionsDiff", "Data history difference");
23. ZhokhovM 331 15.04.18 13:13 Сейчас в теме
24. ZhokhovM 331 19.04.18 14:46 Сейчас в теме
19.04.2017:
Что изменилось:
Добавлены формы:
BorderChoose
ChartLabelArea
ChartAxis
ChartScale
GanttChartChoiceValue
DataHistoryVersions
DataHistoryVersionsFilter
DataHistoryVersionsFilterUser
DataHistoryVersionData
DataHistoryVersionsDiff
ECSMainForm
fdSave
fullscreen
moxelName
moxelNames
moxelDupName
NotificationsDlgNew
TrendLines
Исправлена ошибка, в которой не учитываются пометки в списке при выгрузке.
25. romankoav 02.08.18 17:57 Сейчас в теме
А как программно открыть такую форму? Например DataHistoryVersions
26. ZhokhovM 331 02.08.18 18:25 Сейчас в теме
(25)воспользоваться обработкой "Преобразование стандартных форм.epf" и вызвать форму методом ОткрытьФорму("ВнешняяОбработка.DataHistoryVersions.Форма");
27. romankoav 03.08.18 17:38 Сейчас в теме
(26) То есть без вынесения из конфигурации никак?
28. ZhokhovM 331 03.08.18 19:44 Сейчас в теме
(27)Никак.
Есть пример в первоисточнике:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПодключитьВнешнююОбработкуНаСервере();
ОткрытьФорму("ВнешняяОбработка.StandardFindByRef.Форма");
КонецПроцедуры

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

но сделать так же для стандартной формы не получится
ВнешниеОбработки.Подключить("v8res://mngbase/DataHistoryVersions.lf", "DataHistoryVersions", false);
29. unknown181538 21 13.10.18 20:14 Сейчас в теме
А настройка панели навигации в списке есть?
30. ZhokhovM 331 13.10.18 21:39 Сейчас в теме
31. unknown181538 21 13.10.18 23:07 Сейчас в теме
(30)
dcschangesettingsstructure
похоже на то. Понять бы еще, как ее отключить.
Оставьте свое сообщение