Первоисточник: Недокументированное использование стандартных обработок из меню "Все функции".
Отличие:
- Используются стандартные формы, вызываемые из платформы.
В этой статье я буду писать про недокументированное использование стандартных форм.
LF - это стандартная компилированная управляемая форма, вызываемая платформой. В платформе 1с предприятия есть стандартные формы: "Все функции", "Все сообщения", "Выбрать цвет", "Выбрать тип документа", "Выбрать шрифт" и т.д. тому подобно.
Первичная цель: Как перенести данные из стандартной управляемой формы в форму внешней обработки с модулями?
Порядок выполнения действий "Преобразование стандартных форм":
- Открыть обработку, нажать на кнопку "Получить список ресурсов", отметить необходимые ресурсы, выбрать каталог и нажать "Распаковать и упаковать".
- В выбранном каталоге открыть любую обработку в режиме конфигуратора.
- Открыть форму внешней обработки, восстановить в ней связи между элементами и реквизитами, записать и закрыть.
- Открыть записанную обработку в режиме предприятия.
Что делает обработка "Преобразование стандартных форм":
- Получает встроенную в виде отдельного файла LF.
- Получает готовый шаблон внешней обработки из макета обработки и сохраняет его во временный файл.
- Распаковывает временный файл внешней обработки во временный каталог.
- Заменяет файл "<guid.0>" на содержимое файла LF.
- Упаковывает в обработку обратно в обычный каталог.
Чтобы сделать самому себе обработку "AllFunction.lf", имея на руках V8Unpack, нужно выполнить следующее действие:
- Создать в конфигураторе новую обработку.
- Создать в ней новую управляемую форму.
- Сохранить обработку.
- Распаковать получившуюся обработку с помощью V8Unpack.
- Там должен быть один файл с именем вида <guid>.0 - поменять его содержимое на содержимое файла "AllFunctions.lf".
- После этого обратно собрать обработку с помощью V8Unpack.
Чтобы получить встроенную в виде отдельного файла "AllFunctions.lf", нужно выполнить код:
КопироватьФайл("v8res://mngbase/AllFunctions.lf","C:\AllFunctions.lf");
Информация обо всех файлах в формате LF лежит в файлах:
C:\Program Files (x86)\1cv8\хх.хх.хх.хх\bin\mngbase_root.res
C:\Program Files (x86)\1cv8\хх.хх.хх.хх\bin\mngbase_ru.res
Помимо этого была сделана внешняя обработка для тестирования для конфигураций 1С: Предприятия 8. Все изменения касательно внешней обработки "Все функции":
- Восстановлена связь между элементами и реквизитами.
- Закомментирован код закрытия формы обработки после выбора формы.
- Изменено поведение Enter в форме обработки выбора.
- Изменено поведение Esc (запрашивает подтверждение при закрытии приложения).
Выражаю благодарность awa за оказанную помощь. Мир его праху.
Второисточник: Просмотр ресурсов 1С методами встроенного языка (8.3.9).
Автор r0610201 любезно разрешил опубликовать расширенный анализ ресурсов 1С со ссылкой на второисточник. За что ему большое спасибо!
Отличие:
- Добавлено преобразование стандартных форм (*.clf, *.lf, *.f).
- Сохранение всех файлов с ресурсами одним нажатием кнопки.
В последнее время авторы жалуются на отсутствие информации о стандартных обычных формах.
Вторичная цель: Как вытащить обычные формы?
В файле mngbase*.res лежат управляемые формы (*.lf), а обычные формы (*.f) в basicui*.res.
F - это стандартная компилированная обычная форма, вызываемая платформой.
Была проблема с извлечением ресурсов *.f через 'КопироватьФайл("v8res://....")'. Порыскал в интернете и нашёл инфу о том, что можно распаковать ресурсы непосредственным чтением двоичных данных res-файла, которые другими способами извлечь не получается.
Порядок выполнения действий "Анализ ресурсов 1С (расширенный)":
- Открыть обработку, нажать "Выбрать расширения", снять все ресурсы, выбрать ресурс "f" или "lf", нажать на кнопку "Выбрать" и "Анализ".
- Поставить галочку ".f (...)", выбрать каталог в поле "Каталог" и нажать "Преобразовать форму(ы)".
- В выбранном каталоге открыть любую обработку в режиме конфигуратора.
Третичная цель: Есть ли возможность вытащить формы, вызываемые методами ПоказатьПредупреждение и ПоказатьВопрос? Вопрос TMV.
Эти формы нет ни в mngbase*.res (*.lf) ни в basicui*.res (*.f), оказывается что есть еще форма CLF в mngcore*.res.
Порядок выполнения действий "Анализ ресурсов 1С (расширенный)":
- Открыть обработку, нажать "Выбрать расширения", снять все ресурсы, выбрать ресурс "f" или "lf", нажать на кнопку "Выбрать" и "Анализ".
- Поставить галочку ".clf (...)", выбрать каталог в поле "Каталог" и нажать "Преобразовать форму(ы)".
- В выбранном каталоге открыть любую обработку в режиме конфигуратора.
Идеи для разработки:
Получить системную папку bin 1С, прочитать файл mngbase_root.res, найти в нём позицию первого ".lf" и нулевой байт и читать пока идут печатаемые символы или нулевой байт.Уметь сравнивать ресурсы: какие ресурсы добавлены, а какие удалены. Например, сравнить 2 файла mngbase_root.res разных версий платформы.Анализировать ресурсы всех файлов.Преобразовать стандартные обычные формы (*.f).
Не стоит забывать, что такое использование стандартных форм является недокументированным.