Всем доброго дня.

Подскажите пожалуйста, как проще всего добавить номер по порядку при создании новой записи в детали через "+"? 

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

Нравится

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

Я делал автонумерацию через процесс на объекте. Триггер на срабатываение кода - после добавления записи или после удаления.

 

Код следующий, на сколько тут все хорошо не знаю, но вроде работает. Ручное переименование можно запретить, либо добавить "стрелочки" с перетаскиванием позиции вверх-вниз на клиенте.

 

using System.Linq;
 
public virtual void RunNumeration()
        {
            string parentEnityName = "UsrParent"; //Колонка с родителем, например Invoice для объекта InvoiceProduct
            var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, Entity.Schema.Name);
            var positionNumberColumn = esq.AddColumn("UsrPositionNumber").Name; //колонка с номером по порядку
            esq.AddAllSchemaColumns();
            if (parentEnityName.IsNotNullOrEmpty())
            {
                Guid parentEnityId = Entity.GetTypedColumnValue<Guid>(parentEnityName+"Id");
                if (parentEnityId != Guid.Empty)
                {
                    esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, parentEnityName, parentEnityId));
                    var entityProductsCollection = esq.GetEntityCollection(UserConnection)
		            .OrderBy(x => x.GetTypedColumnValue<int>(positionNumberColumn) == 0)
		            .ThenBy(x => x.GetTypedColumnValue<int>(positionNumberColumn));
		            int newNumber = 0;
		            foreach (var item in entityProductsCollection)
		            {
		                int number = item.GetTypedColumnValue<int>(positionNumberColumn);
		                newNumber++;
		                if (number != newNumber)
		                {
		                    item.SetColumnValue("UsrPositionNumber", newNumber);
		                    item.Save();
		                }
		            }
                }
            }
        }

 

Я делал автонумерацию через процесс на объекте. Триггер на срабатываение кода - после добавления записи или после удаления.

 

Код следующий, на сколько тут все хорошо не знаю, но вроде работает. Ручное переименование можно запретить, либо добавить "стрелочки" с перетаскиванием позиции вверх-вниз на клиенте.

 

using System.Linq;
 
public virtual void RunNumeration()
        {
            string parentEnityName = "UsrParent"; //Колонка с родителем, например Invoice для объекта InvoiceProduct
            var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, Entity.Schema.Name);
            var positionNumberColumn = esq.AddColumn("UsrPositionNumber").Name; //колонка с номером по порядку
            esq.AddAllSchemaColumns();
            if (parentEnityName.IsNotNullOrEmpty())
            {
                Guid parentEnityId = Entity.GetTypedColumnValue<Guid>(parentEnityName+"Id");
                if (parentEnityId != Guid.Empty)
                {
                    esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, parentEnityName, parentEnityId));
                    var entityProductsCollection = esq.GetEntityCollection(UserConnection)
		            .OrderBy(x => x.GetTypedColumnValue<int>(positionNumberColumn) == 0)
		            .ThenBy(x => x.GetTypedColumnValue<int>(positionNumberColumn));
		            int newNumber = 0;
		            foreach (var item in entityProductsCollection)
		            {
		                int number = item.GetTypedColumnValue<int>(positionNumberColumn);
		                newNumber++;
		                if (number != newNumber)
		                {
		                    item.SetColumnValue("UsrPositionNumber", newNumber);
		                    item.Save();
		                }
		            }
                }
            }
        }

 

Трефилов Павел Сергеевич, 

 

спасибо, отлично работает с вашим кодом)

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

Всем доброго дня! 

Добавила свои кастомные быстрые фильтры через аттрибуты и переопределение функции initQueryFilters , фильтры работают как нужно. Теперь не могу найти где находится базовый пересчет количества. Может быть кто-то знает.

Прикрепленные файлы

Нравится

5 комментариев
              var activeViewName = this.getActiveViewName();
              if (activeViewName === this.get("AnalyticsDataViewName")) {
                this.sandbox.publish("SectionUpdateFilter",
                                     null, [this.getQuickFilterModuleId()]);
              }

Пробуйте запустить такой код после применения ваших фильтров

не помогло, пробовала также и без проверки условия.

Можете отправить полный код, где делаете фильтр?

Трефилов Павел Сергеевич,

