Добрый день, подскажите можно ли создавать в разделах подразделы? Примерно по такой схеме?:

!

Нравится

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

Здравствуйте!

Отличное решение для Вашей бизнес-задачи это добавление деталей на страницу - https://academy.terrasoft.ru/documents/sales-enterprise/7-9/master-deta…
В результате получиться аналогичная картина.

Наглядные примеры:

- раздел «Контрагенты» – деталь «Контакты контрагента»;
- раздел «Счет» – деталь «Продукты»;
- раздел «Контакты» - деталь «Адреса».

Скорее, это все решается группами, так как разделение по странам - это лишь один из вариантов разделения заказов

Большое спасибо :smile:
Подскажите, пожалуйста, как можно добавить автоподстановку значения поля из другого раздела? К примеру, в новом разделе есть поля-справочники: продукт и страна, необходимо, чтобы при выборе продукта в поле страна из раздела Продукты соответствующему продукту сразу подставлялась страна, ранее указанная в разделе Продукты.

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

Так бизнес правило фильтрации с включенным "autocomplete": true, же:

https://academy.terrasoft.ru/documents/technic-sdk/7-9/primer-primeneni…

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

Необходимо, чтобы в зависимости от выбранного продукта подставлялся регион, оба поля являются справочниками.
Screenshot
Сам же регион выставлен каждому продукту в таблице "Продукты".

rules: {
                "UsrRegion": {
                    "FiltrationRegionByProduct": {
                        "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
                        "autocomplete": true,
                        "autoClean": true,
                        "baseAttributePatch": "Product",
                        "comparisonType": Terrasoft.ComparisonType.EQUAL,
                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                        "attribute": "UsrRegion"
                    }
                },

"Maria H" написал:Необходимо, чтобы в зависимости от выбранного продукта подставлялся регион, оба поля являются справочниками.

Попробуйте так:

rules: {
"Product": {
"FiltrationRegionByProduct": {
"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
"autocomplete": true,
"autoClean": true,
"baseAttributePatch": "UsrRegion",
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "UsrRegion"
}
},

спасибо, не помогло :sad:, может необходимо как-то конкретно в коде указать что фильтрация идет по полю UsrRegion из раздела продукты, в зависимости от выбранного продукта в данном разделе, как это можно сделать?

"Maria H" написал:спасибо, не помогло , может необходимо как-то конкретно в коде указать что фильтрация идет по полю UsrRegion из раздела продукты, в зависимости от выбранного продукта в данном разделе, как это можно сделать?

Нужно очень точно указать имена колонок, так как они указаны в объектах.
Проще будет написать вам в поддержку support@terrasoft.ru с указанием доступа к сайту, сотрудники поддержки уже все на месте поправят, а то предугадывать возможные названия колонок на форуме сложно.

Большое спасибо! :smile: Перепроверили еще раз наименования полей и с вашим вариантом сработало.

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

Добрый день!

Можно ли сделать 2 раздела, которые будут использовать 1 объект, 1 страницу редактирования, но 2 разные страницы раздела (Section)?

Нравится

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

Здравствуйте!

Можно сделать прямым запросом в БД.
Создаем раздел Emails, взяв за основу раздел Activity:

insert into SysModule
(Caption, SysModuleEntityId, Image16, Image20, FolderModeId, GlobalSearchAvailable, HasAnalytics, HasActions, HasRecent, Code, ModuleHeader, CardSchemaUId, SectionModuleSchemaUId, SectionSchemaUId, CardModuleUId, Image32Id, LogoId)
values
('Emails', 'a2e7bf65-7380-e011-afbc-00155d04320c', (select Image16 from SysModule where Id = '055063c9-8180-e011-afbc-00155d04320c'), (select Image20 from SysModule where Id = '055063c9-8180-e011-afbc-00155d04320c'), 'b659d704-3955-e011-981f-00155d043204',
1, 1, 1, 0, 'Email', 'List of mails', '80918b27-ff37-4d8c-ba73-c985d74d3dc2', 'df58589e-26a6-44d1-b8d4-edf1734d02b4', '569aaf1a-5943-4f87-ab47-948d941e4920', '4e1670dc-10db-4217-929a-669f906e5d75', 'abe30a95-e663-43a9-a881-834b70de5206', '631b1018-9b82-43fe-9f5e-aad272aae679' )

Здравствуйте!

Спасибо. Я добавил раздел, но при переходе на него меня перекидывает на активности, можно ли это исправить? И можно ли страницу реестра изменить?

"Демьяник Алексей" написал:Создаем раздел Emails, взяв за основу раздел Activity:

Как интересно. И это всё, что нужно сделать для нового раздела Emails?

Здравствуйте!

"Колебянов Виталий Романович" написал:

Здравствуйте!

Спасибо. Я добавил раздел, но при переходе на него меня перекидывает на активности, можно ли это исправить? И можно ли страницу реестра изменить?

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

При необходимости можно изменить:
1) Страницу раздела (поле SysModule.SectionSchemaUId)
2) Страницу редактирования раздела (поле SysModule.CardSchemaUId)
3) Страницу миникарточки и много чего другого

