Добрый день

Кастомизируем страничку OrderPageV2. На заголовке выведены Виджеты в виде графиков и индикаторов. Мнение пользователей разделилось надвое. Одни рады  этому, а другим не нужно - только место занимает. 

Теперь сам вопрос можно лина области Header страницу сделать Группу полей (как на вкладках страницы), и уже в неё поместить все виджеты? чтобы появилась возможность скрывать и разворачивать на усмотрение пользователя.

Нравится

1 комментарий

У меня получилось: мастером добавил группу на вкладке, потом туда виждет, а потом в коде OrderPageV2 у создавшегося элемента OrderProductTabGroup8c09e07e поменял родителя на Header:

"parentName": "Header",//"OrderProductTab",

Выглядит так:

Сворачивается-разворачивается нормально.

Показать все комментарии

Добрый день, уважаемые коллеги!

Прошу оказать методическую помощь по правильным шагам при реализации нового бизнес-правила в мобильном приложении. Что имеется:

Задача - на страницу редактирования Активности в мобильном приложении добавить бизнес-правило (доступность). В какой схеме необходимо прописать новое бизнес-правило?

Есть образованные при настройке мастером мобильного приложения кастомные

MobileApplicationManifestFieldForceWorkplace и MobileActivityRecordPageSettingsFieldForceWorkplace.

Правильно ли я понимаю, что шаги должны быть следующие:

  1. Создать схему клиентского модуля, в которой прописать новое бизнес-правило. Схема должна расширить кастомную MobileActivityRecordPageSettingsFieldForceWorkplace? Как правильно связать новую схему с MobileActivityRecordPageSettingsFieldForceWorkplace?
  2. Подключить созданную схему модуля в манифесте мобильного приложения MobileApplicationManifestFieldForceWorkplace

И еще вопрос: в каком случае следует использовать классы бизнес-правил , а в каком пользовательские бизнес-правила.

Благодарю за помощь

Нравится

5 комментариев
Лучший ответ

Вообще, бизнес-правила для разных разделов добавляют в схемы с названиями ...ModelConfig, вроде MobileActivityModelConfig. Например, в ней стандартно такое:

Terrasoft.sdk.Model.addBusinessRule('ContactCommunication', {
	ruleType: Terrasoft.RuleTypes.Requirement,
	triggeredByColumns: ['Number'],
	position: 0
});
 
Terrasoft.sdk.Model.addBusinessRule('ContactCommunication', {
	ruleType: Terrasoft.RuleTypes.Requirement,
	triggeredByColumns: ['CommunicationType'],
	position: 1
});
 
Terrasoft.sdk.Model.addBusinessRule('ContactCommunication', {
	ruleType: Terrasoft.RuleTypes.Filtration,
	triggeredByColumns: ['CommunicationType'],
	position: 2,
	filters: Ext.create('Terrasoft.Filter', {
		type: Terrasoft.FilterTypes.Group,
		subfilters: [
			Ext.create('Terrasoft.Filter', {
				property: 'UseforContacts',
				value: true
			}),
			Ext.create('Terrasoft.Filter', {
				property: 'Id',
				funcType: Terrasoft.FilterFunctions.NotIn,
				funcArgs: [Terrasoft.GUID.Twitter, Terrasoft.GUID.Facebook, Terrasoft.GUID.LinkedIn]
			})
		],
		name: 'a4265c53-b393-4e16-be5f-ee0e5a7faa8c'
	})
});

 

По базовым бизнес-правилам можно тут документацию с примерами почитать

https://academy.terrasoft.ru/documents/technic-sdkmob/7-16/biznes-pravila-mobilnogo-prilozheniya

А тут по кастомным

https://academy.terrasoft.ru/documents/technic-sdkmob/7-16/polzovatelskie-biznes-pravila-mobilnogo-prilozheniya

Базовые правила очень простые, и ничего особо сложного на них не сделаешь. Для сложной логики нужны уже пользовательские правила.

 

 

Бершеда Д. Н.,

Благодарю за информацию и помощь, но правильно ли я понимаю порядок работы со схемами для добавления бизнес-правила?  Если нет возможности наследования, я должна создать клиентский модуль для своего бизнес-правила, который прописать в манифесте? 

Вообще, бизнес-правила для разных разделов добавляют в схемы с названиями ...ModelConfig, вроде MobileActivityModelConfig. Например, в ней стандартно такое:

