Необходимо что бы для объекта орг структуры скрывалась вкладки с деталями на странице редактирования. исходный код замещающей страницы позволяет скрыть и добавить вкладку, но при сохранении консоль выдает ошибку :
define("SysAdminUnitPageV2", ["ConfigurationConstants"],
function() {
return {
entitySchemaName: "SysAdminUnit",
attributes: {
"ITShowDetails": {

"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
"type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
"dependencies": [
{
"columns": ["ITShowDetails"],
"methodName": "showRegionsSalesAreas"

}
]

}

},
details: /**SCHEMA_DETAILS*/{

"ITRegionInOrgStructureDetail": {
"schemaName": "ITRegionInOrgStructureDetail",
"entitySchemaName": "ITRegionInOrgStructure",
"filter": {
"detailColumn": "ITSysAdminUnit",
"masterColumn": "Id"

}

}
}/**SCHEMA_DETAILS*/,
methods: {
onEntityInitialized: function() {
this.callParent(arguments);
this.showRegionsSalesAreas();
},
showRegionsSalesAreas: function() {

var showDetail = this.get("ITShowDetails");
var tabsCollection = this.get("TabsCollection");
var selectTab = tabsCollection.contains("ITRegionsSalesAreas") ?
tabsCollection.get("ITRegionsSalesAreas"):false;
if (showDetail === true && !selectTab) {
tabsCollection.insert(5, "ITRegionsSalesAreas", this.selectTab);

} else if (showDetail === false &&
selectTab) {
this.selectTab = selectTab;
tabsCollection.removeByKey("ITRegionsSalesAreas");

}
this.callParent(arguments);
}
},
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"parentName": "Tabs",
"propertyName": "tabs",
"index": 5,
"name": "ITRegionsSalesAreas",
"values": {
"caption": {"bindTo": "Resources.Strings.RegionsSalesAreasCaption"},
"items": []
}
},
{
"operation": "insert",
"name": "ITRegionInOrgStructureDetail",
"values": {
"itemType": 2,
"markerValue": "added-detail"

},
"parentName": "ITRegionsSalesAreas",
"propertyName": "items",
"index": 0

},
{
"operation": "insert",
"parentName": "Header",
"propertyName": "items",
"name": "ITShowDetails",
"values": {
"layout": {"column": 0, "row": 2, "colSpan": 12}
}

},
{
"operation": "insert",
"parentName": "Header",
"propertyName": "items",
"name": "SysAdminUnitTypeValue",
"values": {
"layout": {"column": 12, "row": 2, "colSpan": 12}
}

}
]/**SCHEMA_DIFF*/

};

});