Предварительно страницу раздела необходимо создать в конфигурации.

"Владимир Соколов" написал:

Как интересно. И это всё, что нужно сделать для нового раздела Emails?

Это будет полная копия раздела "Активности", которая будет называться Emails. Логика раздела "Активности" останется.
Для изменения логики необходимо менять схему раздела, страницы разделов.

"Демьяник Алексей" написал:

Здравствуйте!

Колебянов Виталий Романович пишет:

Здравствуйте!

Спасибо. Я добавил раздел, но при переходе на него меня перекидывает на активности, можно ли это исправить? И можно ли страницу реестра изменить?

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

При необходимости можно изменить:

1) Страницу раздела (поле SysModule.SectionSchemaUId)

2) Страницу редактирования раздела (поле SysModule.CardSchemaUId)

3) Страницу миникарточки и много чего другого

Предварительно страницу раздела необходимо создать в конфигурации.

Владимир Соколов пишет:

Как интересно. И это всё, что нужно сделать для нового раздела Emails?

Это будет полная копия раздела "Активности", которая будет называться Emails. Логика раздела "Активности" останется.

Для изменения логики необходимо менять схему раздела, страницы разделов.

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

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

Здравствуйте!
Получилось ли решить проблему с фокусом на неправильном разделе? Не поделитесь ли способом?

У меня кейс заключается в следующем: на основе имеющегося объекта создать раздел с новой страницей раздела и с новой страницей редактирования.
Появилась проблема - при открытии страницы редактирования объекта открывается не та, что была указана в CardSchemaUId, а старая. Как это можно решить?
Спасибо!

Здравствуйте, Михаил!

Попробуйте в мастере раздела настроить типизацию страниц для каждого из разделов.
Также, посмотрите необходимые связи:
- [SysEntitySchemaUId] в таблице SysModuleEntity (таблица, где хранится информация объектах разделов). Где [SysEntitySchemaUId] - колонка Uid объекта раздела (например, "UsrRK") в таблице SysSchema.

- В таблице SysModuleEdit (страница редактирования "Page"):
где [SysModuleEntityId] - колонка Id записи таблицы SysModuleEntity из первого этапа (проверка Select Id from SysModuleEntity Where SysEntitySchemaUId='AF6DD4AD-1398-4FCE-8837-78DC65AE0F9E')
[CardSchemaUId] - колонка Uid страницы редактирования объекта (например, "UsrRK1Page") в таблице SysSchema (проверка Select Uid,Name from SysSchema where name like '%UsrRK%').

- В таблице SysModule (страница раздела "Section"):
где [SysModuleEntityId] - колонка Id записи таблицы SysModuleEntity из первого этапа (проверка Select Id from SysModuleEntity Where SysEntitySchemaUId='AF6DD4AD-1398-4FCE-8837-78DC65AE0F9E').

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