Terrasoft.sdk.Model.addBusinessRule('ContactCommunication', {
	ruleType: Terrasoft.RuleTypes.Requirement,
	triggeredByColumns: ['Number'],
	position: 0
});
 
Terrasoft.sdk.Model.addBusinessRule('ContactCommunication', {
	ruleType: Terrasoft.RuleTypes.Requirement,
	triggeredByColumns: ['CommunicationType'],
	position: 1
});
 
Terrasoft.sdk.Model.addBusinessRule('ContactCommunication', {
	ruleType: Terrasoft.RuleTypes.Filtration,
	triggeredByColumns: ['CommunicationType'],
	position: 2,
	filters: Ext.create('Terrasoft.Filter', {
		type: Terrasoft.FilterTypes.Group,
		subfilters: [
			Ext.create('Terrasoft.Filter', {
				property: 'UseforContacts',
				value: true
			}),
			Ext.create('Terrasoft.Filter', {
				property: 'Id',
				funcType: Terrasoft.FilterFunctions.NotIn,
				funcArgs: [Terrasoft.GUID.Twitter, Terrasoft.GUID.Facebook, Terrasoft.GUID.LinkedIn]
			})
		],
		name: 'a4265c53-b393-4e16-be5f-ee0e5a7faa8c'
	})
});

 

Зверев Александр,

 

Александр, спасибо за пояснения. Но никак не разберусь).

Имеется решение Sales Enterprise + Field Force. Цель изменить поведение стандартного бизнес-правила Активности заполнения Результата, применив сверху стандартного правила и внешнего пакета. Стандартное бизнес-правило прописано в MobileActivityModelConfig (пакет Mobile) - разрешать редактирование поля Result , если состояние активности имеет признак Конечное. Стандартное правило не именовано,т.е. просто отключить его нельзя

Есть FieldForceMobileActivityModelConfig (пакет FieldForceMobile), где изменяется стандартное бизнес-правило в отношении поля DetailedResult. 

Есть MobileApplicationManifestFieldForceWorkplace (пакет FieldMobile), где для модели Activity прописаны "ModelExtensions":

["MobileActivityModelConfig" (стандартные правила),

"FieldForceMobileActivityModelConfig" (добавленные правила внешнего пакета)]

Есть MobileApplicationManifestFieldForceWorkplace (пакет Custom), создан автоматически с признаком «замещать родителя» да.

Создаю свой модуль UsrFieldForceMobileActivityModelConfig, где прописываю свое бизнес-правило, и затем в MobileApplicationManifestFieldForceWorkplace (пакет Custom), добавляю в "ModelExtensions" свой модуль UsrFieldForceMobileActivityModelConfig

И никак не могу добиться работы своего бизнес-правила (либо работает стандартное, либо ничего не работает :)). Т.е. каким образом можно переопределить стандартное неименованное бизнес-правило на свое?

Зверев Александр,

 

Благодарю за помощь) разобралась

Показать все комментарии

При попытке выгрузки списка, выдается ошибка "Неполадка сервера". Дело в том что мы увеличили количество столбцов до 50 и после этого перестали экспортироваться списки больше ~25, ограничение в web.config на количество выгружаемых строк увеличено до 40 000, есть ли возможность выгрузить большее количество строк?

Изображение удалено.

 

Изображение удалено.

Нравится

3 комментария

Такие большие массивы мы через ODATA в Excel Power BI выгружали

Если сайт развёрнут локально, то ещё можно брать информацию напрямую запросами к базе. Или сохранить в файл, используя Management Studio, или подключаться к базе прямо из Excel по кнопке на вкладке «Данные».

 

Если нужно исправить именно стандартный механизм выгрузки, нужно выяснить точную причину: просто тайм-аут (для 25 записей маловероятно), что-то с одним из конкретных полей или ещё что-нибудь. Судя по скриншоту, среди полей есть самодельные. Если есть доступ к логам, посмотрите, что конкретно туда пишет при попытке выгрузить.

Здравствуйте, Сакен!

 

В целом мы не рекомендуем увеличивать значение MaxStringContentLength либо другим образом обходить данное ограничение, это может привести к непредсказуемым последствиям в работе веб-сервиса экспорта. Необходимо уменьшить количество выгружаемых колонок для корректной работы с функционалом экспорта.

 

