Перейти к содержанию
autoformat

Автоформатирование кода

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

Проверяйте изменения перед загрузкой

Обработка исправляет исходники, а не только сообщает об отклонениях. Запускайте её на рабочей копии и просматривайте сравнение файлов.

Где получить

Пакетный запуск

Настройте обработку интерактивно и выполните команду Выгрузить параметры автоформатирования. Она создаёт XML или ZIP с точной структурой параметров текущей версии.

"C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe" ENTERPRISE ^
  /F "C:\Bases\Development" ^
  /N "Администратор" ^
  /Execute "C:\Tools\АвтоформатированиеКодаИЛокализация.epf" ^
  /C "C:\Tools\Config.xml"
/opt/1cv8/x86_64/8.3.27.XXXX/1cv8 ENTERPRISE \
  /F "/Users/user/Bases/Development" \
  /N "Администратор" \
  /Execute "/Users/user/Tools/АвтоформатированиеКодаИЛокализация.epf" \
  /C "/Users/user/Tools/Config.xml"

Примеры Config.xml

Конфигурация выгружается во временный каталог, форматируется и загружается обратно в файловую базу. После загрузки обновляется конфигурация базы данных.

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиАвтоформатирования>
  <ТипИсточника>0</ТипИсточника>
  <ПутьКФайловойБазе>C:\Bases\Development</ПутьКФайловойБазе>
  <Пользователь>Администратор</Пользователь>
  <Пароль></Пароль>
  <КаталогВыгрузкиXML>C:\Temp\autoformat</КаталогВыгрузкиXML>
  <СтрокаЗапускаПлатформы>C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe</СтрокаЗапускаПлатформы>
  <ОбновитьКонфигурациюБД>true</ОбновитьКонфигурациюБД>
</НастройкиАвтоформатирования>

Обработку нужно запускать в этой же серверной базе: значение ПутьКБазе в XML не переключает базу, в которой уже запущен пакетный сеанс.

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиАвтоформатирования>
  <ТипИсточника>1</ТипИсточника>
  <ПутьКБазе>Srvr="server";Ref="development";</ПутьКБазе>
  <Пользователь>Администратор</Пользователь>
  <Пароль></Пароль>
  <КаталогВыгрузкиXML>C:\Temp\autoformat</КаталогВыгрузкиXML>
  <СтрокаЗапускаПлатформы>C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe</СтрокаЗапускаПлатформы>
  <ОбновитьКонфигурациюБД>true</ОбновитьКонфигурациюБД>
</НастройкиАвтоформатирования>

Перед автоформатированием обработка обновит конфигурацию из хранилища. При значении true параметра ПомещатьИзмененныеОбъектыВХранилище она захватит объекты, поместит изменения с указанным комментарием и отменит оставшиеся захваты. Значение false оставит изменения только в базе.

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиАвтоформатирования>
  <ТипИсточника>0</ТипИсточника>
  <ПутьКФайловойБазе>C:\Bases\Development</ПутьКФайловойБазе>
  <Пользователь>Администратор</Пользователь>
  <Пароль></Пароль>
  <КаталогВыгрузкиXML>C:\Temp\autoformat</КаталогВыгрузкиXML>
  <СтрокаЗапускаПлатформы>C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe</СтрокаЗапускаПлатформы>
  <КаталогХранилища>tcp://repository-server/repository</КаталогХранилища>
  <ПользовательХранилища>developer</ПользовательХранилища>
  <ПарольХранилища></ПарольХранилища>
  <ПомещатьИзмененныеОбъектыВХранилище>true</ПомещатьИзмененныеОбъектыВХранилище>
  <ТекстКомментария>Автоформатирование кода</ТекстКомментария>
  <ОбновитьКонфигурациюБД>true</ОбновитьКонфигурациюБД>
</НастройкиАвтоформатирования>

