Добрый день!

Можно ли добавить на партнёрский портал пользовательские разделы?

Нравится

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

Добрый день, Вадим!
 

Партнерский портал доступен в продуктах Sales Creatio enterprise и CRM Creatio.

По условиям лицензии на клиентском портале можно настраивать и использовать до трех пользовательских разделов. Чтобы пользовательский раздел появился на портале, необходимо настроить его в мастере разделов и добавить в рабочее место “Портал”.
 

На страницу раздела можно добавить любые объекты системы, например, детали, поля и т. д. Количество объектов зависит от конфигурации портала (портал самообслуживания, клиентский портал) и регулируется условиями лицензии. Например, на портале самообслуживания можно добавить на страницу не больше 25 объектов, на пользовательском портале — не больше 125. При превышении количества объектов, используемых на странице записи раздела, на портале блокируется возможность добавления и редактирования записей.
 

Более дательная информация в статье на Академии: https://academy.terrasoft.ru/docs/user/instrumenty_prodazh/partnerskie_…

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

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

Нравится

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

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

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

Проблема решена при помощи переопредления метода:

getGridRowViewModelConfig: function(config) {
                var result = this.callParent(arguments);
                if (result && result.rowConfig && result.rowConfig.Contact) {
                    result.rowConfig.Contact.lookupListConfig = {
                        "filters": [
                            function() {
                                var vendor = this.get("Vendor");
                                var filterGroup = Ext.create("Terrasoft.FilterGroup");
                                if (vendor && vendor.value) {
                                    filterGroup.add("Account",
                                        Terrasoft.createColumnFilterWithParameter(
                                            Terrasoft.ComparisonType.EQUAL, "[AccountInVendor:Account:Account].Vendor", vendor.value));
                                } else {
                                    filterGroup.add("Empty", Terrasoft.createColumnIsNullFilter("Id"));
                                }
                                
                
                                return filterGroup;
                            }
                        ]
                    };
                }
                return result;
            },

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

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

Нравится

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

Александр, деталь с карточкой или с редактируемым реестром?

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

В разделе есть несколько типов страницы редактирования. Как установить условия на видимость кнопки добавления для одного из типов? В каком модуле определены данные кнопки? Заранее спасибо!

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

Нравится

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

В diff схемы реестра раздела добавляем 

{
            "operation": "merge",
            "name": "SeparateModeAddRecordButton",
            "parentName": "SeparateModeActionButtonsLeftContainer",
            "propertyName": "items",
            "values": {
                "itemType": Terrasoft.ViewItemType.BUTTON,
                "style": Terrasoft.controls.ButtonEnums.style.GREEN,
                "caption": {"bindTo": "AddRecordButtonCaption"},
                "click": false,
                "visible": {"bindTo": "IsAddRecordButtonVisible"},
                "classes": {
                    "textClass": ["actions-button-margin-right"],
                    "wrapperClass": ["actions-button-margin-right"]
                },
                "controlConfig": {
                    "menu": {
                        "items": {
                            "bindTo": "EditPages",
                            "bindConfig": {
                                "converter": function(editPages) {

                                    if (editPages.getCount() === 0) {
                                        return null;
                                    }
                                    var operationHash = {
                                        "38d26ca1-ab6a-474c-950d-f9ac9b630967": "CanAbilityToAdd1", //здесь guid это id справочника по которому определяется страница редактирования
                                        "2495b17d-2465-41cb-b625-ac36d9aef931": "CanAbilityToAdd2"
                                    };
                                    
                                    var allowedPages = [];
                                    
                                    if (this.get("CanAbilityToAdd1")) {
                                        allowedPages.push("CanAbilityToAdd1");
                                    }
                                    
                                    if (this.get("CanAbilityToAdd2")) {
                                        allowedPages.push("CanAbilityToAdd2");
                                    }

                                    for (var key in operationHash) {
                                        var hashItem = departmentToOperationHash[key];
                                        if (allowedPages.indexOf(hashItem) === -1) {
                                            editPages.collection.remove(editPages.collection.getByKey(key));
                                        }
                                    }
                                    return editPages;
                                }
                            }
                        }
                    }
                }
            }
        }
}

 

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

initCanAbilityToAdd1: function() {
                RightUtilities.checkCanExecuteOperation({
                    operation: "CanAbilityToAdd1"
                }, function(result) {
                    this.set("CanAbilityToAdd1", result);
                }, this);
            },

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