Такое поведение ещё может быть, если в системной настройке "Количество записей в пачке для экспорта в Excel" стоит слишком больше значение. Коробочное значение равно 2000.

Показать все комментарии

Кто может сталкивался.

Создали отчеты виде дэшбордов для клиента. Теперь клиент просит по каждому  дэшборду - написать комментарий, можно в виде всплывающего окна.

Кто сталкивался, поделитесь. Заранее все спасибо.

Нравится

7 комментариев

Добрый день.

 

Если без разработки, то можно комментарий указать либо в 'Подписи числового показателя' в настройке графика (и он будет отображаться при наведении курсора), либо в заголовке самого графика. Например:

 

 

Алла Савельева,

Алла, спасибо. Это всё сделано. Ноклиент как раз хочет, чтобы было краткое описание самого дэшборда. Т.е. типа всплывающего окна с многострочным текстом.

Милова Марина,

Слышала, что в версию 7.16 будут входить дополнительные возможности для настройки графиков, даже, по-моему, будет возможность настроить 'легенду'.

Алла Савельева,

к сожалению, клиент не хочет ждать новую версию, а хочет сейчас

Марина, ещё как вариант, можно между графиками добавить блоки веб-страниц, где и разместить нужный текст с форматированием. Но хранить их с доступом по HTTP или HTTPS где-то нужно отдельно. Если именно всплывающим окном, боюсь, без программирования не обойтись.

Зверев Александр,

Александр, дык есть программисты. Как раз и спрашиваю для программистов. У Вас есть принтскрин, как хоть это выглядит и возможна ли такая реализация в Итогах? для дэшбордов?

 

Я имею в виду стандартный блок итогов «Веб-страница», но так текст будет только в размере её фрейма и на всю страницу не получится. Настраивается пользовательскими средствами.

 

Либо полностью дорабатывать механизм страниц итогов со всеми трудностями в переопределении схем модулей.

Показать все комментарии

Как обновить "Панель действий" не перезагружая страницу при создании активности.

Пример ситуации:

Менеджер сидит и на втором мониторе смотрит фильм, а в этой время начальник ему создает активность по продаже на которой открыта страница. Вышло уведомление (или еще хуже не вышло потому что браузер заблокировал, очень частый кейс, но сейчас не про это), сотрудник не увидел его (не важно по какой причине). И вот что бы сотрудник мог сразу увидеть активность в панели действий.

Ну или как часто бывает у меня - Создается продажа из карточки, процесс начался, и база очень долго создает активность (да, на это бывает уходит минуты две, но это уже вопрос по работе с СУБД Oracle), но пользователь уже зашел в карточку, и когда активность все же создалась то на панели действий ее нет так как она создалась когда у кейса выбрана стадия и панель действий загрузилась уже

Нравится

3 комментария

Пример ситуации:

Менеджер сидит и на втором мониторе смотрит фильм, 

Отличное начало.laugh

 

Обычно обмен информацией  между сервером и открытыми в браузере страницами делается при помощи ClientMessageBridge. С его помощью можно порождать сообщения, которые отправляются через sandbox.

 

Конкретно с панелью действий работают сообщения ReloadDashboardItems (отправляется из BaseMiniPage) и ChangeDashboardTab (из ActivityMiniPage):

/**
 * Publishes events after entity save.
 * @protected
 * @param {Function} [callback] Callback-function.
 * @param {Object} [scope] Callback execution context.
 */
publishOnSaveEvents: function(callback, scope) {
	this.sandbox.publish("ReloadDashboardItems", {
		id: this.get("Id")
	});
	this.Ext.callback(callback, scope || this);
},
/**
 * @inheritdoc BaseMiniPage#close
 * @override
 */
close: function() {
	if (this.destroyed) {
		return;
	}
	this.sandbox.publish("ChangeDashboardTab", null);
	this.callParent(arguments);
},

 

Они принимаются в BaseActionsDashboard:

/**
 * Subscribe on events of sandbox.
 * @protected
 */
subscribeSandboxEvents: function() {
	var sandbox = this.sandbox;
	sandbox.subscribe("ReloadDashboardItems", function() {
		this.onReloadDashboardItems();
	}, this);
	sandbox.subscribe("ChangeDashboardTab", function(tabName) {
		this.setActiveTab(tabName);
	}, this);
},

Далее срабатывают обработчики в этой же или дочерних схемах.

 