341
Создал раздел на тестовой БД, перенес его на рабочую, скопировал запись из таблицы tbl_Workspace на рабочую БД.
добавил раздел в рабочих местах, создал новою группу в администрировании, заполнил ею поле Группа таблиц в главной таблице нового раздела.
При загрузке ТС и переходе на новый раздел появляется ошибка - разрушительный сбой на строке
wndWorkspace.Window = WorkspaceWindow;
в функции
ShowGroupWorkspace
поставил дебагер, но он ошибки не показал!!!! и до конца функции все отработало хорошо, разрушительный сбой появился аж после окончания функции amiWorkspacesOnExecute.
впервые с такой проблемой стыкаюсь и уже сутки пытаюсь решить ее

Нравится

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

Вау, на тестовой тоже эта ошибка появилась!!! круто, значит всему виной бинарники?

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

"Зверев Александр" написал: Попробуйте удалить раздел и создать его заново

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

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

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

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

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

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

Если это был раздел Контрагенты, то должна быть октрыта та же самая страница реестра контрагентов, допустим 17-я , курсор должен стоять на том же самом контрагенте на котором стоял при выходе а курсор групп соответственно на последней выбранной статической(динамической) группе. Ну и т.д. для других разделов.

А вообще, где сохраняется последнее состояние окон и курсоров?

С уважением, Дмитрий
ТS CRM 3.2.0.83

Нравится

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

Здравствуйте, Дмитрий!

Последнее состояние окон сохраняется в профиле пользователя - в зависимости от настроек хранится либо в папке Profile (%AppData%\Terrasoft\<Ваша версия>\Profile), либо в базе данных.

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

Вот код обработчика этого события:

function wnd_MainOnClose(Window) {
if (Assigned(Main.UserSettingsWindow) &&
!Main.UserSettingsWindow.Attributes('DenySerializeToProfile')) {
var UserSettings = Main.UserSettingsWindow.Attributes('UserSettings');
var ActiveWorkspaceItem = GetActiveWorkspaceItem();
if (Assigned(ActiveWorkspaceItem)) {
if (UserSettings.StartMenuItemAction == 'rbLastActive') {
UserSettings.StartMenuItemTag =
ActiveWorkspaceItem ? ActiveWorkspaceItem.Tag : '';
}
if (UserSettings.StartMenuItemAction != 'rbByDefault') {
if (!IsEmptyValue(UserSettings.StartMenuItemTag)){
var StartedActionMenu =
GetActionMenuItemByTag(amWorkspace,
UserSettings.StartMenuItemTag);
var GroupCode = StartedActionMenu.ParentItems.Tag;
UserSettings.StartMenuGroupTag =
StartedActionMenu ? GroupCode : '';
} else {
UserSettings.StartMenuItemAction = 'rbLastActive';
}
}
}
Services.SerializeItemToProfile(Main.UserSettingsWindow, EmptyStr);
}
CloseMainForm();
}

Насчет сохранения страницы и позиции в реестре - это тоже можно доработать и сохранять эту информацию в профиль пользователя при вызове обработчика OnProfileSerialize окна. В таком случае нужно ещё реализовать обработчик события OnProfileDeserialize, который будет эту информацию вычитывать из профиля пользователя и обрабатывать.
Однако, с точки зрения производительности работы приложения при старте не рекомендуется реализовывать переход на n-ю страницу с m-ной позицией.

Добрый день, Алла!
Спасибо за пост!

"Савельева Алла" написал:хранится либо в папке Profile (%AppData%\Terrasoft\<Ваша версия>\Profile)

Такой папки у меня вообще нет.
Есть папка AppData\Roaming\Terrasoft CRM\3.2.0\Profile\F714003C6A014E0187CDFBA4B89B2D13
Там много файлов с расширением .dat , но это , кажется Cache.

"Савельева Алла" написал:В более поздних версиях появилась такая пользовательская настройка, которая позволяет пользователю указывать, какой раздел открывать при старте: по умолчанию, последний активный или указанный. Не уверенна, что такая функциональность есть в версии 3.2.0.83.

К сожалению, нет такой функциональности нет, по крайней мере в процессе работы не сталкивался. Где это сидит?

Моя коробочная функция лишь:
function wnd_MainOnClose(Window) {
CloseMainForm();
}

Вставил новую функцию , при закрытии приложения выдается ошибка(Предполагается наличие объекта) на строке:
var ActiveWorkspaceItem = GetActiveWorkspaceItem();

