Подскажите, как перенести отчет через привязку данных в приложении Excel reports builder. Создал пакет, который зависит от этого пакета, пытаюсь привязать запись раздела и получаю ошибку. Если попытаться привязать данные SysSchema, то тоже получаю ошибки с зависимостями.

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

Нравится

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

Павел,

 

действительно, чтобы привязать данные, необходимо добавить зависимость от пакета приложения IntExcelReport. Уточните, после добавления зависимости выполняли ли выход из приложения и повторную авторизацию?

 

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

Лазоренко Ирина, зависимость в кастомный пакет добавлена, отчет был создан на основе представления (sysSchema как раз ссылается на объект представления, которое лежит в моем пакете)

Павел,

 

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

Данные пытался добавить в тот же пакет, где представление.

Павел,

 

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

Павел, добрый день!

 

ваш кейс воспроизвелся на базовом продукте. В связи с тем, что в разделе добавлена колонка, в которой указывается объект Creatio, возможности привязать данные по этой колонке нет, используя базовые механизмы привязки данных. Исключите колонку IntEntitySchemaName из списка колонок привязки и после установки пакета с настройками отчета заполните эту колонку вручную (через бп или скрипт). 

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

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

 

Подскажите, пожалуйста, возможно ли с помощью плагина "Расчет рабочих дней в бизнес-процессах" (https://marketplace.terrasoft.ru/template/raschet-rabochih-dney-v-bizne…;реализовать сценарий расчета количества рабочих дней от "Начальной даты" в обратную сторону?

Пример сценария: за 2 рабочих дня до даты необходимо отправить уведомление-напоминание. В блоке БП заполнил начальную дату и [Количество дней] = "-2". В результате в журнале процессов зафиксирована ошибка:

System.ArgumentException: Недопустимые входные параметры

   в Terrasoft.Core.Process.Configuration.GlbAddBusinessDays.InternalExecute(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessActivity.ExecuteItem(ProcessExecutingContext context)

   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

Заранее спасибо!

Нравится

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

Добрый день

Насколько я помню, нет. К тому же это решение использовало класс CalendarUtils который считается устаревшим. В той версии решения что я ставил была ошибка определения дней недели и расчет рабочих дней был не корректен

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

 

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

 

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

 

можете уточнить кейсы неправильного определения дней недели? Передам информацию ответственной команде. 

Лазоренко Ирина,

если календаре пятидневная неделя, то делаем +1 рабочий день от пятницы. Попадаем на субботу, а не понедельник. Насколько помню вы там используете класс в классе CalendarUtils и метод GetDayOfWeekNumber. Вот он и возвращает не корректно номер дня недели: от 1 до 7, где 1 =Пн. Далее идет сравнение с БД, где хранится дни недели от 1 до 7, где 1=Вс. 

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

 

А сделать отрицательный расчет срок очень интересная идея. Сделаю у себя как найдется время)

Алексей, добрый день!

 

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

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

В Академии есть описание как скачать шаблон для импорта объектов из Конфигурации. В предыдущих версиях часто это использовала. 

Но в версии 7,17,0 - не могу определить где находится кнопка Настройки. 

Пример на скрине

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

Нравится

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

На версии 7.17.0 можно попробовать пройти по адресу yoursite/0/ViewPage.aspx?Id=c2af7f54-07df-4670-9c2b-af2497d3231f

 

На версии 7.17.1 прежде чем эту ссылку использовать надо реанимировать старый конфигуратор

 

Спасибо! Вот только клиенту это уже не объяснишь....

А клиент в старой конфигурации умел это делать сам? в этом случае дайте ему ссылку, а дальше все тоже самое осталось.

Екатерина, что Вы имеете в виду под шаблоном для импорта объектов из Конфигурации? Речь о выгрузке схем или данных в Excel? Приведите ссылку или скриншот, как раньше было.

вот тут ссылка на окошко старого интерфейса /0/ViewPage.aspx?Id=c2af7f54-07df-4670-9c2b-af2497d3231f

добраться из старой конфигурации можно так:

 

Было бы не плохо вставить эту кнопку "Скачать шаблон"  в новый мастер импорта, который по адресу /0/Nui/ViewModule.aspx?vm=FileImportWizard#FileImportModule/FileImportStartPage/f0a9cd02-5a19-4a4b-9e6e-7505bd509247

Спасибо, теперь понял, о чём Вы. В новой конфигурации нет кнопки «настройки», поскольку она была не частью старой конфигурации, а частью старого 5.Х-интерфейса вообще, была видима в любом разделе. А в 7.17 старый интерфейс окончательно убрали, а с ней и кнопку настройки, и окно старого импорта, и кнопку скачивания в нём. В новом интерфейсе свой экран настроек, «Дизайнер системы».

В академию по поводу неактуального абзаца сообщил.

Сложность в использовании функциональности импорта из Excel о том, что нет возможности скачать шаблон файла для загрузки данных объекта была зарегистрирована ещё при запуске нового UI импорта из Excel, но пока ничего не планировали. Приоритетность реализации зависит от количества запросов  по этой теме.

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

Как обходной вариант, можно просто вывести в реестре раздела нужные колонки и скачать файл по действию «Экспорт в Excel», а затем его открыть и оставить только «шапку».

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

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

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

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

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

В таком случае, можно опять выгрузить по действию «Экспорт в Excel».

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

Да, но для этого нужно опять добавлять колонки в реестр.

А зачем Вы их удаляли?

С выгрузкой по действию «Экспорт в Excel» тоже есть свои нюансы. Так например списочное представление позволяет вывести только 24 колонки. Можно конечно в плиточном вывести все необходимые колонки. Тогда Экспорт в Excel выгрузит все что надо. Но Выгрузка шаблона позволяла выгрузить сразу всю объектную модель данных без настройки реестра записей, да еще и с указанием обязательности полей

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

а зачем мне в реестре весь список полей из объекта? Алексей в сообщении выше очень точно описал суть проблемы)

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