Кнопки для добавления разных типов записей генерируются автоматически в зависимости от информации в таблице SysModuleEdit и поля TypeColumnValue в этой таблице.

Названия пунктов меню для разных страниц редактирования берутся из поля ActionKindCaption.

Более подробную информацию посмотрите в этом посте.

Пользовательскими настройками (без внесения дополнительных изменений в программный код) настроить видимость пункта меню в кнопке [Добавить] этого сделать не получится.

Базовая логика добавления пунктов меню для кнопки [Добавить] раздела реализована в схеме 'BaseDataView' пакета NUI.

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

Надежда, ещё есть радикальный пользовательский способ: включить администрирование по записям для объекта справочника типов этого раздела и убрать у ненужного типа права на чтение для всех (кроме администраторов). Так нельзя будет выбрать этот тип при создании записи в разделе. Но нужно убедиться, корректно ли в этом случае будут видимы существующие записи с этим типом в разделе.

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

Не уверенна, что разграничение прав доступа, как-то повлияет на видимость пункта меню кнопки [Добавить] для этого типа.

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

В diff схемы реестра раздела добавляем 

{
            "operation": "merge",
            "name": "SeparateModeAddRecordButton",
            "parentName": "SeparateModeActionButtonsLeftContainer",
            "propertyName": "items",
            "values": {
                "itemType": Terrasoft.ViewItemType.BUTTON,
                "style": Terrasoft.controls.ButtonEnums.style.GREEN,
                "caption": {"bindTo": "AddRecordButtonCaption"},
                "click": false,
                "visible": {"bindTo": "IsAddRecordButtonVisible"},
                "classes": {
                    "textClass": ["actions-button-margin-right"],
                    "wrapperClass": ["actions-button-margin-right"]
                },
                "controlConfig": {
                    "menu": {
                        "items": {
                            "bindTo": "EditPages",
                            "bindConfig": {
                                "converter": function(editPages) {

                                    if (editPages.getCount() === 0) {
                                        return null;
                                    }
                                    var operationHash = {
                                        "38d26ca1-ab6a-474c-950d-f9ac9b630967": "CanAbilityToAdd1", //здесь guid это id справочника по которому определяется страница редактирования
                                        "2495b17d-2465-41cb-b625-ac36d9aef931": "CanAbilityToAdd2"
                                    };
                                    
                                    var allowedPages = [];
                                    
                                    if (this.get("CanAbilityToAdd1")) {
                                        allowedPages.push("CanAbilityToAdd1");
                                    }
                                    
                                    if (this.get("CanAbilityToAdd2")) {
                                        allowedPages.push("CanAbilityToAdd2");
                                    }

                                    for (var key in operationHash) {
                                        var hashItem = departmentToOperationHash[key];
                                        if (allowedPages.indexOf(hashItem) === -1) {
                                            editPages.collection.remove(editPages.collection.getByKey(key));
                                        }
                                    }
                                    return editPages;
                                }
                            }
                        }
                    }
                }
            }
        }
}

 

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

initCanAbilityToAdd1: function() {
                RightUtilities.checkCanExecuteOperation({
                    operation: "CanAbilityToAdd1"
                }, function(result) {
                    this.set("CanAbilityToAdd1", result);
                }, this);
            },

Да, Алла права, похоже, права на запись в справочнике типов не влияют, ведь выпадающий список формируется по объекту «Страница редактирования». А он общий для всех разделов. В таком случае лучше воспользоваться доработкой по предложению Евгения.

 

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

Полозюков Евгений Петрович,

 пытаюсь сделать что-то подобное, все проверила 10 раз, но отладчик выдает:

Uncaught (in promise) TypeError: RightUtilities.checkCanExecuteOperation is not a function

А Вы добавили в начале в квадратных скобках и параметрах ссылку на RightUtilities? Посмотреть, как это сделано, можно в других схемах, где её используют:

define("SysOperationAuditSectionV2", ["BaseFiltersGenerateModule", "SysOperationAudit", "SysOperationAuditArch",
	"RightUtilities"],
function(BaseFiltersGenerateModule, SysOperationAudit, SysOperationAuditArch, RightUtilities) {
	return {

 

Зверев Александр, да, была проблема с последовательностью схем и параметров, передаваемых в схему)

Алла Савельева,

 

Спасибо, что подсказали на тему замещения BaseDataView. Натолкнули на верный путь!

Если кому то поможет, вот проверка на доступ к просмотру указанного типа страницы. Очень коряво, но я учусь и это работает)

define("ActivitySectionV2", ["ConfigurationConstants","RightUtilities","ProcessModuleUtilities","BaseDataView"],
function(ConfigurationConstants,RightUtilities,ProcessModuleUtilities) {
	return {
		entitySchemaName: "Activity",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: 
		{ 
			"UsrCanManageItTask": {
				dataValueType: this.Terrasoft.DataValueType.BOOLEAN,
				type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				value: false
			}
		},
		diff: /**SCHEMA_DIFF*/[
 
			]/**SCHEMA_DIFF*/,
		methods: {
			init: function()
			{
					this.getUserSettingsOperationRight();
					window.console.log("Инициализация");
					this.callParent(arguments);
					window.console.log("Права");
 
			},
 
			initEditPages: function() {
				window.console.log("Определение кнопок начало");
 
				var enabledEditPages = new this.Terrasoft.Collection();
 
					this.callParent(arguments);
					var editPages = this.get("EditPages");
 
					window.console.log("Получение страниц");
					var flag = this.get("UsrCanManageItTask");
					this.Terrasoft.each(editPages.getItems(), function(item) {
						window.console.log("Проверка типа");
						window.console.log(item.get("Id"));
						//window.console.log(ConfigurationConstants.Activity.Type.Email);ConfigurationConstants.Activity.Type.Call
						if (item.get("Id") !== "e2831dec-cfc0-df11-b00f-001d60e938c6" &&
							item.get("Id") !== "e1831dec-cfc0-df11-b00f-001d60e938c6") {
 
							if (item.get("Id") !== "f5921924-3e81-4a5f-ae4c-5a6f1b6e7661")
							{
								enabledEditPages.add(item);
								//window.console.log("ок");
							}
							else { 
								if (flag)
								{
										enabledEditPages.add(item);
										//window.console.log("ок");
								}
							}
						}
					});
					window.console.log("Проверка типа конец");
					this.set("EnabledEditPages", enabledEditPages);
 
					window.console.log("Определение кнопок конец");
			},
 
			getFilters: function() {
						window.console.log("Добавление фильтра");
						var filters = this.callParent(arguments);
						if (!this.get("UsrCanManageItTask"))
						{
							filters.add("NotItTask", this.Terrasoft.createColumnFilterWithParameter(
							this.Terrasoft.ComparisonType.NOT_EQUAL, "Type", "f5921924-3e81-4a5f-ae4c-5a6f1b6e7661"
							));
							window.console.log("Добавление фильтра");
						}
						return filters;
			},
 
			getUserSettingsOperationRight: function() {
				//debugger;
				var operationsToRequest = ["UsrCanManageItTask"];
				//operationsToRequest.push("UsrCanManageItTask");
				window.console.log("Права");
 
				RightUtilities.checkCanExecuteOperations(operationsToRequest, function(result) {
					if (result) {
						this.set("UsrCanManageItTask", result.UsrCanManageItTask);
						window.console.log("Права на ит-задачи: "+result.UsrCanManageItTask);
					}
				}, this);
			}
		}
 
	};
});

 

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

Собственно, сабж. Картинкой будет более понятно, с пояснениями:

 

1) Добавляем активность используя выборку объектов, предположим неких кастомных "эмейлов" (отдельный объект, не активность) 

2) В наших кастомных звонках, выборку по которым мы делаем, нет поля "контакт", зато есть поле "договор", который уже содержит в себе "контакт". 

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

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

Спасибо.

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

Роман, зарегистрировали идею в элементе БП «Добавить данные» при выборе значения в поле добавляемого объекта из пункта меню 'Колонка из выборки' дать возможность выбрать колонки других объектов по связям. Спасибо за предложение.

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

Здравствуйте. Пытаюсь добавить новую деталь в раздел Контакты на вкладку история.
1. Создал схему представления детали с реестром (RequestDetail), в зависимостях указал родительский объект Request
2. создал замещающий клиентский модуль для страницы раздела контакт (ContactPageV2)

/////////////////////////
//код СontactPageV2//
/////////////////////////