Что нужно изменить сделать?

"Кудинов Дмитрий Станиславович" написал:Есть папка AppData\Roaming\Terrasoft CRM\3.2.0\Profile\F714003C6A014E0187CDFBA4B89B2D13

Это и есть папка, в которой хранятся профили пользователей.
Cache хранится здесь же, но в папке Cache :smile:

"Кудинов Дмитрий Станиславович" написал:К сожалению, нет такой функциональности нет, по крайней мере в процессе работы не сталкивался. Где это сидит?

Эта функциональность реализована в версии 3.4.1 и находится она в настройках пользователя на вкладке [Общие].

"Кудинов Дмитрий Станиславович" написал:Вставил новую функцию , при закрытии приложения выдается ошибка(Предполагается наличие объекта) на строке:
var ActiveWorkspaceItem = GetActiveWorkspaceItem();

Что нужно изменить сделать?

Ошибка возникает из-за того, что у Вас не реализована функция GetActiveWorkspaceItem().
Её код ниже:
function GetActiveWorkspaceItem() {
for (var i = 0; i < amWorkspace.Count; i++) {
var GroupActionMenuItem = amWorkspace.Items(i);
if ((GroupActionMenuItem.IsVisible) && (GroupActionMenuItem.IsChecked)) {
for (var j = 0; j < GroupActionMenuItem.Count; j++) {
var ActionMenuItem = GroupActionMenuItem.Items(j);
if ((ActionMenuItem.IsVisible) && (ActionMenuItem.IsChecked)) {
return ActionMenuItem;
}
}
}
}
return null;
}

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

Алла, покорнейше благодарю за новую порцию кода!

Да, когда вставил GetActiveWorkspaceItem() ошибка исчезла.
Поведение приложения не изменилось - все по старому, отрывает только с раздела Контрагент.

"Савельева Алла" написал:Также обратите внимание на то, что, если Вы хотите использовать этот функционал в таком виде, в котором он есть в коробке, Вам нужно ещё реализовать интерфейсную часть.


Очень хочу реализовать функционал! Как и с какой целью реализовать интерфейсную часть?

(P.S. : Иногда, для визуальной информативности хотелось бы вставить рисунок, но у меня что-то не получается. Когда нажимаю на иконку *Вставить\изменить изображение* появляется окно со странной геометрией(буква Г упала вперед). Там три позиции для ввода , но названия полей обрезаны. Раньше такого бага не было , вставлял без проблем. У Вас получится отправить рисунок? Видимо в какое-то из трех (сверху вниз) необходимо вводить путь к рисунку на жестком? В какое? )

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

Логично, так как для того, чтобы данная функциональность работала нужно:
1) указывать настройки того, какой раздел отображать (для этого нужно реализовать интерфейсную часть в окне пользовательских настроек);
2) в обработчике события OnPrepare для wnd_Main вызывать функцию InitializeUserSettings, которая выполняет десериализацию настроек пользователя:
function InitializeUserSettings(InitializeWhenMainWindowPrepare) {
Main.UserSettingsWindow = Services.GetNewItemByUSI('wnd_UserSettings');
Main.UserSettingsWindow.Attributes('InitializeWhenMainWindowPrepare') =
InitializeWhenMainWindowPrepare;
Main.UserSettingsWindow.Prepare();
Services.DeserializeItemFromProfile(Main.UserSettingsWindow, '');
}

"Кудинов Дмитрий Станиславович" написал:Очень хочу реализовать функционал! Как и с какой целью реализовать интерфейсную часть?

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

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

"Кудинов Дмитрий Станиславович" написал:(P.S. : Иногда, для визуальной информативности хотелось бы вставить рисунок, но у меня что-то не получается. Когда нажимаю на иконку *Вставить\изменить изображение* появляется окно со странной геометрией(буква Г упала вперед). Там три позиции для ввода , но названия полей обрезаны. Раньше такого бага не было , вставлял без проблем. У Вас получится отправить рисунок? Видимо в какое-то из трех (сверху вниз) необходимо вводить путь к рисунку на жестком? В какое? )

Информацию передала в отдел, который занимается поддержкой работы Community.