define("OrderSectionV2", ["ProcessModuleUtilities","BaseFiltersGenerateModule","css!UsrStylesOrderSectionV2"], function(ProcessModuleUtilities,BaseFiltersGenerateModule) {
	return {
		entitySchemaName: "Order",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: {
            "UsrPPNumberFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrPPNumbers": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrMyNumberFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrMyNumbers": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrContrFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrContr": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrNameFilter": {
                "dataValueType": Terrasoft.DataValueType.TEXT
            },
            "UsrMyName": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "values": ""
            },
			"UsrQua": {
                "dataValueType": Terrasoft.DataValueType.INTEGER,
                "values": ""
            },
        },
		diff: /**SCHEMA_DIFF*/[	
			{
                "operation": "insert",
                "name": "MyFilterContainer",
                "parentName": "LeftGridUtilsContainer",
                "propertyName": "items",
                "index": 3,
                "values": {
                    "id": "MyFilterContainer",
                    "itemType": this.Terrasoft.ViewItemType.CONTAINER,
                    "items": [],
 
                }
            },
 
 
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "PP_Number",
				"index": 1,
                "values": {
                    "bindTo": "UsrPPNumberFilter",
                    "caption": {"bindTo": "Resources.Strings.UsrPPNumberCaption"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "ppNumChanged"
                        }
                    }
 
                }
            },
 
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton1",
					"index": 2,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel" },
					}
			},
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "my_Number",
				"index": 3,
                "values": {
                    "bindTo": "UsrMyNumberFilter",
                    "caption": {"bindTo": "Resources.Strings.myNumber"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "myNumberChanged"
                        }
                    }
 
                }
            },
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton2",
					"index": 4,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel2" },
					}
			},
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "my_Contr",
				"index": 5,
                "values": {
                    "bindTo": "UsrContrFilter",
                    "caption": {"bindTo": "Resources.Strings.myContr"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "myContrChanged"
                        }
                    }
 
                }
            },
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton3",
					"index": 6,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel3" },
					}
			},
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "PeriodSelectButton",
					"index": 7,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.LookupIcon"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "openMyLook" },
					}
			},
			{
                "operation": "insert",
                "parentName": "MyFilterContainer",
                "propertyName": "items",
                "name": "my_Name",
				"index": 8,
                "values": {
                    "bindTo": "UsrNameFilter",
                    "caption": {"bindTo": "Resources.Strings.myName"},
 
					"controlConfig": {
                        "change": {
                            "bindTo": "myNameChanged"
                        }
                    }
 
                }
            },
			{
					"operation": "insert",
					"parentName": "MyFilterContainer",
					"propertyName": "items",
					"name": "DeleteButton4",
					"index": 9,
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": "",
						"imageConfig": {"bindTo": "Resources.Images.del_but"},
						"controlConfig": {
						},
						"layout": {
							"column": 0,
							"row": 2,
							"colSpan": 1
						},
						"click": { "bindTo": "onDel4" },
					}
			},
 
        ]/**SCHEMA_DIFF*/,
 
		methods: {
 
		clearFilter: function() {
			this.set("UsrPPNumberFilter", "");
			this.onUsrFilterChanged();
		},
 
		onUsrFilterChanged: function() {
			this.reloadGridData();
		},
 
		initQueryFilters: function(esq) {
			this.callParent(arguments);
			//номер в пп
			var usrEmailFilter = this.get("UsrPPNumbers");
			if (usrEmailFilter) {
				esq.filters.add("UsrPPNumberFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "UsrNumberInPP".substring(), usrEmailFilter));
			} else {
				esq.filters.removeByKey("UsrPPNumberFilter");
			}		
 
			//Номер
			var usrMyFilter = this.get("UsrMyNumbers");
			if (usrMyFilter) {
				esq.filters.add("UsrMyNumberFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "Number".substring(), usrMyFilter));
			} else {
				esq.filters.removeByKey("UsrMyNumberFilter");
			}
			//Контрагент
			var usrContrFilter = this.get("UsrContr");
			if (usrContrFilter) {
				esq.filters.add("UsrContrFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "Account.Name".substring(), usrContrFilter));
			} else {
				esq.filters.removeByKey("UsrContrFilter");
			}
			//Название
			var usrNameFilter = this.get("UsrMyName");
			if (usrNameFilter) {
				esq.filters.add("UsrNameFilter", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.CONTAIN, "UsrName".substring(), usrNameFilter));
			} else {
				esq.filters.removeByKey("UsrNameFilter");
			}
 
 
		},
 
		ppNumChanged: function(a, b, c) {
			this.set("UsrPPNumbers", a);
			this.onUsrFilterChanged();
 
		},
 
		myNumberChanged: function(a, b, c) {
			this.set("UsrMyNumbers", a);
			this.onUsrFilterChanged();
		},
 
		myContrChanged: function(a, b, c) {
			this.set("UsrContr", a);
			this.onUsrFilterChanged();
		},
 
		myNameChanged: function(a, b, c) {
			this.set("UsrMyName", a);
			this.onUsrFilterChanged();	
		},
 
		addCallBack: function(args) {
		  this.selectedRows = args.selectedRows.getItems();
 
			var ids = [];
			var names = [];
			this.selectedRows.forEach(function(item) {
				ids.push(item.Id);
				names.push(item.Name);
		   });
			this.set("UsrContr",names);
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').value = names;
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').focus();
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').blur();
		},
 
 		openMyLook: function(){
			var config = {
				entitySchemaName: "Account",
				columns: ["Name"]
			};
			this.openLookup(config, this.addCallBack, this);
		},
		onDel: function(){
			document.getElementById('OrderSectionV2PP_NumberTextEdit-el').value = null;
			this.set("UsrPPNumberFilter", "");
			this.onUsrFilterChanged();
		},
		onDel2: function(){
			document.getElementById('OrderSectionV2my_NumberTextEdit-el').value = null;
			this.set("UsrMyNumberFilter", "");
			this.onUsrFilterChanged();
		},
		onDel3: function(){
			document.getElementById('OrderSectionV2my_ContrTextEdit-el').value = null;
			this.set("UsrContrFilter", "");
			this.onUsrFilterChanged();
		},
		onDel4: function(){
			document.getElementById('OrderSectionV2my_NameTextEdit-el').value = null;
			this.set("UsrNameFilter", "");
			this.onUsrFilterChanged();
		},
 
		}
	};
});

 