Скрывает вкладки и добавляет, но при сохранении выдает ошибку в консоль:
less-parser.js:4151 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
xhr @ less-parser.js:4151
loadStyleSheet @ less-parser.js:4043
loadStyleSheets @ less-parser.js:3935
less.refresh @ less-parser.js:3894
(anonymous) @ less-parser.js:3910
(anonymous) @ less-parser.js:4305
less-parser.js:4199 less: parsed http://localhost:82/core/83ba267f0b2f5663dc71a6f8341355dd/combined/all-c... successfully.
less-parser.js:4199 less: css for http://localhost:82/core/83ba267f0b2f5663dc71a6f8341355dd/combined/all-c... generated in 71ms
less-parser.js:4199 less: css generated in 71ms
4all-combined.js:578 Колонка Id не объявлена в ViewModel элемента меню
log @ all-combined.js:578
getMenuItemConfig @ all-combined.js:1519
onAddItem @ all-combined.js:1518
(anonymous) @ all-combined.js:1518
each @ all-combined.js:1
each @ all-combined.js:680
onCollectionDataLoaded @ all-combined.js:1518
setControlPropertyValue @ all-combined.js:526
setControlInitialValue @ all-combined.js:525
(anonymous) @ all-combined.js:522
Terrasoft.utils.array.each @ all-combined.js:231
bind @ all-combined.js:522
bind @ all-combined.js:1105
callParent @ all-combined.js:1
bind @ all-combined.js:1516
bindMenu @ all-combined.js:1526
bind @ all-combined.js:1549
(anonymous) @ all-combined.js:1127
each @ all-combined.js:1
bindItems @ all-combined.js:1127
bind @ all-combined.js:1127
generate @ ConfigurationBootstrap.js:5596
render @ ConfigurationBootstrap.js:5558
safeExecute @ core.js:758
renderModule @ core.js:92
renderChainModule @ core.js:138
processModule @ core.js:145
(anonymous) @ core.js:237
execCb @ require.js:1693
check @ require.js:881
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1457
4all-combined.js:578 Колонка Id не объявлена в ViewModel элемента меню
log @ all-combined.js:578
getMenuItemConfig @ all-combined.js:1519
onAddItem @ all-combined.js:1518
(anonymous) @ all-combined.js:1518
each @ all-combined.js:1
each @ all-combined.js:680
onCollectionDataLoaded @ all-combined.js:1518
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
loadAll @ all-combined.js:681
(anonymous) @ ConfigurationBootstrap.js:5008
parseResponse @ all-combined.js:966
callParent @ all-combined.js:1
parseResponse @ all-combined.js:983
(anonymous) @ all-combined.js:966
callback @ all-combined.js:954
a.callback @ all-combined.js:941
callback @ all-combined.js:1
onComplete @ all-combined.js:1
onStateChange @ all-combined.js:1
(anonymous) @ all-combined.js:1
all-combined.js:578 Колонка Id не объявлена в ViewModel элемента меню
log @ all-combined.js:578
getMenuItemConfig @ all-combined.js:1519
onAddItem @ all-combined.js:1518
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
onCollectionAdd @ all-combined.js:677
callParent @ all-combined.js:1
onCollectionAdd @ all-combined.js:684
callParent @ all-combined.js:1
onCollectionAdd @ all-combined.js:713
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
doInsert @ all-combined.js:1
insert @ all-combined.js:1
add @ all-combined.js:1
add @ all-combined.js:679
addItem @ all-combined.js:685
loadProfileButtonMenu @ MainHeaderSchema.js:220
onRender @ MainHeaderSchema.js:177
render @ ConfigurationBootstrap.js:22365
callParent @ all-combined.js:1
render @ ConfigurationBootstrap.js:23464
safeExecute @ core.js:758
renderModule @ core.js:92
renderChainModule @ core.js:138
(anonymous) @ ConfigurationBootstrap.js:22294
callback @ all-combined.js:1
(anonymous) @ MainHeaderSchema.js:168
(anonymous) @ ConfigurationBootstrap.js:17229
f @ all-combined.js:470
(anonymous) @ ConfigurationBootstrap.js:17784
querySysSettingsItem @ all-combined.js:948
initGoogleTagManager @ ConfigurationBootstrap.js:17782
f @ all-combined.js:470
(anonymous) @ ConfigurationBootstrap.js:17264
(anonymous) @ ConfigurationBootstrap.js:17274
(anonymous) @ all-combined.js:477
execCb @ require.js:1693
check @ require.js:881
(anonymous) @ require.js:1136
(anonymous) @ require.js:134
(anonymous) @ require.js:1186
each @ require.js:59
emit @ require.js:1185
check @ require.js:936
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1011
(anonymous) @ require.js:134
requestObject.onreadystatechange @ profile.js:39
all-combined.js:578 Колонка Id не объявлена в ViewModel элемента меню
log @ all-combined.js:578
getMenuItemConfig @ all-combined.js:1519
onAddItem @ all-combined.js:1518
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
onCollectionAdd @ all-combined.js:677
callParent @ all-combined.js:1
onCollectionAdd @ all-combined.js:684
callParent @ all-combined.js:1
onCollectionAdd @ all-combined.js:713
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
doInsert @ all-combined.js:1
insert @ all-combined.js:1
add @ all-combined.js:1
add @ all-combined.js:679
addItem @ all-combined.js:685
loadProfileButtonMenu @ MainHeaderSchema.js:233
onRender @ MainHeaderSchema.js:177
render @ ConfigurationBootstrap.js:22365
callParent @ all-combined.js:1
render @ ConfigurationBootstrap.js:23464
safeExecute @ core.js:758
renderModule @ core.js:92
renderChainModule @ core.js:138
(anonymous) @ ConfigurationBootstrap.js:22294
callback @ all-combined.js:1
(anonymous) @ MainHeaderSchema.js:168
(anonymous) @ ConfigurationBootstrap.js:17229
f @ all-combined.js:470
(anonymous) @ ConfigurationBootstrap.js:17784
querySysSettingsItem @ all-combined.js:948
initGoogleTagManager @ ConfigurationBootstrap.js:17782
f @ all-combined.js:470
(anonymous) @ ConfigurationBootstrap.js:17264
(anonymous) @ ConfigurationBootstrap.js:17274
(anonymous) @ all-combined.js:477
execCb @ require.js:1693
check @ require.js:881
(anonymous) @ require.js:1136
(anonymous) @ require.js:134
(anonymous) @ require.js:1186
each @ require.js:59
emit @ require.js:1185
check @ require.js:936
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1011
(anonymous) @ require.js:134
requestObject.onreadystatechange @ profile.js:39
all-combined.js:578 Колонка Id не объявлена в ViewModel элемента меню
log @ all-combined.js:578
getMenuItemConfig @ all-combined.js:1519
onAddItem @ all-combined.js:1518
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
onCollectionAdd @ all-combined.js:677
callParent @ all-combined.js:1
onCollectionAdd @ all-combined.js:684
callParent @ all-combined.js:1
onCollectionAdd @ all-combined.js:713
fire @ all-combined.js:1
continueFireEvent @ all-combined.js:1
fireEventArgs @ all-combined.js:1
fireEvent @ all-combined.js:1
doInsert @ all-combined.js:1
insert @ all-combined.js:1
add @ all-combined.js:1
add @ all-combined.js:679
addItem @ all-combined.js:685
loadProfileButtonMenu @ MainHeaderSchema.js:239
onRender @ MainHeaderSchema.js:177
render @ ConfigurationBootstrap.js:22365
callParent @ all-combined.js:1
render @ ConfigurationBootstrap.js:23464
safeExecute @ core.js:758
renderModule @ core.js:92
renderChainModule @ core.js:138
(anonymous) @ ConfigurationBootstrap.js:22294
callback @ all-combined.js:1
(anonymous) @ MainHeaderSchema.js:168
(anonymous) @ ConfigurationBootstrap.js:17229
f @ all-combined.js:470
(anonymous) @ ConfigurationBootstrap.js:17784
querySysSettingsItem @ all-combined.js:948
initGoogleTagManager @ ConfigurationBootstrap.js:17782
f @ all-combined.js:470
(anonymous) @ ConfigurationBootstrap.js:17264
(anonymous) @ ConfigurationBootstrap.js:17274
(anonymous) @ all-combined.js:477
execCb @ require.js:1693
check @ require.js:881
(anonymous) @ require.js:1136
(anonymous) @ require.js:134
(anonymous) @ require.js:1186
each @ require.js:59
emit @ require.js:1185
check @ require.js:936
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1011
(anonymous) @ require.js:134
requestObject.onreadystatechange @ profile.js:39
core.js:579 Элемент SectionSummaryContainer не найден
writeErrorMessage @ core.js:579
injectedSandbox.loadModule @ core.js:513
loadSummaryModule @ SectionBundleModule.js:69086
loadSummary @ SectionBundleModule.js:69081
onRender @ SectionBundleModule.js:68813
callParent @ all-combined.js:1
onRender @ SysAdminUnitSectionV2.js:748
render @ ConfigurationBootstrap.js:22365
safeExecute @ core.js:758
renderModule @ core.js:92
renderChainModule @ core.js:138
(anonymous) @ ConfigurationBootstrap.js:22294
(anonymous) @ SectionBundleModule.js:68894
f @ all-combined.js:470
(anonymous) @ SectionBundleModule.js:68889
f @ all-combined.js:470
callback @ all-combined.js:1
(anonymous) @ SectionBundleModule.js:71423
(anonymous) @ all-combined.js:477
execCb @ require.js:1693
check @ require.js:881
(anonymous) @ require.js:1136
(anonymous) @ require.js:134
(anonymous) @ require.js:1186
each @ require.js:59
emit @ require.js:1185
check @ require.js:936
enable @ require.js:1173
init @ require.js:786
(anonymous) @ require.js:1011
(anonymous) @ require.js:134
requestObject.onreadystatechange @ profile.js:39
all-combined.js:578 Object {connectionConfig: "{"debugMode":false,"disableCallCentre":false,"isAu…se,"useNotificationSound":false,"useVideo":false}", msgServerAddress: "", assemblyName: "", success: true}
all-combined.js:1 Uncaught TypeError: Cannot read property 'apply' of undefined
at i.callParent (all-combined.js:1)
at i.showRegionsSalesAreas (SysAdminUnitPageV2.js:739)
at i.onEntityInitialized (SysAdminUnitPageV2.js:721)
at i. (SectionBundleModule.js:25284)
at f (all-combined.js:470)
at i. (SectionBundleModule.js:25269)
at i. (all-combined.js:1013)
at i.parseGetEntityResponse (all-combined.js:980)
at i. (all-combined.js:981)
at i.callback (all-combined.js:954)
callParent @ all-combined.js:1
showRegionsSalesAreas @ SysAdminUnitPageV2.js:739
onEntityInitialized @ SysAdminUnitPageV2.js:721
(anonymous) @ SectionBundleModule.js:25284
f @ all-combined.js:470
(anonymous) @ SectionBundleModule.js:25269
(anonymous) @ all-combined.js:1013
parseGetEntityResponse @ all-combined.js:980
(anonymous) @ all-combined.js:981
callback @ all-combined.js:954
a.callback @ all-combined.js:941
callback @ all-combined.js:1
onComplete @ all-combined.js:1
onStateChange @ all-combined.js:1
(anonymous) @ all-combined.js:1
core.js:579 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
file: http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...
line: 1
column: 44656
message: Uncaught TypeError: Cannot read property 'apply' of undefined
date: Thu Jun 08 2017 11:52:09 GMT+0300 (RTZ 2 (зима))
stack: TypeError: Cannot read property 'apply' of undefined
at i.callParent (http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...)
at i.showRegionsSalesAreas (http://localhost:82/0/configuration/b1e2814cad734eab60c931de3bb88cc7ru-R...)
at i.onEntityInitialized (http://localhost:82/0/configuration/b1e2814cad734eab60c931de3bb88cc7ru-R...)
at i. (http://localhost:82/0/configuration/db72f11f26ed19bd975b81f534ca9ee9/Sec...)
at f (http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...)
at i. (http://localhost:82/0/configuration/db72f11f26ed19bd975b81f534ca9ee9/Sec...)
at i. (http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...)
at i.parseGetEntityResponse (http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...)
at i. (http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...)
at i.callback (http://localhost:82/core/9081d8eb154840ddc3ec408c11264ff4/combined/all-c...)

Нравится

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

А если

entitySchemaName: "SysAdminUnit",

убрать, будет работать?

нет, потому что лог поле в схеме объекта SysAdminUnit

Тогда беда. Насколько я помню конфигурация вообще напрямую не работает с SysAdminUnit. Даже UserPageV2 работает через вьюху. Просто так сохранить в SysAdminUnit думаю не получится.

Upd. Ну да, this.entitySchemaName="VwSysAdminUnit" по-умолчанию. В SysAdminUnitRoleBasePageV2 есть метод saveEntity, который черпает столбцы для сохранения из вьюхи и отправляет их в сервис:

var config = {
	serviceName: "AdministrationService",
	methodName: "SaveRole",
	data: dataSend
};

Как минимум надо удалять entitySchemaName="SysAdminUnit" из вашей схемы, добавлять столбец во вью, альтерить sql-командой и уже дальше смотреть, работает или нет

Спасибо, подумаю над этим.

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

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

// скрипт из scr_SalesGridArea

var SalesDataSet = Services.GetNewItemByUSI('ds_Sales');
SalesDataSet.Append(); // после Append SalesDataSet.State=3 (dstInsert)
SalesDataSet('поле') = значение
SalesDataSet.Post();

Как сделать, чтобы после Post() вызывалось function dlDataOnDatasetBeforePost(Dataset, DoPost) // которая написана в wnd_SalesEditScript

в https://www.terrasoft.ru/sdk/index.html?frmname=topic&frmfile=IDatasetEv... написано, что
Если набор данных не находится в состоянии добавления или редактирования записи (значение свойства IDataset::State не равно "dstInsert" или "dstEdit"), то вызывает событие IDatasetEvents::OnDatasetBeforePost.

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

Спасибо.

Нравится

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

Марина,

Post() - это метод датасета, который вызывает событие post, а OnDatasetBeforePost - это обработчик этого события датасета, вызывающийся до того, как будет выполнен post записи.
Соответственно обработчик события OnDatasetBeforePost не может вызываться после вызова метода Post().
Если что-то должно произойти после выполнения метода Post(), то это нужно реализовать в обработчике OnDatasetAfterPost.

Для решения Вашей задачи можно вынести код, который реализован в dlDataOnDatasetBeforePost(Dataset, DoPost) в скрипте wnd_SalesEditScript, в аналогичное событие для сервиса данного датасета.
В таком случае, он будет вызываться всегда при post записи в соответствующую таблицу на уровне приложения, если post будет вызываться на уровне базы данных, то обработчик вызываться не будет.

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

При встрече с

Dataset.Cancel()

VS выводит сообщение об ошибке

Необработанное исключение в строке 65, столбце 3 в JScript - script block
0x8000ffff - неизвестное исключение, произошло

В какую сторону копать? Что можно глянуть?

Нравится

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

Возможно, этот сбой возникает на уровне Windows и прямо не связан с Terrasoft и датасетом. См. рекомендации, например, тут, где описываются самые разные возможные причины и способы устранения.

Сергей,

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

Также уточните, какую версию Terrasoft 3.X Вы используете и какую логику хотите реализовать?

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

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

Доброй день!
Может кто подскажет.
Как увеличить количество выводимых значений в поле lookup data control в карточке клиента?
Сейчас их 40.

Нравится

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

Это значение в 40 записей реестра задаётся для всей системы.
Как его менять, см. тут.

Спасибо, попробовал, значение ставиться для всех типов полей, кроме lookup data control с выставленной галочкой "выпадающий список". Вот его мне и нужно изменить. Где эта галочка и стоит.

Видимо, для выпадающего списка это задано ещё и в ядре и не меняется.
Если у Вас так много значений, есть смысл переделать выпадающий список в открываемый лукап (снять у поля нужную галочку в датасете).

Спасибо.

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

Добрый день!

В какой переменной храниться версия клиента XRM террасофт?

Нравится

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

Здравствуйте!
Подскажите пожалуйста как реализовать возможность экспорта отчета FR в xlsx. Доступно только xls, хоть в программе и прописаны все версии офиса. По большей части нужно для автоматического формирования и сохранения отчета. Если указывать в названии файла расширение xlsx - файл создается, но не открывается (((( На скрине - пользовательский экспорт отчета в Microsoft Excel.
Версия ТС - 3.4.0.38.
Спасибо!

Нравится

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

Светлана, используемый в Terrasoft движок FastReport является сторонним компонентом, влиять извне на его работу не всегда есть возможность. Если он не поддерживает сохранение в XLSX, то нельзя.

Можно попробовать следующие обходные решения:

  • Сохранять файл в XLS, потом отдельно конвертировать файлы с помощью Microsoft OFC.
  • Полностью переписать построение отчёта, вместо FastReport использовать чисто программное формирование при помощи COM-объекта Excel, там можно и XLSX.

"Зверев Александр" написал: Если он не поддерживает сохранение в XLSX, то нельзя.

Судя по форумам, вполне поддерживает. Возможно, вопрос в используемой версии в TS

Печально(( движок FR тоже ведь не заменить?
Спасибо!

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

Версия FR 4.10.18

А Владимир привёл ссылку на 5.5.9.

Менять встроенный движок нельзя.

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

В окне выбора контрагента при первом нажатии на лупу пусто. При повторном появляются нужные строки. Происходит это из-за того, что в запрос дописываются строки
LEFT OUTER JOIN
[dbo].[tbl_AccountInGroup] AS [tbl_AccountInGroupAccountID] ON [tbl_AccountInGroupAccountID].[AccountID] = [tbl_Account].[ID]

[tbl_AccountInGroupAccountID].[GroupID] = @P4

Нам эта таблица вообще не нужна, мы ею не пользуемся. Во вьюшке vw_Account ее нет. Почему она цепляется к запросу и как от нее избавиться?

Детали в прикрепленном файле

Нравится

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

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

В sq этой связи нет. В коде не нашел. Код ниже. Может быть, подскажете, где конкретно это может быть?

function edtAccountOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
if (System.GetLocalComputerName() == 'PEUWUD14431') {
debugger;
}
var LookupDataset = LookupDataControl.DataField.LookupDataset;
var CallContactID = dlData.Dataset('ContactID');
var CallDeliveryPointID = dlData.Dataset('DeliveryPointID');
EnableDatasetFilters(LookupDataset, false);
EnableDatasetFilters(LookupDataset, true, ['LawOrPersonType']);
EnableDatasetFilters(LookupDataset, true, ['IsTurnedOff']);
ApplyDatasetFilter(LookupDataset, 'CallDeliveryPointID', CallDeliveryPointID,
!IsEmptyValue(CallDeliveryPointID));
if (IsEmptyValue(CallDeliveryPointID)) {
ApplyDatasetFilter(LookupDataset, 'CallContactID', CallContactID,
!IsEmptyValue(CallContactID));
}
}

function Initialize(Window) { // if (System.GetLocalComputerName() == 'PEUWUD14431') { debugger; }
InitializeGlobalVariables();
InitializeDataset(Window);
InitializeButtons(SelectData.Dataset);
InitializeGlobalDatalinks();
InitializeGroups(SelectData.Dataset, Window);
InitializeGridArea(Window);
SetWindowCaption(Window);
ReadAttributes(Window);
InitalizeImages(Window);
edtSearchFor.Value = SelectData.SearchValue;
if (SelectData.IsInitialized != true) {
AddDisplayFields();
SelectData.IsInitialized = true;
}
AddSearchFields();
}

function SimpleWindowOnPrepare(Window) {
if (Window.Attributes('EventsLogTag') == 2) {
return;
}
if (Main.ToLogGridWindow && (Window.TemplateWindowUSI == 'wnd_BaseGridArea')) {
EventLog_ParseObjectInfo(Window);
} else if (Main.ToLogEditWindow &&
((Window.TemplateWindowUSI == 'wnd_BaseDBEdit') ||
(Window.TemplateWindowUSI == 'wnd_BaseDBEditEx'))) {
EventLog_ParseObjectInfo(Window);
}
Window.Attributes('EventsLogTag') = 2;
}

В sq этой связи нет. В коде не нашел. Код ниже. Может быть, подскажете, где конкретно это может быть?

function edtAccountOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
if (System.GetLocalComputerName() == 'PEUWUD14431') {
debugger;
}
var LookupDataset = LookupDataControl.DataField.LookupDataset;
var CallContactID = dlData.Dataset('ContactID');
var CallDeliveryPointID = dlData.Dataset('DeliveryPointID');
EnableDatasetFilters(LookupDataset, false);
EnableDatasetFilters(LookupDataset, true, ['LawOrPersonType']);
EnableDatasetFilters(LookupDataset, true, ['IsTurnedOff']);
ApplyDatasetFilter(LookupDataset, 'CallDeliveryPointID', CallDeliveryPointID,
!IsEmptyValue(CallDeliveryPointID));
if (IsEmptyValue(CallDeliveryPointID)) {
ApplyDatasetFilter(LookupDataset, 'CallContactID', CallContactID,
!IsEmptyValue(CallContactID));
}
}

function Initialize(Window) { // if (System.GetLocalComputerName() == 'PEUWUD14431') { debugger; }
InitializeGlobalVariables();
InitializeDataset(Window);
InitializeButtons(SelectData.Dataset);
InitializeGlobalDatalinks();
InitializeGroups(SelectData.Dataset, Window);
InitializeGridArea(Window);
SetWindowCaption(Window);
ReadAttributes(Window);
InitalizeImages(Window);
edtSearchFor.Value = SelectData.SearchValue;
if (SelectData.IsInitialized != true) {
AddDisplayFields();
SelectData.IsInitialized = true;
}
AddSearchFields();
}

function SimpleWindowOnPrepare(Window) {
if (Window.Attributes('EventsLogTag') == 2) {
return;
}
if (Main.ToLogGridWindow && (Window.TemplateWindowUSI == 'wnd_BaseGridArea')) {
EventLog_ParseObjectInfo(Window);
} else if (Main.ToLogEditWindow &&
((Window.TemplateWindowUSI == 'wnd_BaseDBEdit') ||
(Window.TemplateWindowUSI == 'wnd_BaseDBEditEx'))) {
EventLog_ParseObjectInfo(Window);
}
Window.Attributes('EventsLogTag') = 2;
}

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

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

Здравствуйте, у нас такая проблема с визированием: в предприятии ввели новую должность, мы создали контакт, наделили всеми проваии. Теперь необходимо чтоб при визировании все документы проходили через этого человека. Где это настраивается?
На данный момент при нажатии отправить на визирование документ отправляется в определеной последовательности лицам на согласование, где изменить эту последовательность?

Нравится

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

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

Александр, эта логика с цепочками визирования разработана в ходе проекта. По её настройке уточните у тех, кто её разработали.

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

Я хочу изменить значение по умолчанию аттрибута IsReadOnly для окна выборки.
Я так понимаю это должно быть доступно в обработчике события OnPrepareSelectWindow LookupDataField, однако не смог разобраться как. все, что смог найти - это указать SelectWindowUSI и настроить LoockupDataset для окна выбора.

Нравится

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

Денис, этот атрибут задаётся в свойствах или датасета, или окна. Вот как он проверяется в скрипте scr_SelectData:

	var IsReadOnlyFromDataset = 
		GetAttribute(SelectData.Dataset, IsReadOnlyAttrName);
	var IsReadOnlyFromWindow = GetAttribute(Window, IsReadOnlyAttrName);
	SelectData.IsReadOnly = IsReadOnlyFromDataset || IsReadOnlyFromWindow;

А так он задаётся в обработчике OnPrepareSelectWindow в wnd_CampaignEditScript:

function edtOwnerOnPrepareSelectWindow(LookupDataControl) {
	PrepareLookupDataControl(LookupDataControl, dlData.Dataset);
}

Эта функция в scr_WindowUtils:

function PrepareLookupDataControl(LookupDataControl, Dataset) {
	var DataFieldName = LookupDataControl.DataFieldName;
	var DataField = Dataset.DataFields.ItemsByName(DataFieldName);
	var LookupDataset = DataField.LookupDataset;
	SetAttribute(LookupDataset, 'IsReadOnly', true);
}
Показать все комментарии

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

Как сравнить код исходного и редактированного скриптов?

Сохраняю на диске исходный файл, добавляю изменения в коде, и сохраняю измененный файл. Далее открываю оба эти файла по Compare(MS Visual Studio Compare, UltraCompare).
Если файл - ds_xxx.xml или sq_xxx.xml, то сравнивать получается.
А если файл - xxx_Script.xml, UltraCompare открывает в таком виде: Text="FFFE2F002F002D002D002D002D002D002D002D002D00.... и сравнивать код не получается.

Спасибо.

Нравится

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

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

Выгрузите исходные файлы в js формате, после чего выполните сравнение.

Как альтернатива, можете воспользоваться сторонними приложениями для сравнения:

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

Как Вы сохраняете файл в js формате ?

Версия террасофт 3.2.0.90

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

Пример выгрузки js файлов, с определенной даты изменения:

TSMergeServices.exe /opr=Extract /cfg="ADL350" /wauth=true /mfrom="26.01.2014" /dir="C:\ExtractServises" /fmt=true /js=true

Более подробно об TSMergeServices можете почитать в статье Полезные утилиты. Часть 2. Merge Services

Спасибо !

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