1
0
mirror of https://github.com/1C-Company/GitConverter.git synced 2025-02-07 13:08:20 +02:00

Merge pull request #35 from 1C-Company/develop

Конвертация в формат EDT

- Конвертация хранилища в формат 1C:EDT
- Улучшение логирования консольных команд
- Различные оптимизации и исправление ошибок
This commit is contained in:
Dmitriy Marmyshev 2018-05-10 16:22:31 +03:00 committed by GitHub
commit 21fcba3ad5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 6455 additions and 4866 deletions

4
.gitattributes vendored Normal file
View File

@ -0,0 +1,4 @@
# Binary file extensions that should not be modified.
*.bin binary
*.axdt binary
*.addin binary

8
.gitignore vendored
View File

@ -1,2 +1,6 @@
/.metadata/
bin/
# IDE
/.metadata/
*/.settings/com._1c.g5.v8.dt.platform.services.core.prefs
# Binary
/bin/

View File

@ -1,2 +0,0 @@
eclipse.preferences.version=1
infobaseBinding/77bd739e-ec79-11e7-5289-8c859066bfb6/runtimeInstallation=com._1c.g5.v8.dt.platform.services.core.resolvableInstallations.environments\:com._1c.g5.v8.dt.platform.services.core.runtimeType.EnterprisePlatform\=8.3.11

View File

@ -1,4 +1,4 @@
Manifest-Version: 1.0
Runtime-Version: 8.3.11
Product-Version: 1.7.0
Runtime-Version: 8.3.12
Product-Version: 1.8.3
Store-Version: 1.0.0

View File

@ -1,25 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:chm="http://v8.1c.ru/8.2/data/chart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<filter>
<viewMode>Normal</viewMode>
<userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID>
</filter>
<order>
<item xsi:type="OrderItemField">
<field>Тип</field>
<orderType>Asc</orderType>
</item>
<item xsi:type="OrderItemField">
<field>ОбъектМетаданных</field>
<orderType>Asc</orderType>
</item>
<viewMode>Normal</viewMode>
<userSettingID>1d66410f-8505-4bff-8027-bc9164a852d6</userSettingID>
</order>
<conditionalAppearance>
<viewMode>Normal</viewMode>
<userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID>
</Settings>
<filter>
<viewMode>Normal</viewMode>
<userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID>
</filter>
<order>
<item xsi:type="OrderItemField">
<field>Тип</field>
<orderType>Asc</orderType>
</item>
<item xsi:type="OrderItemField">
<field>ОбъектМетаданных</field>
<orderType>Asc</orderType>
</item>
<viewMode>Normal</viewMode>
<userSettingID>1d66410f-8505-4bff-8027-bc9164a852d6</userSettingID>
</order>
<conditionalAppearance>
<viewMode>Normal</viewMode>
<userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID>
</Settings>

View File

@ -1,112 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:chm="http://v8.1c.ru/8.2/data/chart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<filter>
<viewMode>Normal</viewMode>
<userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID>
</filter>
<order>
<viewMode>Normal</viewMode>
<userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID>
</order>
<conditionalAppearance>
<item>
<selection/>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Состояние</left>
<comparisonType>NotEqual</comparisonType>
<right xsi:type="dcscor:DesignTimeValue">Перечисление.СостоянияВерсии.ВерсияПомещена</right>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>ЦветТекста</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ТекстЗапрещеннойЯчейкиЦвет</dcscor:value>
</dcscor:item>
</appearance>
</item>
<item>
<selection>
<item>
<field>Email</field>
</item>
</selection>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Email</left>
<comparisonType>NotFilled</comparisonType>
<presentation xsi:type="xs:string">
</presentation>
</item>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Владелец.РазрешитьПомещатьАнонимноЕслиНеНайденПользователь</left>
<comparisonType>Equal</comparisonType>
<right xsi:type="xs:boolean">false</right>
<presentation xsi:type="xs:string">
</presentation>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:nil="true"/>
</dcscor:item>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>Текст</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>&lt;не задано&gt;</v8:content>
</v8:item>
</dcscor:value>
</dcscor:item>
</appearance>
</item>
<item>
<selection>
<item>
<field>Email</field>
</item>
<item>
<field>Пользователь</field>
</item>
</selection>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Email</left>
<comparisonType>NotFilled</comparisonType>
<presentation xsi:type="xs:string">
</presentation>
</item>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Владелец.РазрешитьПомещатьАнонимноЕслиНеНайденПользователь</left>
<comparisonType>Equal</comparisonType>
<right xsi:type="xs:boolean">false</right>
<presentation xsi:type="xs:string">
</presentation>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">#FF0000</dcscor:value>
</dcscor:item>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Текст</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>&lt;не задано&gt;</v8:content>
</v8:item>
</dcscor:value>
</dcscor:item>
</appearance>
</item>
<viewMode>Normal</viewMode>
<userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID>
</Settings>
<filter>
<viewMode>Normal</viewMode>
<userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID>
</filter>
<order>
<viewMode>Normal</viewMode>
<userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID>
</order>
<conditionalAppearance>
<item>
<selection/>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Состояние</left>
<comparisonType>NotEqual</comparisonType>
<right xsi:type="dcscor:DesignTimeValue">Перечисление.СостоянияВерсии.ВерсияПомещена</right>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>ЦветТекста</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">style:ТекстЗапрещеннойЯчейкиЦвет</dcscor:value>
</dcscor:item>
</appearance>
</item>
<item>
<selection>
<item>
<field>Email</field>
</item>
</selection>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Email</left>
<comparisonType>NotFilled</comparisonType>
<presentation xsi:type="xs:string">
</presentation>
</item>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Владелец.РазрешитьПомещатьАнонимноЕслиНеНайденПользователь</left>
<comparisonType>Equal</comparisonType>
<right xsi:type="xs:boolean">false</right>
<presentation xsi:type="xs:string">
</presentation>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:nil="true"/>
</dcscor:item>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>Текст</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>&lt;не задано&gt;</v8:content>
</v8:item>
</dcscor:value>
</dcscor:item>
</appearance>
</item>
<item>
<selection>
<item>
<field>Email</field>
</item>
<item>
<field>Пользователь</field>
</item>
</selection>
<filter>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Email</left>
<comparisonType>NotFilled</comparisonType>
<presentation xsi:type="xs:string">
</presentation>
</item>
<item xsi:type="FilterItemComparison">
<left xsi:type="dcscor:Field">Владелец.РазрешитьПомещатьАнонимноЕслиНеНайденПользователь</left>
<comparisonType>Equal</comparisonType>
<right xsi:type="xs:boolean">false</right>
<presentation xsi:type="xs:string">
</presentation>
</item>
</filter>
<appearance>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:parameter>ЦветФона</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Color">#FF0000</dcscor:value>
</dcscor:item>
<dcscor:item xsi:type="SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Текст</dcscor:parameter>
<dcscor:value xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>&lt;не задано&gt;</v8:content>
</v8:item>
</dcscor:value>
</dcscor:item>
</appearance>
</item>
<viewMode>Normal</viewMode>
<userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID>
</Settings>

View File

@ -35,6 +35,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -723,6 +724,35 @@
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
</items>
<items xsi:type="form:Button">
<name>СписокКонтекстноеМенюУстановитьСостояниеВерсияПомещена</name>
<id>89</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>СписокКонтекстноеМенюУстановитьСостояниеВерсияПомещенаРасширеннаяПодсказка</name>
<id>90</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.УстановитьСостояниеВерсияПомещена</commandName>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
</items>
<items xsi:type="form:Button">
<name>СписокКонтекстноеМенюСброситьСостояние</name>
<id>87</id>
@ -1156,6 +1186,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1249,6 +1280,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
@ -1300,8 +1332,6 @@
СправочникВерсииХранилища.ДатаСоздания,
СправочникВерсииХранилища.Пользователь,
СправочникВерсииХранилища.Комментарий,
СправочникВерсииХранилища.КаталогФайловКонфигурации,
СправочникВерсииХранилища.КаталогИБ,
СправочникВерсииХранилища.Состояние,
СправочникВерсииХранилища.КаталогВременныхФайлов,
СправочникВерсииХранилища.Источник,
@ -1378,6 +1408,7 @@
<name>УстановитьСостояниеВерсияВыгружена</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>УстановитьСостояниеВерсияПолучена</name>
@ -1398,6 +1429,7 @@
<name>УстановитьСостояниеВерсияПолучена</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>УстановитьСостояниеМетаданныеЗагружены</name>
@ -1418,6 +1450,7 @@
<name>УстановитьСостояниеМетаданныеЗагружены</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>СброситьСостояние</name>
@ -1438,6 +1471,24 @@
<name>СброситьСостояние</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>УстановитьСостояниеВерсияПомещена</name>
<title>
<key>ru</key>
<value>Установить состояние &quot;Версия помещена&quot;</value>
</title>
<id>5</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>УстановитьСостояниеВерсияПомещена</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
</formCommands>
<commandInterface>
<navigationPanel/>

View File

@ -1,143 +1,172 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Отбор.Свойство("Владелец") Тогда
Элементы.Владелец.Видимость = Ложь;
КонецЕсли;
Состав.Параметры.УстановитьЗначениеПараметра("Ссылки", Справочники.ВерсииХранилища.ПустаяСсылка());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
Состав.Параметры.УстановитьЗначениеПараметра("Ссылки", Элементы.Список.ВыделенныеСтроки);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура УстановитьСостояниеВерсияПолучена(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ВерсияПолучена");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСостояниеВерсияВыгружена(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ВерсияВыгружена");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСостояниеМетаданныеЗагружены(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "МетаданныеЗагружены");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
&НаКлиенте
Процедура СброситьСостояние(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ПустаяСсылка");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Процедура УстановитьСостояниеНаСервере(Знач ВыделенныеСтроки, Знач Состояние)
Если НЕ ЗначениеЗаполнено(Состояние) ИЛИ ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Состояние = "ПустаяСсылка" Тогда
СостояниеСсылка = Перечисления.СостоянияВерсии.ПустаяСсылка();
Иначе
СостояниеСсылка = Перечисления.СостоянияВерсии[Состояние];
КонецЕсли;
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindowsСервер = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64);
Для Каждого Ссылка Из ВыделенныеСтроки Цикл
ВерсияОбъект = Ссылка.ПолучитьОбъект();
УдалятьФайлы = ПроверитьНеобходимостьУдалятьФайлыВерсии(ВерсияОбъект, СостояниеСсылка);
ВерсияОбъект.Состояние = СостояниеСсылка;
ВерсияОбъект.ВыгрузкаИзменений = Ложь;
ВерсияОбъект.Записать();
// Зачистка файлов команд, если уже были сформированы
Если УдалятьФайлы Тогда
КаталогВыгрузкиВерсий = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВерсияОбъект.Владелец, "КаталогВыгрузкиВерсий");
КаталогВыгрузкиВерсий = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогВыгрузкиВерсий);
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Отбор.Свойство("Владелец") Тогда
Элементы.Владелец.Видимость = Ложь;
КонецЕсли;
Состав.Параметры.УстановитьЗначениеПараметра("Ссылки", Справочники.ВерсииХранилища.ПустаяСсылка());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
Состав.Параметры.УстановитьЗначениеПараметра("Ссылки", Элементы.Список.ВыделенныеСтроки);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура УстановитьСостояниеВерсияПолучена(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ВерсияПолучена");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСостояниеВерсияВыгружена(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ВерсияВыгружена");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСостояниеМетаданныеЗагружены(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "МетаданныеЗагружены");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСостояниеВерсияПомещена(Команда)
ТекстВопроса = НСтр("ru = 'Изменения по версиям не будут отражены в репозитории.
|Вы уверены, что необходимо установить состояние ""Версия помещена""?'");
ОписаниеОповещенияОЗавершении = Новый ОписаниеОповещения("УстановитьСостояниеВерсияПомещенаЗавершение", ЭтотОбъект, Неопределено);
Кнопки = Новый СписокЗначений();
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Уверен, установить ""Версия помещена""'"));
Кнопки.Добавить(КодВозвратаДиалога.Отмена);
ПоказатьВопрос(ОписаниеОповещенияОЗавершении, ТекстВопроса, Кнопки);
КонецПроцедуры
&НаКлиенте
Процедура СброситьСостояние(Команда)
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ПустаяСсылка");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Процедура УстановитьСостояниеНаСервере(Знач ВыделенныеСтроки, Знач Состояние)
Если НЕ ЗначениеЗаполнено(Состояние) ИЛИ ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Состояние = "ПустаяСсылка" Тогда
СостояниеСсылка = Перечисления.СостоянияВерсии.ПустаяСсылка();
Иначе
СостояниеСсылка = Перечисления.СостоянияВерсии[Состояние];
КонецЕсли;
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindowsСервер = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64);
Для Каждого Ссылка Из ВыделенныеСтроки Цикл
ВерсияОбъект = Ссылка.ПолучитьОбъект();
УдалятьФайлы = ПроверитьНеобходимостьУдалятьФайлыВерсии(ВерсияОбъект, СостояниеСсылка);
ВерсияОбъект.Состояние = СостояниеСсылка;
ВерсияОбъект.ВыгрузкаИзменений = Ложь;
ВерсияОбъект.Записать();
// Зачистка файлов команд, если уже были сформированы
Если УдалятьФайлы Тогда
КаталогВыгрузкиВерсий = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВерсияОбъект.Владелец, "КаталогВыгрузкиВерсий");
КаталогВыгрузкиВерсий = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогВыгрузкиВерсий);
ИмяФайлаКомандыGit = "git_command_" + Формат(ВерсияОбъект.Код, "ЧДЦ=; ЧГ=0") + ?(ЭтоWindowsСервер, ".bat", ".sh");
ИмяФайлКомментария = "git_comment_" + Формат(ВерсияОбъект.Код, "ЧДЦ=; ЧГ=0") + ".txt";
Файл = Новый Файл(ИмяФайлаКомандыGit);
ИмяФайлКомментария = "git_comment_" + Формат(ВерсияОбъект.Код, "ЧДЦ=; ЧГ=0") + ".txt";
Файл = Новый Файл(ИмяФайлаКомандыGit);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлаКомандыGit);
КонецЕсли;
Файл = Новый Файл(ИмяФайлКомментария);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлКомментария);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбИзмененииВыделенныеСтроки()
Для Каждого Ссылка Из Элементы.Список.ВыделенныеСтроки Цикл
ОповеститьОбИзменении(Ссылка);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьНеобходимостьУдалятьФайлыВерсии(ВерсияОбъект, НовоеСостояние)
КонецЕсли;
Файл = Новый Файл(ИмяФайлКомментария);
Если Файл.Существует() Тогда
УдалитьФайлы(ИмяФайлКомментария);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбИзмененииВыделенныеСтроки()
Для Каждого Ссылка Из Элементы.Список.ВыделенныеСтроки Цикл
ОповеститьОбИзменении(Ссылка);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьНеобходимостьУдалятьФайлыВерсии(ВерсияОбъект, НовоеСостояние)
Если НовоеСостояние = Перечисления.СостоянияВерсии.ПустаяСсылка() Тогда
Возврат Истина;
ИначеЕсли (ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.МетаданныеЗагружены
ИЛИ ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.НачалоКоммита
ИЛИ ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.ВерсияПомещена)
И НовоеСостояние <> Перечисления.СостоянияВерсии.МетаданныеЗагружены Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
#КонецОбласти
ИначеЕсли (ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.МетаданныеЗагружены
ИЛИ ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.НачалоКоммита
ИЛИ ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.ВерсияПомещена)
И НовоеСостояние <> Перечисления.СостоянияВерсии.МетаданныеЗагружены Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура УстановитьСостояниеВерсияПомещенаЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
УстановитьСостояниеНаСервере(Элементы.Список.ВыделенныеСтроки, "ВерсияПомещена");
ОповеститьОбИзмененииВыделенныеСтроки();
КонецПроцедуры
#КонецОбласти

View File

@ -185,6 +185,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -308,8 +309,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
</paths>
</dataPath>
<toolTip>
<key>ru</key>
@ -386,58 +389,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>КаталогВыгрузки</name>
<id>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Объект.КаталогФайловКонфигурации</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>КаталогВыгрузкиРасширеннаяПодсказка1</name>
<id>18</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КаталогВыгрузкиКонтекстноеМеню1</name>
<id>17</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>EnterOnInput</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -495,17 +447,22 @@
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>Декорация1</name>
<id>89</id>
<items xsi:type="form:FormField">
<name>Хеш</name>
<id>97</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Объект.Хеш</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>Декорация1РасширеннаяПодсказка1</name>
<id>91</id>
<name>ХешРасширеннаяПодсказка</name>
<id>99</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@ -519,8 +476,8 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>Декорация1КонтекстноеМеню1</name>
<id>90</id>
<name>ХешКонтекстноеМеню</name>
<id>98</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@ -528,11 +485,18 @@
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -606,58 +570,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>КаталогБазы</name>
<id>19</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Объект.КаталогИБ</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>КаталогБазыРасширеннаяПодсказка1</name>
<id>21</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>КаталогБазыКонтекстноеМеню1</name>
<id>20</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>EnterOnInput</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -876,6 +789,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1014,6 +928,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
@ -1586,6 +1501,7 @@
<name>ОбновитьСостояние</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ЗапуститьОбработкуВерсии</name>
@ -1605,6 +1521,7 @@
<name>ЗапуститьОбработкуВерсии</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<commandInterface>
<navigationPanel/>

View File