define("ContactPageV2", ["ContactPageV2Resources",
"ConfigurationItemGenerator"],
function(resources) {
return {
entitySchemaName: "Contact",
details: /**SCHEMA_DETAILS*/{
Request: {
/*// name: "Request", - ����� ���� ������� name, �� ��������� ������� ��� ������� ��������� ������
filter: {masterColumn: "Id", detailColumn: "ContactId"}, // masterColumn ������������, �� ��������� - "Id"
filterMethod: function() {
}, // ����� ��� �������� ������� - ��� ������� ����������
defaultValues: {"Number": "50",
"Name": "Default11"} // �������� �� ���������*/
schemaName: "RequestDetail",
filter: {
masterColumn: "Id",
detailColumn: "Contact"
}
}
}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[

{
"operation": "insert",
"parentName": "HistoryTab",
"propertyName": "items",
"name": "Request",
"values": {
"itemType": Terrasoft.ViewItemType.DETAIL
}
}
]/**SCHEMA_DIFF*/
};
});

///////////////////////
//код RequestDetail//
///////////////////////

define("RequestDetail", ["terrasoft","Request","RequestDetailResources"],
function(terrasoft,entitySchema,resources) {
return {
/**
* ��� ����� �������
* @type {String}
*/

entitySchemaName: "Request",
messages: { },
attributes: { },
diff: [ {
"operation": "insert",
"name": "DataGrid",
"values": {
type: "listed",
listedConfig: {
name: "DataGridListedConfig",
items: [
{
name: "NumberListedGridColumn",
bindTo: "Number",
type: Terrasoft.GridCellType.TEXT,
position: {
column: 1,
colSpan: 12
}
},
{
name: "DateListedGridColumn",
bindTo: "Date",
type: Terrasoft.GridCellType.TEXT,
position: {
column: 13,
colSpan: 6
}
}
]
},
tiledConfig: {
name: "DataGridTiledConfig",
grid: {columns: 24, rows: 3},
items: [
{
name: "NumberTiledGridColumn",
bindTo: "Number",
type: Terrasoft.GridCellType.TEXT,
position: {
row: 1,
column: 1,
colSpan: 24
},
captionConfig: {
visible: true
}
}
]
}
}
}
]
};
});

Нравится

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

Уже разобрался. Не указал базовый объект схемы детали.

Как добавить действие детали? Ни getSectionActions, ни getActions не срабатывают.

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

Посмотрите, пожалуйста, данный топик

"Резниченко Сергей" написал:

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

Посмотрите, пожалуйста, данный топик


Данный топик является примером добавления действия для раздела. Я же пытаюсь добавить действия для ДЕТАЛИ.
После просмотра файла BaseDetailV2 от которого наследуется деталь выяснялось, что для деталей не предусмотрен базовый метод getActions. Значит действие для ДЕТАЛИ добавить нельзя. Верно?
Тогда, возможно, для каждой записи детали можно добавить кнопку? Подскажите как это реализовать.

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

Вся манипуляции с действиями детали находится в BaseGridDetailV2, там есть

// Действия
{
   "operation": "insert",
   "name": "ActionsButton",
   "parentName": "Detail",
   "propertyName": "tools",
   "values": {
      "itemType": Terrasoft.ViewItemType.BUTTON,
      "caption": {"bindTo": "Resources.Strings.ActionsButtonCaption"},
      "visible": false,
      "menu": []
   }
},

В эту схему в меню и надо добавлять. Приведу небольшой пример:

{
                                                                              "operation": "insert",
                                                                              "name": "CopyRecordMenu",
                                                                              "parentName": "ActionsButton",
                                                                              "propertyName": "menu",
                                                                              "values": {
                                                                                              "caption": {"bindTo": "Resources.Strings.CopyMenuCaption"},
                                                                                              "click": {"bindTo": "copyRecord"},
                                                                                              "enabled": {"bindTo": "getCopyRecordMenuEnabled"}
                                                                              }
                                                               },
 
 {
                                                                              "operation": "insert",
                                                                              "name": "EditRecordMenu",
                                                                              "parentName": "ActionsButton",
                                                                              "propertyName": "menu",
                                                                              "values": {
                                                                                              "caption": { "bindTo": "Resources.Strings.EditMenuCaption" },
                                                                                              "click": { "bindTo": "editRecord" },
                                                                                              "enabled": {"bindTo": "getEditRecordButtonEnabled"}
 
                                                                              }
                                                               },

"Резниченко Сергей" написал:

Огромное спасибо! Все работает

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

Здравствуйте, помогите решить задачу!
Нужно добавить кнопку загрузки файла, кнопку загрузки фото, и кнопку импорта данных!
Два варианта:
1. В карточке продажи в раздел Действия(там где печатные формы).
2. На страницу карточки продаж где то возле текстовых полей.
Буду благодарен за любую информацию.