Обработка изменит существующую XML-выгрузку непосредственно в указанном каталоге. В нём должен находиться файл Configuration.xml.

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиАвтоформатирования>
  <ТипИсточника>2</ТипИсточника>
  <КаталогВыгрузкиXML>C:\Projects\Configuration</КаталогВыгрузкиXML>
  <КаталогВыгрузкиРезультат>C:\Projects\Configuration</КаталогВыгрузкиРезультат>
  <СтрокаЗапускаПлатформы>C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe</СтрокаЗапускаПлатформы>
</НастройкиАвтоформатирования>

Укажите корень проекта EDT, содержащий src/Configuration/Configuration.mdo. Обработка изменит файлы проекта непосредственно.

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиАвтоформатирования>
  <ТипИсточника>2</ТипИсточника>
  <КаталогВыгрузкиXML>C:\Projects\MyEDTProject</КаталогВыгрузкиXML>
  <КаталогВыгрузкиРезультат>C:\Projects\MyEDTProject</КаталогВыгрузкиРезультат>
  <СтрокаЗапускаПлатформы>C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe</СтрокаЗапускаПлатформы>
</НастройкиАвтоформатирования>

Если секция СтандартыДляАвтоформатирования присутствует, обработка сначала отключает все правила, затем включает перечисленные. Родительский ключ СтандартNNN обязателен: без него обработчик стандарта не запустится.

<?xml version="1.0" encoding="UTF-8"?>
<НастройкиАвтоформатирования>
  <ТипИсточника>2</ТипИсточника>
  <КаталогВыгрузкиXML>C:\Projects\Configuration</КаталогВыгрузкиXML>
  <КаталогВыгрузкиРезультат>C:\Projects\Configuration</КаталогВыгрузкиРезультат>
  <СтрокаЗапускаПлатформы>C:\Program Files\1cv8\8.3.27.XXXX\bin\1cv8.exe</СтрокаЗапускаПлатформы>
  <СтандартыДляАвтоформатирования>
    <!-- Весь стандарт 455: родитель и все его правила. -->
    <Стандарт>Стандарт455</Стандарт>
    <Стандарт>ЗаменаОбластейВВидеКомментариев</Стандарт>
    <Стандарт>УдалениеПустыхОбластей</Стандарт>
    <Стандарт>ДобавлениеОбластиОписаниеПеременных</Стандарт>
    <Стандарт>ДобавлениеОбластиИнициализация</Стандарт>

    <!-- Только п. 1.3 стандарта 455: удалите правила выше и оставьте:
    <Стандарт>Стандарт455</Стандарт>
    <Стандарт>ЗаменаОбластейВВидеКомментариев</Стандарт>
    -->
  </СтандартыДляАвтоформатирования>
</НастройкиАвтоформатирования>

Поддерживаемые автозамены