То есть в Вашем случае нужно будет или  ловить и обрабатывать своё сообщение, или подстроиться под имитацию существующего. Важно учесть, что пользователей много, и обновлять панель нужно не всем, а только тем, у кого открыто обращение, связанное с новой задачей и после обновления она должна у него в карточке появиться.

 

Зверев Александр,

Но как это сделать из бизнес процесса?

Я создал замещение объекта "Активность", в нем добавил сообщение после создания записи. Создал событийный процесс что реагирует на это сообщение, в нем создал класс с колонкой Id (так как в подпищике смотрю эту колонку ждет)

	public class idNumberOpportunity
    {
		public Guid Id { get; set; }
    }

проверил что колонка "Продажа" не пуста

Entity.GetTypedColumnValue<Guid>("OpportunityId") != Guid.Empty

и в сценарии запустил код преобразовав сообщение в нужный вид преобразовав в Json формат (на выходе в js вышло так { "Id": "22345200-abe8-4f60-90c8-0d43c5f6c0f6"})

var userConnection = Entity.UserConnection;
var KtIdOpportunuty = new idNumberOpportunity();
KtIdOpportunuty.Id = Entity.GetTypedColumnValue<Guid>("OpportunityId");
MsgChannelUtilities.PostMessage(userConnection, "ReloadDashboardItems", JsonConvert.SerializeObject(KtIdOpportunuty));
return true;

Но видимо подписка так не срабатывает.

Что я не так делаю, подскажите?

Попробуйте поставить отладчик в onReloadDashboardItems, так будет видно, доходит ли Ваше сообщение и чем отличается от настоящего.

Показать все комментарии

Есть статья о настройке итогов. Как поле отображать кол-во записей установить неизменяемым для пользователей ?

Изображение удалено.

После установки этого параметра во время показа детали с колонками рисуется отображение итоговой информации с крестиком отмены. Надо запретить пользователям логику "закрыть на крестик" для всех разделов.  Такое поведение описано в схеме Summary, входит в пакет NUI. Верно понимаю что нет решения?

Нравится

1 комментарий

Скорее, в схеме SummaryModuleV2:

{
	className: "Terrasoft.Button",
	style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	imageConfig: resources.localizableImages.ImageDeleteButton,
	classes: {
		wrapperClass: ["summary-delete-button-wrapperEl"],
		imageClass: ["summary-delete-button-image-size"]
	},
	click: {
		bindTo: "deleteItem"
	},
	markerValue: {
		bindTo: "columnCaption"
	}
}

Но опять же, модуль со всеми особенностями по поводу переопределения.

Показать все комментарии

Хочу предзаполнять поля добавляемой записи в детали с редактируемым реестром значениями, вычисленными в коде. Т.е. я не могу в объекте их заполнить системной переменной или константой. Но выглядеть внешне это должно также.

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

Как это сделать?

Нравится

9 комментариев
Лучший ответ

Добрый день.

 

Логика вычисляемых полей в деталях с редактируемым реестром работает, как и в обычных деталях. Это значит, что свой код нужно размещать в схеме карточки редактирования этой детали.

 

Более подробную информацию Вы сможете найти в этом обсуждении.

Добрый день! Есть 2 варианта.

1) Можете реализовать через бизнес-процесс со стартовым сигналом после добавления/изменения записи, либо же  через событийный слой (перед добавлением/сохранение/изменением)

Нигрескул Алексей,

мне нужно заполнить данные до сохранения. БП не поможет

тогда через событийный слой

Нигрескул Алексей пишет:

тогда через событийный слой

Ссылка: https://academy.terrasoft.ru/documents/technic-sdk/7-13/sobytiynyy-sloy-entity 

Причем тут событийный слой? В момент когда я нажимаю +, в базе ничего не происходит, всё происходит на клиенте и на клиенте же надо вставить нужные мне значения, чтобы пользователь мог их изменить или сохранить, если всё верно посчитано.

Алексей-Карягин,

Добрый день! Если внимательно почитать то на событийном слое переопределяете метод OnSaving(), OnUpdating(), OnInserting() при этом подписавшись на события нужного Вам объекта. В данных методах реализуете свою логику в зависимости от потребности, и отработка данных методов происходит ДО сохранения данных в БД, если в результате обработки сохранять не нужно, то просто генерируете throw new Exception("Exception Message"), на клиент Вам