Здравствуйте, Дмитрий!

Для решения проблемы попробуйте очистить содержимое папки Profile (где она находится я писала в этом посте выше).

"Кудинов Дмитрий Станиславович" написал:Пытался восстановить последнюю backUp - копию , тоже не удается . Выдается ошибка что база используется, хотя проверил в диспетчере - запущенных террасофтовских файлов нет.

Бекап базы данных не относится к 'террасофтовским файлам' - это часть, за работу которой отвечает СУБД (например, MS SQL).

Вот что оказывается произошло :biggrin:. После того как я поставил галочку в чекбокс, в окне входа вместо supervisor встало мое имя пользователя в моей машине. Я был невнимателен и только потом увидел такое безобразие...:idea:

В Terrasoft есть 2 способа авторизации в базу: по логину и паролю и из-под пользователя домена, под которым работаете в Windows. В окне логина это определяет соответствующая галочка.

У меня на событие OnPrepare уже вызывается функция:

function wnd_MainOnPrepare(Window) {
ReadSystemSettings();
InitializeUserSettings();
InitializeCallCentreClientWindow();
Initialize();

FillReferencesDictionary();
CheckAnniversary();
var WorkspaceUSI = GetGroupAllowedWorkspaceUSI();
try {
if(IsEmptyValue(WorkspaceUSI)) {
var Message = "Текущий пользователь не имеет достаточно прав для просмотра данных";
throw Message;
}
}
catch (e) {
CatchException(e);
return;
}
IntitializeTimer();
PrepareTimer();
ShowTimerWindow();
}

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

function InitializeUserSettings() {
Main.UserSettingsWindow = Services.GetNewItemByUSI('wnd_UserSettings');
Main.UserSettingsWindow.Prepare();
Services.DeserializeItemFromProfile(Main.UserSettingsWindow, '');
}

Как быть?

И что?

"Зверев Александр" написал:

И что?


Пожалуйста, конкретезируйте свой вопрос:smile:

Эти отличия в коде могут быть вызваны более старой версией конфигурации. У Вас 3.2, а интересующие Вас механизмы появились в более поздних. Если хотите перенести все доработки новой версии в старую, придётся приобрести лицензии на 3.3.2 (а скорее всего, 3.4.0, 3.4.1), где есть нужная логика, развернуть рядом и сравнивать содержимое одинаковых функций. Или же заказать такие работы в качестве проекта.

Можно и без лицензии:) если просто раздобыть дистрибутив демо или боевой дистрибутив соответствующих версий. Админка прекрасно работает под супервизором и система послужит донором
Дистрибутив думаю не откажется дать поддержка ;)

Ну, или под Supervisor. Судя по инструкции, в 3.4.0 уже есть такое окно.
user settings

"Зверев Александр" написал:

Если хотите перенести все доработки новой версии в старую, придётся приобрести лицензии на 3.3.2 (или 3.4.0, 3.4.1), где есть нужная логика, развернуть рядом и сравнивать содержимое одинаковых функций. Или же заказать такие работы в качестве проекта.


У меня рабочая 3.2.0.83 . Сделано много доработок. Есть ли смысл покупать лицензию на 3.4 чтобы сравнивать содержимое одинаковых функций ? Перенести все новое из 3.4 в 3.2 может быть и возможно, но будет затратно, хотя бы даже по времени... уж тогда лучше сразу на 7-ку переходить.
Но пока не хочу. А в 3.2 есть некоторые критичные вещи которые уже просто достали.

Сейчас мало у кого есть версия 3.2. У большинства пользователей 3.Х — либо 3.3.2, либо 3.4.
Специально переносить все новые доработки в 3.2 уже никто не будет. Кроме того, часть из пожеланий в самом верхнем сообщении (выбранная запись на непервой странице) нет вообще нигде, это нужно делать с нуля.

Смысла переходить действительно больше уже на 7.Х, но она полностью другая. Есть бесплатный триал на 2 недели, можете зарегистрироваться и посмотреть.

"Александр Кудряшов" написал:

Можно и без лицензии:) если просто раздобыть дистрибутив демо или боевой дистрибутив соответствующих версий. Админка прекрасно работает под супервизором и система послужит донором