Анастасия Шумейко,

Добрый день.

 

Вам нужно проверить уходит ли запрос на получение количества записей.

Если запрос уходит, то нужно проверить фильтрацию которая уходит в запросе. Возможно, что количество обновляется, но неправильно, поскольку используется та же фильтрация.

Если запрос не уходит, то нужно проверить как он формируется в базовой версии и вызвать обновление количества записей.

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

Всем доброго дня! Подскажите можно ли как-то отфитровать список  в "Фильтры/группы" - "Добавить условие" ? Изменение поведения в Объекте на режим "Никогда" не подходит(нужно видеть фильтры в расширенном режиме). 

Нравится

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

Анастасия, в каждом разделе системы отображение первого поля при быстром поиске заложено в параметре PRIMARY_DISPLAY_COLUMN (Отображаемое значение). Например, для раздела Контакты это поле [ФИО].
В быстром фильтре указывать приоритетность отображения полей нет возможности. Перечень заложен на уровне конфигурации приложения и пользовательскими средствами решить задачу нет возможности.
На практике для фиксирования определенных полей для фильтрации используются быстрые фильтры - это фильтр, который внедряется на страницу раздела средствами разработкой и помогает закрепить несколько полей в шапке раздела для удобного указания параметров фильтрации.
Однако данный вариант также предполагает использование средств разработки. Более детальнее описано в статье по ссылке: https://academy.terrasoft.ua/docs/developer/elements_and_components/bas…

Алёна Доля,

Хотелось бы отредактировать значения именно в базовом списке, 

в "Фильтры/группы" - "Добавить условие" и повыкидывать оттуда не нужные поля. 

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

Здравствуйте, подскажите пожалуйста, осталась ли возможность вернуть старый конфигуратор в версии 7.17.1.1363 ? 