Стандарт Исправление Ключ настройки
#std437, п. 1 Приведение ключевых слов запроса в канонический вид КаноническийВидКлючевыхСловЗапроса
#std441, п. 1 Приведение ключевых слов встроенного языка в канонический вид КаноническийВидКлючевыхСловЯзыка
#std453 Автоисправление описаний процедур и функций АвтоисправлениеОписанийПроцедурИФункций
#std453 Добавление дополнительных отступов в каждую строку с описанием параметра и возвращаемого значения, если отступ этой строки совпадает с отступом самой секции ДобавлениеДополнительныхОтступовВОписаниеПараметра
#std455, п. 1.3 Перевод разделов модулей в виде комментариев в области в виде #Область ЗаменаОбластейВВидеКомментариев
#std455, п. 1.8 Удаление пустых областей УдалениеПустыхОбластей
#std455, п. 2.2 Добавление раздела #Область ОписаниеПеременных ДобавлениеОбластиОписаниеПеременных
#std455, п. 2.7 Добавление раздела #Область Инициализация ДобавлениеОбластиИнициализация
#std456, п. 1.2 Исправление знака минус «-» в других кодировках ИсправлениеЗнакаМинусВДругихКодировках
#std456, п. 3 Удаление избыточной проверки параметра АвтоТест из кода модулей УдалениеПроверкиАвтоТестИзМодулей
#std456, п. 3 Замена двойного символа точки с запятой ;; на одинарный ; ДвойныеСимволыТочкаСЗапятойВКодеМодулей
#std456, п. 5.1 Установка в крайнюю левую позицию описаний процедур и функций, директив компилятора, инструкций препроцессора и т. д. КрайняяЛеваяПозицияОписания
#std456, п. 6 Перенос комментариев длиннее 120 символов ПереносКомментариевДлиннее120Символов
#std456, п. 7.3 Перевод в верхний регистр первой буквы длинных комментариев ДлинныеКомментарииСБольшойБуквы
#std456, п. 7.3 Добавление пробела в начале комментариев ПробелВНачалеКомментариев
#std458 Очистка излишней локализации объектов метаданных, элементов форм и т. д. для отсутствующих языков ОчисткаИзлишнейЛокализации
#std467, п. 1.3 Удаление некорректных ссылок на отсутствующие объекты подсистем УдалениеНекорректныхСсылокНаОтсутствующиеОбъектыПодсистем
#std467, п. 2.3 Сортировка объектов метаданных верхнего уровня СортировкаОбъектовВерхнегоУровня
#std467 Удаление избыточного обращения к объекту в коде модуля УдалениеИзбыточногоОбращенияКОбъекту
#std474, п. 2.1 Добавление союзов и предлогов в синонимы объектов ДобавлениеСоюзовИПредлоговВСинонимыОбъектов
#std478, п. 1.1 Очистка подсказок, совпадающих с синонимом, у реквизитов, измерений, ресурсов и т. п. ОчисткаПодсказокРеквизитов
#std644, п. 2.2 Добавление пустой строки между объявлением подсистемы и описанием процедуры или функции в области ДляВызоваИзДругихПодсистем ПустаяСтрокаМеждуОбъявлениемПодсистемыИОписаниемПроцедуры
#std680, п. 2 Заключение кода в инструкцию препроцессора ЗаключениеКодаВИнструкциюПрепроцессора
#std702, п. 2.1 Установка признака «Использовать всегда» у реквизита Ссылка в динамических списках УстановкаПризнакаИспользоватьВсегда
#std762, п. 3 Установка синонима для вычисляемых полей СКД и динамических списков УстановкаСинонимаДляВычисляемыхПолей
#std765, п. 2 Заполнение заголовков у всех групп и таблиц на формах ЗаполнениеЗаголовковГруппИТаблицФорм
#std765, п. 2 Замена автогенерируемых заголовков с очисткой слов «Группа», «Список» и т. д. ЗаменаАвтогенерируемыхЗаголовков
#std765, п. 3.1 Очистка бессмысленных подсказок у групп форм ОчисткаПодсказокГруппФорм
#std765, п. 3.2 Очистка заголовков реквизитов формы, не размещённых на форме ОчисткаЗаголовковРеквизитовФормыНеРазмещенныхНаФорме
#std765, п. 4 Заполнение заголовков колонок динамического списка, получающихся в запросе комбинацией других колонок и имеющих свой псевдоним ЗаполнениеЗаголовковКолонокДинамическогоСписка
#std765 Заполнение заголовков колонок таблиц значений ЗаполнениеЗаголовковКолонокТаблицыЗначений
#std765 Заполнение заголовков элементов формы, связанных со свойствами списка значений ЗаполнениеЗаголовковСвойствСпискаЗначений
#std765 Заполнение заголовков элементов формы из связанных реквизитов или команд ЗаполнениеЗаголовковЭлементовФорм
#std767, п. 1 Очистка наименований предопределённых регламентных заданий ОчисткаНаименованийПредопределенныхРегламентныхЗаданий