Или самостоятельно сделать БП с логикой, взятой из DownloadTemplateMenuItemClickScriptTaskExecute схемы ImportSettingsPage и адаптированной под сохранение файла где-то в базе.

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

Нынешняя логика этой кнопки такая:

		public virtual bool DownloadTemplateMenuItemClickScriptTaskExecute(ProcessExecutingContext context) {
			Page.BaseMessagePanel.Clear();
			if (string.IsNullOrEmpty(SchemaName)) {
				Page.BaseMessagePanel.AddMessage(WarrningMessage, UnableSelectObjectMessage, MessageType.Warning, true);
				return true;
			}
			Page.Response.ClearHeaders();
			Page.Response.ClearContent();
			string fileName = SchemaName;
			var instance = UserConnection.EntitySchemaManager.GetInstanceByName(SchemaName);
			if (instance != null) {
				fileName = instance.Caption.ToString();
			}
			Page.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
			if (HttpContext.Current.Request.Browser.Browser == "IE") {
				string fileNameEnc = HttpUtility.UrlPathEncode(fileName);
				Page.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileNameEnc + ".xlsx\"");
			} else {
				Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
			}
			List<double> columnWidthsList = new List<double>();
			using (MemoryStream stream = new MemoryStream()) {
				using(SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook)) {
					// Add a WorkbookPart to the document.
					var workbookpart = spreadsheetDocument.AddWorkbookPart();
					workbookpart.Workbook = new OpenXmlSpreadsheet.Workbook();
 
					// Add a WorksheetPart to the WorkbookPart.
					var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
					var workbookStylesPart = workbookpart.AddNewPart<WorkbookStylesPart>(); 
					worksheetPart.Worksheet = new OpenXmlSpreadsheet.Worksheet(new OpenXmlSpreadsheet.SheetData());
 
					// Add Sheets to the Workbook.
					OpenXmlSpreadsheet.Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<OpenXmlSpreadsheet.Sheets>(new OpenXmlSpreadsheet.Sheets());
 
					// Append a new worksheet and associate it with the workbook.
					string relationshipId = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart);
					string sheetName = fileName;
					OpenXmlSpreadsheet.Sheet sheet = new OpenXmlSpreadsheet.Sheet() {
						Id = relationshipId,
						SheetId = 1, 
						Name = sheetName
					};
					sheets.Append(sheet);
 
					OpenXmlSpreadsheet.Worksheet worksheet = new OpenXmlSpreadsheet.Worksheet();
					OpenXmlSpreadsheet.SheetData sheetData = new OpenXmlSpreadsheet.SheetData();
					OpenXmlSpreadsheet.Row row = new OpenXmlSpreadsheet.Row();
 
					OpenXmlSpreadsheet.Cell currentCell;
					int columnCount = 0;
					var entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName(SchemaName);
					foreach (EntitySchemaColumn column in entitySchema.Columns) {
						if (!column.DefValue.IsSystemValue &&
								(column.UsageType != EntitySchemaColumnUsageType.Advanced) && 
								(column.UsageType != EntitySchemaColumnUsageType.None) &&
								!column.Name.Equals("ProcessListeners") &&
								!(column.DataValueType is ImageDataValueType) &&
								!(column.DataValueType is ImageLookupDataValueType)) {
							currentCell = new OpenXmlSpreadsheet.Cell();
							currentCell.DataType =  OpenXmlSpreadsheet.CellValues.String;
							if (column.RequirementType == EntitySchemaColumnRequirementType.ApplicationLevel || column.RequirementType == EntitySchemaColumnRequirementType.DBLevel) {
								currentCell.StyleIndex = 3;
							} else {
								currentCell.StyleIndex = 4;
							}
							columnWidthsList.Add(CalculateWidth(column.Caption.Value));
							currentCell.CellValue = new OpenXmlSpreadsheet.CellValue(column.Caption.Value);
							row.AppendChild(currentCell);
						}
					}
					sheetData.Append(row);
					row = new OpenXmlSpreadsheet.Row();
					for (int i=0;i<columnWidthsList.Count; i++) {
						currentCell = new OpenXmlSpreadsheet.Cell();
						currentCell.DataType =  OpenXmlSpreadsheet.CellValues.String;
						currentCell.StyleIndex = 5;
						row.AppendChild(currentCell);
					}
					sheetData.Append(row);
					//Adding columns and specifeing width
					OpenXmlSpreadsheet.Columns columns = new OpenXmlSpreadsheet.Columns();
					uint j = 1;
					foreach (var w in columnWidthsList) {
						columns.Append(CreateColumnData(j, w));
						j++;
					}
					worksheet.Append(columns);
					//--
					worksheet.Append(sheetData);
 
					workbookStylesPart.Stylesheet = CreateStyleSheet();
					worksheetPart.Worksheet = worksheet;
					spreadsheetDocument.Close();
 
					stream.Seek(0, SeekOrigin.Begin);
					byte[] dataArray = stream.ToArray();
 
					Page.Response.BinaryWrite(dataArray);
					Page.Response.End();
				}
			}
			return true;
		}

 

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

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