@ -68,16 +68,32 @@
ПоляВерсии.Вставить("Добавлены:", "Добавлены");
ПоляВерсии.Вставить("Изменены:", "Изменены");
ПоляВерсии.Вставить("Удалены:", "Удалены");
ПоляВерсии.Вставить("Version:", "Версия");
ПоляВерсии.Вставить("Creation date:", "ДатаСоздания");
ПоляВерсии.Вставить("Creation time:", "ВремяСоздания");
ПоляВерсии.Вставить("User:", "Пользователь");
ПоляВерсии.Вставить("Comment:", "Комментарий");
ПоляВерсии.Вставить("Added:", "Добавлены");
ПоляВерсии.Вставить("Changed:", "Изменены");
ПоляВерсии.Вставить("Deleted:", "Удалены");
КолонкаПоиска = Отчет.Область("C1");
ОбластьСтроки = Неопределено;
ОбластьСтроки = Отчет.НайтиТекст("Версия:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
Если ОбластьСтроки = Неопределено Тогда
ОбластьСтроки = Отчет.НайтиТекст("Version:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
КонецЕсли;
Пока ОбластьСтроки <> Неопределено Цикл
ВерсияХранилища = Новый Структура("Версия, ДатаСоздания, ВремяСоздания, Пользователь, Комментарий, Добавлены, Изменены, Удалены", "", "", "", "", "", Новый Массив, Новый Массив, Новый Массив);
СтрокаНачалаВерсии = ОбластьСтроки.Верх;
ОбластьСтроки = Отчет.НайтиТекст("Версия:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
ОбластьСтрокиНаРусском = Отчет.НайтиТекст("Версия:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
Если ОбластьСтрокиНаРусском = Неопределено Тогда
ОбластьСтроки = Отчет.НайтиТекст("Version:", ОбластьСтроки, КолонкаПоиска, Ложь, Истина, Истина, Истина);
Иначе
ОбластьСтроки = ОбластьСтрокиНаРусском;
КонецЕсли;
Если ОбластьСтроки = Неопределено Тогда
// Это последняя версия в файле, получаем конец документа

View File

@ -1,67 +1,68 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка ИЛИ Отказ Тогда
Возврат;
КонецЕсли;
ПредыдущееСостояние = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Состояние");
Если Состояние <> ПредыдущееСостояние Тогда
ДополнительныеСвойства.Вставить("ЗаписыватьНовоеСостояние", Истина);
КонецЕсли;
Если Состояние <> Перечисления.СостоянияВерсии.ПолучениеВерсии
И НЕ ПолучитьФункциональнуюОпцию("ИспользоватьОчередиВыполнения")
ИЛИ НЕ ЗначениеЗаполнено(Источник) Тогда
Источник = Неопределено;
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка ИЛИ Отказ Тогда
Возврат;
КонецЕсли;
Если ДополнительныеСвойства.Свойство("ЗаписыватьНовоеСостояние") Тогда
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
НаборЗаписей = РегистрыСведений.СостоянияВерсии.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ВерсияХранилища.Установить(Ссылка);
НаборЗаписей.Отбор.Период.Установить(ТекущаяДатаСеанса);
Запись = НаборЗаписей.Добавить();
Запись.Период = ТекущаяДатаСеанса;
Запись.ВерсияХранилища = Ссылка;
Запись.Состояние = Состояние;
НаборЗаписей.Записать();
КонецЕсли;
Если Состояние = Перечисления.СостоянияВерсии.ВерсияПомещена
И (ЗначениеЗаполнено(КаталогИБ)
ИЛИ ЗначениеЗаполнено(КаталогФайловКонфигурации)
ИЛИ ЗначениеЗаполнено(КаталогВременныхФайлов))Тогда
КонвертацияХранилища.УдалитьФайлыВерсииВФоне(Ссылка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка ИЛИ Отказ Тогда
Возврат;
КонецЕсли;
ПредыдущееСостояние = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Состояние");
Если Состояние <> ПредыдущееСостояние Тогда
ДополнительныеСвойства.Вставить("ЗаписыватьНовоеСостояние", Истина);
КонецЕсли;
Если Состояние <> Перечисления.СостоянияВерсии.ПолучениеВерсии
И НЕ ПолучитьФункциональнуюОпцию("ИспользоватьОчередиВыполнения")
ИЛИ НЕ ЗначениеЗаполнено(Источник) Тогда
Источник = Неопределено;
КонецЕсли;
Если Состояние <> Перечисления.СостоянияВерсии.ВерсияПомещена И ЗначениеЗаполнено(Хеш) Тогда
Хеш = "";
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка ИЛИ Отказ Тогда
Возврат;
КонецЕсли;
Если ДополнительныеСвойства.Свойство("ЗаписыватьНовоеСостояние") Тогда
ТекущаяДатаСеанса = ТекущаяДатаСеанса();
НаборЗаписей = РегистрыСведений.СостоянияВерсии.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ВерсияХранилища.Установить(Ссылка);
НаборЗаписей.Отбор.Период.Установить(ТекущаяДатаСеанса);
Запись = НаборЗаписей.Добавить();
Запись.Период = ТекущаяДатаСеанса;
Запись.ВерсияХранилища = Ссылка;
Запись.Состояние = Состояние;
НаборЗаписей.Записать();
КонецЕсли;
Если Состояние = Перечисления.СостоянияВерсии.ВерсияПомещена
И ЗначениеЗаполнено(КаталогВременныхФайлов) Тогда
КонвертацияХранилища.УдалитьФайлыВерсииВФоне(Ссылка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли

View File

@ -203,10 +203,10 @@
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="655bbacc-b888-4515-b93f-64df2b627efe">
<name>КаталогФайловКонфигурации</name>
<name>УдалитьКаталогФайловКонфигурации</name>
<synonym>
<key>ru</key>
<value>Каталог файлов конфигурации</value>
<value>Удалить каталог файлов конфигурации</value>
</synonym>
<comment></comment>
<type>
@ -221,10 +221,10 @@
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="e0557715-5cad-48d3-89fa-7c9dd0df5617">
<name>КаталогИБ</name>
<name>УдалитьКаталогИБ</name>
<synonym>
<key>ru</key>
<value>Каталог ИБ</value>
<value>Удалить каталог ИБ</value>
</synonym>
<comment></comment>
<type>
@ -341,6 +341,32 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="8bf28297-9380-4434-8b3e-7c402b561dfc">
<name>Хеш</name>
<synonym>
<key>ru</key>
<value>Хеш</value>
</synonym>
<comment></comment>
<type>
<types>String</types>
<stringQualifiers>
<length>40</length>
</stringQualifiers>
</type>
<toolTip>
<key>ru</key>
<value>Хеш SHA1 коммита версии в Git, заполняется автоматически при помещении версии в репозиторий.</value>
</toolTip>
<mask></mask>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue">
<value></value>
</fillValue>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<tabularSections uuid="e384f3de-6d17-4ca9-aeca-1862aaf10be0">
<producedTypes>
<objectType typeId="6275aa89-a315-4d55-b16d-907c074a032e" valueTypeId="0bfa8f28-8d78-493d-b663-32aa6d4a331c"/>

View File

@ -262,6 +262,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -453,6 +454,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -597,6 +599,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -731,6 +734,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -745,8 +749,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
</paths>
</dataPath>
<toolTip>
<key>ru</key>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:chm="http://v8.1c.ru/8.2/data/chart" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings">
<dcsset:filter>
<dcsset:viewMode>Normal</dcsset:viewMode>
<dcsset:userSettingID>65a1fec4-fe08-4f6e-8566-d4cc60d7a48f</dcsset:userSettingID>
</dcsset:filter>
<dcsset:order>
<dcsset:viewMode>Normal</dcsset:viewMode>
<dcsset:userSettingID>9edc1770-1585-4efd-ad08-7f3ac117f8fe</dcsset:userSettingID>
</dcsset:order>
<dcsset:conditionalAppearance>
<dcsset:viewMode>Normal</dcsset:viewMode>
<dcsset:userSettingID>07b70747-5c33-439b-a20c-6690057072c6</dcsset:userSettingID>
</dcsset:conditionalAppearance>
<dcsset:itemsViewMode>Normal</dcsset:itemsViewMode>
<dcsset:itemsUserSettingID>f7e7a65c-b2a7-4cc4-b579-7c6ec6d794ca</dcsset:itemsUserSettingID>
</Settings>
<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:chm="http://v8.1c.ru/8.2/data/chart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<filter>
<viewMode>Normal</viewMode>
<userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID>
</filter>
<order>
<viewMode>Normal</viewMode>
<userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID>
</order>
<conditionalAppearance>
<viewMode>Normal</viewMode>
<userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID>
</conditionalAppearance>
<itemsViewMode>Normal</itemsViewMode>
<itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID>
</Settings>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:FormGroup">
<name>СписокКомпоновщикНастроекПользовательскиеНастройки</name>
<id>1</id>
@ -35,6 +35,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
@ -58,8 +59,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Наименование</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.Description</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>НаименованиеРасширеннаяПодсказка</name>
@ -104,8 +107,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Хранилище</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.Хранилище</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ХранилищеРасширеннаяПодсказка</name>
@ -150,8 +155,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Операция</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.Операция</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ОперацияРасширеннаяПодсказка</name>
@ -196,8 +203,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.МаксимальноеКоличествоОпераций</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.МаксимальноеКоличествоОпераций</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>МаксимальноеКоличествоОперацийРасширеннаяПодсказка</name>
@ -242,8 +251,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ПрефиксНачалаНомераВерсии</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.ПрефиксНачалаНомераВерсии</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ПрефиксНачалаНомераВерсииРасширеннаяПодсказка</name>
@ -288,8 +299,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ПрефиксОкончанияНомераВерсии</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.ПрефиксОкончанияНомераВерсии</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ПрефиксОкончанияНомераВерсииРасширеннаяПодсказка</name>
@ -332,8 +345,10 @@
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</paths>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
@ -546,10 +561,15 @@
<enableStartDrag>true</enableStartDrag>
<enableDrag>true</enableDrag>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.СтандартнаяКартинка</segments>
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<autoRefreshPeriod>60</autoRefreshPeriod>
<period>
<startDate>0001-01-01T00:00:00</startDate>
<endDate>0001-01-01T00:00:00</endDate>
</period>
<topLevelParent xsi:type="core:UndefinedValue"/>
<showRoot>true</showRoot>
<userSettingsGroup>СписокКомпоновщикНастроекПользовательскиеНастройки</userSettingsGroup>
</extInfo>

View File

@ -202,6 +202,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -444,6 +445,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -582,6 +584,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<autoCommandBar>

View File

@ -2,9 +2,7 @@
<mdclass:Catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="de543316-87a9-424b-926e-5dd2b29aa8e8">
<producedTypes>
<objectType typeId="cc38e850-1e8e-4bf9-a6d3-6a8737cf7f47" valueTypeId="79c6c593-6cff-4bd0-843a-ac25d311ec3b"/>
<refType typeId="7eb6c597-335f-41ae-8de5-a7ab0388fb72" valueTypeId="45459488-7d00-424d-b2eb-189e4f9eb8f5">
<emptyRef/>
</refType>
<refType typeId="7eb6c597-335f-41ae-8de5-a7ab0388fb72" valueTypeId="45459488-7d00-424d-b2eb-189e4f9eb8f5"/>
<selectionType typeId="add4dd39-b87d-4158-a317-529230f5f984" valueTypeId="cf67659d-1dfa-4ca4-ac79-ef6c4f2b5740"/>
<listType typeId="752a149c-c040-4b7b-b5d4-b60fde88fa0a" valueTypeId="9dbbca2a-b7c3-44ff-a1b6-79b5947a2f72"/>
<managerType typeId="325cd31b-3880-40ab-9742-ebea0fd8bd52" valueTypeId="7dbbfc10-9f2d-4aea-bc97-70c58050cdcc"/>
@ -287,6 +285,7 @@
<key>ru</key>
<value>Форма списка</value>
</synonym>
<comment></comment>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
@ -296,10 +295,12 @@
<key>ru</key>
<value>Очереди выполнения</value>
</synonym>
<comment></comment>
<group>FormNavigationPanelGoTo</group>
<commandParameterType>
<types>CatalogRef.ХранилищаКонфигураций</types>
</commandParameterType>
<representation>Auto</representation>
<shortcut></shortcut>
</commands>
</mdclass:Catalog>

View File

@ -35,6 +35,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Table">
@ -244,6 +245,54 @@
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Ссылка</name>
<id>29</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible/>
<dataPath xsi:type="form:DataPath">
<segments>Список.Ссылка</segments>
</dataPath>
<extendedTooltip>
<name>СсылкаРасширеннаяПодсказка</name>
<id>31</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СсылкаКонтекстноеМеню</name>
<id>30</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>СписокКоманднаяПанель</name>

View File

@ -136,6 +136,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -245,6 +246,69 @@
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>КонвертироватьВФорматEDT</name>
<id>166</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КонвертироватьВФорматEDTРасширеннаяПодсказка</name>
<id>167</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.КонвертироватьВФорматEDT</commandName>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<textColor xsi:type="core:ColorRef">
<color>Style.SpecialTextColor</color>
</textColor>
</items>
<items xsi:type="form:Button">
<name>ПроверитьДоступнуюВерсиюEDT</name>
<id>168</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПроверитьДоступнуюВерсиюEDTРасширеннаяПодсказка</name>
<id>169</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПроверитьДоступнуюВерсиюEDT</commandName>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@ -271,6 +335,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -414,6 +479,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -562,6 +628,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -635,8 +702,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
</paths>
</dataPath>
<toolTip>
<key>ru</key>
@ -713,6 +782,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -856,6 +926,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -994,6 +1065,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -1144,6 +1216,10 @@
<items xsi:type="form:FormField">
<name>ВыгружатьИзменения</name>
<id>145</id>
<title>
<key>ru</key>
<value>Выгружать изменения (ускорить конвертацию)</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@ -1155,6 +1231,7 @@
</paths>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ВыгружатьИзмененияРасширеннаяПодсказка</name>
<id>147</id>
@ -1357,6 +1434,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1414,7 +1492,7 @@
<textEdit>true</textEdit>
<inputHint>
<key>ru</key>
<value>Относительный путь к каталогу. Может быть именем проекта в EDT или пустым...</value>
<value>Относительный путь к каталогу проекта. Может быть именем проекта в EDT или пустым...</value>
</inputHint>
</extInfo>
</items>
@ -1487,6 +1565,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -1655,6 +1734,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1805,6 +1885,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1990,6 +2071,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -2294,6 +2376,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -2450,6 +2533,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
@ -2490,6 +2574,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -2584,6 +2669,7 @@
<segments>Объект.Описание</segments>
</titleDataPath>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
@ -2763,6 +2849,64 @@
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
</items>
<items xsi:type="form:Button">
<name>ФормаПроверитьДоступнуюВерсиюEDT</name>
<id>170</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаПроверитьДоступнуюВерсиюEDTРасширеннаяПодсказка</name>
<id>171</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ПроверитьДоступнуюВерсиюEDT</commandName>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
</items>
<items xsi:type="form:Button">
<name>ФормаКонвертироватьВФорматEDT</name>
<id>164</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаКонвертироватьВФорматEDTРасширеннаяПодсказка</name>
<id>165</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.КонвертироватьВФорматEDT</commandName>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@ -3052,6 +3196,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ЗапуститьКонвертацию</name>
@ -3072,6 +3217,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ВыполнитьКоммиты</name>
@ -3092,6 +3238,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>СоздатьРепозиторийGit</name>
@ -3115,6 +3262,7 @@
<name>СоздатьРепозиторийGit</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ОбновлятьСостояниеАвтоматически</name>
@ -3135,6 +3283,7 @@
<name>ОбновлятьСостояниеАвтоматически</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ЗагрузитьВерсииИзОтчетаПоХранилищу</name>
@ -3158,6 +3307,7 @@
<name>ЗагрузитьВерсииИзОтчетаПоХранилищу</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>УстановитьАдресРепозиторияGit</name>
@ -3181,6 +3331,44 @@
<name>УстановитьАдресРепозиторияGit</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>КонвертироватьВФорматEDT</name>
<title>
<key>ru</key>
<value>Конвертировать в формат 1C:EDT</value>
</title>
<id>8</id>
<toolTip>
<key>ru</key>
<value>Запустить помощник конвертации репозитория в формат 1C:EDT</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>КонвертироватьВФорматEDT</name>
</handler>
</action>
</formCommands>
<formCommands>
<name>ПроверитьДоступнуюВерсиюEDT</name>
<title>
<key>ru</key>
<value>Проверить доступную версию 1C:EDT</value>
</title>
<id>9</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПроверитьДоступнуюВерсиюEDT</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
</formCommands>
<commandInterface>
<navigationPanel/>

View File

@ -1,142 +1,157 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если Отказ Тогда
Возврат;
КонецЕсли;
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Наименование = Адрес;
// Создание регламентного задания (получение уникального идентификатора)
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗаданияСервер.Задание(РегламентноеЗадание);
Если Задание = Неопределено
И ДополнительныеСвойства.Свойство("Использование")
И ДополнительныеСвойства.Использование Тогда
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.КонвертацияХранилища);
ПараметрыЗадания.Вставить("Использование", Ложь);
ПараметрыЗадания.Вставить("Расписание", Новый РасписаниеРегламентногоЗадания);
ПараметрыЗадания.Вставить("Наименование", НСтр("ru = 'Конвертация хранилища'") + ": " + СокрЛП(Адрес));
Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
РегламентноеЗадание = РегламентныеЗаданияСервер.УникальныйИдентификатор(Задание);
КонецЕсли;
КаталогВыгрузкиВРепозитории = СокрЛП(КаталогВыгрузкиВРепозитории);
Если НЕ ПустаяСтрока(КаталогВыгрузкиВРепозитории) Тогда
ПервыйСимвол = Лев(КаталогВыгрузкиВРепозитории, 1);
Если ПервыйСимвол = "\" ИЛИ ПервыйСимвол = "/" Тогда
КаталогВыгрузкиВРепозитории = Сред(КаталогВыгрузкиВРепозитории, 2);
КонецЕсли;
КонецЕсли;
ДополнительныеСвойства.Вставить("Задание",Задание);
УстановитьПривилегированныйРежим(Ложь);
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьОчередиВыполнения")
ИЛИ ВыгружатьИзменения И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.10.0") < 1 Тогда
ВыгружатьИзменения = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если Отказ ИЛИ ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если ДополнительныеСвойства.Свойство("Задание") Тогда
Задание = ДополнительныеСвойства.Задание;
Если Задание = Неопределено Тогда
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
ПараметрыЗадания = Новый Структура;
// Расписание устанавливается в форме элемента
Если ДополнительныеСвойства.Свойство("Расписание")
И ТипЗнч(ДополнительныеСвойства.Расписание) = Тип("РасписаниеРегламентногоЗадания")
И Строка(ДополнительныеСвойства.Расписание) <> Строка(Задание.Расписание) Тогда
ПараметрыЗадания.Вставить("Расписание", ДополнительныеСвойства.Расписание);
КонецЕсли;
// Использование устанавливается в форме элемента
Если ПометкаУдаления И Задание.Использование Тогда
ПараметрыЗадания.Вставить("Использование", Ложь);
ИначеЕсли ДополнительныеСвойства.Свойство("Использование")
И ДополнительныеСвойства.Использование <> Задание.Использование Тогда
ПараметрыЗадания.Вставить("Использование", ДополнительныеСвойства.Использование);
КонецЕсли;
НаименованиеЗадания = НСтр("ru = 'Конвертация хранилища'") + ": ";
НаименованиеЗадания = НаименованиеЗадания + СокрЛП(Адрес);
ПараметрыЗадания.Вставить("Наименование", НаименованиеЗадания);
ПараметрыЗадания.Вставить("Ключ", Строка(Ссылка.УникальныйИдентификатор()));
Если Задание.Параметры.Количество() <> 1 ИЛИ Задание.Параметры[0] <> Ссылка Тогда
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Ссылка);
ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
РегламентныеЗаданияСервер.ИзменитьЗадание(РегламентноеЗадание, ПараметрыЗадания);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
РегламентноеЗадание = Неопределено;
ВерсияВGit = Неопределено;
КонецПроцедуры
Процедура ПередУдалением(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
РегламентныеЗаданияСервер.УдалитьЗадание(РегламентноеЗадание);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНеПроверяемыхРеквизитов = Новый Массив;
Если НЕ ЗначениеЗаполнено(АдресРепозиторияGit) Тогда
МассивНеПроверяемыхРеквизитов.Добавить("ПользовательСервераGit");
МассивНеПроверяемыхРеквизитов.Добавить("ПарольСервераGit");
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНеПроверяемыхРеквизитов);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если Отказ Тогда
Возврат;
КонецЕсли;
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Наименование = Адрес;
// Создание регламентного задания (получение уникального идентификатора)
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗаданияСервер.Задание(РегламентноеЗадание);
Если Задание = Неопределено
И ДополнительныеСвойства.Свойство("Использование")
И ДополнительныеСвойства.Использование Тогда
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.КонвертацияХранилища);
ПараметрыЗадания.Вставить("Использование", Ложь);
ПараметрыЗадания.Вставить("Расписание", Новый РасписаниеРегламентногоЗадания);
ПараметрыЗадания.Вставить("Наименование", НСтр("ru = 'Конвертация хранилища'") + ": " + СокрЛП(Адрес));
Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
РегламентноеЗадание = РегламентныеЗаданияСервер.УникальныйИдентификатор(Задание);
КонецЕсли;
КаталогВыгрузкиВРепозитории = СокрЛП(КаталогВыгрузкиВРепозитории);
Если НЕ ПустаяСтрока(КаталогВыгрузкиВРепозитории) Тогда
ПервыйСимвол = Лев(КаталогВыгрузкиВРепозитории, 1);
Если ПервыйСимвол = "\" ИЛИ ПервыйСимвол = "/" Тогда
КаталогВыгрузкиВРепозитории = Сред(КаталогВыгрузкиВРепозитории, 2);
КонецЕсли;
КонецЕсли;
ДополнительныеСвойства.Вставить("Задание",Задание);
УстановитьПривилегированныйРежим(Ложь);
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьОчередиВыполнения")
ИЛИ ВыгружатьИзменения И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.10.0") < 1 Тогда
ВыгружатьИзменения = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если Отказ ИЛИ ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если ДополнительныеСвойства.Свойство("Задание") Тогда
Задание = ДополнительныеСвойства.Задание;
Если Задание = Неопределено Тогда
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
ПараметрыЗадания = Новый Структура;
// Расписание устанавливается в форме элемента
Если ДополнительныеСвойства.Свойство("Расписание")
И ТипЗнч(ДополнительныеСвойства.Расписание) = Тип("РасписаниеРегламентногоЗадания")
И Строка(ДополнительныеСвойства.Расписание) <> Строка(Задание.Расписание) Тогда
ПараметрыЗадания.Вставить("Расписание", ДополнительныеСвойства.Расписание);
КонецЕсли;
// Использование устанавливается в форме элемента
Если ПометкаУдаления И Задание.Использование Тогда
ПараметрыЗадания.Вставить("Использование", Ложь);
ИначеЕсли ДополнительныеСвойства.Свойство("Использование")
И ДополнительныеСвойства.Использование <> Задание.Использование Тогда
ПараметрыЗадания.Вставить("Использование", ДополнительныеСвойства.Использование);
КонецЕсли;
НаименованиеЗадания = НСтр("ru = 'Конвертация хранилища'") + ": ";
НаименованиеЗадания = НаименованиеЗадания + СокрЛП(Адрес);
ПараметрыЗадания.Вставить("Наименование", НаименованиеЗадания);
ПараметрыЗадания.Вставить("Ключ", Строка(Ссылка.УникальныйИдентификатор()));
Если Задание.Параметры.Количество() <> 1 ИЛИ Задание.Параметры[0] <> Ссылка Тогда
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Ссылка);
ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
РегламентныеЗаданияСервер.ИзменитьЗадание(РегламентноеЗадание, ПараметрыЗадания);
КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования)
РегламентноеЗадание = Неопределено;
ВерсияВGit = Неопределено;
КонецПроцедуры
Процедура ПередУдалением(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
РегламентныеЗаданияСервер.УдалитьЗадание(РегламентноеЗадание);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНеПроверяемыхРеквизитов = Новый Массив;
Если НЕ ЗначениеЗаполнено(АдресРепозиторияGit) Тогда
МассивНеПроверяемыхРеквизитов.Добавить("ПользовательСервераGit");
МассивНеПроверяемыхРеквизитов.Добавить("ПарольСервераGit");
КонецЕсли;
Если КонвертироватьВФорматEDT И ЗначениеЗаполнено(ВерсияПлатформы) Тогда
Сегменты = СтрРазделить(ВерсияПлатформы, ".");
Если Сегменты.Количество() <> 4 Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Версия должна быть в формате Х.Х.Х.Х'");
Сообщение.Поле = "ВерсияПлатформы";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Иначе
МассивНеПроверяемыхРеквизитов.Добавить("КаталогВыгрузкиВРепозитории");
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНеПроверяемыхРеквизитов);
КонецПроцедуры
#КонецОбласти
#КонецЕсли

View File

@ -634,11 +634,12 @@
</type>
<toolTip>
<key>ru</key>
<value>Относительный путь к каталогу выгрузки конфигурации в репозитории git. Может быть пустым.</value>
<value>Каталог проекта 1C:EDT или относительный путь к каталогу выгрузки конфигурации в репозитории git. Не может быть пустым, если хранилище конвертиируется в формат EDT.</value>
</toolTip>
<mask></mask>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<fillValue xsi:type="core:StringValue">
<value></value>
</fillValue>
@ -679,7 +680,7 @@
</type>
<toolTip>
<key>ru</key>
<value>Начиная с платформы 8.3.10 возможно использовать выгрузку изменений между версиями.</value>
<value>Начиная с платформы 8.3.10 возможно использовать выгрузку изменений между версиями - это позволяет существенно ускорить конвертацию. Необходимо использовать &quot;Очереди выполнения&quot; с данной опцией.</value>
</toolTip>
<mask></mask>
<minValue xsi:type="core:UndefinedValue"/>
@ -710,6 +711,25 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="02dee9a8-9e7c-4ecd-8dc5-46666fa8bb52">
<name>КонвертироватьВФорматEDT</name>
<synonym>
<key>ru</key>
<value>Конвертировать в формат EDT</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Рекомендуется использовать конвертацию в формат 1C:EDT. Для переключения устаревших настроек воспользуйтесь обработкой &quot;Конвертация в формат EDT&quot;</value>
</toolTip>
<fillValue xsi:type="core:BooleanValue">
<value>true</value>
</fillValue>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="6cc206d4-d733-4a4a-8ed2-adf76440f6af">
<name>ФормаЭлемента</name>
<synonym>

View File

@ -1,176 +1,176 @@
#Область ПрограммныйИнтерфейс
// Обработка очереди последовательно по версиям
//
// Параметры:
// Очередь - СправочникСсылка.ОчередиВыполнения - ссылка на очередь выполнения
Процедура ОбработатьОчередь(Очередь) Экспорт
РеквизитыОчереди = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Очередь, "Хранилище, Операция, МаксимальноеКоличествоОпераций, ПрефиксНачалаНомераВерсии, ПрефиксОкончанияНомераВерсии");
Хранилище = РеквизитыОчереди.Хранилище;
Если РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ВыгрузкаКонфигурации Тогда
Состояние = Перечисления.СостоянияВерсии.ВерсияПолучена;
СостояниеВыполнения = Перечисления.СостоянияВерсии.ВыгрузкаВерсии;
ИначеЕсли РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ЗагрузкаМетаданных Тогда
Состояние = Перечисления.СостоянияВерсии.ВерсияВыгружена;
СостояниеВыполнения = Перечисления.СостоянияВерсии.ЗагрузкаМетаданных;
КонецЕсли;
МинимальнаяВерсия = 0;
МаксимальнаяВерсия = 0;
Если ЗначениеЗаполнено(Хранилище) Тогда
МинимальнаяВерсия = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Хранилище, "ВерсияВGit.Код");
Если МинимальнаяВерсия = null ИЛИ ТипЗнч(МинимальнаяВерсия) <> Тип("Число") Тогда
МинимальнаяВерсия = 0;
КонецЕсли;
Если РеквизитыОчереди.ПрефиксОкончанияНомераВерсии > 0 Тогда
МаксимальнаяВерсия = МинимальнаяВерсия + РеквизитыОчереди.ПрефиксОкончанияНомераВерсии;
КонецЕсли;
МинимальнаяВерсия = МинимальнаяВерсия + РеквизитыОчереди.ПрефиксНачалаНомераВерсии;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| ВерсииХранилища.Ссылка,
| ХранилищаКонфигураций.МинимальноеКоличествоМетаданных КАК МинимальноеКоличествоМетаданных,
| ВерсииХранилища.ВыгрузкаИзменений
|ИЗ
| Справочник.ВерсииХранилища КАК ВерсииХранилища
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХранилищаКонфигураций КАК ХранилищаКонфигураций
| ПО ВерсииХранилища.Владелец = ХранилищаКонфигураций.Ссылка
| И (ХранилищаКонфигураций.ОбрабатыватьВсеОчереди)
| И (НЕ ХранилищаКонфигураций.ЗапретитьИспользованиеОбщихОчередей
| ИЛИ ХранилищаКонфигураций.Ссылка = &Хранилище)
|ГДЕ
| (ВерсииХранилища.Состояние = &Состояние
| ИЛИ (ВерсииХранилища.Источник = &Очередь
| ИЛИ ВерсииХранилища.Источник = НЕОПРЕДЕЛЕНО)
| И ВерсииХранилища.Состояние = &СостояниеВыполнения)
| И ХранилищаКонфигураций.ОбрабатыватьВсеОчереди
| И ВерсииХранилища.Код > &МинимальнаяВерсия
| И (ВерсииХранилища.Код < &МаксимальнаяВерсия
| ИЛИ &МаксимальнаяВерсия = 0)
|
|УПОРЯДОЧИТЬ ПО
| ВерсииХранилища.ДатаСоздания,
| ХранилищаКонфигураций.Ссылка,
| ВерсииХранилища.Код";
Запрос.УстановитьПараметр("Очередь", Очередь);
Запрос.УстановитьПараметр("Состояние", Состояние);
Запрос.УстановитьПараметр("СостояниеВыполнения", СостояниеВыполнения);
Запрос.УстановитьПараметр("Хранилище", Хранилище);
Запрос.УстановитьПараметр("МинимальнаяВерсия", МинимальнаяВерсия);
Запрос.УстановитьПараметр("МаксимальнаяВерсия", МаксимальнаяВерсия);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "100", Формат(РеквизитыОчереди.МаксимальноеКоличествоОпераций + 10, "ЧДЦ=; ЧГ=0"));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КоличествоОпераций = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КоличествоОпераций = КоличествоОпераций + 1;
Если РеквизитыОчереди.МаксимальноеКоличествоОпераций > 0 И КоличествоОпераций > РеквизитыОчереди.МаксимальноеКоличествоОпераций Тогда
Возврат;
КонецЕсли;
ВерсияХранилища = ВыборкаДетальныеЗаписи.Ссылка;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииХранилища");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ВерсияХранилища);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
ОбъектВерсии = ВерсияХранилища.ПолучитьОбъект();
Если ЗначениеЗаполнено(ОбъектВерсии.Источник) И ОбъектВерсии.Источник <> Очередь Тогда
ОтменитьТранзакцию();
Продолжить;
КонецЕсли;
Если ОбъектВерсии.Состояние = СостояниеВыполнения Тогда
ОбъектВерсии.Состояние = Состояние;
КонецЕсли;
ОбъектВерсии.Источник = Очередь;
ОбъектВерсии.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Продолжить;
КонецПопытки;
ДлительныеОперации.СообщитьПрогресс(10, НСтр("ru = 'Обработка версии в очереди:';") + " " + КоличествоОпераций);
Если РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ВыгрузкаКонфигурации Тогда
Попытка
Параметры = КонвертацияХранилища.ПолучитьПараметрыОбработкиВерсии(ВерсияХранилища);
КонвертацияХранилища.ВыгрузитьВерсию(ВерсияХранилища, Параметры);
Исключение
ОбъектВерсии = ВерсияХранилища.ПолучитьОбъект();
ОбъектВерсии.Источник = Неопределено;
ОбъектВерсии.Записать();
Продолжить;
КонецПопытки;
ИначеЕсли РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ЗагрузкаМетаданных Тогда
Параметры = КонвертацияХранилища.ПолучитьПараметрыОбработкиВерсии(ВерсияХранилища);
КонвертацияХранилища.ПрочитатьСтруктуруВыгрузкиВерсии(ВерсияХранилища, Параметры);
КонецЕсли;
ОбъектВерсии = ВерсияХранилища.ПолучитьОбъект();
ОбъектВерсии.Источник = Неопределено;
Если НЕ ВыборкаДетальныеЗаписи.ВыгрузкаИзменений
И РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ЗагрузкаМетаданных
И ВыборкаДетальныеЗаписи.МинимальноеКоличествоМетаданных > 0
И ОбъектВерсии.КоличествоМетаданных < ВыборкаДетальныеЗаписи.МинимальноеКоличествоМетаданных Тогда
ОбъектВерсии.Состояние = Перечисления.СостоянияВерсии.ПустаяСсылка();
КонецЕсли;
ОбъектВерсии.Записать();
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ПрограммныйИнтерфейс
// Обработка очереди последовательно по версиям
//
// Параметры:
// Очередь - СправочникСсылка.ОчередиВыполнения - ссылка на очередь выполнения
Процедура ОбработатьОчередь(Очередь) Экспорт
РеквизитыОчереди = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Очередь, "Хранилище, Операция, МаксимальноеКоличествоОпераций, ПрефиксНачалаНомераВерсии, ПрефиксОкончанияНомераВерсии");
Хранилище = РеквизитыОчереди.Хранилище;
Если РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ВыгрузкаКонфигурации Тогда
Состояние = Перечисления.СостоянияВерсии.ВерсияПолучена;
СостояниеВыполнения = Перечисления.СостоянияВерсии.ВыгрузкаВерсии;
ИначеЕсли РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ЗагрузкаМетаданных Тогда
Состояние = Перечисления.СостоянияВерсии.ВерсияВыгружена;
СостояниеВыполнения = Перечисления.СостоянияВерсии.ЗагрузкаМетаданных;
КонецЕсли;
МинимальнаяВерсия = 0;
МаксимальнаяВерсия = 0;
Если ЗначениеЗаполнено(Хранилище) Тогда
МинимальнаяВерсия = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Хранилище, "ВерсияВGit.Код");
Если МинимальнаяВерсия = null ИЛИ ТипЗнч(МинимальнаяВерсия) <> Тип("Число") Тогда
МинимальнаяВерсия = 0;
КонецЕсли;
Если РеквизитыОчереди.ПрефиксОкончанияНомераВерсии > 0 Тогда
МаксимальнаяВерсия = МинимальнаяВерсия + РеквизитыОчереди.ПрефиксОкончанияНомераВерсии;
КонецЕсли;
МинимальнаяВерсия = МинимальнаяВерсия + РеквизитыОчереди.ПрефиксНачалаНомераВерсии;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 100
| ВерсииХранилища.Ссылка,
| ХранилищаКонфигураций.МинимальноеКоличествоМетаданных КАК МинимальноеКоличествоМетаданных,
| ВерсииХранилища.ВыгрузкаИзменений
|ИЗ
| Справочник.ВерсииХранилища КАК ВерсииХранилища
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХранилищаКонфигураций КАК ХранилищаКонфигураций
| ПО ВерсииХранилища.Владелец = ХранилищаКонфигураций.Ссылка
| И (ХранилищаКонфигураций.ОбрабатыватьВсеОчереди)
| И (НЕ ХранилищаКонфигураций.ЗапретитьИспользованиеОбщихОчередей
| ИЛИ ХранилищаКонфигураций.Ссылка = &Хранилище)
|ГДЕ
| (ВерсииХранилища.Состояние = &Состояние
| ИЛИ (ВерсииХранилища.Источник = &Очередь
| ИЛИ ВерсииХранилища.Источник = НЕОПРЕДЕЛЕНО)
| И ВерсииХранилища.Состояние = &СостояниеВыполнения)
| И ХранилищаКонфигураций.ОбрабатыватьВсеОчереди
| И ВерсииХранилища.Код > &МинимальнаяВерсия
| И (ВерсииХранилища.Код < &МаксимальнаяВерсия
| ИЛИ &МаксимальнаяВерсия = 0)
|
|УПОРЯДОЧИТЬ ПО
| ВерсииХранилища.ДатаСоздания,
| ХранилищаКонфигураций.Ссылка,
| ВерсииХранилища.Код";
Запрос.УстановитьПараметр("Очередь", Очередь);
Запрос.УстановитьПараметр("Состояние", Состояние);
Запрос.УстановитьПараметр("СостояниеВыполнения", СостояниеВыполнения);
Запрос.УстановитьПараметр("Хранилище", Хранилище);
Запрос.УстановитьПараметр("МинимальнаяВерсия", МинимальнаяВерсия);
Запрос.УстановитьПараметр("МаксимальнаяВерсия", МаксимальнаяВерсия);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "100", Формат(РеквизитыОчереди.МаксимальноеКоличествоОпераций + 10, "ЧДЦ=; ЧГ=0"));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КоличествоОпераций = 0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КоличествоОпераций = КоличествоОпераций + 1;
Если РеквизитыОчереди.МаксимальноеКоличествоОпераций > 0 И КоличествоОпераций > РеквизитыОчереди.МаксимальноеКоличествоОпераций Тогда
Возврат;
КонецЕсли;
ВерсияХранилища = ВыборкаДетальныеЗаписи.Ссылка;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ВерсииХранилища");
ЭлементБлокировки.УстановитьЗначение("Ссылка", ВерсияХранилища);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
ОбъектВерсии = ВерсияХранилища.ПолучитьОбъект();
Если ЗначениеЗаполнено(ОбъектВерсии.Источник) И ОбъектВерсии.Источник <> Очередь Тогда
ОтменитьТранзакцию();
Продолжить;
КонецЕсли;
Если ОбъектВерсии.Состояние = СостояниеВыполнения Тогда
ОбъектВерсии.Состояние = Состояние;
КонецЕсли;
ОбъектВерсии.Источник = Очередь;
ОбъектВерсии.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Продолжить;
КонецПопытки;
ДлительныеОперации.СообщитьПрогресс(10, НСтр("ru = 'Обработка версии в очереди:';") + " " + КоличествоОпераций);
Если РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ВыгрузкаКонфигурации Тогда
Попытка
Параметры = КонвертацияХранилища.ПолучитьПараметрыОбработкиВерсии(ВерсияХранилища);
КонвертацияХранилища.ВыгрузитьВерсию(ВерсияХранилища, Параметры);
Исключение
ОбъектВерсии = ВерсияХранилища.ПолучитьОбъект();
ОбъектВерсии.Источник = Неопределено;
ОбъектВерсии.Записать();
Продолжить;
КонецПопытки;
ИначеЕсли РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ЗагрузкаМетаданных Тогда
Параметры = КонвертацияХранилища.ПолучитьПараметрыОбработкиВерсии(ВерсияХранилища);
КонвертацияХранилища.ЗагрузитьВерсию(ВерсияХранилища, Параметры);
КонецЕсли;
ОбъектВерсии = ВерсияХранилища.ПолучитьОбъект();
ОбъектВерсии.Источник = Неопределено;
Если НЕ ВыборкаДетальныеЗаписи.ВыгрузкаИзменений
И РеквизитыОчереди.Операция = Перечисления.ОперацииОчереди.ЗагрузкаМетаданных
И ВыборкаДетальныеЗаписи.МинимальноеКоличествоМетаданных > 0
И ОбъектВерсии.КоличествоМетаданных < ВыборкаДетальныеЗаписи.МинимальноеКоличествоМетаданных Тогда
ОбъектВерсии.Состояние = Перечисления.СостоянияВерсии.ПустаяСсылка();
КонецЕсли;
ОбъектВерсии.Записать();
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КонецЦикла;
КонецПроцедуры
#КонецОбласти