В новом конфигураторе напрочь отсутствует локализация :(

Нравится

20 комментариев
Лучший ответ
DECLARE @sysSettingsCode varchar(max) = 'OldUI';
DECLARE @sysSettingsBooleanValue bit = 1;
DECLARE @sysSettingsId uniqueidentifier;
 
IF NOT EXISTS (SELECT Id FROM SysSettings WITH (NOLOCK) WHERE Code = @sysSettingsCode)
BEGIN
  INSERT INTO SysSettings (Name, Code, ValueTypeName, IsCacheable) VALUES (@sysSettingsCode, @sysSettingsCode, 'Boolean', 1);
END
 
SET @sysSettingsId = (SELECT Id FROM SysSettings WITH (NOLOCK) WHERE Code = @sysSettingsCode);
 
IF NOT EXISTS (SELECT Id FROM SysSettingsValue WITH (NOLOCK) WHERE SysSettingsId = @sysSettingsId)
BEGIN
  INSERT INTO SysSettingsValue (SysSettingsId, SysAdminUnitId, BooleanValue, Position) VALUES (@sysSettingsId, 'A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, 2147483647);
END
ELSE
BEGIN
  UPDATE SysSettingsValue SET BooleanValue = @sysSettingsBooleanValue WHERE SysSettingsId = @sysSettingsId
END

 

скопировать бинари Terrasoft.UI.WebControls и Terrasoft.UI.OldConfiguration из WebApp/Compatibility/OldUI в bin и WebApp/bin
включить сист. настройку OldUI - скрипт выше
скомпилировать конфигурацию

а по пути /0/WorkspaceExplorerModule.aspx перекидывает на новый "дизайн" ?

P.S  7.17.1 еще не пробовал.

Адаменко Александр,по такому пути выдает 500ю ошибку сервера

Добрый день! Попробуйте дописать "/dev_old", чтобы вышло таким образом: yoursite/0/dev_old

можно добавить кнопку в браузере. закладки. 
в адресе указать 

javascript:window.open("../ViewPage.aspx?Id=5e5f9a9e-aa7d-407d-9e1e-1c24c3f9b59a&ActiveTabId=PageContainer_c02e0ec6f36b14108882485b39c5f8dd_045063c98180e011afbc00155d04320c_7c0581929880e011afbc00155d04320c");

нажимать на кнопку, когда активная любая страница Creatio

Дарья Сошина, 500я ошибка сервера, все так же как и с WorkspaceExplorer.aspx

yura.makarchuk, 500я ошибка... :(

Стратонов Олександр, на 7.17.0 точно работает (

Эх. Даа... Новый конфигуратор наводит только тоску. Один только поиск по схеме чего стоит)))))

Может кто-нибудь ещё знает, как можно попробовать достучаться?)

на 7.17.1 полностью отключили поддержку старого интерфейса конфигуратора. Но у нас пошли проблемы при работе нового конфигуратора и SVN. Конфигуратор не проверял перед коммитом последняя ли версия пакета и стирал чужие коммиты. Поэтому техподдержка для активации старого интерфейса дала мне скрипт по активации фичи OldUI. Так же надо скопировать dll из WebApp/Compatibility/OldUI в bin и WebApp/bin. после перекомпиляции по пути yoursite/0/dev_old будет старый конфигуратор.

уже все вычитанные способы перепробовал, не получается

в новом конфигураторе все еще сырое, особенно редактор кода с его поиском, да и поиск по схеме не сладкий...

 

Алексей Следь,

Поделитесь скриптом и инструкцией. У нас та же проблема на 7.17.1.

Алексей Следь, поделитесь, пожалуйста

 

DECLARE @sysSettingsCode varchar(max) = 'OldUI';
DECLARE @sysSettingsBooleanValue bit = 1;
DECLARE @sysSettingsId uniqueidentifier;
 
IF NOT EXISTS (SELECT Id FROM SysSettings WITH (NOLOCK) WHERE Code = @sysSettingsCode)
BEGIN
  INSERT INTO SysSettings (Name, Code, ValueTypeName, IsCacheable) VALUES (@sysSettingsCode, @sysSettingsCode, 'Boolean', 1);
END
 
SET @sysSettingsId = (SELECT Id FROM SysSettings WITH (NOLOCK) WHERE Code = @sysSettingsCode);
 
