закрытие окна
закрытие
7.15
Sales_Creatio_enterprise_edition

Как можно сделать что бы карточка при создании записи не закрывалась?

Пробовал два метода описанные тут https://community.terrasoft.ua/questions/zakrytie-zapisi-pri-sohranenii и https://community.terrasoft.ua/questions/thissave-prervat-zakrytie-kartocki-vozvrat-k-predydusei-kartocke-v-shain тут, но не один из них не помог

Нравится

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

Александр, обратите ещё внимание на более новую статью по теме:

«Как сохранять, не закрывая, открытую бизнес-процессом страницу редактирования».

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

Видел статью, пробовал, не работает. Видимо что-то не туда пишу

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

Показать все комментарии
бизнес-процесс
задач
закрытие
карточек
полей
редактирования
Бизнес-процессы
Разработка

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

Имеется БП построенный на задачах.
Требуется закрыть для редактирования поля всех задач в одном бизнес-процессе. Поля необходимо закрыть все кроме дата завершения и ответственный.
Подскажите, более подробно, реализацию метода описанного в этой теме: https://community.terrasoft.ua/forum/topic/3864.
Как я понял из этой же темы через действия БП такой функционал не реализовать?

Нравится

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

Здравствуйте!
В tbl_Task есть поле WorkflowItemID, которое ссылается на таблицу tbl_WorkflowItem, в таблице tbl_WorkflowItem есть поле WorkflowID, которое является записью в tbl_Workflow
В tbl_Workflow есть поля DiagramServiceID,Name, по одному из которых мы можем сделать привязку и понять с какого БП мы создали задачу.
По сути нужно выполнить следующий запрос
[sql]
SELECT Name FROM dbo.tbl_Workflow
WHERE id = (
SELECT WorkflowID FROM dbo.tbl_WorkflowItem
WHERE ID = (SELECT WorkflowItemID from tbl_Task
WHERE id = '{ID Задачи}')
)

[/sql]
В конфигурации данные действия нужно делать через сервисы Dataset:
ds_WorkflowItem
ds_Workflow
Но перед этим их нужно немного доработать, а именно добавить в sq_WorkflowItem, параметр ID и CompareFilter ID
1

2
Далее на OnPrepare, карточки задачи (wnd_TaskEdit) мы можем делать не активными (свойство IsEnabled) соотвествующие поля

[javascript]
function wnd_TaskEditOnPrepare(Window) {
...
if (!IsEmpty(WorkflowItemID))
{
var WorkflowID = GetDatasetFieldValueByID('ds_WorkflowItem',WorkflowItemID,'WorkflowID');
var WorkflowName = GetDatasetFieldValueByID('ds_Workflow',WorkflowID,'Name');
if (WorkflowName == 'wd_TestTask')
{
//нужные поля которые необходимо отключить, для примера поле Контрагент edtAccount
edtAccount.IsEnabled = false;
}

}
} //end of function
[/javascript]

Алексей спасибо, все работает!

Показать все комментарии
закрытие
отследить
файл
Технические вопросы
Разработка

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

Нравится

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

Ищите в этом направлении (на sdk):
IFileChangeNotifier
Пример есть в scr_FilesDetailGridArea.
Сам пока не трогал, т.к. не было подобных задач, посему больше не подскажу)

Юрий, добрый день.

Попробуйте изменить некоторые функции из scr_FilesDetailGridArea следующим образом:

[javascript]
function SetFileIsChanged(FileChangeNotifier, FileName, FileID) {
var Dataset = FilesDetailGridArea.ChangedFilesDataset;
if (IsCanSaveChangeFile(FileID)) {
Dataset.Append();
Dataset.ValAsGUID('ID') = FileID;
Dataset.ValAsStr('Name') = FileName;
Dataset.Post();
RefreshGrid();
if (ShowConfirmationDialog(DoYouWantToSaveChangedFileToDatabase) ==
mrYes) {
SaveFileInDataBase(FileID, FileName);
UnlockFile();
dlData.Dataset.RefreshRecord(FileID, false);
Dataset.Delete();
RefreshGrid();
} else {
UnlockFile();
}
}
}

function grdDataOnDblClick(Control) {
if (amiOpen.IsEnabled){
LockFile();
EditObject(true);
}
}

function amiSaveOnExecute(ActionMenuItem) {
SaveToFile();
UnlockFile();
}

function amiSaveChangedFilesOnExecute(ActionMenuItem) {
SaveChangedFiles();
UnlockFile();
}

function amiOpenOnExecute(ActionMenuItem, Sender) {
LockFile();
EditObject(false);
UpdateButtons();
}
[/javascript]

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

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

Юрий, дело в том, что на текущий момент нет возможности отследить момент завершения работы с файлом. У объекта, который связан с файлом, есть возможность подписаться на событие OnFileChange и OnFileDelete. Поэтому в решении момент сохранения файла в БД воспринимается как сигнал к разблокировке файла. Согласен, что в некоторых случаях это не совсем верно, но пока другой более подходящей возможности нет.

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

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