View File

@ -1,214 +1,221 @@
#Область ПрограммныйИнтерфейс
// Возвращает массив квалифицированных имен метаданных
//
// Параметры:
// Возвращаемое значение:
// Массив - массив квалифицированных имен
Функция КвалифицированныеИменаМетаданных() Экспорт
Имена = Новый Массив;
Имена.Добавить("AccountingRegisters");
Имена.Добавить("AccumulationRegisters");
Имена.Добавить("BusinessProcesses");
Имена.Добавить("CalculationRegisters");
Имена.Добавить("Catalogs");
Имена.Добавить("ChartsOfAccounts");
Имена.Добавить("ChartsOfCalculationTypes");
Имена.Добавить("ChartsOfCharacteristicTypes");
Имена.Добавить("CommandGroups");
Имена.Добавить("CommonAttributes");
Имена.Добавить("CommonCommands");
Имена.Добавить("CommonForms");
Имена.Добавить("CommonModules");
Имена.Добавить("CommonPictures");
Имена.Добавить("CommonTemplates");
Имена.Добавить("Constants");
Имена.Добавить("DataProcessors");
Имена.Добавить("DefinedTypes");
Имена.Добавить("DocumentJournals");
Имена.Добавить("DocumentNumerators");
Имена.Добавить("Documents");
Имена.Добавить("Enums");
Имена.Добавить("EventSubscriptions");
Имена.Добавить("ExchangePlans");
Имена.Добавить("ExternalDataSources");
Имена.Добавить("FilterCriteria");
Имена.Добавить("FunctionalOptions");
Имена.Добавить("FunctionalOptionsParameters");
Имена.Добавить("HTTPServices");
Имена.Добавить("InformationRegisters");
Имена.Добавить("Languages");
Имена.Добавить("Reports");
Имена.Добавить("Roles");
Имена.Добавить("ScheduledJobs");
Имена.Добавить("Sequences");
Имена.Добавить("SessionParameters");
Имена.Добавить("SettingsStorages");
Имена.Добавить("StyleItems");
Имена.Добавить("Subsystems");
Имена.Добавить("Tasks");
Имена.Добавить("WebServices");
Имена.Добавить("XDTOPackages");
Имена.Добавить("Commands");
Имена.Добавить("Forms");
Имена.Добавить("Templates");
Имена.Добавить("Ext");
Имена.Добавить("Template.xml");
Имена.Добавить("Form.xml");
Имена.Добавить("Form");
Имена.Добавить("Module.bsl");
Имена.Добавить("ManagerModule.bsl");
Имена.Добавить("RecordSetModule.bsl");
Имена.Добавить("ObjectModule.bsl");
Имена.Добавить("Help");
Имена.Добавить("Help.xml");
Имена.Добавить("ru.html");
Имена.Добавить("CommandModule.bsl");
Имена.Добавить("Flowchart.xml");
Имена.Добавить("Template.bin");
Имена.Добавить("Picture.xml");
Имена.Добавить("Picture");
Имена.Добавить("Picture.png");
Имена.Добавить("Picture.gif");
Имена.Добавить("Picture.bmp");
Имена.Добавить("Picture.jpg");
Имена.Добавить("Picture.ico");
Имена.Добавить("ValuesPicture.png");
Имена.Добавить("ValuesPicture.bmp");
Имена.Добавить("ValueManagerModule.bsl");
Имена.Добавить("Template.xml");
Имена.Добавить("Template.txt");
Имена.Добавить("Package.bin");
// Configuration.xml
Имена.Добавить("Splash.xml");
Имена.Добавить("Splash");
Имена.Добавить("MainSectionPicture.xml");
Имена.Добавить("MainSectionPicture");
Имена.Добавить("Logo.xml");
Имена.Добавить("Logo");
Имена.Добавить("ParentConfigurations");
Имена.Добавить("ParentConfigurations.bin");
Имена.Добавить("ExternalConnectionModule.bsl");
Имена.Добавить("ManagedApplicationModule.bsl");
Имена.Добавить("OrdinaryApplicationModule.bsl");
Имена.Добавить("SessionModule.bsl");
Имена.Добавить("ClientApplicationInterface.xml");
Имена.Добавить("CommandInterface.xml");
Имена.Добавить("MainSectionCommandInterface.xml");
Имена.Добавить("StartPageWorkingArea.xml");
Имена.Добавить("Items");
Возврат Имена;
КонецФункции
// Проверяет что наименование метаданного квалифицированное
//
// Параметры:
// Наименование - Строка - Наименование метаданного
// Возвращаемое значение:
// Булево
Функция ЭтоКвалифицированноеИмяМетаданных(Наименование) Экспорт
КвалифицированныеИмена = ОбщегоНазначенияПовтИсп.КвалифицированныеИменаМетаданных();
Возврат КвалифицированныеИмена.Найти(Наименование) <> Неопределено;
КонецФункции
// Возвращает список квалифицированных имен дочерних объектов
//
// Параметры:
// Возвращаемое значение:
// Массив
Функция КвалифицированныеИменаДочернихОбъектов() Экспорт
Имена = Новый Соответствие;
Имена.Вставить("Commands", "Command");
Возврат Имена;
КонецФункции
// Возвращает соответствие русских имен каталогам выгрузки
//
// Параметры:
// Возвращаемое значение:
// Структура
Функция СоответствиеРускихИменКаталогам() Экспорт
Соответствие = Новый Соответствие();
Соответствие.Вставить("РегистрБухгалтерии", "AccountingRegisters");
Соответствие.Вставить("РегистрНакопления", "AccumulationRegisters");
Соответствие.Вставить("БизнесПроцесс", "BusinessProcesses");
Соответствие.Вставить("РегистрРасчета", "CalculationRegisters");
Соответствие.Вставить("Справочник", "Catalogs");
Соответствие.Вставить("ПланСчетов", "ChartsOfAccounts");
Соответствие.Вставить("ПланВидовРасчета", "ChartsOfCalculationTypes");
Соответствие.Вставить("ПланВидовХарактеристик", "ChartsOfCharacteristicTypes");
Соответствие.Вставить("ОбщаяГруппа", "CommandGroups");
Соответствие.Вставить("ОбщийРеквизит", "CommonAttributes");
Соответствие.Вставить("ОбщаяКоманда", "CommonCommands");
Соответствие.Вставить("ОбщаяФорма", "CommonForms");
Соответствие.Вставить("ОбщийМодуль", "CommonModules");
Соответствие.Вставить("ОбщаяКартинка", "CommonPictures");
Соответствие.Вставить("ОбщийМакет", "CommonTemplates");
Соответствие.Вставить("Константа", "Constants");
Соответствие.Вставить("Обработка", "DataProcessors");
Соответствие.Вставить("ОпределяемыйТип", "DefinedTypes");
Соответствие.Вставить("ЖурналДокументов", "DocumentJournals");
Соответствие.Вставить("Нумератор", "DocumentNumerators");
Соответствие.Вставить("Документ", "Documents");
Соответствие.Вставить("Перечисление", "Enums");
Соответствие.Вставить("ПодпискаНаСобытие", "EventSubscriptions");
Соответствие.Вставить("ПланОбмена", "ExchangePlans");
Соответствие.Вставить("ВнешнийИсточник", "ExternalDataSources");
Соответствие.Вставить("КритерийОтбора", "FilterCriteria");
Соответствие.Вставить("ФункциональнаяОпция", "FunctionalOptions");
Соответствие.Вставить("ПарамертФункциональыхОпций", "FunctionalOptionsParameters");
Соответствие.Вставить("HTTPСервис", "HTTPServices");
Соответствие.Вставить("РегистрСведений", "InformationRegisters");
Соответствие.Вставить("Язык", "Languages");
Соответствие.Вставить("Отчет", "Reports");
Соответствие.Вставить("Роль", "Roles");
Соответствие.Вставить("РегламентноеЗадание", "ScheduledJobs");
Соответствие.Вставить("Последовательность", "Sequences");
Соответствие.Вставить("ПарамертСеанса", "SessionParameters");
Соответствие.Вставить("ХранилищеНастроек", "SettingsStorages");
Соответствие.Вставить("ЭлементСтиля", "StyleItems");
Соответствие.Вставить("Подсистема", "Subsystems");
Соответствие.Вставить("Задача", "Tasks");
Соответствие.Вставить("WebСервис", "WebServices");
Соответствие.Вставить("XDTOПакет", "XDTOPackages");
Возврат Соответствие
КонецФункции
// Возвращает имя каталога выгрузки
//
// Параметры:
// РусскийТипМетаданных - Строка - Русский тип метаданных в единственном числе
// Возвращаемое значение:
// Строка
Функция ИмяКаталогаТипаМетаданных(РусскийТипМетаданных) Экспорт
Соответствие = ОбщегоНазначенияПовтИсп.СоответствиеРускихИменКаталогам();
Возврат Соответствие.Получить(РусскийТипМетаданных);
КонецФункции
#Область ПрограммныйИнтерфейс
// Возвращает массив квалифицированных имен метаданных
//
// Параметры:
// Возвращаемое значение:
// Массив - массив квалифицированных имен
Функция КвалифицированныеИменаМетаданных() Экспорт
Имена = Новый Массив;
Имена.Добавить("AccountingRegisters");
Имена.Добавить("AccumulationRegisters");
Имена.Добавить("BusinessProcesses");
Имена.Добавить("CalculationRegisters");
Имена.Добавить("Catalogs");
Имена.Добавить("ChartsOfAccounts");
Имена.Добавить("ChartsOfCalculationTypes");
Имена.Добавить("ChartsOfCharacteristicTypes");
Имена.Добавить("CommandGroups");
Имена.Добавить("CommonAttributes");
Имена.Добавить("CommonCommands");
Имена.Добавить("CommonForms");
Имена.Добавить("CommonModules");
Имена.Добавить("CommonPictures");
Имена.Добавить("CommonTemplates");
Имена.Добавить("Constants");
Имена.Добавить("DataProcessors");
Имена.Добавить("DefinedTypes");
Имена.Добавить("DocumentJournals");
Имена.Добавить("DocumentNumerators");
Имена.Добавить("Documents");
Имена.Добавить("Enums");
Имена.Добавить("EventSubscriptions");
Имена.Добавить("ExchangePlans");
Имена.Добавить("ExternalDataSources");
Имена.Добавить("FilterCriteria");
Имена.Добавить("FunctionalOptions");
Имена.Добавить("FunctionalOptionsParameters");
Имена.Добавить("HTTPServices");
Имена.Добавить("InformationRegisters");
Имена.Добавить("Languages");
Имена.Добавить("Reports");
Имена.Добавить("Roles");
Имена.Добавить("ScheduledJobs");
Имена.Добавить("Sequences");
Имена.Добавить("SessionParameters");
Имена.Добавить("SettingsStorages");
Имена.Добавить("StyleItems");
Имена.Добавить("Subsystems");
Имена.Добавить("Tasks");
Имена.Добавить("WebServices");
Имена.Добавить("XDTOPackages");
Имена.Добавить("Commands");
Имена.Добавить("Forms");
Имена.Добавить("Templates");
Имена.Добавить("Ext");
Имена.Добавить("Template.xml");
Имена.Добавить("Form.xml");
Имена.Добавить("Form");
Имена.Добавить("Module.bsl");
Имена.Добавить("ManagerModule.bsl");
Имена.Добавить("RecordSetModule.bsl");
Имена.Добавить("ObjectModule.bsl");
Имена.Добавить("Help");
Имена.Добавить("Help.xml");
Имена.Добавить("ru.html");
Имена.Добавить("CommandModule.bsl");
Имена.Добавить("Flowchart.xml");
Имена.Добавить("Template.bin");
Имена.Добавить("Picture.xml");
Имена.Добавить("Picture");
Имена.Добавить("Picture.png");
Имена.Добавить("Picture.gif");
Имена.Добавить("Picture.bmp");
Имена.Добавить("Picture.jpg");
Имена.Добавить("Picture.ico");
Имена.Добавить("ValuesPicture.png");
Имена.Добавить("ValuesPicture.bmp");
Имена.Добавить("ValueManagerModule.bsl");
Имена.Добавить("Template.xml");
Имена.Добавить("Template.txt");
Имена.Добавить("Package.bin");
// Configuration.xml
Имена.Добавить("Splash.xml");
Имена.Добавить("Splash");
Имена.Добавить("MainSectionPicture.xml");
Имена.Добавить("MainSectionPicture");
Имена.Добавить("Logo.xml");
Имена.Добавить("Logo");
Имена.Добавить("ParentConfigurations");
Имена.Добавить("ParentConfigurations.bin");
Имена.Добавить("ExternalConnectionModule.bsl");
Имена.Добавить("ManagedApplicationModule.bsl");
Имена.Добавить("OrdinaryApplicationModule.bsl");
Имена.Добавить("SessionModule.bsl");
Имена.Добавить("ClientApplicationInterface.xml");
Имена.Добавить("CommandInterface.xml");
Имена.Добавить("MainSectionCommandInterface.xml");
Имена.Добавить("StartPageWorkingArea.xml");
Имена.Добавить("Items");
Возврат Имена;
КонецФункции
// Проверяет что наименование метаданного квалифицированное
//
// Параметры:
// Наименование - Строка - Наименование метаданного
// Возвращаемое значение:
// Булево
Функция ЭтоКвалифицированноеИмяМетаданных(Наименование) Экспорт
КвалифицированныеИмена = ОбщегоНазначенияПовтИсп.КвалифицированныеИменаМетаданных();
Возврат КвалифицированныеИмена.Найти(Наименование) <> Неопределено;
КонецФункции
// Возвращает список квалифицированных имен дочерних объектов
//
// Параметры:
// ФорматEDT - Булево - Истина, если необходим список имен для формата EDT
// Возвращаемое значение:
// Соответствие - Соответствие имен каталогов и имен дочерних объектов в xml-файле
Функция КвалифицированныеИменаДочернихОбъектов(ФорматEDT) Экспорт
Имена = Новый Соответствие;
Если ФорматEDT Тогда
Имена.Вставить("Commands", "commands");
Имена.Вставить("Forms", "forms");
Имена.Вставить("Templates", "templates");
Иначе
Имена.Вставить("Commands", "Command");
КонецЕсли;
Возврат Имена;
КонецФункции
// Возвращает соответствие русских имен каталогам выгрузки
//
// Параметры:
// Возвращаемое значение:
// Структура
Функция СоответствиеРускихИменКаталогам() Экспорт
Соответствие = Новый Соответствие();
Соответствие.Вставить("РегистрБухгалтерии", "AccountingRegisters");
Соответствие.Вставить("РегистрНакопления", "AccumulationRegisters");
Соответствие.Вставить("БизнесПроцесс", "BusinessProcesses");
Соответствие.Вставить("РегистрРасчета", "CalculationRegisters");
Соответствие.Вставить("Справочник", "Catalogs");
Соответствие.Вставить("ПланСчетов", "ChartsOfAccounts");
Соответствие.Вставить("ПланВидовРасчета", "ChartsOfCalculationTypes");
Соответствие.Вставить("ПланВидовХарактеристик", "ChartsOfCharacteristicTypes");
Соответствие.Вставить("ОбщаяГруппа", "CommandGroups");
Соответствие.Вставить("ОбщийРеквизит", "CommonAttributes");
Соответствие.Вставить("ОбщаяКоманда", "CommonCommands");
Соответствие.Вставить("ОбщаяФорма", "CommonForms");
Соответствие.Вставить("ОбщийМодуль", "CommonModules");
Соответствие.Вставить("ОбщаяКартинка", "CommonPictures");
Соответствие.Вставить("ОбщийМакет", "CommonTemplates");
Соответствие.Вставить("Константа", "Constants");
Соответствие.Вставить("Обработка", "DataProcessors");
Соответствие.Вставить("ОпределяемыйТип", "DefinedTypes");
Соответствие.Вставить("ЖурналДокументов", "DocumentJournals");
Соответствие.Вставить("Нумератор", "DocumentNumerators");
Соответствие.Вставить("Документ", "Documents");
Соответствие.Вставить("Перечисление", "Enums");
Соответствие.Вставить("ПодпискаНаСобытие", "EventSubscriptions");
Соответствие.Вставить("ПланОбмена", "ExchangePlans");
Соответствие.Вставить("ВнешнийИсточник", "ExternalDataSources");
Соответствие.Вставить("КритерийОтбора", "FilterCriteria");
Соответствие.Вставить("ФункциональнаяОпция", "FunctionalOptions");
Соответствие.Вставить("ПарамертФункциональыхОпций", "FunctionalOptionsParameters");
Соответствие.Вставить("HTTPСервис", "HTTPServices");
Соответствие.Вставить("РегистрСведений", "InformationRegisters");
Соответствие.Вставить("Язык", "Languages");
Соответствие.Вставить("Отчет", "Reports");
Соответствие.Вставить("Роль", "Roles");
Соответствие.Вставить("РегламентноеЗадание", "ScheduledJobs");
Соответствие.Вставить("Последовательность", "Sequences");
Соответствие.Вставить("ПарамертСеанса", "SessionParameters");
Соответствие.Вставить("ХранилищеНастроек", "SettingsStorages");
Соответствие.Вставить("ЭлементСтиля", "StyleItems");
Соответствие.Вставить("Подсистема", "Subsystems");
Соответствие.Вставить("Задача", "Tasks");
Соответствие.Вставить("WebСервис", "WebServices");
Соответствие.Вставить("XDTOПакет", "XDTOPackages");
Возврат Соответствие
КонецФункции
// Возвращает имя каталога выгрузки
//
// Параметры:
// РусскийТипМетаданных - Строка - Русский тип метаданных в единственном числе
// Возвращаемое значение:
// Строка
Функция ИмяКаталогаТипаМетаданных(РусскийТипМетаданных) Экспорт
Соответствие = ОбщегоНазначенияПовтИсп.СоответствиеРускихИменКаталогам();
Возврат Соответствие.Получить(РусскийТипМетаданных);
КонецФункции
#КонецОбласти

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<cai:ClientApplicationInterface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cai="http://g5.1c.ru/v8/dt/cai">
<top xsi:type="cai:CaiGroup" id="d896eafc-f07f-45df-a3c2-c715e81eedab">
<panels id="233d933c-98e2-4d28-be97-b45c38f4edf1" name="SectionPanel" displayType="PictureAndText"/>
</top>
<top xsi:type="cai:CaiGroup" id="efdd6f40-21a7-4f2f-aa45-74bfc6b64f0d">
<panels id="c86f71dc-2b2b-44aa-a1bf-795531d27187" name="FunctionsPanel"/>
<panels id="77734118-744f-45f8-8911-cd195ae0faea" name="OpenedPanel"/>
</top>
<left xsi:type="cai:CaiPanel" id="da04fef1-b3b8-4c7c-9407-97e5caedf7a6" name="ToolsPanel"/>
<unset id="13322b22-3960-4d68-93a6-fe2dd7f28ca3" name="FavoritePanel"/>
<unset id="c933ac92-92cd-459d-81cc-e0c8a83ced99" name="HistoryPanel"/>
</cai:ClientApplicationInterface>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>