Дистрибутив думаю не откажется дать поддержка ;)

Даст ли дистрибутив поддержка, это еще вопрос.
Главные преимущества и недостатки 3.Х против 7.Х мы уже обсуждили в созданной мной теме.
*Есть ли какие-нибудь плюсы у Terrasoft CRM 3.xxx по сравнению с BPMonline 7.x *?

"Кудинов Дмитрий Станиславович" написал:Даст ли дистрибутив поддержка, это еще вопрос

Дистрибутив не тайна за семью печатями. Обязательно предоставят. Или партнеров просите :)
Кстати будьте морально готовы, что на бинарниках 3.2 у вас желаемый функционал может даже после все сравнений и переносов кода не заработать. Такая вероятность увы есть.

Здравствуйте, Дмитрий!

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

После этого путем сравнения сервисов перенести нужные Вам доработки, хотя риск того, что это сделать физически может не получится, всё-таки есть, и гарантировать 100% результат мы не можем.

Служба поддержки сможет предоставить нужную версию по согласованию с менеджером по работе с клиентами Террасофт, который ответственный по Вашей компании.

"Савельева Алла" написал: можно сделать, запросив дистрибутив более поздней версии 3.4.1, в которой данная функциональность реализована

Добрый день, Алла!

Код который Вы опубликовали в этой теме из какой версии?

"Савельева Алла" написал: можно сделать, запросив дистрибутив более поздней версии 3.4.1, в которой данная функциональность реализована

Добрый день, Алла!

Код который Вы опубликовали в этой теме из какой версии?

Я Вам показал какой код у меня. Он расходится с вашим кодом cущественно.
Функции сериализации\десериализации у меня пустые.

function wnd_MainOnProfileDeserialize(Window, Node) {
}

function wnd_MainOnProfileSerialize(Window, Node) {
}
Чего мне на данный момент не хватает чтобы открытие, хотя-бы, было в раздел из которого был выход?
Мне даже не нужно в настройках пользователя опции выбора стартого раздела. Мне было бы достаточно
захардкодить.Примерно в каком направлении двигаться? Видимо в этих функциях что-то прописать? Для входа в последний открытый раздел эти функции задействуются? Можете пример кода который есть у Вас? Что означает второй параметр Node? Сообщие , пожалуйста, в тех.службу, пусть проверят скрипт уведомления опубликования нового поста. Приходит сразу от 2 до 4 писем.:exclaim:

Да, запросите версию 3.4.1.

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

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

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

PS: Данный раздел явно не является типовым, его отличает как минимум то что у него есть только "представление раздела" и отсутствует какое либо представление записей основного объекта.
"Страница раздела" не является потомком обычных типовых страниц раздела, которые унаследованы от "Базовая схема раздела (NUI)", а является потомком "Базовая схема карточки ( NUI )".

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

Нравится

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

"Севостьянов Илья Сергеевич" написал:

Есть необходимость внедрить в систему копию штатного раздела "Планирование".

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

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

PS: Данный раздел явно не является типовым, его отличает как минимум то что у него есть только "представление раздела" и отсутствует какое либо представление записей основного объекта.

"Страница раздела" не является потомком обычных типовых страниц раздела, которые унаследованы от "Базовая схема раздела (NUI)", а является потомком "Базовая схема карточки ( NUI )".

По этому его даже невозможно воссоздать на основании сгенерированного мастером нового раздела,

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

Подписаться на обновления этого материала

Здравствуйте,

К сожалению, это даже не раздел в привычном понимании этого слова, и скопировать его не удастся, вы можете попробовать создать аналогичную функциональность, взяв за основу оригинальный ForecastsModule, из пакета CoreForecast, но вам, в зависимости от того, какую логику вы будете менять, может понадобится создать собственные объекты\сервисы\хелперы. В общем изучите все содержимое пакета CoreForecast, начиная с ForecastsModule. А регистрацию «раздела» делайте в:
SELECT * FROM SysModule