Нравится

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

Если это в 5 версии, тогда есть контрол UploadFile/Поле загрузки файла, что бы его увидеть возле поиска в левой панеле есть иконка нажми на нее и в самом низу нажми на "Все" в разделе "Элементы"

Юрий, если вопрос по BPMonline 7.0 для решения задачи по загрузке файлов, в качестве примера воспользуйтесь, пожалуйста, реализацией датали «Файлы и ссылки».
Схема FileDetail: методы onFileSelect, onFileLoad.
Код, реализующий добавление кнопки загрузки имеет вид:

buttonsContainer.items = [{
	className: 'Terrasoft.Button',
	id: 'addFileButton',
	caption: resources.localizableStrings.AddFileCaption,
	tag: 'addFileButton',
	fileUpload: true,
	click: {
		bindTo: 'onAddFileClick'
	}
				}];

Связка метода onFileSelect с обработчиком события onAddFileClick:

this.methods.onAddFileClick = function(event) {
	var button = Ext.getCmp('addFileButton');
	button.on('filesSelected', this.onFileSelect, this);
	};
Показать все комментарии

Подскажите пожалуйста. Вопрос у меня по работе с БД.
Необходимо осуществить добавления в БД не повторяющихся данных из файла. Как получить данные из файла и добавить я разобрался. Добавление делаю с помощью insert:

if (????????){
var insert = new Insert(UserConnection)
  .Into("ConfItemsCode")
  .Set("Name", Column.Const(str));
  insert.Execute();
}

Но передо добавлением в БД мне надо проверить есть ли в этой таблице уже такая запись. Делаю это так:
var select = new Select(UserConnection)
  .Column("Name")
  .From("ConfItemsCode")
  .Where("Name").IsEqual(str); // пробовал и IsLike

str - это переменная типа string - данный из файла.
Вопрос: Как мне узнать есть ли в select какие -либо записи. Пробовал RowCount, HasCondition. Подскажите как это сделать правильно. Желательно получить int или bool для того чтобы проверить а только потом добавлять.

Нравится

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

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

Проще всего воспользоваться EnitySchemaQuery классом:

string Str = "test";
 
 
var manager = UserConnection.EntitySchemaManager;
var query = new EntitySchemaQuery(manager, "Account");
var currentAccountId = query.AddColumn(query.RootSchema.PrimaryColumn.Name);
var accountPhone = query.AddColumn("Name").Name;
query.Filters.Add(query.CreateFilterWithParameters(FilterComparisonType.Equal, "Name", Str));
var queryResult = query.GetEntityCollection(UserConnection);
if (queryResult.Count == 0) 
{
       var insert = new Insert(UserConnection)
  .Into("ConfItemsCode")
  .Set("Name", Column.Const(str));
  insert.Execute();
}

Дмитрий, спасибо. Все получилось

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

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

var Column = Self.CreateComponent('DataGridColumn', 'colProcessed');
grdData.ActiveView.Add(Column);
grdData.ActiveView.ItemsByName('colProcessed').DataFieldName = 'Processed';

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

var ColumnObject = grdData.ActiveView.ItemsByName('colProcessed');
grdData.ActiveView.RemoveItem(ColumnObject);

Нравится

Поделиться

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

Здравствуйте!
У меня во вновь созданном разделе без видимых причин не активизируется кнопка "Добавить", хотя данные в реестре есть, показываются, корректируются, и т.д. Ввод новых данных из-за этого невозможен.
Привожу код скрипта Workspace. Скрипт создан по материалам статьи, приведеннной на сайте. Таким образом создал уже не один раздел, но с этим проблемы. Отладкой проверял, код, изменяющий статус кнопки не выполняется.

//-----------------------------------------------------------------------------
// scr_TechViewActWorkspace
//-----------------------------------------------------------------------------

var TechViewActWorkspace = new Object();

function InitializeGridData() {
var GridWindow = wndGridData.Window;
PrepareGridWindow(GridWindow, dlTechViewAct);
PrepareCommonDetails('ActID');
}

function Initialize() {
InitializeGroups('tbl_TechViewActGroup', 'ds_TechViewActInGroup', 'ActID');
InitializeGridData();
//InitializeDatePeriod();
OpenGroupsDataset();
}

function RefreshTechViewAct() {
RefreshWorkspace();
}