update SysPackage set InstallType = 0, IsChanged = 1, IsLocked = 1, Maintainer = 'Customer' where Name = 'CargoVR'Изображение удалено.

Нравится

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

Если полноценно, то скрипт разблокировки таков (!!!PackageName!!! заменяете названием своего пакета):

 

UPDATE "SysPackage"
SET "InstallType" = 0,
    "Maintainer" = (SELECT
      "TextValue"
    FROM "SysSettings"
    JOIN "SysSettingsValue"
      ON "SysSettingsValue"."SysSettingsId" =
        "SysSettings"."Id"
    WHERE "Code" = 'Maintainer'
    AND "SysSettingsValue"."SysAdminUnitId" = 'A29A3BA5-4B0D-DE11-9A51-005056C00008')
WHERE "Name" = '!!!PackageName!!!'
AND "SysWorkspaceId" IN (SELECT
  "Id"
FROM "SysWorkspace"
WHERE "Name" = 'Default')

 

Здравствуйте, Дима! А Вам, вероятно, нужен скрипт разблокировки для postgres.

Синтаксис на PostgreSQL немного отличается от mssql.

В вашем случае достаточно обернуть названия таблиц и колонок в кавычки.

update "SysPackage" set "InstallType" = 0, "IsChanged" = 1, "IsLocked" = 1, "Maintainer" = 'Customer' where "Name" = 'CargoVR'

Если полноценно, то скрипт разблокировки таков (!!!PackageName!!! заменяете названием своего пакета):

 

UPDATE "SysPackage"
SET "InstallType" = 0,
    "Maintainer" = (SELECT
      "TextValue"
    FROM "SysSettings"
    JOIN "SysSettingsValue"
      ON "SysSettingsValue"."SysSettingsId" =
        "SysSettings"."Id"
    WHERE "Code" = 'Maintainer'
    AND "SysSettingsValue"."SysAdminUnitId" = 'A29A3BA5-4B0D-DE11-9A51-005056C00008')
WHERE "Name" = '!!!PackageName!!!'
AND "SysWorkspaceId" IN (SELECT
  "Id"
FROM "SysWorkspace"
WHERE "Name" = 'Default')

 

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

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

 

Сталкивался ли кто с виджетами, настраиваемыми внутри карточки, и их отображением на русской и англоязычной локализации одновременно?

 

