Распознавание составного номера конфигурации 1С
<< Click to Display Table of Contents >> Интеграция с 1С > Интеграция с 1C: Бухгалтерия предприятия 2.0 (устар.) > Правила синхронизации данных > Разработка правил синхронизации Directum RX и 1C > Примеры разработки правил Распознавание составного номера конфигурации 1С |
Задача
В «1С: Бухгалтерия 2.0» в свойствах конфигурации добавлен составной номер версии, например, 2.0.75.100/2.1.44.6. В стандартной поставке при синхронизации проверяется совместимость версий правила и конфигурации. В номере версии конфигурации не учитываются пробелы, регистры и дополнительные символы. Необходимо доработать стандартные правила так, чтобы синхронизация выполнялась успешно даже с указанием составного номера конфигурации.
Решение
Проверка совместимости версии правила и версии конфигурации выполняется в функции IsCompatibleWithVersion(). В качестве входных параметров функция принимает имя конфигурации 1С и ее версию. Исходный код функции:
public virtual bool IsCompatibleWithVersion(string configurationType, string configurationVersion)
{
configurationType = configurationType.Replace(" ", string.Empty);
if (!this.ConfigurationTypes.Any(x => string.Equals(x.Replace(" ", string.Empty),
configurationType,
StringComparison.InvariantCultureIgnoreCase)))
return false;
try
{
configurationVersion = this.NormalizeVersionString(configurationVersion);
var minVersion = this.NormalizeVersionString(this.MinConfigurationVersion);
var maxVersion = this.NormalizeVersionString(this.MaxConfigurationVersion);
var version = new Version(configurationVersion);
var versionFrom = new Version(minVersion);
var versionTo = new Version(maxVersion);
return version.CompareTo(versionFrom) >= 0 && version.CompareTo(versionTo) <= 0;
}
catch (Exception ex)
{
var message = string.Format("{0}. Ошибка при сравнении версий конфигурации 1С и правила.", this.Name);
Log.Console.Info(message);
Log.DrxUtilLog.Error(ex);
return false;
}
}
Чтобы синхронизация выполнялась успешно с составным номером конфигурации, можно использовать одно из решений:
1.Вычислить официальную версию конфигурации (рекомендуемое решение).
Для каждого правила переопределите функцию IsCompatibleWithVersion(). Из значения в параметре configurationVersion вычислите номер официальной версии конфигурации 1С (первые 4 цифры до символа «/») и передайте его базовой функции:
public override bool IsCompatibleWithVersion(string configurationType, string configurationVersion)
{
var versions = configurationVersion.Split('/');
return base.IsCompatibleWithVersion(configurationType, versions[0]);
}
2.Отключить проверку совместимости версий правила и конфигурации.
Если проверка версий не нужна, для каждого правила переопределите функцию IsCompatibleWithVersion() и возвращайте в качестве результата значение true:
public override bool IsCompatibleWithVersion(string configurationType, string configurationVersion)
{
return true;
}
Изменение стандартного правила из комплекта поставки Создание правила для другой конфигурации 1С |
© Компания Directum, 2024 |