IF NOT EXISTS (SELECT Id FROM SysSettingsValue WITH (NOLOCK) WHERE SysSettingsId = @sysSettingsId)
BEGIN
  INSERT INTO SysSettingsValue (SysSettingsId, SysAdminUnitId, BooleanValue, Position) VALUES (@sysSettingsId, 'A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, 2147483647);
END
ELSE
BEGIN
  UPDATE SysSettingsValue SET BooleanValue = @sysSettingsBooleanValue WHERE SysSettingsId = @sysSettingsId
END

 

скопировать бинари Terrasoft.UI.WebControls и Terrasoft.UI.OldConfiguration из WebApp/Compatibility/OldUI в bin и WebApp/bin
включить сист. настройку OldUI - скрипт выше
скомпилировать конфигурацию

Алексей Следь, спасибо большое

У всех норм работает? У меня ошибка появилась.

Дамиан Викторович, да, работает

не забудьте скомпилироваться 

Хотел бы, да не могу зайти в конфигуратор.

Дамиан Викторович,

А вы системную настройку добавили? у меня ошибку сервер выдавал после копирования бинарников и до добавления настройки.

Переписал SQL-script с удалением и созданием настройки. Не помогло.

-- ------------------------------------------------------------------------------------------------------------------------
-- Включить конфигуратор версии 7.16.
-- 1. Скопировать файлы из ..\Terrasoft.WebApp\Compatibility\OldUI\ в ..\Terrasoft.WebApp\bin\
-- Terrasoft.UI.OldConfiguration.dll, Terrasoft.UI.OldConfiguration.xml, Terrasoft.UI.WebControls.dll, Terrasoft.UI.WebControls.xml
-- 2. ВыполнитьSQL-script (включить системную настройку OldUI)
-- 3. Скомпилировать конфигурацию
-- ------------------------------------------------------------------------------------------------------------------------
declare @deleteSetting bit = 1  -- Удалить настройку
-- ------------------------------------------------------------------------------------------------------------------------
set nocount on
-- Удалить настройку.
if (@deleteSetting = 1) begin
	declare @idSearch uniqueidentifier = (select [SysSettingsValue].[Id] 
	from [SysSettings] 
	inner join [SysSettingsValue] on [SysSettings].[Id]=[SysSettingsValue].[SysSettingsId]
	where [SysSettings].[Code] = 'OldUI')
	delete from [SysSettingsValue] where [Id] = @idSearch
	delete from [SysSettings] where [Name] = 'OldUI'
	print N'[-] Выполнено удаление настройки "OldUI"'
end
-- ------------------------------------------------------------------------------------------------------------------------
-- Создать настройку.
declare @code varchar(max) = 'OldUI'
declare @value bit = 1
declare @id uniqueidentifier
 if not exists (select [Id] from [SysSettings] where [Code] = @code)
begin
	insert into [SysSettings] ([Name], [Code], [ValueTypeName], [IsCacheable]) values (@code, @code, 'boolean', 1)
end
set @id = (select [Id] from [SysSettings] where [Code] = @code)
if not exists (select [Id] from [SysSettingsValue] where [SysSettingsId] = @id)
begin
	insert into [SysSettingsValue] ([SysSettingsId], [SysAdminUnitId], [BooleanValue], [Position]) 
	values (@id, 'a29a3ba5-4b0d-de11-9a51-005056c00008', 1, 2147483647)
	print N'[+] Выполнено создание настройки "OldUI"'
end
else
begin
	update [SysSettingsValue] set [BooleanValue] = @value where [SysSettingsId] = @id
	print N'[*] Выполнено обновление настройки "OldUI"'
end
-- ------------------------------------------------------------------------------------------------------------------------
-- Показать настройку.
select 
	 [SysSettings].[Name] [SysSettings_Name]
	,[SysSettings].[Code] [SysSettings_Code]
	,[SysSettings].[ValueTypeName] [SysSettings_ValueTypeName]
	,[SysSettings].[IsCacheable] [SysSettings_IsCacheable]
	,[SysAdminUnit].[Name] [SysAdminUnit_Name]
	,[SysSettingsValue].[Id] [SysSettingsValue_Id]
	,[SysSettingsValue].[BooleanValue] [SysSettingsValue_BooleanValue]
	,[SysSettingsValue].[Position] [SysSettingsValue_Position]
from [SysSettings]
inner join [SysSettingsValue] on [SysSettings].[Id]=[SysSettingsValue].[SysSettingsId]
inner join [SysAdminUnit] on [SysSettingsValue].[SysAdminUnitId]=[SysAdminUnit].[Id]
where [SysSettings].[Name] = 'OldUI'
print N'[*] Выполнено показ настройки "OldUI"'
-- ------------------------------------------------------------------------------------------------------------------------
set nocount off

 

Здравствуйте, подскажите пожалуйста, осталась ли возможность вернуть старый конфигуратор в версии 7.17.1.1363 ? 

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

В новом конфигураторе напрочь отсутствует локализация :( 

А что именно не так в новом?

Локализация, например, названий полей задаётся тут:

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

Добрый день.

Пользоваться поиском в 7.17 крайне неудобно.

Невозможно по частичному вхождению искать.

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

Данные моменты хотелось бы улучшить.

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

Александр, спасибо за обратную связь, уже зарегистрирована сложность в использовании функциональности «При поиске кода с помощью Ctrl+F неудобно переходить на следующий элемент, так как Enter не работает».

 

Переключаться на следующий элемент сейчас можно с помощью Ctrl+G, особенность связана с редактором кода.

 

По словам разработчиков функциональности, они все такие нюансы сейчас фиксируют, пока доделывают функциональные возможности в релиз 7.17.2, а после этого уже будут заниматься улучшениями UX. Исходя из пожеланий пользователей и будут приоритезировать задачи.

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

Было бы не плохо добавить возможности фильтрации и поиска в конфигуратор на вкладку зависимости пакетов. А его подсвечивать не только связи с которые есть у выбранного пакета, но и сами связанные пакеты. А то стрелки связей проходит через пакет и не ясно связан он с ним или нет. Редко бывает надо, но когда потребность возникает, то разобраться в этой "мачте с парусами" из пакетов и связей бывает очень сложно...

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

Это не интерфейс, а издевательство над разработчиками.

А еще открывать пакет по двойному клику на него было бы здорово

Алексей, зафиксировал идеи фильтрации/поиска и открытия по клику.

Евгений, в версии 7.17 обещают полностью новый раздел конфигурации, окончательно уходящий от интерфейса 5.Х.

Вероятно, и вид графа пакетов будет меняться, если, конечно, он там будет.

В итоге в 7.17.0 этот граф вообще убрали. В 7.17.1 планируют новую реализацию.

В итоге в 7.17.1 вернули ровно в том виде, как было.sad

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

Добрый день,

 

При попытке зайти в Террасофт установленный на сервере (Windows Server 2008 R2 Enterprise), возникает ошибка:

К сожалению, многочисленные попытки решить данную проблему не принесли результата.

Также было замечено, что при добавлении новой конфигурации при нажатии на кнопку выбора имени драйверов Oracle (Home) возникает другая ошибка:

Насколько я понял проблема возникает из-за того, что на сервере были установлены несколько версий Oracle и в данный момент версия 11.2.0 отсутствует на сервере. Вместо нее установлена версия 12.2.

Попытка очистить следы Oracle 11.2.0 и в дальнейшем даже переустановка Oracle привела лишь к тому что в данный момент выходит пустой список в котором невозможно выбрать версию Oracle:

 

Прошу помочь в решении данной проблемы.

 

Благодарю.

 

P. S. По возможности помогите пожалуйста найти инструкцию по бэкапу Terrasoft 3.3, для попытки переустановки Terrasoft, чтобы решить вышеуказанную проблему.

Нравится

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

Обратите внимание на рекомендацию по поводу «Ошибка открытия конфигурации: Cannot find OCI DLL»:

Для приложения Terrasoft под Oracle обязательно необходимо, чтобы на компьютерах всех пользователей, использующих конкурентные лицензии, был установлен клиент Oracle одной и той же версии. Имя сервера на компьютерах всех пользователей должно совпадать с именем, указанным в поле [Сервер] окна редактирования строки соединения компьютера, на котором заказывают и загружают лицензии, и данный сервер должен быть зарегистрирован. Имя сервера прописывается в файле tnsnames.ora, расположенном в инсталляционной директории клиента Oracle (например, d:/oracle/ora92/network/admin/ tnsnames.ora).

Также версия ядра 3.3.2.120 далеко не самая новая, есть смысл попробовать на последних файлах 3.3.2.313, поскольку в версии 175 и выше вносились изменения в механизм работы с сервером сессий для Oracle.

По вопросу разворачивания базы с нуля из бекапа, идущего с дистрибутивом есть раздел в руководстве администратора.

Для получения бекапа существующей базы нужно воспользоваться средствами СУБД, а также не забыть автоматически перенести или вручную завести пользователей с такими же именами, как в базе, на уровне сервера БД. Именно для Oracle инструкции не встречал. Например, для MS SQL это делается так. Если забыть перенести, то пустит только администратора SYS.

Зверев Александр пишет:
Для приложения Terrasoft под Oracle обязательно необходимо, чтобы на компьютерах всех пользователей, использующих конкурентные лицензии, был установлен клиент Oracle одной и той же версии. Имя сервера на компьютерах всех пользователей должно совпадать с именем, указанным в поле [Сервер] окна редактирования строки соединения компьютера, на котором заказывают и загружают лицензии, и данный сервер должен быть зарегистрирован. Имя сервера прописывается в файле tnsnames.ora, расположенном в инсталляционной директории клиента Oracle (например, d:/oracle/ora92/network/admin/ tnsnames.ora).

Добрый день. Данная проблема наблюдается на самом сервере (невозможно зайти в Terrasoft установленный на сервере).

По поводу бэкапа, посмотрю, большое спасибо за помощь.

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

При установке пакет получаем ошибку. Понять в чем она не получилось. Файл прикладываю, помогите пожалуйста! 

Ошибка обновления структуры таблицы для схемы "UsrRequestPos" из пакета "Verniy_Request_m_negriy". UId 18f0eb84-a642-4a7f-88c6-62e843da5a99: При выполнении действия обновления структуры схемы произошла ошибка "Exception of type 'Terrasoft.Core.DB.DBMetaActionValidationException' was thrown.", текст Sql сценария: "
SELECT
    CASE
    WHEN COUNT(*) > 0 THEN 0
    ELSE 1
    END [Result]
FROM
    [dbo].[UsrRequestPos] [ChildSchema]
WHERE
    NOT [ChildSchema].[UsrReqPosTypeId] IS NULL
    AND NOT EXISTS (
        SELECT
            *
        FROM
            [dbo].[UsrReqPosType] [ReferencedSchema]
        WHERE
            [ChildSchema].[UsrReqPosTypeId] = [ReferencedSchema].[Id]
    )"

Прикрепленные файлы

Нравится

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

Проблема в том что не привязаны к пакету данные UsrReqPostType.

Если вы разработчик пакета то привяжите данные справочника в пакет если нет обратитесь к разработчикам, чтобы они исправили ошибку!

Добрый день! У вас срабатывает ограничение целостности по внешнему ключу. Т.е. отсутствуют записи UsrReqPostType, на которые ссылаюся записи UsrRequestPos. Исправьте базу, чтобы предложенный запрос возвращал 1

Проблема в том что не привязаны к пакету данные UsrReqPostType.

Если вы разработчик пакета то привяжите данные справочника в пакет если нет обратитесь к разработчикам, чтобы они исправили ошибку!

Григорий Чех,

Григорий Чех пишет:

Проблема в том что не привязаны к пакету данные UsrReqPostType.

Если вы разработчик пакета то привяжите данные справочника в пакет если нет обратитесь к разработчикам, чтобы они исправили ошибку!

Разработчик я. Подскажите, мне нужно добавить новый объект UsrReqPostType в пакет? Или добавить sql код? В общем как сделать привязку данных в справочник?

Сидоров Александр В.,

Спасибо. Я понял, что эти данные сразу можно добавить в пакет, только не понял как (

Mexanik,

Подробнее о привязке данных к пакету смотрите пост на Академии.

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

Добрый день, форумчане)

Всегда был интересен вопрос след. характера:

В чём отличие типа данных у параметра БП таких как Уникальный идентификатор и Справочник?

Может в Справочник можно как-то внутрь заглянуть и вытянуть displayValue, избегая запрос к root таблице?

Сталкивался кто с подобным, интересен опыт Ваш.

Нравится

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

Если создать два параметра разных типов и привязать к одной и той же записи одного справочника, в исходном коде БП будет выглядеть так:

_processSchemaParameter1 = () => { return (Guid)(new Guid("b06f1e0e-f46b-1410-7190-00155d043204")); };
_processSchemaParameter2 = () => { return (Guid)(new Guid("b06f1e0e-f46b-1410-7190-00155d043204")); };
...
private Func<Guid> _processSchemaParameter1;
public virtual Guid ProcessSchemaParameter1 {
	get {
return (_processSchemaParameter1 ?? (_processSchemaParameter1 = () => Guid.Empty)).Invoke();
	}
	set {
_processSchemaParameter1 = () => { return value; };
	}
}
 
private Func<Guid> _processSchemaParameter2;
public virtual Guid ProcessSchemaParameter2 {
	get {
return (_processSchemaParameter2 ?? (_processSchemaParameter2 = () => Guid.Empty)).Invoke();
	}
	set {
_processSchemaParameter2 = () => { return value; };
	}
}
...
private void WritePropertyValues(DataWriter writer, bool useAllValueSources) {
	if (!HasMapping("ProcessSchemaParameter1")) {
writer.WriteValue("ProcessSchemaParameter1", ProcessSchemaParameter1, Guid.Empty);
	}
	if (!HasMapping("ProcessSchemaParameter2")) {
writer.WriteValue("ProcessSchemaParameter2", ProcessSchemaParameter2, Guid.Empty);
	}
}
 
...
protected override void InitializeMetaPathParameterValues() {
	base.InitializeMetaPathParameterValues();
	MetaPathParameterValues.Add("e0873088-8334-4b85-96a4-fa3e5ecb7374", () => ProcessSchemaParameter1);
	MetaPathParameterValues.Add("246467c7-071b-4cb0-8073-30c4f72be120", () => ProcessSchemaParameter2);
...	
protected override void ApplyPropertiesDataValues(DataReader reader) {
	base.ApplyPropertiesDataValues(reader);
	bool hasValueToRead = reader.HasValue();
	switch (reader.CurrentName) {
case "ProcessSchemaParameter1":
	if (!hasValueToRead) break;
	ProcessSchemaParameter1 = reader.GetValue<System.Guid>();
break;
case "ProcessSchemaParameter2":
	if (!hasValueToRead) break;
	ProcessSchemaParameter2 = reader.GetValue<System.Guid>();
break;
	}
}
...

А в метаданных:

      "Parameters": [
        {
          "TypeName": "Terrasoft.Core.Process.ProcessSchemaParameter",
          "UId": "e0873088-8334-4b85-96a4-fa3e5ecb7374",
          "Name": "ProcessSchemaParameter1",
          "CreatedInSchemaUId": "f4c123c0-d628-4d9f-867c-6c0b78c86395",
          "ModifiedInSchemaUId": "f4c123c0-d628-4d9f-867c-6c0b78c86395",
          "DataValueType": "b295071f-7ea9-4e62-8d1a-919bf3732ff2",
          "SourceValue": {
            "Source": 3,
            "Value": "[#Lookup.c449d832-a4cc-4b01-b9d5-8a12c42a9f89.b06f1e0e-f46b-1410-7190-00155d043204#]",
            "ModifiedInSchemaUId": "f4c123c0-d628-4d9f-867c-6c0b78c86395"
          },
          "ReferenceSchemaUId": "c449d832-a4cc-4b01-b9d5-8a12c42a9f89"
        },
        {
          "TypeName": "Terrasoft.Core.Process.ProcessSchemaParameter",
          "UId": "246467c7-071b-4cb0-8073-30c4f72be120",
          "Name": "ProcessSchemaParameter2",
          "CreatedInSchemaUId": "f4c123c0-d628-4d9f-867c-6c0b78c86395",
          "ModifiedInSchemaUId": "f4c123c0-d628-4d9f-867c-6c0b78c86395",
          "DataValueType": "23018567-a13c-4320-8687-fd6f9e3699bd",
          "SourceValue": {
            "Source": 3,
            "Value": "[#Lookup.c449d832-a4cc-4b01-b9d5-8a12c42a9f89.b06f1e0e-f46b-1410-7190-00155d043204#]",
            "ModifiedInSchemaUId": "f4c123c0-d628-4d9f-867c-6c0b78c86395"
          }
        }
      ],

То есть разницы практически нет, хотя внешний вид и интерфейс выбора значения разные.

Также на значения параметров в выполняющемся процессе можно посмотреть запросом в базу:

select top 10 *, cast(PropertiesData as varchar(max)) from SysProcessData

Там для параметров видно тоже только Id.

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

Добрый день, Коллеги!

Версия 7.11.3

Суть проблемы:

1) Подключили SVN.

2) Создали свой пакет. Пакет привязан к SVN

3) Создали раздел через мастер раздела. Создались автоматически схемы