View File

@ -13,7 +13,7 @@
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="f7f09b5c-9e29-4f8c-9d24-a2523dcf02a5"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="eb8fc40a-8eb0-4025-9521-b43d004eeb18"/>
<namePrefix></namePrefix>
<configurationExtensionCompatibilityMode>8.3.11</configurationExtensionCompatibilityMode>
<configurationExtensionCompatibilityMode>8.3.12</configurationExtensionCompatibilityMode>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@ -21,7 +21,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>1.0.4.2</version>
<version>1.0.5.4</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<help>
@ -54,7 +54,7 @@
<objectAutonumerationMode>NotAutoFree</objectAutonumerationMode>
<modalityUseMode>DontUse</modalityUseMode>
<synchronousExtensionAndAddInCallUseMode>DontUse</synchronousExtensionAndAddInCallUseMode>
<compatibilityMode>8.3.10</compatibilityMode>
<compatibilityMode>8.3.12</compatibilityMode>
<languages uuid="ed426b54-96a4-48ad-95c4-9e10c774ca73">
<name>Русский</name>
<synonym>

View File

@ -0,0 +1,20 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если НЕ ПустаяСтрока(ЭтотОбъект.Значение) И СтрНайти(ЭтотОбъект.Значение, "%ВерсияПлатформы%") = 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'В пути к версиям необходимо использовать <%ВерсияПлатформы%> для подстановки версии платформы.'"),
,
"ПутьКВерсиямПлатформыНаСервере",
"НаборКонстант",
Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли

View File

@ -27,5 +27,6 @@
<mask></mask>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
<dataLockControlMode>Managed</dataLockControlMode>
</mdclass:Constant>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form">
<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form">
<items xsi:type="form:Decoration">
<name>Декорация1</name>
<id>12</id>
<title>
<key>ru</key>
<value>&lt;b>&lt;colorstyle -16>Внимание!&lt;/>&lt;/> Конвертация в формат EDT необратима, поэтому последующая синхронизация с хранилищем 1С невозможна.</value>
<value>&lt;b>&lt;colorstyle -16>Внимание!&lt;/>&lt;/> Конвертация в формат 1C:EDT необратима, поэтому последующая синхронизация с хранилищем 1С будет выполняться в формате 1C:EDT.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@ -53,8 +53,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Хранилище</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Хранилище</segments>
</paths>
</dataPath>
<handlers>
<event>OnChange</event>
@ -97,6 +99,12 @@
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<choiceParameters>
<name>Отбор.КонвертироватьВФорматEDT</name>
<value xsi:type="form:FormChoiceListDesTimeValue">
<value xsi:type="core:BooleanValue"/>
</value>
</choiceParameters>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -107,8 +115,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Хранилище.ВерсияВGit</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Хранилище.ВерсияВGit</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ХранилищеВерсияВGitРасширеннаяПодсказка</name>
@ -154,8 +164,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Хранилище.ЛокальныйКаталогGit</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Хранилище.ЛокальныйКаталогGit</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ХранилищеЛокальныйКаталогGitРасширеннаяПодсказка</name>
@ -205,8 +217,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Хранилище.КаталогВыгрузкиВРепозитории</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Хранилище.КаталогВыгрузкиВРепозитории</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ХранилищеКаталогВыгрузкиВРепозиторииРасширеннаяПодсказка</name>
@ -248,6 +262,119 @@
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВерсияПроектаEDT</name>
<id>71</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВерсияПроектаEDT</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Версия проекта в 1C:EDT</value>
</toolTip>
<extendedTooltip>
<name>ВерсияПроектаEDTРасширеннаяПодсказка</name>
<id>73</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВерсияПроектаEDTКонтекстноеМеню</name>
<id>72</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИмяПроектаEDT</name>
<id>65</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяПроектаEDT</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ИмяПроектаEDTПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ИмяПроектаEDTРасширеннаяПодсказка</name>
<id>67</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИмяПроектаEDTКонтекстноеМеню</name>
<id>66</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<inputHint>
<key>ru</key>
<value>Имя проекта в 1C:EDT. Должно совпадать с каталогом выгрузки в репозитории.</value>
</inputHint>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ОтключитьРегламентныеЗадания</name>
<id>33</id>
@ -256,8 +383,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ОтключитьРегламентныеЗадания</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ОтключитьРегламентныеЗадания</segments>
</paths>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
@ -300,8 +429,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ОтключитьКоммиты</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ОтключитьКоммиты</segments>
</paths>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
@ -344,8 +475,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ОтключитьОчереди</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ОтключитьОчереди</segments>
</paths>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
@ -385,13 +518,22 @@
<id>15</id>
<title>
<key>ru</key>
<value>Откройте EDT в новом Wokspace. Выполните импорт Конфигурации из файлов, хранящихся в /локальном каталоге Git/ИмяПроекта/src. Укажите имя проекта соотвествующее каталогу из &quot;Каталог выгрузки в репозитории&quot;. После укажите путь к файлам сконвертированной конфигурации в workspace EDT.</value>
<value>Для конвертации на сервере должно быть установлено консольное приложение 1C:EDT 1.8 и выше.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<toolTip>
<key>ru</key>
<value>Убедитесь что приложение 1C:RING установлено корректно, выполнив команду в терминале:
ring edt platform-versions
Убедитесь что в 1C:EDT доступна версия платформы хранилища.</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>Декорация2РасширеннаяПодсказка</name>
<id>17</id>
@ -420,27 +562,82 @@
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<textColor xsi:type="core:ColorRef">
<color>Style.SpecialTextColor</color>
</textColor>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ПутьКФайламEDT</name>
<id>4</id>
<name>ПутьКПроектуEDT</name>
<id>68</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ПутьКФайламEDT</segments>
<segments>ПутьКПроектуEDT</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value></value>
</toolTip>
<extendedTooltip>
<name>ПутьКФайламEDTРасширеннаяПодсказка</name>
<name>ПутьКПроектуEDTРасширеннаяПодсказка</name>
<id>70</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПутьКПроектуEDTКонтекстноеМеню</name>
<id>69</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<inputHint>
<key>ru</key>
<value>Путь к EDT/ИмяПроекта/</value>
</inputHint>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ПутьКФайламПроектаEDT</name>
<id>4</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ПутьКФайламПроектаEDT</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ПутьКФайламПроектаEDTРасширеннаяПодсказка</name>
<id>6</id>
<visible>true</visible>
<enabled>true</enabled>
@ -455,7 +652,7 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПутьКФайламEDTКонтекстноеМеню</name>
<name>ПутьКФайламПроектаEDTКонтекстноеМеню</name>
<id>5</id>
<visible>true</visible>
<enabled>true</enabled>
@ -482,6 +679,60 @@
</inputHint>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>РабочийКаталогEDT</name>
<id>74</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РабочийКаталогEDT</segments>
</dataPath>
<extendedTooltip>
<name>РабочийКаталогEDTРасширеннаяПодсказка</name>
<id>76</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РабочийКаталогEDTКонтекстноеМеню</name>
<id>75</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<inputHint>
<key>ru</key>
<value>Катало выгрузки версий/ws/</value>
</inputHint>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ПараметрыКоммитаКонвертации</name>
<id>39</id>
@ -493,8 +744,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>email</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>email</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>emailРасширеннаяПодсказка</name>
@ -543,8 +796,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяПользователя</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяПользователя</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ИмяПользователяРасширеннаяПодсказка</name>
@ -593,8 +848,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Комментарий</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>Комментарий</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>КомментарийРасширеннаяПодсказка</name>
@ -668,8 +925,58 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВыполнитьПереносВКаталогПроекта</name>
<id>77</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВыполнитьПереносВКаталогПроекта</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Если изначально при конвертации в формат 1С:Предприятия не был указан &quot;Каталог выгрузки в репозитории&quot; соответствующий имени проекта, то необходимо указать &quot;Имя проекта 1C:EDT&quot; и выполнить перенос файлов в каталог проекта </value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ВыполнитьПереносВКаталогПроектаРасширеннаяПодсказка</name>
<id>79</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВыполнитьПереносВКаталогПроектаКонтекстноеМеню</name>
<id>78</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ВыполнитьPushПослеКонвертации</name>
<id>47</id>
@ -678,8 +985,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ВыполнитьPushПослеКонвертации</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ВыполнитьPushПослеКонвертации</segments>
</paths>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
@ -725,8 +1034,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаКомандыGit</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяФайлаКомандыGit</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ИмяФайлаКомандыGitРасширеннаяПодсказка</name>
@ -798,6 +1109,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -811,8 +1123,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаКомментария</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяФайлаКомментария</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ИмяФайлаКомментарияРасширеннаяПодсказка</name>
@ -884,6 +1198,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -897,8 +1212,10 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
<dataPath xsi:type="form:MultiLanguageDataPath">
<paths xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
</paths>
</dataPath>
<extendedTooltip>
<name>ИмяФайлаЛогаРасширеннаяПодсказка</name>
@ -971,6 +1288,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
@ -1063,10 +1381,10 @@
<fillChecking>ShowError</fillChecking>
</attributes>
<attributes>
<name>ПутьКФайламEDT</name>
<name>ПутьКФайламПроектаEDT</name>
<title>
<key>ru</key>
<value>Путь к файлам EDT</value>
<value>Путь к файлам проекта 1C:EDT</value>
</title>
<id>3</id>
<valueType>
@ -1261,6 +1579,117 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ИмяПроектаEDT</name>
<title>
<key>ru</key>
<value>Имя проекта 1C:EDT</value>
</title>
<id>14</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<fillChecking>ShowError</fillChecking>
</attributes>
<attributes>
<name>ПутьКПроектуEDT</name>
<title>
<key>ru</key>
<value>Путь к проекту 1C:EDT</value>
</title>
<id>15</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<fillChecking>ShowError</fillChecking>
</attributes>
<attributes>
<name>ВерсияПроектаEDT</name>
<title>
<key>ru</key>
<value>Версия проекта в 1C:EDT</value>
</title>
<id>16</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<fillChecking>ShowError</fillChecking>
</attributes>
<attributes>
<name>РабочийКаталогEDT</name>
<title>
<key>ru</key>
<value>Рабочий каталог 1C:EDT</value>
</title>
<id>17</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<fillChecking>ShowError</fillChecking>
</attributes>
<attributes>
<name>ВыполнитьПереносВКаталогПроекта</name>
<title>
<key>ru</key>
<value>Выполнить перенос в каталог проекта</value>
</title>
<id>18</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>КаталогВыгрузкиВерсий</name>
<title>
<key>ru</key>
<value>Каталог выгрузки версий</value>
</title>
<id>19</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>КонвертироватьВФорматEDT</name>
<title>
@ -1276,7 +1705,14 @@
<name>КонвертироватьВФорматEDT</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<parameters>
<name>Хранилище</name>
<valueType>
<types>CatalogRef.ХранилищаКонфигураций</types>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>

