Добавляю в кнопку "Действие" свой пункт, все по фэн-шую, то есть SDK.
Вот фрагмент:

actionMenuItems.addItem(this.getActionsMenuItem({
        Type : "Terrasoft.MenuSeparator",
        Caption : ""
}));
// Добавление пункта меню [Проверить заказ] в список действий страницы редактирования.
actionMenuItems.addItem(this.getActionsMenuItem({
// Привязка заголовка пункта меню к локализуемой строке схемы.
        "Caption" : {
        bindTo : "Resources.Strings.UsrCheckOrder"
},

Неожиданная проблема в том, что при первом запуске виден текст локализованной строки "Проверить заказ", а после отрабатывания процесса, или закрытии-открытии окна с заказами, текст пропадает, но пункт в меню все равно есть, и по нажатию на него отрабатывает процесс.
А текста не видно.. что нужно проверить? :(

Нравится

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

Здравствуйте, Алексей Владимирович.

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

Пожалуйста..

define("OrderPageV2", ["OrderPageV2Resources", "GeneralDetails", "ProcessModuleUtilities", "NotificationsModule"],
	function(resources, GeneralDetails, ProcessModuleUtilities, NotificationsModule) {
	return {
		entitySchemaName : "Order",
		details: /**SCHEMA_DETAILS*/{},/**SCHEMA_DETAILS*/
		diff: /**SCHEMA_DIFF*/[],/**SCHEMA_DIFF*/
		attributes: {},
		methods: {
			getActions : function() {
				// Вызывается родительская реализация метода для получения
				// коллекции проинициализированных действий базовой страницы.
				var actionMenuItems = this.callParent(arguments);
				// Добавление линии сепаратора для визуального отделения пользовательского действия от списка
				// действий базовой страницы.
				actionMenuItems.addItem(this.getActionsMenuItem({
						Type : "Terrasoft.MenuSeparator",
						Caption : ""
					}));
				// Добавление пункта меню [Проверить заказ] в список действий страницы редактирования.
				actionMenuItems.addItem(this.getActionsMenuItem({
						// Привязка заголовка пункта меню к локализуемой строке схемы.
						"Caption" : {
							bindTo : "Resources.Strings.UsrCheckOrder"
						},
						// Привязка метода обработчика действия.
						"Tag" : "CheckOrderPay"
						// Привязка свойства видимости пункта меню к значению, которое возвращает метод isAccountPrimaryContactSet.
						//"Visible": { bindTo: "isAccountPrimaryContactSet" }
					}));
				actionMenuItems.addItem(this.getActionsMenuItem({
						Type : "Terrasoft.MenuSeparator",
						Caption : ""
					}));
				return actionMenuItems;
 
			},
			// Метод-обработчик выбора действия.
			CheckOrderPay : function() {
				// Получение идентификатора заказа.
				var OrderId = this.get("Id");
				// Объект, который будет передан в качестве аргумента в метод executeProcess.
				var args = {
					// Имя процесса, который необходимо запустить.
					sysProcessName : "UsrCheckOrder",
					// Объект со значением входящего параметра для процесса.
					parameters : {
						idOrder : OrderId
					}
				};
				// Запуск пользовательского бизнес-процесса.
				ProcessModuleUtilities.executeProcess(args);
				//Terrasoft.configuration.NotificationsModule.onShowNewNotificationClick();
				//this.Location.Reload(false);
			}
		},
		rules : {},
		userCode : {}
	};
});

В Resources.Strings.UsrCheckOrder Заголовок и значение одинаковы, Проверить заказ
Строчка с Visible закоментирована в точности как указано, но функции, указанной там, в теле схемы нет..

Здравствуйте, Алексей Владимирович.

Мы проанализировали Ваш код. Данное поведение возникает у Вас, по причине того, что используя статью http://academy.terrasoft.ru/documents/docs/technic/SDK/7.7.0/AddActionT… Вы не выполнили пункты начиная с 6-го. После добавления локализированной строки в OrderSectionV2 данная проблема возникать не будет.

Спасибо за анализ, но я не повторяю типовое задание, а делаю свое, и у меня нет необходимости контролировать видимость пункта в зависимости от статуса заказа.
При любом статусе кнопка видна, по задумке.
Сейчас ситуация такова:
1. Ctrl+F5
2. Создаю заказ. Текст пункта виден.
3. Сохраняю заказ.
4. Открываю на редактирование только что созданный заказ - текст не виден.
5. Ctrl+F5 и открываю заказ опять - текст виден.
6. Закрываю заказ кнопкой "Закрыть".
7. Открываю заказ, текст пункта не виден.

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

Увы, ситуация не изменилась, текст пропадает.
data-item-marker и текст, с ним совпадающий, показывается только в первый раз после полной перезагрузки.
Попробую пересоздать замещающую схему.

Здравствуйте, Алексей Владимирович.

Копирую Ваш код предварительно изменив его для ContactPageV2 и добавляю локализированную строку.

Результат:
При создании контакта элемент виден.

При открытии контакта элемент отсутствует.

Добавляем замещающую схему раздела с такой же локализированной строкой.

В результате элемент не пропадает.

Сергей, Спасибо! Урок усвоен :redface:

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