https://www.screencast.com/t/Q5QGRbjj

4) Зафиксировали пакет в SVN - успешно

 

Проблема:

После фиксации в SVN схема на скриншоте

https://www.screencast.com/t/B8UYl1aZg

оказалась заблокированной

 

Что пробовали сделать:

1) Компиляция всего

2) Обновление БД

3) Генерация исходных кодов всего

4) Удаление Схемы и обновление пакета из SVN

5) Восстановление конфигурации из хранилища

6) Разблокировка пакета SQL сценарием 

https://www.screencast.com/t/AJjjnyf8C

https://www.screencast.com/t/0dWvpqJsod

7) Повторная и фиксация и обновление из SVN

8) Очистка кеша Redis

 

Все перечисленные выше действия не помогли

Другие схемы и объекты пакета не заблокированы. Проблема возникает только с конкретной схемой

Подскажите, пожалуйста, в чём может быть проблема и как это вылечить?

Нравится

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

Если дело именно в блокировке схемы, то можете попробовать через TortoiseSVN снять блокировку. А так судя по ошибке на скрине это не похоже на блокировку. 

Миннекаев Айдар,

Айдар, Если бы был лок в SVN, он не давал бы закоммитить повторно =)

На всякий случай проверили 

https://www.screencast.com/t/IpuwnUUa 

Блокировки нет

Если это не блокировка, то в чём может быть проблема? Буду благодарен за идеи!

В SysSchema вроде тоже всё в порядке.. 

 

Разблокировка пакета SQL сценарием 

2019-07-02_1705.png (195×91)

В поле Maintainer должно быть указано то значение, которое стоит в системной настройке «Издатель» (Maintainer). Проверьте, точно ли у Вас там сейчас «Customer».

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