View File

@ -11,6 +11,11 @@
ИмяПользователя = "Anonimous";
Комментарий = НСтр("ru = 'Конвертация в формат EDT'");
Хранилище = Параметры.Хранилище;
Если ЗначениеЗаполнено(Хранилище) Тогда
ХранилищеПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
@ -18,13 +23,13 @@
МассивНеПроверяемыхРеквизитов = Новый Массив;
СегментыПути = СтрРазделить(СокрЛП(ПутьКФайламEDT), ПолучитьРазделительПути());
СегментыПути = СтрРазделить(СокрЛП(ПутьКФайламПроектаEDT), ПолучитьРазделительПути());
Если СегментыПути.Количество() > 0 И НЕ ЗначениеЗаполнено(СегментыПути[СегментыПути.ВГраница()]) Тогда
СегментыПути.Удалить(СегментыПути.ВГраница());
КонецЕсли;
Путь = Новый Файл(ПутьКФайламEDT);
Путь = Новый Файл(ПутьКФайламПроектаEDT);
Если СегментыПути.Количество() = 0 ИЛИ НЕ Путь.Существует() ИЛИ НЕ Путь.ЭтоКаталог() Тогда
Если СегментыПути.Количество() = 0 ИЛИ Путь.Существует() И НЕ Путь.ЭтоКаталог() Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Не верный путь к файлам EDT';");
@ -82,6 +87,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ИмяПроектаEDTПриИзменении(Элемент)
ИмяПроектаEDTПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ИмяФайлаКомандыGitОткрытие(Элемент, СтандартнаяОбработка)
@ -146,6 +158,29 @@
Возврат;
КонецЕсли;
ВерсииEDT = ПолучитьДоступныеВерсииEDTНаСервере();
ВерсияНайдена = Ложь;
Для Каждого ВерсияEDT Из ВерсииEDT Цикл
Если ВерсияПроектаEDT = ВерсияEDT Тогда
ВерсияНайдена = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ ВерсияНайдена И ВерсииEDT.Количество() = 0 Тогда
Текст = НСтр("ru = 'Не обнаружено доступных версий в 1C:EDT!
|Возможно 1C:EDT версии 1.8 и выше не установлена на сервере или недоступна для запуска.'");
ПоказатьПредупреждение(, Текст);
Возврат;
ИначеЕсли НЕ ВерсияНайдена Тогда
Текст = НСтр("ru = 'Версия ''%Версия%'' не доступна для конвертации в формат 1C:EDT.
|Укажите в настройках хранилища версию платформы из доступных: %ВерсииEDT%.'");
Текст = СтрЗаменить(Текст, "%ВерсииEDT%", СтрСоединить(ВерсииEDT, ", "));
Текст = СтрЗаменить(Текст, "%Версия%", ВерсияПроектаEDT);
ПоказатьПредупреждение(, Текст);
Возврат;
КонецЕсли;
КонвертироватьВФорматEDTНаСервере();
КонецПроцедуры
@ -159,7 +194,8 @@
ОтключитьХранилище();
РеквизитыХранилища = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Хранилище, "КаталогВыгрузкиВерсий, ЛокальныйКаталогGit, КаталогВыгрузкиВРепозитории, АдресРепозиторияGit, ИмяВетки");
РеквизитыХранилища = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Хранилище, "КаталогВыгрузкиВерсий,
|ЛокальныйКаталогGit, КаталогВыгрузкиВРепозитории, АдресРепозиторияGit, ИмяВетки");
ПутьКИсходнымФайлам = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.ЛокальныйКаталогGit);
@ -178,8 +214,24 @@
ЗаписатьФайлыКонвертации(РеквизитыХранилища, ЭтоWindowsСервер);
КодВозврата = Неопределено;
ЗапуститьПриложение(?(ЭтоWindowsСервер, "", "bash ")
+ ИмяФайлаКомандыGit, РеквизитыХранилища.ЛокальныйКаталогGit, Истина);
+ ИмяФайлаКомандыGit, РеквизитыХранилища.ЛокальныйКаталогGit, Истина, КодВозврата);
Если КодВозврата = 0 Тогда
ХранилищеОбъект = Хранилище.ПолучитьОбъект();
ХранилищеОбъект.КонвертироватьВФорматEDT = Истина;
Если ВыполнитьПереносВКаталогПроекта
И НЕ ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории)
И ЗначениеЗаполнено(ИмяПроектаEDT) Тогда
ХранилищеОбъект.КаталогВыгрузкиВРепозитории = ИмяПроектаEDT;
КонецЕсли;
ХранилищеОбъект.Записать();
Иначе
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'В процессе конвертации произошли ошибки. См. файл лога.'");
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
@ -208,21 +260,115 @@
ЭтоWindowsСервер = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64);
КаталогВыгрузкиВерсий = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Хранилище, "КаталогВыгрузкиВерсий");
РеквизитыХранилища = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Хранилище, "ВерсияПлатформы,
|КаталогВыгрузкиВерсий, КаталогВыгрузкиВРепозитории");
СформироватьИменаФайлов(КаталогВыгрузкиВерсий, ЭтоWindowsСервер);
РеквизитыХранилища.КаталогВыгрузкиВерсий = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.КаталогВыгрузкиВерсий);
СформироватьИменаФайлов(РеквизитыХранилища.КаталогВыгрузкиВерсий, ЭтоWindowsСервер);
ВерсияПроектаEDT = "";
Версия = РеквизитыХранилища.ВерсияПлатформы;
Если НЕ ЗначениеЗаполнено(Версия) Тогда
СисИнфо = Новый СистемнаяИнформация();
Версия = СисИнфо.ВерсияПриложения;
КонецЕсли;
Квалификаторы = СтрРазделить(Версия, ".");
Если Квалификаторы.Количество() = 4 Тогда
Квалификаторы.Удалить(Квалификаторы.ВГраница());
Версия = СтрСоединить(Квалификаторы, ".");
ВерсииEDT = КонвертацияХранилища.ПолучитьСписокВерсийEDT();
Для Каждого ВерсияEDT Из ВерсииEDT Цикл
Если Версия = ВерсияEDT Тогда
ВерсияПроектаEDT = ВерсияEDT;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ИмяПроектаEDT = "";
Если ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории) Тогда
Сегменты = СтрРазделить(РеквизитыХранилища.КаталогВыгрузкиВРепозитории, ПолучитьРазделительПути());
Если Сегменты.Количество() > 0 Тогда
ИмяПроектаEDT = Сегменты[Сегменты.ВГраница()];
КонецЕсли;
КонецЕсли;
КаталогВыгрузкиВерсий = РеквизитыХранилища.КаталогВыгрузкиВерсий;
РабочийКаталогEDT = КаталогВыгрузкиВерсий + "ws";
ВыполнитьПереносВКаталогПроекта = НЕ ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории);
Элементы.ВыполнитьПереносВКаталогПроекта.Видимость = ВыполнитьПереносВКаталогПроекта;
Иначе
ИмяФайлаКомандыGit = "";
ИмяФайлаКомментария = "";
ИмяФайлаЛога = "";
ВерсияПроектаEDT = "";
ИмяПроектаEDT = "";
КаталогВыгрузкиВерсий = "";
РабочийКаталогEDT = "";
ВыполнитьПереносВКаталогПроекта = Ложь;
Элементы.ВыполнитьПереносВКаталогПроекта.Видимость = Ложь;
КонецЕсли;
ИмяПроектаEDTПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ИмяПроектаEDTПриИзмененииНаСервере()
ПутьКПроектуEDT = "";
ПутьКФайламПроектаEDT = "";
Если ЗначениеЗаполнено(ИмяПроектаEDT) Тогда
ПутьКПроектуEDT = КаталогВыгрузкиВерсий + "p"
+ ПолучитьРазделительПути() + ИмяПроектаEDT + ПолучитьРазделительПути();
ПутьКФайламПроектаEDT = ПутьКПроектуEDT + "src"
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОтключитьХранилище()
ЕстьНеОбработанныеВерсии = Ложь;
// Сбрасываем статус загруженных версий - их необходимо сконвертировать в формат EDT
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВерсииХранилища.Ссылка
|ИЗ
| Справочник.ВерсииХранилища КАК ВерсииХранилища
|ГДЕ
| ВерсииХранилища.Владелец = &Хранилище
| И (ВерсииХранилища.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияВерсии.ЗагрузкаМетаданных)
| ИЛИ ВерсииХранилища.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияВерсии.МетаданныеЗагружены))";
Запрос.УстановитьПараметр("Хранилище", Хранилище);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВерсияОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ВерсияОбъект.Состояние = Перечисления.СостоянияВерсии.ВерсияПолучена;
ВерсияОбъект.Записать();
ЕстьНеОбработанныеВерсии = Истина;
КонецЦикла;
Если ЕстьНеОбработанныеВерсии Тогда
ОтключитьОчереди = Истина;
ОтключитьРегламентныеЗадания = Истина;
ОтключитьКоммиты = Истина;
КонецЕсли;
ХранилищеОбъект = Хранилище.ПолучитьОбъект();
Если ОтключитьКоммиты Тогда
@ -269,12 +415,13 @@
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьФайлыКонвертации(РеквизитыХранилища, ЭтоWindowsСервер)
ПутьКФайламEDT = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СокрЛП(ПутьКФайламEDT));
ПутьКФайламПроектаEDT = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СокрЛП(ПутьКФайламПроектаEDT));
ЛокальныйКаталогGit = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.ЛокальныйКаталогGit);
ДлиннаПути = СтрДлина(ЛокальныйКаталогGit);
@ -301,25 +448,78 @@
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> %LOGFILE% 2>&1";
ПроверкаКодаВозврата = "echo Error level: %ERRORLEVEL%" + ВыводЛога + "
|IF %ERRORLEVEL% NEQ 0 THEN exit %ERRORLEVEL%" + ВыводЛога;
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%"" >> %LOGFILE%";
ВыводЛога = " >> $LOGFILE 2>&1";
ПроверкаКодаВозврата = "echo ""Error level: $?""" + ВыводЛога + "
|if [ $? -ne 0 ]; then exit $? fi" + ВыводЛога;
КонецЕсли;
// Запуск RING EDT для конвертацию в формат EDT
СтрокаКоманды = ?(ЭтоWindowsСервер, "call ", "")
+ "ring edt workspace import --workspace-location ""%РабочийКаталог%"" --configuration-files ""%КаталогФайловКонфигурации%"" --project ""%КаталогПроектаEDT%"" --version %ВерсияПроектаEDT%" + ВыводЛога;
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%ИмяФайлаЛогов%", ИмяФайлаЛога);
Если Прав(РабочийКаталогEDT, 1) = ПолучитьРазделительПути() Тогда
РабочийКаталогEDT = Лев(РабочийКаталогEDT, СтрДлина(РабочийКаталогEDT)-1);
КонецЕсли;
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%РабочийКаталог%", РабочийКаталогEDT);
Если Прав(ПутьКИсходнымФайлам, 1) = ПолучитьРазделительПути() Тогда
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%КаталогФайловКонфигурации%", Лев(ПутьКИсходнымФайлам, СтрДлина(ПутьКИсходнымФайлам)-1));
Иначе
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%КаталогФайловКонфигурации%", ПутьКИсходнымФайлам);
КонецЕсли;
Если Прав(ПутьКПроектуEDT, 1) = ПолучитьРазделительПути() Тогда
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%КаталогПроектаEDT%", Лев(ПутьКПроектуEDT, СтрДлина(ПутьКПроектуEDT)-1));
Иначе
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%КаталогПроектаEDT%", ПутьКПроектуEDT);
КонецЕсли;
СтрокаКоманды = СтрЗаменить(СтрокаКоманды, "%ВерсияПроектаEDT%", ВерсияПроектаEDT);
ФайлКоманды.ДобавитьСтроку(СтрокаКоманды);
ФайлКоманды.ДобавитьСтроку(ПроверкаКодаВозврата);
Файл = Новый Файл(РабочийКаталогEDT);
Если Файл.Существует() Тогда
УдалитьФайлы(РабочийКаталогEDT, "*");
КонецЕсли;
Файл = Новый Файл(ПутьКПроектуEDT);
Если Файл.Существует() Тогда
УдалитьФайлы(ПутьКПроектуEDT, "*");
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ТекстКомандыУстановкиКаталога = "cd /D ""%ЛокальныйКаталогGit%""" + ВыводЛога;
Иначе
ТекстКомандыУстановкиКаталога = "cd ""%ЛокальныйКаталогGit%""" + ВыводЛога;
КонецЕсли;
ТекстКомандыУстановкиКаталога = СтрЗаменить(ТекстКомандыУстановкиКаталога, "%ЛокальныйКаталогGit%",
РеквизитыХранилища.ЛокальныйКаталогGit);
ФайлКоманды.ДобавитьСтроку(ТекстКомандыУстановкиКаталога);
Если ВыполнитьPushПослеКонвертации И ЗначениеЗаполнено(РеквизитыХранилища.АдресРепозиторияGit) Тогда
ТекстКоманды = "git pull >> %LOGFILE%";
ТекстКоманды = "git pull" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
ФайлКоманды.ДобавитьСтроку(ПроверкаКодаВозврата);
Переименования = Новый ТаблицаЗначений();
Переименования.Колонки.Добавить("Источник");
Переименования.Колонки.Добавить("Приемник");
РазделительПути = ПолучитьРазделительПути();
// Если отсутствует имя проекта EDT в хранилище - добавляем префикс имя проекта
ПрефиксПриемника = "";
Если ВыполнитьПереносВКаталогПроекта
И НЕ ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории)
И ЗначениеЗаполнено(ИмяПроектаEDT) Тогда
ПрефиксПриемника = ИмяПроектаEDT + РазделительПути;
КонецЕсли;
ШаблонExt = РазделительПути + "Ext" + РазделительПути;
// Перемещение файлов корня конфигурации
@ -346,7 +546,7 @@
НоваяСтрока = Переименования.Добавить();
НоваяСтрока.Источник = Источник;
НоваяСтрока.Приемник = Приемник;
НоваяСтрока.Приемник = ПрефиксПриемника + Приемник;
КонецЦикла;
@ -354,7 +554,7 @@
Если Файл.Существует() Тогда
НоваяСтрока = Переименования.Добавить();
НоваяСтрока.Источник = Сред(Файл.ПолноеИмя, ДлиннаПути);
НоваяСтрока.Приемник = СтрЗаменить(НоваяСтрока.Источник, "Configuration.xml", "Configuration" + РазделительПути + "Configuration.mdo");
НоваяСтрока.Приемник = ПрефиксПриемника + СтрЗаменить(НоваяСтрока.Источник, "Configuration.xml", "Configuration" + РазделительПути + "Configuration.mdo");
КонецЕсли;
СоответствиеТиповМакетов = СоответствиеТиповМакетов();
@ -401,11 +601,12 @@
Приемник = СтрЗаменить(Приемник, Файл.Имя, Файл.ИмяБезРасширения + РазделительПути + Файл.ИмяБезРасширения + ".mdo");
ИначеЕсли Файл.ИмяБезРасширения = "Picture" И Контейнер = "CommonPictures"
И СтрНайти(Приемник, РазделительПути + Файл.ИмяБезРасширения + РазделительПути + Файл.ИмяБезРасширения) > 0 Тогда
Приемник = СтрЗаменить(Приемник, РазделительПути + Файл.ИмяБезРасширения + РазделительПути + Файл.ИмяБезРасширения, РазделительПути + Файл.ИмяБезРасширения + "." + Файл.ИмяБезРасширения);
Приемник = СтрЗаменить(Приемник, РазделительПути + Файл.ИмяБезРасширения + РазделительПути + Файл.ИмяБезРасширения, РазделительПути + Файл.ИмяБезРасширения);
ИначеЕсли Файл.Имя = "Schedule.xml" И Контейнер = "ScheduledJobs" Тогда
Приемник = СтрЗаменить(Приемник, Файл.Имя, "Schedule.schedule");
КонецЕсли;
Приемник = ПрефиксПриемника + Приемник;
Если Источник <> Приемник Тогда
НоваяСтрока = Переименования.Добавить();
НоваяСтрока.Источник = Источник;
@ -430,6 +631,7 @@
Приемник = СтрЗаменить(Приемник, "CommandInterface.xml", "CommandInterface.cmi");
КонецЕсли;
Приемник = ПрефиксПриемника + Приемник;
Если Источник <> Приемник Тогда
НоваяСтрока = Переименования.Добавить();
НоваяСтрока.Источник = Источник;
@ -453,6 +655,7 @@
Источник = Сред(Файл.ПолноеИмя, ДлиннаПути);
Приемник = СтрЗаменить(Источник, ШаблонSRC, ЗаменаSRC);
Приемник = ПрефиксПриемника + Приемник;
Если Источник <> Приемник Тогда
НоваяСтрока = Переименования.Добавить();
НоваяСтрока.Источник = Источник;
@ -464,7 +667,7 @@
Каталоги = Новый Соответствие();
Для Каждого Переименование Из Переименования Цикл
ТекстКоманды = "git mv -f "".%Источник%"" "".%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "git mv -f "".%Источник%"" "".%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", Переименование.Источник);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", Переименование.Приемник);
@ -485,19 +688,27 @@
КонецЕсли;
КонецЦикла;
ТекстКоманды = "git commit -F ""%ИмяФайлаКомментария%"" --allow-empty-message --cleanup=verbatim >> %LOGFILE%";
ТекстКоманды = "git commit -F ""%ИмяФайлаКомментария%"" --allow-empty-message --cleanup=verbatim" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяФайлаКомментария%", ИмяФайлаКомментария);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ВыполнитьПереносВКаталогПроекта Тогда
НовыеПараметры = Новый Структура("КаталогВыгрузкиВРепозитории", ИмяПроектаEDT);
ПутьКИсходнымФайлам = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ЛокальныйКаталогGit
+ КонвертацияХранилища.КаталогВыгрузкиВРепозитории(НовыеПараметры));
КонецЕсли;
ФайлКоманды.ДобавитьСтроку(ПроверкаКодаВозврата);
// Удаляем исходную директорию src и копируем все файлы из EDT
Если ЭтоWindowsСервер Тогда
ТекстКоманды = "rmdir /S /Q ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "rmdir /S /Q ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "mkdir ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "mkdir ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Источник = СокрЛП(ПутьКФайламEDT);
Источник = СокрЛП(ПутьКФайламПроектаEDT);
Если Прав(Источник, 1) = ПолучитьРазделительПути() Тогда
Источник = Лев(Источник, СтрДлина(Источник) - 1);
КонецЕсли;
@ -505,51 +716,55 @@
Если Прав(Приемник, 1) = ПолучитьРазделительПути() Тогда
Приемник = Лев(Приемник, СтрДлина(Приемник) - 1);
КонецЕсли;
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /NFL /NDL /NJH /NJS /NC /NS /NP >> %LOGFILE%";
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /NFL /NDL /NJH /NJS /NC /NS /NP" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", Источник);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", Приемник);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Иначе
ТекстКоманды = "rm -rf ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "rm -rf ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "cp -Rf ""%Источник%"" ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКФайламEDT);
ТекстКоманды = "cp -Rf ""%Источник%"" ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКФайламПроектаEDT);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКИсходнымФайлам);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
// Копирование файла проекта, DT-INF и настроек
Если ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории) Тогда
ПутьКПроектуEDT = СтрЗаменить(ПутьКФайламEDT, ШаблонSRC, РазделительПути);
Если ВыполнитьПереносВКаталогПроекта ИЛИ ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории) Тогда
ПутьКПроекту = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(РеквизитыХранилища.ЛокальныйКаталогGit);
ПутьКПроекту = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКПроекту
+ РеквизитыХранилища.КаталогВыгрузкиВРепозитории);
Если ЗначениеЗаполнено(РеквизитыХранилища.КаталогВыгрузкиВРепозитории) Тогда
ПутьКПроекту = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКПроекту
+ РеквизитыХранилища.КаталогВыгрузкиВРепозитории);
Иначе
ПутьКПроекту = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКПроекту
+ ИмяПроектаEDT);
КонецЕсли;
Если ЭтоWindowsСервер Тогда
ТекстКоманды = "copy /Y ""%Источник%"" ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "copy /Y ""%Источник%"" ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКПроектуEDT + ".project");
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКПроекту + ".project");
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /NFL /NDL /NJH /NJS /NC /NS /NP >> %LOGFILE%";
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /NFL /NDL /NJH /NJS /NC /NS /NP" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКПроектуEDT + ".settings");
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКПроекту + ".settings");
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /NFL /NDL /NJH /NJS /NC /NS /NP >> %LOGFILE%";
ТекстКоманды = "robocopy ""%Источник%"" ""%Приемник%"" /E /NFL /NDL /NJH /NJS /NC /NS /NP" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКПроектуEDT + "DT-INF");
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКПроекту + "DT-INF");
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Иначе
ТекстКоманды = "cp -f ""%Источник%"" ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "cp -f ""%Источник%"" ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКПроектуEDT + ".project");
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКПроекту + ".project");
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "cp -Rf ""%Источник%"" ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "cp -Rf ""%Источник%"" ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКПроектуEDT + ".settings" + РазделительПути);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКПроекту + ".settings" + РазделительПути);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "cp -Rf ""%Источник%"" ""%Приемник%"" >> %LOGFILE%";
ТекстКоманды = "cp -Rf ""%Источник%"" ""%Приемник%""" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Источник%", ПутьКПроектуEDT + "DT-INF" + РазделительПути);
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%Приемник%", ПутьКПроекту + "DT-INF" + РазделительПути);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
@ -558,31 +773,29 @@
// Все файлы новой версии добавляем в индекс
ТекстКоманды = "git add --all ./ >> %LOGFILE%";
ТекстКоманды = "git add --all ./" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ТекстКоманды = "git commit -F ""%ИмяФайлаКомментария%"" --allow-empty-message --cleanup=verbatim >> %LOGFILE%";
ТекстКоманды = "git commit -F ""%ИмяФайлаКомментария%"" --allow-empty-message --cleanup=verbatim" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяФайлаКомментария%", ИмяФайлаКомментария);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
ФайлКоманды.ДобавитьСтроку(ПроверкаКодаВозврата);
ФайлКомментария = Новый ТекстовыйДокумент;
ФайлКомментария.УстановитьТекст(Комментарий);
ФайлКомментария.Записать(ИмяФайлаКомментария, КодировкаТекста.UTF8);
// Выполнение регламентных действий с репозиторием, если необходимо
ТекстКоманды = "git gc --auto >> %LOGFILE%";
ТекстКоманды = "git gc --auto" + ВыводЛога;
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
Если ВыполнитьPushПослеКонвертации И ЗначениеЗаполнено(РеквизитыХранилища.АдресРепозиторияGit) Тогда
ТекстКоманды = "git push -u origin %ИмяВетки% >> %LOGFILE%";
ТекстКоманды = "git push -u origin %ИмяВетки%" + ВыводЛога;
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%ИмяВетки%", РеквизитыХранилища.ИмяВетки);
ФайлКоманды.ДобавитьСтроку(ТекстКоманды);
КонецЕсли;
Если НЕ ЭтоWindowsСервер Тогда
ТекстКоманды = ФайлКоманды.ПолучитьТекст();
ТекстКоманды = СтрЗаменить(ТекстКоманды, "%LOGFILE%", "$LOGFILE");
ФайлКоманды.УстановитьТекст(ТекстКоманды);
ФайлКоманды.ДобавитьСтроку(ПроверкаКодаВозврата);
КонецЕсли;
Если ЭтоWindowsСервер Тогда
@ -594,6 +807,13 @@
КонецПроцедуры
&НаСервере
Функция ПолучитьДоступныеВерсииEDTНаСервере()
Возврат КонвертацияХранилища.ПолучитьСписокВерсийEDT();
КонецФункции
// Создание отсутствующих каталогов рекурсивно
//
// Параметры:

View File

@ -9,6 +9,7 @@
<key>ru</key>
<value>Конвертация в формат EDT</value>
</synonym>
<comment></comment>
<useStandardCommands>true</useStandardCommands>
<defaultForm>DataProcessor.КонвертацияВФорматEDT.Form.Форма</defaultForm>
<includeHelpInContents>true</includeHelpInContents>
@ -23,6 +24,7 @@
<key>ru</key>
<value>Форма</value>
</synonym>
<comment></comment>
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>

View File

@ -123,6 +123,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
@ -215,6 +216,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -450,6 +452,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -713,6 +716,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -906,6 +910,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -999,6 +1004,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<autoCommandBar>
@ -1408,6 +1414,7 @@
</handler>
</action>
<representation>Text</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>НастроитьРасписание</name>
@ -1432,6 +1439,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>Записать</name>
@ -1456,6 +1464,7 @@
</handler>
</action>
<representation>Text</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<parameters>
<name>Идентификатор</name>

View File

@ -1419,6 +1419,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1706,6 +1707,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
@ -1737,6 +1739,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -1886,6 +1889,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
@ -1914,6 +1918,7 @@
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -2636,7 +2641,9 @@
</extInfo>
</extendedTooltip>
<type>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo"/>
<extInfo xsi:type="form:PagesGroupExtInfo">
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
@ -2695,6 +2702,7 @@
<name>ЗаданияПриСменеСтраницы</name>
</handlers>
<pagesRepresentation>TabsOnTop</pagesRepresentation>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
@ -2717,6 +2725,10 @@
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnLoadDataFromSettingsAtServer</event>
<name>ПриЗагрузкеДанныхИзНастроекНаСервере</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@ -2729,10 +2741,6 @@
<event>BeforeLoadDataFromSettingsAtServer</event>
<name>ПриЗагрузкеДанныхИзНастроекНаСервере</name>
</handlers>
<handlers>
<event>OnLoadDataFromSettingsAtServer</event>
<name>ПриЗагрузкеДанныхИзНастроекНаСервере</name>
</handlers>
<excludedCommands>Abort</excludedCommands>
<excludedCommands>Cancel</excludedCommands>
<excludedCommands>Ignore</excludedCommands>
@ -3649,6 +3657,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ОткрытьФоновоеЗадание</name>
@ -3673,6 +3682,7 @@
</handler>
</action>
<representation>Text</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ОтменитьФоновоеЗадание</name>
@ -3694,6 +3704,7 @@
</handler>
</action>
<representation>Text</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>НастроитьРасписание</name>
@ -3718,6 +3729,7 @@
</handler>
</action>
<representation>Text</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ВыполнитьРегламентноеЗаданиеВручную</name>
@ -3739,6 +3751,7 @@
</handler>
</action>
<representation>Text</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ВключитьРегламентноеЗадание</name>
@ -3759,6 +3772,7 @@
<name>ВключитьРегламентноеЗадание</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ВыключитьРегламентноеЗадание</name>
@ -3779,6 +3793,7 @@
<name>ВыключитьРегламентноеЗадание</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ОбновитьРегламентныеЗадания</name>
@ -3803,6 +3818,7 @@
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<formCommands>
<name>ПоказатьВсеЗадания</name>
@ -3823,6 +3839,7 @@
<name>ПоказатьВсеЗадания</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
</formCommands>
<commandInterface>
<navigationPanel>

View File

@ -294,6 +294,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -484,6 +485,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -627,6 +629,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@ -720,6 +723,7 @@
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<autoCommandBar>

View File

@ -11,7 +11,6 @@
<content>Catalog.ОчередиВыполнения</content>
<content>Enum.ОперацииОчереди</content>
<content>Catalog.ХранилищаКонфигураций.Attribute.ОбрабатыватьВсеОчереди</content>
<content>Catalog.ХранилищаКонфигураций.Attribute.ВыгружатьИзменения</content>
<content>Catalog.ВерсииХранилища.Attribute.ВыгрузкаИзменений</content>
<content>Catalog.ХранилищаКонфигураций.Attribute.ЗапретитьИспользованиеОбщихОчередей</content>
</mdclass:FunctionalOption>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.5">
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.6">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
<object>
<name>Configuration.ГитКонвертер</name>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>true</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>true</value>
</right>
</object>
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
</Rights>
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.6">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>Configuration.ГитКонвертер</name>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>true</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>true</value>
</right>
</object>
</Rights>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.5">
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.6">
<setForNewObjects>true</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
<schedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:schedule="http://g5.1c.ru/v8/dt/schedule">
<?xml version="1.0" encoding="UTF-8"?>
<schedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:schedule="http://g5.1c.ru/v8/dt/schedule" beginDate="0001-01-01" endDate="0001-01-01" beginTime="00:00:00" endTime="00:00:00" completionTime="00:00:00">
<weekDays>Mon</weekDays>
<weekDays>Tue</weekDays>
<weekDays>Wed</weekDays>

305
README.md
View File