Да, мы уже смотрели "по аналогии",
Подскажите пожалуйста верны ли мои утверждения касаемо значений в соответствующих колонках
таблицы SysModule:
SysModuleEntityId
(Значение поля "Id" базового объекта раздела из таблицы SysModuleEntity, там регистрируются все объекты автоматически при добавлении их через конфигуратор, в нашем случае это будет копия объекта Forecast)
SectionModuleSchemaUId (Значение поля "UId" из таблицы SysSchema, аналогично - регистрируются ли там схема автоматически)

Есть так же еще некоторые связанные записи в таблице SysModuleEdit
За что она отвечает ?

Илья, думаю, что данная тема будет Вам полезна
http://www.community.terrasoft.ru/forum/topic/13357

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

Подскажите, пожалуйста, как можно реализовать кнопку и вкладку в разделе Контакты, аналогичные вкладке "Планирование визитов" в разделе Активности

Нравится

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

Добрый день!

Вам нужно сделать новое представление для раздела "Контакты". Пример реализации нового представления смотрите в схеме ActivitySectionV2 пакета FieldForce.

"Мария Ватулина" написал:

Добрый день!

Вам нужно сделать новое представление для раздела "Контакты". Пример реализации нового представления смотрите в схеме ActivitySectionV2 пакета FieldForce.

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

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

Доброго дня!
Столкнулся со след. задачей:
Имеется 2 раздела: "Заказы" и "Инженерная спецификация"
Оба раздела имеют свою древовидную деталь "Продукты"
Мне необходимо скопировать выделенные продукты из раздела "Инженерная спецификация" в раздел "Заказы". Копироваться должны только определенные поля.
Подскажите пожалуйста, как это можно реализовать?

Нравится

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

Здравствуйте.

У каждого грида есть свойство SelectedIDs - возвращаемое массив идентификаторов выделенных записей. Зная идентификатор записи, можете выполнить обновление продуктов в древовидном реестре другого реестре. Обновление можно реализовать несколькими способами:

  1. 1. Используя датасет
  2. 2. Используя запрос на обновление
  3. 3. Используя хранимую процедуру

Рекомендую использовать первый способ, выполнить обновление через датасет.
Как за пример, можете взять логику обновления данных детали [Средства связи] раздела [Контрагент] реализованной в функции ActualizeCommunication сервиса scr_Account.

Cпасибо, сейчас попробую!

Можно еще посмотреть реализацию копирования дерева продуктов в scr_DocumentUtils...
Функция CopyOfferingInItemDetail. И далее из нее вызовы...

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

Здравствуйте.

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

Нашел в сообществе:

getGridDataColumns: function() {
        var columnsConfig = this.callParent(arguments);
        columnsConfig.NumberDecimal = {
                path: "NumberDecimal",
                orderPosition: 10,
                orderDirection: 1
        };
        return columnsConfig;
}

Но это не работает.

Нравится

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

Добрый день.
Попробуйте:

/**
 * Возвращает колонки, которые всегда выбираются запросом.
 * @protected
 * @overridden
 * @return {Object} Возвращает массив объектов-конфигураций колонок.
 */
getGridDataColumns: function() {
	var baseGridDataColumns = this.callParent(arguments);
	var gridDataColumns = {
		"SmrNumber": {path: "SmrNumber"}
	};
	return Ext.apply(baseGridDataColumns, gridDataColumns);
},
/**
 * Инициализирует колонки сортировки.
 * @protected
 * @overridden
 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в который будут инициализорованы опции сортировки.
 */
initQuerySorting: function(esq) {
	var sortedColumn = esq.columns.collection.get("SmrNumber");
	if (sortedColumn) {
		sortedColumn.orderPosition = 0;
		sortedColumn.orderDirection = this.Terrasoft.OrderDirection.DESC;
	}
}

Здравствуйте, Дмитрий.
Спасибо. Это то что нужно.

Здравствуйте, подскажите, как отфильтровать по колонке связанного справочника?
Например, есть деталь, в ней справочное поле, а в справочнике целочисленное поле.
Деталь UsrPrimaryContact, справочное поле UsrRelationType поле UsrOrder. Т.е. нужно отсортировать по UsrRelationType.UsrOrder