выведется сообщение из Exception и данные в БД не сохраняться.

У меня задача на клиенте показать вместо пустых значений - вычисленные, до сохранения. Как работаю значения по умолчанию в объекте.

попробуйте подписаться на событие onchange:Field

Добрый день.

 

Логика вычисляемых полей в деталях с редактируемым реестром работает, как и в обычных деталях. Это значит, что свой код нужно размещать в схеме карточки редактирования этой детали.

 

Более подробную информацию Вы сможете найти в этом обсуждении.

Показать все комментарии

Подскажите как сделать валидацию номера для "Средства связи"? Читал статью https://community.terrasoft.ru/questions/validacia-zapolnenia-telefona-v-detali-sredstva-svazi но this.addColumnValidator("Number", newItem.validateField, newItem); что бы в детали сделать замену валидации нужно полностью переписать то что в "BaseCommunicationViewModel" но это модуль и его нельзя замещать.

Нравится

6 комментариев

Александр, Ваш вопрос связан не с валидацией, а с замещением модулей, которое запрещено и нужны обходные решения. Это обсуждалось неоднократно, например, тут. А когда писался вопрос по приведенной Вами ссылке, замещать ещё было можно, но в комментариях осуждали уже тогда.

Зверев Александр,

 

Вот потому то и спрашиваю так как эти способы не работают, как можно сделать валидацию другим способом, пока в голову не пришло идеи не какой, может подскажите?

Не работает именно валидация или замещение? Если второе — то по ссылке выше приводил, как делать обходным способом. По сути, переопределять все стандартные схемы, которые используются для работы со средствами связи на свои аналоги.

Зверев Александр,

Ну создать полностью свой модуль с такой же логикой. А можно что бы не переписывать полностью модуль, обойтись малой кровью?

Там не переписывание всего текста модулей, а дополнение своим при помощи override. Но потом и замена всех упоминаний стандартного модуля на свой аналог.

Зверев Александр,

Спасибо, получилось как описано в статье.

Сделал замещение BaseCommunicationDetail

 

define("BaseCommunicationDetail", ["KtValidBaseCommunicationViewModel"],
	function() {
		return {
			attributes: {},
			messages: {},
			methods: {},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	});

и BaseCommunicationViewModel

define("KtValidBaseCommunicationViewModel", ["terrasoft", "BaseCommunicationViewModel"],
	function(Terrasoft) {
		Ext.define("Terrasoft.KtValidBaseCommunicationViewModelOverrided", {
			override: "Terrasoft.BaseCommunicationViewModel",
			/**
			 * @override
			 * ######### ######### ###### ########.
			 * @param {String} value ########### ########.
			 * @return {Boolean} true #### ###### ######## ##### ########.
			 */
 
			isPhoneNumber: function(value) {
				//Terrasoft.SysSettings.querySysSettingsItem("CommunicationPhoneRegExpValid", function(phoneRegExp) {
				//	var phonePattern = new RegExp(this.get("PhoneRegExp"));
				//	return phonePattern.test(value);
				//}, this);
				var phonePattern = /^\98(\(\d{3}\)\d{3}\-\d{2}\-\d{2})$/;
				return phonePattern.test(value);
			},
		});
	}
);

Все отлично работает если вшить регулярное выражение.

А как можно получить из системной настройки его? Получение значение в ней асинхронное и нужно сделать через callback, но не как не выходит. Помогите в реализации такого callback, пожалуйста.

Показать все комментарии

Понимаю конечно, что с SAPом сравнивать не очень хорошая идея, но все же. При работе с SAP дл переноса обновлений можно выставить всем пользователям уведомление через систему о планируемых работах, а на период работы выгнать из системы и заблокировать на вход в систему всех пользователей (кроме ИТ). Очень удобная вещь, позволяет перенести обновление без риска потери данных за период сессии у пользователя и практически убирает весь негатив польхователей на тормоза в системе на период её компиляции.

Попробовал в Creatio заблокировать всех пользователей на вход, но такого функционала просто нет - можно решить БП. Уведомления тоже можно сделать БП, Закрытие активной сессии по идее тоже не проблема. 

Собственно вопрос - кто как работает и оповещает пользователей о технических работах в системе?

Нравится

2 комментария
Лучший ответ

Ну помимо предложенного способа с Бп, есть таблицы в базе данных. Можете подсоединится, вытянуть активных пользователей и уже как-то уведомить их письмом на почту, в мессенджер и т.д Сделать это можно прямо на сервере где развернут IIS простой консолькой на c#, запуск консольки делать планировщиком Windows по таймеру или триггеру

Ну помимо предложенного способа с Бп, есть таблицы в базе данных. Можете подсоединится, вытянуть активных пользователей и уже как-то уведомить их письмом на почту, в мессенджер и т.д Сделать это можно прямо на сервере где развернут IIS простой консолькой на c#, запуск консольки делать планировщиком Windows по таймеру или триггеру

Мы рассматриваем вариант возможной реализации подобной функциональности в базовой логике наших продуктов.

В данный момент оптимальным решением Вашей бизнес-задачи будет реализовать процесс, уведомляющий пользователей о предстоящих работах в системе.

Показать все комментарии

На локальной среде разработки при нажатии на восстановить из хранилища система выдает ошибку 

Изображение удалено.

Опытным путем установлено, что если удалить пакет с диска по пути defPackagesWorkingCopyPath из ConnectionzStrings.config, то он проходит и так с каждым пакетом. Т.е. чтобы обновиться из хранилища надо предварительно удалить всю рабочую копию.

Как то не очень радует такой режим работы. Кто сталкивался и как можно решить?

 

Нравится

7 комментариев
Лучший ответ

Зверев Александр,

Читал это, но не смог никак к себе применить. 

Но два дня безуспешных попыток решить вопрос дали свой результат. Причина в URL хранилища. По каким то причинам не нравится адрес по ip, нужен адрес с именем. После того как сменил IP на имя все заработало. Хотя в адресе по IP ничего, что противоречило бы UTF-8 я не вижу.

Судя по сообщению об ошибке, проблема к доступу по пути :)