@ -1,261 +1,44 @@
# 1С:ГитКонвертер
Конфигурация предназначена для односторонней синхронизации хранилища конфигурации "1С:Предприятия" с репозиторием Git и последующим переходом на разработку в [1C:Enterprise Development Tools (1C:EDT)](http://v8.1c.ru/overview/release_EDT_17/) с сохранением истории.
Корректное переименование истории объектов метаданных при переименовании их в хранилище конфигураций "1С:Предприятия" по UUID'дам.
Git отслеживает контент файлов, а не пути файлов. В случае с выгрузкой 1С конфигурации - в ней присутствует множество файлов, очень похожих по контенту и именам (например `ФормаСписка.xml`), отличающихся только внутренним идентификатором (UUID). Поэтому если в одной версии хранилища были удалены одни объекты (файлы), добавлены и/или переименованы другие - в Git нужно явно сообщить, что удалять, несмотря на похожие файлы в других каталогах, а так же то, какие файлы переименовываются.
Таким образом, одна версия хранилища 1С может превращаться в 3 коммита: удаление файлов, переименование, и все остальные изменения контента в файлах и добавления файлов.
### Основные возможности
* Конвертирование существующего хранилища конфигурации 1С в репозиторий Git
* Обновлять изменения из хранилища 1С в репозиторий Git
* Параллелизировать загрузку истории хранилища из копий хранилища
* Ограничение нагрузки на сервер с помощью очередей
* Возможно "сращивать" историю в Git, если хранилище конфигураций "1С:Предприятия" обрезалось или начиналось заново.
* Сообщение гиту команды ```git mv старый_файл новый_файл``` при переименовании метаданных
* Выгружать только изменения конфигурации. Доступно для Платформы 8.3.10 и выше, требуется использовать "очереди"
* Создание сквозной история изменений для "хранилищ исправительных версий" если вы используете [Технологию разветвленной разработки конфигураций](https://its.1c.ru/db/v8std/content/2149184358/hdoc) или аналогичный процесс - хранилище версии можно загружать в "ветку" Git, получив сквозную историю в ветке.
* Конвертация репозитория выгрузки 1С:Предприятия в формат 1C:EDT с сохранением истории там, где это возможно
### Необходимые компоненты
* Конфигурацию можно запустить, используя 1C:Enterprise Development Tools 1.7 (https://releases.1c.ru/project/DevelopmentTools10)
* Платформа 1С:Предприятия 8.3.11 и выше (https://releases.1c.ru/project/Platform83)
* СУБД, поддерживаемая 1С:Предприятием
* OS Windows 7 или выше, ОС Linux и macOS - в бета-режиме.
## Начальная настройка
### Настройка базы ГитКонвертера
1. Разместите базу ГитКонвертера на сервере 1С. Работа в файловом режиме может быть использована только в демонстрационных целях.
2. Заполните константу __"Путь к версиям платформы на сервере"__, где располагаются файлы Конфигуратора 1cv8(.exe) в формате: `C:\Program files (x86)\1cv8\%ВерсияПлатформы%\bin`
где в параметр %ВерсияПлатформы% - будет подставлена текущая версия хранилища из настроек.
4. Для ограничения производительности можно включить константу __"Использовать очереди выполнения"__ - количеством очередей можно балансировать нагрузку на сервер.
### Настройка сервера 1С
Для ИБ ГитКонвертера на сервере 1С рекомендуется настроить удаление, перенос в архив или полностью отключить журнал регистрации, т.к. интесивность событий в ИБ может быть очень высокой, а ценность истории ЖР за прошлые периоды - низкая.
Для легкого удаления и архивирования ЖР можно переключить его формат на старый режим. Для этого необходимо в каталог журнала регистрации ИБ скопировать пустой файл с именем: __1Cv8.lgf__.
Для больших проектов рекомендуется выполнить такую настройку (удаление/бэкапирование файлов журнала регистрации).
Так же рекомендуется переключить регистрацию событий - только ошибки. Для этого следует выбрать команду __Конфигуратор - Администрирование - Настройка журнала регистрации... = Регистрировать ошибки__ и в открывшемся диалоге установить минимально необходимую вам периодичностью.
## Настройка конвертации хранилища 1С
Рекомендуется использовать сервер хранилищ конфигураций 1С.
Для оптимальной работы сервера хранилищ настройте __Размер глобального кэша__ в "Администрировании" в 1,5-2 раза больше __количества__ параллельных потоков (если используются "копии хранилища") __получения версий * размер одной версии, Мб__.
### Параметры конвертации
* Укажите адрес хранилища. При использовании сервера хранилища рекомендуется настроить в администрировании хранилища параметр "Глобальный кэш версий конфигурации" чтобы количество кэшированных версий было больше параллельно получаемых версий.
* Укажите версию платформы, рекомендуется использовать 8.3.9.1818 и выше.
* Укажите начальную версию в хранилище конфигураций, если текущее хранилище было обрезано и первая версия больше 1.
* Если указана версия окончания - не будет выполняться запрос новых версий.
* Укажите расписание запусков.
* Укажите __Каталог выгрузки версий__, в котором будут создаваться временные каталоги с номерами версий и выгрузкой данных.
* Желательно ограничить количество подготавливаемых (выгружаемых) версий - рекомендуется установить значение исходя из __Размер базы с версией + Размер выгрузки в xml__ и размера жесткого диска.
* Укажите __Минимальное количество метаданных__ - число файлов и каталогов выгрузки в xml - необходимо для контроля, что все файлы выгружены. Рекомендуется устанавливать 90-95% от текущей версии, чтобы учесть возможность удаления метаданных (т.е. сокращения количества файлов)
* Не рекомендуется устанавливать __Удаление конфигураций поставщиков__, если планируется загружать конфигурацию из файлов и обновлять конфигурации поставщиков. Опция позволяет оптимизировать размер хранилища Git и не хранить объемные файлы *.cf.
* Установите __Удалять временные данные версии после коммита__ - рекомендуется на реальных проектах.
* __Выгружать изменения__ - позволяет на Платформе 8.3.10 и выше выгружать только изменения. Доступно при использовании __"Очередей"__
* __Локальный каталог Git__ рекомендуется указывать на одном логическом диске с __Каталогом выгрузки версий__ - будет использовано перемещение версий возможностями ОС, иначе будет выполняться копирование.
* __Каталог выгрузки в репозитории__ - относительный путь к каталогу выгрузки внутри репозитория. Рекомендуется указывать имя проекта для будущей совместимости с рабочим пространством 1C:EDT или оставить пустым.
* Установите флаг __Выполнять коммиты__ для выполнения коммитов. Отключение может быть необходимо с целью временно приостановить работу конвертера.
* Установите флаг __Обрабатывать все очереди__, если используются очереди в ИБ.
Нажмите кнопку "Создать гит репозиторий" перед конвертацией - команда выполняет инициализацию репозитория и начальную настройку, специфичную для конфигураций 1С.
### Дополнительная настройка репозитория Git
По умолчанию создается файл исключений __.gitignore__, в который добавляются файлы `DumpFilesIndex.txt` и `ConfigDumpInfo.xml` - не требуемые для работы с исходными файлами конфигурации 1С.
Если репозиторий был создан с помощью кнопки в карточке хранилища, в локальный конфиг репозитория добавляются настройки для более комфортной работы:
```bash
git config --local core.quotepath false
git config --local gui.encoding utf-8
git config --local i18n.commitEncoding utf-8
git config --local diff.renameLimit 1
git config --local diff.renames false
```
#### Символы окончания строк.
Если разработчики, работающие с репозиторием, используют разные операционные системы (Microsoft Windows, Linux, macOS), нужно настроить конвертацию символов окончания строк при чтении из репозитория. Следующие команды настраивают Git таким образом, что в рабочей копии разработчика будут использоваться "родные" для его операционной системы символы, а в репозитории всегда будет использоваться LF.
Для операционной системы Microsoft Windows:
```bash
git config --global core.autocrlf true
git config --global core.safecrlf true
```
Для операционных систем Linux и macOS:
```bash
git config --global core.autocrlf input
git config --global core.safecrlf true
```
Подробнее о назначении этих параметров вы можете прочитать в документации Git на английском языке [git config core.safecrlf](http://git-scm.com/docs/git-config#git-config-coresafecrlf) и [git config core.autocrlf](http://git-scm.com/docs/git-config#git-config-coreautocrlf).
#### Git LFS
Для увеличения быстродействия репозитория Git можно использовать расширение __git lfs__ (https://git-lfs.github.com)
Если используется сервер репозиториев Git, необходимо убедиться, что он поддерживает это расширение и включить настройки для проекта. Например, GitLab, GitHub, BitBucket - поддерживают.
Выполнить начальную настройку репозитория до выполнения первого коммита:
```bash
git lfs install
```
Включить отслеживание бинарных файлов конфигурации
```bash
git lfs track "*.cf"
git lfs track "*.bin"
git lfs track "*.png"
git lfs track "*.gif"
git lfs track "*.bmp"
git lfs track "*.jpg"
git lfs track "*.zip"
```
В этом примере - все файлы конфигураций поставщиков, файлы макетов с "Двоичными данными" и картинки из конфигурации попадут в lfs.
Например, чтобы переносить в LFS только некоторые типы файлов с расширением `*.bin` можно включить отслеживание только шаблонов и модулей без исходного кода по маске:
```bash
git lfs track "*/Ext/Template.bin"
git lfs track "*/Ext/Module.bin"
```
### Копии хранилища
Копии хранилища используются для ускорения получения версий из хранилища.
* Возможно использовать тот же адрес серверного хранилища конфигураций, но с разными пользователями. Количество "копий" влияет на размер создаваемого глобального кэша версий на сервере хранилища 1С. Желательно установить кэш в настройках сервера хранилищ 1С в __полтора раза__ больше, чем количество копий в ГитКонвертере.
* Укажите другой адрес архивной копии хранилища, если в текущем хранилище конфигураций выполнялось сокращение версий, и установите ограничение номеров версий в этой копии.
* Укажите расписание получения версий из этой копии. Если в "копии" указан адрес основного хранилища, необходимо в расписании учесть возможность работы разработчиков с хранилищем - запуски на получение выполнять с промежутками, обеспечивающими комфортную работу разработчиков.
### Очереди выполнения
Если включена константа "Использовать очереди выполнения", то для каждого хранилища конфигураций необходимо указать 2 очереди:
* Выгрузка метаданных. Начиная с версии Платформы 8.3.10 возможно использовать __выгрузку изменений__ - для этого необходимо выгружать версии строго последовательно и не рекомендуется создавать более одной очереди на выгрузку.
* Загрузка метаданных
Возможно указать диапазоны количества версий для каждой очереди для разграничения "рабочей зоны".
Укажите ограничение количества версий обрабатываемых очередью за один запуск и расписание запусков.
Очередь может быть общей на всю базу или привязанной к конкретному хранилищу. Для очереди общего типа выбор версий для обработки выполняется по дате версии - это следует учитывать при конвертации проектов с длинной историей и более "молодых" проектов в одной базе ГитКонвертера.
### Информация пользователей
Хранилище конфигураций "1С:Предприятия" использует для идентификации __Пользователя__, а в репозитории Git основным идентификатором является __email__ и имя пользователя. Для этих целей предназначен регистр сведений __Информация пользователей__, позволяющий указать соответствие пользователей хранилищ пользователям репозитория Git.
Можно выполнять коммиты анонимно, с потерей информации об авторстве. Пользователь хранилища будет указан в дополнении к комментарию к каждой версии.
Пользователи могут быть указаны общие для всех хранилищ или с уточнением по хранилищам.
## Конвертация выгрузки 1С:Предприятия в формат 1C:Enterprise Development Tools
Выполнить конвертацию необходимо, если процесс разработки полностью переносится из __Хранилища конфигураций 1С__ в Git репозиторий.
![Конвертация хранилища в формат 1C:EDT - Convert repository to 1C:EDT](ConvertToEDT.png)
__Внимание!__ Конвертация в формат 1C:EDT необратима, поэтому последующая синхронизация с хранилищем конфигураций "1С:Предприятия" невозможна. Конечно, можно сделать "checkout" на коммит до конвертации и продолжить конвертацию в другой ветке, или откатить все изменения с помощью `git reset --hard <sha_commit>` и т.д.
Можно так же, в тестовых целях, создать копию элемента справочника "Хранилищ" и копию репозитория - создать ветку и конвертировать в формат 1C:EDT, оставляя возможность синхронизировать хранилище конфигураций с основной веткой Git.
Структура каталогов выгрузки 1С:Предприятия и формата 1C:EDT похожи, но немного различаются. Для сохранения истории разработки в формате 1C:EDT запустите обработку __"Конвертация в формат EDT"__. Она выполняет перемещение файлов в соответствии с форматом 1C:EDT, выполняет коммит в гит, заменяет каталог `src` выгрузки 1С:Предприятия каталогом из 1C:EDT и выполняет второй коммит с изменением контента файлов.
Стоит отметить, что содержание xml-файлов 1C:EDT и 1С:Предприятия в некоторых случаях различается существенно, поэтому построчное авторство в таких файлах сохранить не удастся.
Файлы текстов модулей `*.bsl` сохраняют историю полностью.
1. Откройте 1C:EDT в новом Workspace и выполните импорт конфигурации из файлов: __File -> Import -> 1C:Enterprise Development Tools -> Configuration Files__, указав директорию к фалам `Локальный каталог Git/Каталог выгрузки в репозитории/src/`.
2. Укажите имя проекта соответствующее __Каталогу выгрузки в репозитории__ из настроек, если изначально было указано. Настройки проекта будут скопированы в репозиторий.
* Если изначально каталог с именем проекта не был указан (ну забыли, не знали...) можно заполнить имя проекта в карточке хранилища и выполнить перемещение `git mv ./src ./ИмяПроектаEDT/src` и коммит `git commit -m "EDT project name"` вручную, до конвертации.
3. Дождитесь окончания импорта и конвертации в 1C:EDT. Компиляцию и валидацию проекта можно не дожидаться - для задачи "перехода разработки на 1C:EDT" нужны только файлы.
4. Если использовали __Git LFS__ - убедитесь что типы файлов, вынесенные в __LFS__, после конвертации с новыми именами/расширениями так же попадут в __LFS__.
5. Выполните конвертацию репозитория с помощью обработки __Сервис -> Конвертация в формат EDT__, указав путь к папке __src__ c исходными файлами в workspace из 1C:EDT.
Если изначально был указан __"Каталог выгрузки в репозитории"__ соответствующий имени проекта, после конвертации можно открыть 1C:EDT в новом  Workspace и выполнить импорт проекта из Git: __File -> Import -> Git -> Projects from Git__ и убедиться в корректности конвертации.
__Внимание!__ Рекомендуется читать документацию к 1C:EDT о настройках Git, работе с проектом, импорте и др.
Соответствие имен файлов формата выгрузки 1С:Предприятия и формата 1C:EDT
```
Configuration.xml -> Configuration.mdo
ClientApplicationInterface.xml -> ClientApplicationInterface.cai
CommandInterface.xml -> CommandInterface.cmi
HomePageWorkArea.xml -> HomePageWorkArea.hpwa
MainSectionCommandInterface.xml -> MainSectionCommandInterface.cmi
Form.xml -> Form.form
Template.xml -> Template.bin // BinaryData
Template.xml -> Template.mxlx // SpreadsheetDocument
Template.xml -> Template.dcs // DataCompositionSchema
Template.xml -> Template.txt // FileAwareTextDocument
Template.xml -> Template.htmldoc // HtmlDocument
Template.xml -> Template.addin // AddIn
Template.xml -> Template.scheme // GraphicalScheme
Template.xml -> Template.axdt // ActiveDocument
Template.xml -> Template.geos // GeographicalSchema
Template.xml -> Template.dcsat // DataCompositionAppearanceTemplate
Package.bin -> Package.xdto
WSDefinition.xml -> WsDefinitions.wsdl
Flowchart.xml -> Flowchart.scheme
Rights.xml -> Rights.rights
Schedule.xml -> Schedule.schedule
```
Другие файлы изменят имена не значительно, в соответствии с форматом 1C:EDT. Часть файлов (`Help.xml`, `Language.xml`, `Picture.xml`, `ФормаСписка.xml` и др.) будут удалены, т.к. контент файлов теперь хранится в составе других файлов.
## Если что-то пошло не так (FAQ)
#### Расписание конвертации включено, но список версий пуст
* Проверьте, что задана константа __"Путь к версиям платформы на сервере"__ и в настройках хранилища указана версия, соответствующая версии сервера хранилища конфигураций 1С:Предприятия.
* Проверьте файл логов `log.txt` в каталоге выгрузок - там может быть написано что-то вразумительное.
* Проверьте журнал регистрации базы 1С:ГитКонвертера - на наличие ошибок. Все мы - люди :)
#### Версии в списке ИБ 1С:ГитКонвертера есть, но конкретная версия зависла (зациклилась) на этапе выгрузки конфигурации в xml
* Можно посмотреть в лог пакетной операции для этой версии `/каталог выгрузки версий/ХХХ/log.txt` - пакетная операция Конфигуратора может сообщить что-то полезное
* Если база версии "развалилась" в контекстном меню формы списка версий __сбросить состояние__ версии - она будет получена заново из хранилища.
#### Версии обрабатываются, но не коммитятся в Git
* Проверьте, разрешен ли анонимный коммит в Git
* Проверьте список версий хранилища - красным подсвечиваются версии, для авторов которых не указана контактная информация в регистре "Информация пользователей"
* Нажмите кнопку "Выполнить коммиты" - для принудительного запуска коммитов обработанных версий в статусе "Метаданные загружены"
#### Коммиты не появляются на сервере Git
* Адрес Git-сервера был добавлен после создания хранилища? Нужно нажать кнопку "Установить адрес репозитория Git" чтобы настройки появились в config-файле.
* Откройте гит-клиент - проверьте, есть ли коммиты в локальном репозитории
* Посмотрите лог коммита на Git-сервер, расположенные `/каталог выгрузки версий/gi_log_ver_XXX.txt`
* Выполните команду `git push -u origin <branch name>` в консоли, чтобы проверить push вручную
* Проверьте права доступа для пользователя от которого запущен сервер 1С - от его имени выполняется запуск скриптов `*.bat/*.sh` и глобальные настройки Git для этого пользователя.
#### В какой-то версии произошел сбой и файлы версии закомичены не полностью
Т.е. в этой версии часть файлов или все были сначала удалены в репозитории, а следующая версия добавила файлы заново - сквозная история потерялась :(
* Можно установить контроль минимального количества файлов в выгрузке, чтобы такого не случалось в будущем.
* Т.к. это "односторонняя синхронизация" - то можно беспрепятственно откатить изменения `git reset --hard <commit>` на версию, до проблемной.
* Далее в карточке хранилища установить поле "Версия в Git" на текущую в Git.
* Для всех версий, начиная с "проблемной" и последующих, выполнить команду в контекстном меню "Сбросить состояние"
* В каталоге `src` удалить файлы `DumpFilesIndex.txt` и `ConfigDumpInfo.xml` т.к. они не хранятся в репозитории и не откатились.
* Проверить что командные файлы `*.bat` (или `*.sh`) удалены для всех версий, начиная с проблемной.
* Если была установлена настройка Git-сервера, необходимо на сервере отключить защиту ветки (если есть такое) и выполнить `git push -u -f origin <branch name>` принудительную передачу данных с заменой репозитория на сервере.
#### В хранилище версия есть, а в Git она пропущена
* Хранилище Конфигураций 1С:Предприятия позволяет сохранять новую версию без фактического изменения контента файлов, если меняется внутренняя версия объекта метаданных. Для Git в этом случае нечего коммитить.
* Откройте файлы логов и убедитесь в том, что версия была обработана корректно
# 1С:ГитКонвертер
Конфигурация предназначена для односторонней синхронизации хранилища конфигурации "1С:Предприятия" с репозиторием Git и последующим переходом на разработку в [1C:Enterprise Development Tools (1C:EDT)](http://v8.1c.ru/overview/release_EDT_17/) с сохранением истории.
Корректное переименование истории объектов метаданных при переименовании их в хранилище конфигураций "1С:Предприятия" по UUID'дам.
Git отслеживает контент файлов, а не пути файлов. В случае с выгрузкой 1С конфигурации - в ней присутствует множество файлов, очень похожих по контенту и именам (например `ФормаСписка.xml`), отличающихся только внутренним идентификатором (UUID). Поэтому если в одной версии хранилища были удалены одни объекты (файлы), добавлены и/или переименованы другие - в Git нужно явно сообщить, что удалять, несмотря на похожие файлы в других каталогах, а так же то, какие файлы переименовываются.
Таким образом, одна версия хранилища 1С может превращаться в 3 коммита: удаление файлов, переименование, и все остальные изменения контента в файлах и добавления файлов.
### Основные возможности
* Конвертирование существующего хранилища конфигурации 1С в репозиторий Git в формате 1C:EDT
* Обновлять изменения из хранилища 1С в репозиторий Git
* Параллелизировать загрузку истории хранилища из копий хранилища
* Ограничение нагрузки на сервер с помощью очередей
* Возможно "сращивать" историю в Git, если хранилище конфигураций "1С:Предприятия" обрезалось или начиналось заново.
* Сообщение гиту команды ```git mv старый_файл новый_файл``` при переименовании метаданных
* Выгружать только изменения конфигурации. Доступно для Платформы 8.3.10 и выше, требуется использовать "очереди"
* Создание сквозной история изменений для "хранилищ исправительных версий" если вы используете [Технологию разветвленной разработки конфигураций](https://its.1c.ru/db/v8std/content/2149184358/hdoc) или аналогичный процесс - хранилище версии можно загружать в "ветку" Git, получив сквозную историю в ветке.
* УСТАРЕЛО. ~~Конвертация хранилища конфигураций 1С в формате выгрузки 1С:Предприятия~~ для совместимости с версией `1.0.4` с возможностью конвертации репозитория в формат 1C:EDT.
### Необходимые компоненты
* Конфигурацию можно запустить, используя 1C:Enterprise Development Tools 1.8 (https://releases.1c.ru/project/DevelopmentTools10)
* Платформа 1С:Предприятия 8.3.12 и выше (https://releases.1c.ru/project/Platform83)
* СУБД, поддерживаемая 1С:Предприятием
* OS Windows 7 или выше, ОС Linux и macOS - в бета-режиме.
## Начальная настройка
[Без настройки - никак. См. Wiki](https://github.com/1C-Company/GitConverter/wiki/Начальная-настройка)
## Обновление с версии 1.0.4
**Внимание!** Конвертация хранилища 1С в формат выгрузки xml 1С:Предприятия является устаревшей функциональностью и не доступна для новых настроек конвертации хранилища.
Текущие настройки синхронизации хранилища, конвертирующие в формат выгрузки xml 1С:Предприятия будут работать корректно, но рекомендуется выполнить разовую конвертацию в формат 1C:EDT и продолжить синхронизацию в этом формате.
## Конвертация выгрузки 1С:Предприятия в формат 1C:Enterprise Development Tools
[См. Wiki](https://github.com/1C-Company/GitConverter/wiki/Конвертация-выгрузки-1С-Предприятия-в-формат-1C-Enterprise-Development-Tools)
## Если что-то пошло не так (FAQ)
[См. примеры Wiki](https://github.com/1C-Company/GitConverter/wiki/Если-что-то-пошло-не-так-FAQ)