function InitializeWorksDetail() {
TechViewActWorkspace.WorksWindow = wndWorksDetail.Window;
SetAttribute(TechViewActWorkspace.WorksWindow,
'ParentItemFieldName', 'ActID');
SetAttribute(TechViewActWorkspace.WorksWindow,
'WorkspaceGridDataset', BaseWorkspace.GridDataset);
TechViewActWorkspace.WorksWindow.Prepare();
TechViewActWorkspace.WorksDataset = TechViewActWorkspace.
WorksWindow.ComponentsByName('dlData').Dataset;
}

function RefreshWorksDetail() {
if (TechViewActWorkspace.InitializeWorksFlag != true) {
InitializeWorksDetail();
TechViewActWorkspace.InitializeWorksFlag = true;
}
var ActID = BaseWorkspace.GridDataset.ValAsGUID('ID');
SetAttribute(TechViewActWorkspace.WorksWindow, 'ParentItemID',
ActID);
RefreshDetailData(BaseWorkspace.GridDataset, 'ID',
TechViewActWorkspace.WorksDataset, 'ActID');
}

function RefreshDetails() {
if (dlTechViewAct.Dataset.State == dstInactive) {
return;
}
if (pcDetails.ActivePage.Name == pgGroupsDetail.Name) {
RefreshGroupsDetail(BaseWorkspace, wndGroupsDetail,
'ActID', 'ds_TechViewActInGroup', 'tbl_TechViewActGroup', "Акт техосмотра");
} else {
if (pcDetails.ActivePage.Name == pgWorksDetail.Name) {
RefreshWorksDetail();
}
}
}

// --------------------------------------------------------
// Event handlers
//

function wnd_TechViewActWorkspaceOnPrepare(Window) {
Initialize();
}

function dlGroupsOnDatasetAfterPositionChange(Dataset) {
scr_BaseWorkspace.dlGroupsOnDatasetAfterPositionChange(Dataset);
RefreshWorkspace();
}

function dlTechViewActOnDatasetBeforeOpen(Dataset, DoOpen) {
var IsInSingleRowMode = GetIsInSingleRowMode();
if (IsInSingleRowMode != true) {
ApplyStandardWorkspaceFilter();
}
}

function wnd_TechViewActWorkspaceOnNotify(ScriptableService, Sender, Message, Data) {
if ((Message == MSG_GROUPSCHANGED) &&
(pcDetails.ActivePage.Name == pgGroupsDetail.Name)) {
RefreshDetails();
return;
}
scr_BaseWorkspace.wnd_BaseWorkspaceOnNotify(ScriptableService, Sender, Message, Data);
}

function dlTechViewActOnDatasetAfterPositionChange(Dataset) {
RefreshDetails();
}

function dlTechViewActOnDatasetRefreshRecord(Dataset, KeyValue, AddNewRecordOnPage) {
if (AddNewRecordOnPage) {
AddItemInGroup(BaseWorkspace.GroupsDataset, 'ds_TechViewActInGroup', KeyValue, 'ActID');
RefreshDetails();
}
}

function pcDetailsOnChangeActivePage(Pages) {
RefreshDetails();
}

Нравится

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

Проверьте следующее:
1) есть ли у пользователя права на добавление записей в этом разделе (через Администрирование)
2) установлена ли в датасете раздела галки "Добавление" и "Генерировать запрос на вставку"

Возможно в скрипте родительского окна прописано ограничение на количество кнопок

1. Пользователь supervisor.
2. Обе галки включены.

Какое окно считается родительским? Для окон этого раздела я скрипт составлял сам и не представляю, где это ограничение можно прописать.

А в скрипте к гриду (wnd_TechViewActGridAreaScript) никаких действий с кнопками не производится?

Нет. Скрипт простой:

//-----------------------------------------------------------------------------
// scr_TechViewActGridArea
//-----------------------------------------------------------------------------

function Initialize(Window) {
SetAttribute(Window, 'EditWindowUSI', 'wnd_TechViewActEdit');
SetAttribute(Window, 'ParentItemFieldName', 'ActID');
}

// --------------------------------------------------------
// Event handlers
//

function wnd_TechViewActGridAreaOnPrepare(Window) {
Initialize(Window);
wnd_BaseGridAreaOnPrepare(Window);

}

Тогда надо проверить scr_BaseGridArea и scr_BaseGridAreaUtils - не вносились ли туда изменения?
Также можно поискать по тексту всех скриптов подстроку "btnAdd.IsEnabled"

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