Появилась острая необходимость отображать сотрудникам, в зависимости от их языка интерфейса, дашборды в карточке мероприятия. На русской локализации предварительно всё было настроено (7 виджетов): https://prnt.sc/xz5ssd. 

При переходе на английскую - есть только 3 показателя: https://prnt.sc/xz5ojk.



Как-то давно получала такой ответ по вопросу настройки локализаций: "разным пользователям будут отображаться разные данные в зависимости от локализации", т.е. и настраивать надо каждому своё.

Согласно этому, была сделана настройка - добавлены на англ. версию недостающие виджеты. После сохранения ситуация стала обратная: на анг. все 7 виджетов, на русской версии - только 3.

 

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

Нравится

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

Дарья, как Вы добавляли виджеты в карточку, в мастере разделов?

Чем отличаются одни от других, отображённые от скрытых? Какие-то ошибки есть в консоли при открытии карточки?

Почему на двух скриншотах все показатели разные и нет трёх таких же?

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

Добрый вечер, Александр! Да, это и мои первые вопросы)

 

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

С чего всё началось:

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

- далее были добавлены новые дашборды и изменены три верних (уже в другом пакете разработки);

- перелогиниваемся на инглиш версию, и в карточке виден и доступен для редактирования только верхний ряд из трёх (вновь старых) виджетов. Оставшиеся четыре никак не изменить. Их названия даже не те, которые давались при создании, а наподобие "Indicator[Id виджета]", и они не отображаются в карточке объекта.

 

Объяснить, надеюсь, удалось.

Спасибо, что подметили про консоль. Ошибку так не ловила. Завтра дополню по результатам проверки.

Дарья Сошина пишет:

Объяснить, надеюсь, удалось.

Честно, не совсем. А если после настройки Redis очистить, не станет правильно? 

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

Здравствуйте, подскажите пожалуйста, осталась ли возможность вернуть старый конфигуратор в версии 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 ? 

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

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

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

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

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

Добрый день всем!

Можно ли в детали с редактируемым реестром сделать возможность вывода значения в процентах? То есть в БД будет лежать значение 0.2. А выводиться будет 20% (со знаком процента).

Пока в голову только пришла идея с добавлением строкового значения в таблицу в БД, в которой будет лежать строка "20 %" и соответственно её выводом, но такое решение некрасивое

Нравится

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

Линар, наверное, так будет действительно проще. Ещё можно смотреть в сторону доработки схемы ConfigurationGridUtilities, отвечающей за такой реестр: добавления там проверки на конкретное поле конкретного объекта и преобразовании в нужный вид при открытии в функции generateActiveRowControlsConfig и при сохранении в saveDataRow. Вопрос модификации редактируемого реестра с другой целью описан тут.

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

Не могу найти в системных настройках параметр

ExchangeListenerServiceUrl

 

в версии 7.16 он был на него ссылается докeментация

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

Нравится

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

Добрый вечер.

Вы неправильно написали название системной настройки, поэтому и не можете её найти.

Правильно вот так 'ExchangeListenerServiceUri' - в конце 'i', а у Вас 'l'.

Добрый вечер.

Вы неправильно написали название системной настройки, поэтому и не можете её найти.

Правильно вот так 'ExchangeListenerServiceUri' - в конце 'i', а у Вас 'l'.

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

Добрый день, я сделал справочное поле мульти справочным

вот так

attributes: {
           "qrtClientAccountSigner": { // поле, в котором создаем мультилукап
              "dataValueType": this.Terrasoft.DataValueType.LOOKUP,
              "multiLookupColumns": ["qrtContact", "qrtCounterparty"]  // перечисляем созданные нами колонки, которые будет содержать мультилукап
          }
        },

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

Нравится

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

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

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

т.е вывести результат этого поля в реестре не выйдет?

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

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

 

При выборе контрагента в мульти-поле Инвестор, контрагент сохраняется и в инвесторе и

Дублируется в поле Контрагент.

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

Из поля Инвестор, но в карточке детали в поле Инвестор отображается.

В другом объекте системы на подобной детали все наоборот. Сохраняются контракты в мультиполе на детали.

 

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

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

Отправка письма из БП с вложеной печатной формой. 

 

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

 

Интересует именно БП (возможно с кодом) 

Нравится

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

Добрый вечер.

 

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

Добрый вечер.

 

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

Полагаю, что проще всего вам будет дождаться релиза 7.17.2. Там это будет https://academy.terrasoft.ru/docs/release/opisanie-relizov/opisanie-rel…

Ну а если срочно - то так, как посоветовала Алла

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