Навскидку, могу посоветовать проверить наличие русских символов в пути и права IIS на чтение / запись к папке с приложением

Alex Kalnitskiy,

Как бы я хотел написать "Спасибо за помощь, проблема решена", но увы и ах! Кириллицы в пути нет, у пользователя IIS Full control на папку и все вложенное в неё, а ошибка остается :(

Ошибка
При работе с хранилищем произошла ошибка
Target path '/branches/development/EPMPortal/branches/1.0.0' does not exist
SvnErrorCode: SVN_ERR_FS_PATH_SYNTAX

 

70% - Авторизация в SVN закончилась.

Олександр Цируль пишет:

70% - Авторизация в SVN закончилась

Если про Creatio то нет. Авторизовался перед выполнение данной операцией. + заливку в SVN я могу выполнять. а вот обновить из хранилища без ошибки не могу. Обновляется только если удаляю рабочую копию.

Судя по старым обсуждениям на других сайтах, дело может быть всё же в особенностях пути к файлу (например, символах переноса либо отсутствии прав на доступ к этой папке), также там советуют перезапуск и отвязку-привязку.

 

А тут больше о том, какой должен быть формат пути:

Directory entry names and directory paths.

Here are the rules for directory entry names, and directory paths:

A directory entry name is a Unicode string encoded in UTF-8, and may not contain the NULL character (U+0000). The name should be in Unicode canonical decomposition and ordering. No directory entry may be named '.', '..', or the empty string. Given a directory entry name which fails to meet these requirements, a filesystem function returns an SVN_ERR_FS_PATH_SYNTAX error.

A directory path is a sequence of zero or more directory entry names, separated by slash characters (U+002f), and possibly ending with slash characters. Sequences of two or more consecutive slash characters are treated as if they were a single slash. If a path ends with a slash, it refers to the same node it would without the slash, but that node must be a directory, or else the function returns an SVN_ERR_FS_NOT_DIRECTORY error.

A path consisting of the empty string, or a string containing only slashes, refers to the root directory.

Зверев Александр,

Читал это, но не смог никак к себе применить. 

Но два дня безуспешных попыток решить вопрос дали свой результат. Причина в URL хранилища. По каким то причинам не нравится адрес по ip, нужен адрес с именем. После того как сменил IP на имя все заработало. Хотя в адресе по IP ничего, что противоречило бы UTF-8 я не вижу.

Ну хоть теперь все в Гугле найдут по коду ошибки и эту причину. Странно, что движок SVN выдавал в ошибке именно путь к папке, а не весь адрес с IP.

Показать все комментарии