Уже разобрался. Спасибо за хороший пример.

 /**
                 * Возвращает колонки, которые всегда выбираются запросом.
                 * @protected
                 * @overridden
                 * @return {Object} Возвращает массив объектов-конфигураций колонок.
                 */
                getGridDataColumns: function () {
                    var baseGridDataColumns = this.callParent(arguments);
                    var gridDataColumns = {
                    	"UsrRelationshipType": {path: "UsrRelationshipType"},
                        "UsrRelationshipType.UsrOrder": {path: "UsrRelationshipType.UsrOrder"}
                    };
                    return Ext.apply(baseGridDataColumns, gridDataColumns);
                },
                /**
                 * Инициализирует колонки сортировки.
                 * @protected
                 * @overridden
                 * @param {Terrasoft.EntitySchemaQuery} esq Запрос, в который будут инициализорованы опции сортировки.
                 */
                initQuerySorting: function (esq) {
                    debugger;
                    var sortedColumn = esq.columns.collection.get("UsrRelationshipType.UsrOrder");
                    if (sortedColumn) {
                        sortedColumn.orderPosition = 0;
                        sortedColumn.orderDirection = this.Terrasoft.OrderDirection.ASC;
                    }
                },
Показать все комментарии

Добрый день!

С помощью мастера разделов был создан раздел в пакете Coustom. Есть ли способ перенести схемы данного раздела в другой пользовательский пакет? (работаем на on-demand).

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

Нравится

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

Добрый день!

В меню [Конфигурация], вкладка [Действия] Вы можете выбрать “Экспорт в файл”. После чего, на вкладке [Пакеты] выбрать интересующий пакет и выполнить действие “Импорт из файла”.

Олег, спасибо!
Собственно, как я и предполагал :) Подумал, что есть альтернативный вариант переноса.
А так, решение рабочее - получилось. Спасибо.

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

"Главный Сергей" написал:возможно перенести данные из одного пакета в другой???

Такая возможность есть при переносе изменений с помощью WorkspaceConsole.

"Байбородин Николай" написал:Подумал, что есть альтернативный вариант переноса.

Альтернативный вариант есть - перенос с помощью WorkspaceConsole.
Особенно это актуально, если нужно перенести не только схемы, но и привязанные данные.

Однако, если речь идет о схемах, реализованных в пакете [Custom], то перенос изменений можно выполнить только с помощью механизма экспорта/импорта схем.

Более подробную информацию по работе с WorkspaceConsole можно найти на Академии Terrasoft:

https://academy.terrasoft.ru/documents/technic-sdk/7-9/perenos-izmeneni…

Обращаю Ваше внимание, что, если у Вас on-demand, для переноса таким образом схем Вам нужно написать запрос в службу поддержки.

"Савельева Алла" написал:Такая возможность есть при переносе изменений с помощью WorkspaceConsole.

Я так понимаю это недавний, новый функционал?

"Главный Сергей" написал:Я так понимаю это недавний, новый функционал?

На самом деле, такая возможность есть уже давно.

Также есть возможность переноса с помощью SVN: https://academy.terrasoft.ru/documents/technic-sdk/7-9/perenos-izmeneni…

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

Добрый день!
7.6
Сейчас, находясь, например, в разделе "Обращения", для того чтобы обновить реестр, нужно перейти с раздела на раздел в панели, или нажать на какой-то фильтр в разделе Обращения.
Это очень не удобно.
Можно ли сделать, так чтобы нажатие на раздел "Обращения" в панели разделов слева
вызывала его обновление ( даже если при этом находишься в разделе Обращения)
Вообще, в принципе, нажатие на любой раздел в этой панели вызывало бы обновление этого раздела

По принципу того, как это сделано, например, в почте mail:
Вы находитесь в папки "Входящие", для того, чтобы увидеть новые входящие письма, не нужно переключаться с папки на папки, достаточно еще раз нажать на папку "Входяшие", и реестр входящих обновится

Нравится

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

Для обновления Вы можете нажимать caption в реестре раздела.

"Мотков Илья" написал:Для обновления Вы можете нажимать caption в реестре раздела.

Попробовал, действительно обновляется. Вот только я не знал о такой возможности? :redface:

Да, работает) Спасибо!

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