Вопрос

Реализовал деталь со множественным добавлением записей в соответствии с описанием в статье https://academy.terrasoft.ru/documents/technic-sdk/7-10/mnozhestvennoe-dobavlenie-zapisey-na-detal. Код детали ниже. Столкнулся со следующей проблемой: сразу после добавления записи выделяю ее в реестре и нажимаю изменить. В консоли ошибка.

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

define("Schema3Detail", ["LookupMultiAddMixin"], function() {
    return {
        entitySchemaName: "WeeklyPlanScheduleInDailyPlan",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
        mixins: {
            LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
        },
        methods: {
            
            init: function() {
                this.callParent(arguments);
                this.mixins.LookupMultiAddMixin.init.call(this);
            },
            onActiveRowAction: function(buttonTag) {
                switch (buttonTag) {
                    case "openCard":
                        this.editRecord();
                        break;
                }
            },
            getAddRecordButtonVisible: function() {
                return this.getToolsVisible();
            },
            onCardSaved: function() {
                this.openLookupWithMultiSelect();
            },
            addRecord: function() {
                this.openLookupWithMultiSelect(true);
            },
            getMultiSelectLookupConfig: function() {
                return {
                    rootEntitySchemaName: "DailyPlan",
                    rootColumnName: "DailyPlan",
                    relatedEntitySchemaName: "WeeklyPlanSchedule",
                    relatedColumnName: "WeeklyPlanSchedule"
                };
            }
        }
    };
});
 

У меня такой же вопрос

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

Решали подобные проблемы. Самое простое - перечитать грид после добавления записи :)

Вариант А:

onProductInsert: function(response) {
 
this.hideBodyMask.call(this);
if (this.get("IsGridLoading")) {
	return;
}
this.beforeLoadGridData();
var filterCollection = [];
response.queryResults.forEach(function(item) {
filterCollection.push(item.id);
});
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: this.entitySchemaName
});
this.initQueryColumns(esq);
esq.filters.add("recordId", Terrasoft.createColumnInFilterWithParameters("Id", filterCollection));
esq.getEntityCollection(function(response) {
	this.afterLoadGridData();
	if (response.success) {
	    var responseCollection = response.collection;
		this.prepareResponseCollection(responseCollection);
		this.getGridData().loadAll(responseCollection);
		this.reloadGridData(); // вот источник проблемы
	}
}, this);
}

Вариант Б - замещайте функцию editRecord:

editRecord: function(record) {
 
	var activeRow = record || this.getActiveRow();
	if (!activeRow) {
		return;
	}
	if (!this.getIsCardValid()) {
		return;
	}
	var isCardChanged = this.getIsCardChanged();
 
 
	// вот тут возникает проблема у вас. Если activeRow не объектного типа, тогда не можем получить его своейство и падаем				
	if (typeof activeRow === "object") {
		var primaryColumnValue = activeRow.get("Id");
	} else {
		var primaryColumnValue = activeRow;
	}
 
    var typeColumnValue = this.getTypeColumnValue(activeRow);
	if (isCardChanged) {
		this.set("CardState", configurationEnums.CardStateV2.EDIT);
		this.set("EditPageUId", typeColumnValue);
		this.set("PrimaryValueUId", primaryColumnValue);
		var args = {
			isSilent: true,
			messageTags: [this.sandbox.id]
		};
		this.sandbox.publish("SaveRecord", args, [this.sandbox.id]);
	} else {
		this.openCard(configurationEnums.CardStateV2.EDIT, typeColumnValue, primaryColumnValue);
	}
}

Но первый способ гарантированно решит проблему. 

 

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Компания «Программные Технологии» объявляет о старте новогодней акции — с 20 ноября 2017 года лицензии на самые популярные продукты компании на платформе bpm’online со скидкой до 20%.

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

Специальное предложение действует с 20 ноября по 20 декабря 2017 года и распространяется на первых 18 новых пользователей продуктов компании «Программные Технологии».

Подробности читайте на нашем сайте: https://samarasoft.com/info/news/newyearsale2018/

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Коллеги, спешим сообщить о старте новогодней акции «Зимний драйв с Terrasoft!»

«Зимний драйв с Terrasoft!» — это возможность в период с 20 ноября по 20 декабря 2017 приобрести на выгодных условиях продукты bpm’online. Благодаря им вы сможете сократить время на внедрение изменений в компании и быстрее достигать результатов в новом году.

Гибкая система позволяет приобрести подписки на продукты bpm’online со скидкой:

  • 20% — в период с 20 ноября по 30 ноября;
  • 15% — в период с 01 декабря по 10 декабря;
  • 10% — в период с 11 декабря по 20 декабря.

Подробнее о том, как получить скидку на продукты bpmonline >>

Но это не все!

Получите еще больше инструментов для управления операционной эффективностью по специальной цене: ищите приложения с бейджем «Акция» на bpm’online marketplace, чтобы приобрести их с аналогичными скидками.

Специальное предложение действует до 20 декабря 2017 года включительно.

Принимайте участие в акции — придайте скорости и гибкости изменениям в продажах, маркетинге, сервисе и управлении бизнес-процессами компании!

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, Доброго дня.

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

 

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

У меня такой же вопрос

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

Вы имеете в виду контакты на детали "Участники продажи" или что-то подобное? 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Были настроены права по записям.

После чего были импортированы сами записи в систему. Итог их никто кроме админа не видит.

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

У меня такой же вопрос

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

Тут так: если у вас система более-менее свежая, тогда права расставятся по ответственному (должно хватить по идее) - добавьте в исходник поле "Ответственый" и из него грузите в поле "Ответственный" системы. Автора можете ставить любого, все равно будет считаться тот, кто импортировал. Мы первый раз решали процессом, которым правили при сохранении по условию права (но есть потенциальный дедлок), либо запросом на правку прав до дефолтного состояния уже после импорта (есть такой у поддержки, дают по запросу пользователя). Запрос к сожалению Вам изменит все права, в том числе и настроенные вручную в записи, наприме. Если же не свежая, тогда и у владельца права не появятся и тут только запросом или процессом при сохранении.

Дмитрий Степанов,

версия свежая.
Ваш совет в целом помог.

Но происходит теперь другая ситуация.

Что я импортирую записи, и их видят все. То есть по ролям не разбиваются.

Делаю импорт в 8 заходов, для каждой роли совой импорт.

Но  в итоге все видят все

А вот это уже точно проблема Вашей настройки прав. Ответственный видит свое, его менеджер видит все своего подразделения (если используется). Вы руками создайте запись с тем же ответственным и увидите, что будет. Я так понимаю, что там с иерархией прав у вас беда-беда ибо для ответственного вы там особо ничего не настроите. 

Попробовал, пользователь увидел запись, хотя не должен был видеть.

А права у меня все вида

Москва видит Москву

Питер видит Питер

и т.д.

Нет ролей которые видят все

 

Картинку настройки доступа к объектам в студию.

Войдите или зарегистрируйтесь, чтобы комментировать