Добрый день!

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

Спасибо!

Нравится

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

Добрый день.

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

Доброго дня, ще одна невідповідність. Чомусь в закупку тягне ціну валюти, замість ціни в гривнях

Добрый день.

Предоставьте PrintScreen [Прайс-лист] продукта. Возможно у Вас валюта в [Прайс-лист] указана в долларах, в таком случае будет выполнен пересчет цены согласно базовой валюты.

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

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

Нравится

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

Как идея - поставить на сутки, и потом по срабатыванию проверять - если этот день выходной, то еще на сутки.

А как проверить, что этот день выходной?

Добрый день!

Как вариант, создать 2 параметра.
1. Тип – Дата/Время – хранит текущее значение даты и времени.
2. Тип – целое число – хранит день недели.
С помощью элемента “Формула” передавать во второй параметр результат функции ДеньНедели(Параметр1). В условном потоке проверять значение второго параметра и порядкового номера дня недели.

Спасибо за комментарии.
Но неужели нет способа как-то использовать календарь? Нужно же еще и праздничные дни учитывать.

Так же как рассчитываются плановые даты по Сервису в карточке Обращения в системе Servicedesk.

Servicedesk использует календарь, через веб-сервисы, примером может служить TermCalculationService

За 5 лет решения не появилось?

Как можно получить рабочий ли день в новом расчете сроков (без устаревшей и неподдерживаемой библиотеки CalendarUtils)? Если по дню недели — то так. У нас есть таблица DayType. У неё есть признак NonWorking. C таблицей dayofweek она связана через DayInCalendar. Напрямую публичного метода, который выдавал бы этот признак, у нас нет. Примеры можно посмотреть в методах FillWeekTemplate и FillDayOffInfo в классе CalendarDataStore.

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

Здравствуйте. Подскажите пожалуйста, ситуация такая: Создал объект для создания нового раздела( родитель базовый объект). В мастере разделов создал раздел "ТС" . Далее была создана деталь, в этой детали есть поле "ТС" (тип справочник) - ссылка на объект раздела. Добавляю деталь во вкладку(не важно куда), нажимаю добавить деталь, открывается форма добавления и поле "ТС" выглядит как справочник, но когда я на него нажимаю, то получаю пустую страницу.
Как я понимаю, то нужно для объекта раздела нужно создать схему или страницу? Я не сильно опытен в этом деле и если можно подскажите как это сделать.

Нравится

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

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

1) Рекомендуем Вам создать раздел через [Мастер разделов]
http://academy.terrasoft.ru/documents/?/docs/product/bpm%27online%20cus…

Далее, создать деталь:
http://academy.terrasoft.ru/documents/docs/product/bpm%27online%20custo…

2) Создать объект в конфигурации, унаследовать базовый объект
3) Через [мастер деталей] -создать деталь, выбрав созданный объект в первом пункте
4) Сохраните, без перехода на редактирование страницы детали
5) Зайдите в раздел [Справочники] , добавьте новый справочник, выбрав Ваш раздел
http://academy.terrasoft.ru/documents/docs/product/bpm'online%20sales/t…

6) Зайдите в созданный раздел, [мастер раздела] , добавьте деталь созданную на шаге № 3
7) Cохраните
8) Зайдите в ваш раздел, найдите деталь и настройте её, добавьте справочник созданный на шаге №5

Спасибо, Александр, что так быстро ответили, но что-то не работает или я не так понял.
Во первых зачем пункт 2?
По 1 пункту - если у меня уже есть созданный раздел и деталь, то нужно снова создать?
5 - создал справочник с объектом раздела "ТС". Когда жму наполнения, то отображает нормально.

мб меня не правильно поняли тк много лишнего)
коротко - нужно что бы в детали, во вкладке или ещё где то все объекты из раздела "ТС" можно вывести справочником. Сейчас если я делаю это, то поле справочника появляется, но при нажатии на него открывается картинка вот штука (snimok2.png), есть раздел продукты и вот у него словарем открывается нормально вот так (snimok.png)

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

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

вот с консолькой и кусок кода

var core = require("core");
core.setModuleDescriptor('CardModule', {path: "../../configuration/dd7bd5282557e5e7e4594abe18148617", css: ["CardModule"],
	"messages": {
		"LoadData": { "direction": "publish", "mode": "broadcast" },
		"DetailInfo": { "direction": "subscribe", "mode": "broadcast" },
		"GetHistoryState": { "direction": "publish", "mode": "ptp" },
		"SaveDetails": { "direction": "publish", "mode": "ptp" },
		"LookupInfo": { "direction": "subscribe", "mode": "ptp" },
		"ResultSelectedRows": { "direction": "subscribe", "mode": "ptp" },
		"OpenLookupPage": { "direction": "subscribe", "mode": "broadcast" },
		"GetCardSchemaName": { "direction": "subscribe", "mode": "ptp" },
		"ReplaceHistoryState": { "direction": "publish", "mode": "broadcast" },
		"PushHistoryState": { "direction": "publish", "mode": "broadcast" },
		"BackHistoryState": { "direction": "publish", "mode": "broadcast" },
		"SaveRecord": { "direction": "subscribe", "mode": "broadcast" },
		"GetRecordInfo": { "direction": "subscribe", "mode": "ptp" },
		"RequestDetailItems": { "direction": "publish", "mode": "ptp" },
		"GetDetailItems": { "direction": "subscribe", "mode": "ptp" },
		"FindDuplicatesResult": { "direction": "subscribe", "mode": "broadcast" },
		"GetPredefinedRecords": { "direction": "subscribe", "mode": "ptp" },
		"ChangeRemindingsCounts": { "direction": "publish", "mode": "broadcast" },
		"GetContextHelpId": { "direction": "subscribe", "mode": "ptp" },
		"LookupPageInfo": { "direction": "publish", "mode": "ptp" },
		"DoNotUseCommunication": { "direction": "subscribe", "mode": "ptp" },
		"ShowLookupPage": { "direction": "subscribe", "mode": "ptp" },
		"LookupResultSelected": { "direction": "publish", "mode": "ptp" },
		"GetProcessExecData": { "direction": "publish", "mode": "ptp" },
		"GetProcessExecDataCollection": { "direction": "publish", "mode": "ptp" },
		"GetEntityName": { "direction": "subscribe", "mode": "ptp" },
		"CardModuleEntityInfo": { "direction": "publish", "mode": "ptp" },
		"OpenCardModule": { "direction": "subscribe", "mode": "ptp" },
		"UpdateDetail": { "direction": "publish", "mode": "ptp" },
		"OpenGridSettings": { "direction": "subscribe", "mode": "ptp" },
		"CardModuleResponse": { "direction": "publish", "mode": "ptp" },
		"ProcessExecDataChanged": { "direction": "publish", "mode": "ptp" },
		"DetailChanged": { "direction": "subscribe", "mode": "broadcast" },
		"LoadCustomModule": { "direction": "subscribe", "mode": "ptp" },
		"UpdateCommentCounter": { "direction": "subscribe", "mode": "ptp" },
		"GetAdditionalFilterValue": { "direction": "subscribe", "mode": "ptp" },
		"DestroyCommentModule": { "direction": "publish", "mode": "ptp" },
		"GetParentContainer": { "direction": "publish", "mode": "ptp" },
		"IncomingPtp": { "direction": "subscribe", "mode": "ptp" },
		"IncomingBroadcast": { "direction": "subscribe", "mode": "broadcast" },
		"OutcomingPtp": { "direction": "publish", "mode": "ptp" },
		"OutcomingBroadcast": { "direction": "publish", "mode": "broadcast" },
		"GetEntityColumnValues": { "direction": "subscribe", "mode": "ptp" },
		"ReloadDetail": { "direction": "publish", "mode": "ptp" },
		"SetDetailReadOnly": { "direction": "publish", "mode": "ptp" },
		"GetProcessEntryPointsData": { "direction": "publish", "mode": "ptp" },
		"GetMapsConfig": { "direction": "subscribe", "mode": "ptp" },
		"ColumnSelected": { "direction": "subscribe", "mode": "ptp" },
		"GetStructureExplorerSchemaName": { "direction": "subscribe", "mode": "ptp" },
		"StructureExplorerInfo": { "direction": "subscribe", "mode": "ptp" },
		"GetIsDetailReadonly": { "direction": "subscribe", "mode": "ptp" },
		"GetCardModuleSandboxId": { "direction": "subscribe", "mode": "ptp" },
		"DetailSaved": { "direction": "subscribe", "mode": "ptp" },
		"RefreshFiles": { "direction": "publish", "mode": "broadcast" },
		"DestroyFilesModule": { "direction": "publish", "mode": "ptp" },
		"FileDeleted": { "direction": "subscribe", "mode": "ptp" },
		"RefreshWorkplace": { "direction": "publish", "mode": "ptp" },
		"GetWidgetParameters": { "direction": "publish", "mode": "ptp" },
		"PushWidgetParameters": { "direction": "publish", "mode": "ptp" },
		"CardProccessModuleInfo": { "direction": "subscribe", "mode": "ptp" }
	}});
core.setModuleDescriptor('ProcessProgressSpinnerImage', {path: "../../configuration/a1fa921decbb5aee03170d3b7bc1e92b"});
core.setModuleDescriptor('RightUtilities', {path: "../../configuration/c10b9dd2b99cd6a574464459291852c5"});
core.setModuleDescriptor('MaskHelper', {path: "../../configuration/27d32cf9403d46187b97829dd8728c00"});
core.setModuleDescriptor('LookupPageViewGenerator', {path: "../../configuration/07929e6cc749d51c88f646c68f210ee8"});
core.setModuleDescriptor('LookupPageViewModelGenerator', {path: "../../configuration/6e41c42262df83b8220fea5c27b8e8fb",
	"messages": {
		"GetGridSettingsInfo": { "direction": "subscribe", "mode": "ptp" }
	}});
core.setModuleDescriptor('LookupPageResources', {path: "../../configuration/6b9d74cc8f03aec01bf47e0892f3c779", css: ["LookupPage"],
	"messages": {
		"LookupInfo": { "direction": "publish", "mode": "ptp" },
		"ResultSelectedRows": { "direction": "publish", "mode": "ptp" },
		"GetHistoryState": { "direction": "publish", "mode": "ptp" },
		"ReplaceHistoryState": { "direction": "publish", "mode": "broadcast" },
		"BackHistoryState": { "direction": "publish", "mode": "broadcast" },
		"PushHistoryState": { "direction": "publish", "mode": "broadcast" },
		"CardModuleEntityInfo": { "direction": "subscribe", "mode": "ptp" },
		"MacrosInfo": { "direction": "subscribe", "mode": "ptp" },
		"GridSettingsInfo": { "direction": "subscribe", "mode": "ptp" },
		"GridSettingsChanged": { "direction": "subscribe", "mode": "ptp" },
		"CardProccessModuleInfo": { "direction": "publish", "mode": "ptp" },
		"CardModuleResponse": { "direction": "subscribe", "mode": "ptp" },
		"OpenCard": { "direction": "publish", "mode": "ptp" },
		"getCardInfo": { "direction": "subscribe", "mode": "ptp" },
		"GetGridSettingsInfo": { "direction": "subscribe", "mode": "ptp" },
		"UpdateDetail": { "direction": "subscribe", "mode": "ptp" }
	}});
define('LookupPageResources', ['terrasoft'], function(Terrasoft) {
var localizableStrings={
	SelectButtonCaption: 'а’б‹аБб€аАб‚бŒ',
	CancelButtonCaption: 'аžб‚аМаЕаНаА',
	ActionButtonCaption: 'а”аЕаЙбб‚аВаИб',
	AddButtonCaption: 'а”аОаБаАаВаИб‚бŒ',
	DeleteButtonCaption: 'аЃаДаАаЛаИб‚бŒ',
	EditButtonCaption: 'а˜аЗаМаЕаНаИб‚бŒ',
	CopyButtonCaption: 'аšаОаПаИб€аОаВаАб‚бŒ',
	SelectedRecordsLabelCaption: 'а’б‹аБб€аАаНаО аЗаАаПаИбаЕаЙ',
	SettingsColumnButtonCaption: 'ааАбб‚б€аОаЙаКаА аКаОаЛаОаНаОаК',
	SearchButtonCaption: 'аŸаОаИбаК',
	CountSelectedRecord: 'а’б‹аБб€аАаНаО аЗаАаПаИбаЕаЙ:',
	CaptionLookupPage: 'а’б‹аБаОб€: ',
	OnDeleteWarning: 'а’б‹ аДаЕаЙбб‚аВаИб‚аЕаЛбŒаНаО б…аОб‚аИб‚аЕ бƒаДаАаЛаИб‚бŒ аВб‹аДаЕаЛаЕаНаНб‹аЕ баЛаЕаМаЕаНб‚б‹?',
	DependencyWarningMessage: 'а’б‹аБб€аАаНаНб‹аЕ баЛаЕаМаЕаНб‚б‹ бƒаДаАаЛаИб‚бŒ аНаЕаВаОаЗаМаОаЖаНаО, б‚аАаК аКаАаК аОаНаИ аИбаПаОаЛбŒаЗбƒбŽб‚бб аВ аДб€бƒаГаИб… аОаБбŠаЕаКб‚аАб….',
	StartProcessButtonCaption: 'а—аАаПбƒбб‚аИб‚бŒ',
	ShowProcessLogButtonCaption: 'а–бƒб€аНаАаЛ аПб€аОб†аЕббаОаВ'
};
var localizableImages={
	'MenuButtonImage': {source: Terrasoft.ImageSources.SOURCE_CODE_SCHEMA, params: { schemaName: 'LookupPage', resourceItemName: 'MenuButtonImage' }}
};
return {localizableStrings:localizableStrings,localizableImages:localizableImages};
});
define("LookupPage", ["ext-base", "MaskHelper", "LookupPageViewGenerator", "LookupPageViewModelGenerator",
	"LookupUtilities"],
	function(Ext, MaskHelper, LookupPageViewGenerator, LookupPageViewModelGenerator, LookupUtilities) {
 
		var lookupPage = Ext.define("Terrasoft.configuration.LookupPage", {
			extend: "Terrasoft.BaseObject",
			alternateClassName: "Terrasoft.LookupPage",
 
			Ext: null,
 
			sandbox: null,
 
			Terrasoft: null,
 
			/**
			 * аŸб€аИаЗаНаАаК б‚аОаГаО, б‡б‚аО аМаОаДбƒаЛбŒ аИаНб†аИаАаЛаИаЗаИб€бƒаЕб‚бб аАбаИаНб…б€аОаНаНаО
			 * @private
			 * @type {Boolean}
			 */
			isAsync: true,
 
			/**
			 * аšаОаНб„аИаГ Lookup-аА
			 * @private
			 * @type {Object}
			 */
			lookupInfo: null,
 
			/**
			 * аЁбб‹аЛаКаА аНаА ViewModel LookupPage-аА
			 * а˜аНаИб†аИаАаЛаИаЗаИб€бƒаЕб‚бб аПаЕб€аЕаД аОб‚б€аИбаОаВаКаОаЙ
			 * @private
			 * @type {Object}
			 */
			viewModel: null,
 
			/**
			 * аЁбб‹аЛаКаА аНаА аКаОаНб‚аЕаЙаНаЕб€ аВ аКаОб‚аОб€аОаМ аБбƒаДаЕб‚ аОб‚б€аИбаОаВаАаН ModalBox.
			 * а˜аНаИб†аИаАаЛаИаЗаИб€бƒаЕб‚бб аПаЕб€аЕаД аОб‚б€аИбаОаВаКаОаЙ
			 * @private
			 * @type {Object}
			 */
			renderContainer: null,
 
			/**
			 * аЄаЛаАаГ, аКаОб‚аОб€б‹аЙ аИаМаЕаЕб‚ аЗаНаАб‡аЕаНаИаЕ аЕбаЛаИ аМаОаДбƒаЛбŒ аБб‹аЛ аЗаАаГб€бƒаЖаЕаНаИ аИаЗ CardProcessModule
			 * @private
			 * @type {Boolean}
			 */
			processModuleFlag: false,
 
 
			/**
			 * а˜аНаИб†аАаЛаИаЗаИб€бƒаЕб‚ аНаАб‡аАаЛбŒаНб‹аЕ аЗаНаАб‡аЕаНаИб аМаОаДбƒаЛб,
			 * аВ аЗаАаВаИбаИаМаОбб‚аИ аОб‚ б€аЕаЗбƒаЛбŒб‚аАб‚аА аПбƒаБаЛаИаКаАб†аИаИ баОаОаБб‰аЕаНаИб 'CardProccessModuleInfo'
			 * аМаОаДбƒаЛбŒ аИаНаИб†аИаАаЛаИаЗаИб€бƒаЕб‚бŒбб аДаЛб б€аАаБаОб‚б‹ аВ аМаОаДаАаЛбŒаНаОаМ аОаКаНаЕ аИаЛаИ аВ centerPanel
			 * @private
			 */
			init: function(callback, scope) {
				callback = callback || function() {};
				if (this.viewModel) {
					callback.call(scope);
					return;
				}
 
				this.lookupInfo = this.sandbox.publish("LookupInfo", null, [this.sandbox.id]);
				this.processModuleFlag = this.sandbox.publish("CardProccessModuleInfo", null, [this.sandbox.id]);
 
				this.initHistoryState();
 
				this.getSchemaAndProfile(function(entitySchema, profile) {
					if (this.isDestroyed) {
						return;
					}
 
					this.lookupInfo.searchColumn = {
						value: entitySchema.primaryDisplayColumn.name,
						displayValue: entitySchema.primaryDisplayColumn.caption
					};
					this.lookupInfo.entitySchema = entitySchema;
					this.lookupInfo.gridProfile = profile;
 
					var viewModel = this.viewModel = this.generateViewModel();
					viewModel.init();
					if (this.lookupInfo.selectedValues) {
						viewModel.set("RestoreSelectedData", this.lookupInfo.selectedValues);
					}
					if (profile &&
						!((profile.captionsConfig && profile.listedColumnsConfig) || profile.tiledColumnsConfig)) {
						var newProfile = viewModel.getDefaultProfile();
						Terrasoft.utils.saveUserProfile(newProfile.key, newProfile, true, function(response) {
							if (!response.success) {
								return;
							}
							this.lookupInfo.gridProfile = newProfile;
							viewModel.set("gridProfile", newProfile);
 
							viewModel.updateSortColumnsCaptions();
							viewModel.load();
							callback.call(scope);
						}, this);
					} else {
						viewModel.updateSortColumnsCaptions();
						viewModel.load();
						callback.call(scope);
					}
 
				});
			},
 
			/**
			 * а’б‹аПаОаЛаНбаЕб‚ аОб‚б€аИбаОаВаКбƒ аМаОаДбƒаЛб аВ аКаОаНб‚аЕаЙаНаЕб€
			 * @protected
			 * @param {Object} renderTo аКаОаНб‚аЕаЙаНаЕб€ аВ аКаОб‚аОб€б‹аЙ аБбƒаДаЕб‚ аОб‚б€аИбаОаВаАаН аМаОаДбƒаЛбŒ
			 */
			render: function(renderTo) {
				this.renderContainer = renderTo.id;
				this.renderLookupView(this.lookupInfo.entitySchema, this.lookupInfo.gridProfile);
			},
 
			generateViewModel: function() {
				var viewModelConfig = LookupPageViewModelGenerator.generate(this.lookupInfo);
				if (!this.lookupInfo.columnValue && this.lookupInfo.searchValue) {
					viewModelConfig.values.searchData = this.lookupInfo.searchValue;
					viewModelConfig.values.previousSearchData = this.lookupInfo.searchValue;
				}
				var viewModel = Ext.create("Terrasoft.BaseViewModel", viewModelConfig);
				viewModel.Ext = this.Ext;
				viewModel.sandbox = this.sandbox;
				viewModel.Terrasoft = this.Terrasoft;
 
				if (this.lookupInfo.updateViewModel) {
					this.lookupInfo.updateViewModel.call(viewModel);
				}
				viewModel.initCaptionLookup();
				viewModel.initHasActions();
				viewModel.initLoadedColumns();
				if (!Ext.isEmpty(this.lookupInfo.filterObjectPath)) {
					viewModel.updateFilterByFilterObjectPath(this.lookupInfo.filters, this.lookupInfo.filterObjectPath);
				}
				if (this.lookupInfo.hideActions) {
					viewModel.set("hasActions", false);
				}
				return viewModel;
			},
 
			initHistoryState: function() {
				if (!this.processModuleFlag) {
					return;
				}
				var state = this.sandbox.publish("GetHistoryState");
				var currentHash = state.hash;
				var currentState = state.state || {};
				if (currentState.moduleId === this.sandbox.id) {
					return;
				}
				this.sandbox.publish("ReplaceHistoryState", {
					stateObj: {
						moduleId: this.sandbox.id
					},
					pageTitle: null,
					hash: currentHash.historyState,
					silent: true
				});
			},
 
			/**
			 * аŸаОаЛбƒб‡аАаЕб‚ бб…аЕаМбƒ аИ аНаАбб‚б€аОаЙаКаИ аПб€аОб„аИаЛб аДаЛб баПб€аАаВаОб‡аНаИаКаА
			 * @private
			 * @param {Function} callback б„бƒаНаКб†аИб аКаОб‚аОб€аАб аБбƒаДаЕб‚ аВб‹аПаОаЛаНаЕаНаА аПаО аОаКаОаНб‡аАаНаИаИ аЗаАаГб€бƒаЗаКаИ аВ аКаОаНб‚аЕаКбб‚аЕ баАаМаОаГаО аМаОаДбƒаЛб
			 */
			getSchemaAndProfile: function(callback) {
				var entitySchemaName = this.lookupInfo.entitySchemaName;
				this.sandbox.requireModuleDescriptors([entitySchemaName], function() {
					var columnsSettingsProfileKey = "GridSettings_" + this.lookupInfo.entitySchemaName;
					var me = this;
					require([entitySchemaName, "profile!" + columnsSettingsProfileKey], function(entitySchema, profile) {
						var fixedProfile = me.actualizeProfile(entitySchema, profile);
						callback.call(me, entitySchema, fixedProfile);
					});
				}, this);
			},
 
			/**
			 * а’б‹аПаОаЛаНбаЕб‚ аОб‚б€аИбаОаВаКбƒ Lookup-аА аВ баОаОб‚аВаЕб‚бб‚аВаИаИ баО бб…аЕаМаОаЙ аИ аНаАбб‚б€аОаЙаКаОаЙ аПб€аОб„аИаЛб
			 * а”аЛб аПб€аОб†аЕбаОаВ аОб‚б€аИбаОаВб‹аВаАаЕб‚бб аНаА аВбаЕ аОаКаНаО, аДаЛб баПб€аАаВаОб‡аНаИаКаОаВ аВ modalBox
			 * @private
			 * @param {Object} schema EntitySchema аОаБбŒаЕаКб‚аА
			 * @param {Object} profile аНаАбб‚б€аОаЙаКаА аПб€аОб„аИаЛб
			 */
			renderLookupView: function(schema, profile) {
				var configArgs = {};
				configArgs.actionsMenuConfig = LookupPageViewGenerator.getActionsMenuConfig(schema.name);
				configArgs.captionConfig = schema.columns[schema.primaryDisplayColumnName].caption;
				configArgs.entitySchema = schema;
				configArgs.isRunProcessPage = this.lookupInfo.isRunProcessPage;
				configArgs.columnsSettingsProfile = profile;
				Ext.apply(configArgs, this.lookupInfo);
				var fixedViewConfig = LookupPageViewGenerator.generateFixed(configArgs);
				var fixedView = Ext.create(fixedViewConfig.className || "Terrasoft.Container", fixedViewConfig);
				fixedView.bind(this.viewModel);
				fixedView.render(LookupUtilities.GetFixedHeaderContainer());
				var gridViewConfig = LookupPageViewGenerator.generateGrid(configArgs);
				var gridView = Ext.create(gridViewConfig.className || "Terrasoft.Container", gridViewConfig);
				gridView.bind(this.viewModel);
				gridView.render(LookupUtilities.GetGridContainer());
				if (this.processModuleFlag) {
					this.loadCommandLine();
				}
				MaskHelper.HideBodyMask();
			},
 
			/**
			 * аЃбб‚аАаНаАаВаЛаИаВаАаЕб‚ б„аОаКбƒб аНаА бб‚б€аОаКаЕ аПаОаИбаКаА аПаОбаЛаЕ аОб‚б€аИбаОаВаКаИ
			 * @private
			 */
			loadCommandLine: function() {
				var commandLineContainer = Ext.get("module-command-line");
				if (!this.lookupInfo.commandLineEnabled || Ext.isEmpty(commandLineContainer)) {
					return;
				}
				this.sandbox.loadModule("CommandLineModule", {
					renderTo: commandLineContainer
				});
			},
 
			actualizeProfile: function(entitySchema, profile) {
				if (profile.listedConfig) {
					var viewGenerator = Ext.create("Terrasoft.ViewGenerator");
					viewGenerator.viewModelClass = this;
					this.entitySchema = entitySchema;
					this.columns = entitySchema.columns;
					var newProfile = {
						listedConfig: Ext.decode(profile.listedConfig),
						tiledConfig: Ext.decode(profile.tiledConfig),
						isTiled: profile.type === "tiled",
						type: profile.type,
						key: profile.key
					};
					viewGenerator.actualizeGridConfig(newProfile);
					this.clearLinks(newProfile);
					return {
						isTiled: newProfile.isTiled,
						key: newProfile.key,
						listedColumnsConfig: Ext.encode(newProfile.listedConfig.columnsConfig),
						captionsConfig: Ext.encode(newProfile.listedConfig.captionsConfig),
						tiledColumnsConfig: Ext.encode(newProfile.tiledConfig.columnsConfig),
						type: newProfile.type
					};
				}
				return profile;
			},
 
			clearLinks: function(profile) {
				Terrasoft.each(profile.listedConfig.columnsConfig, function(item) {
					if (item.hasOwnProperty("link")) {
						delete item.link;
					}
				}, this);
				Terrasoft.each(profile.tiledConfig.columnsConfig, function(rowItem) {
					Terrasoft.each(rowItem, function(item) {
						if (item.hasOwnProperty("link")) {
							delete item.link;
						}
					}, this);
				}, this);
			}
		});
 
 
		return lookupPage;
	});

Судя по ошибке в консоли- Вы по-прежнему используете вручную созданный объект раздела.
ошибка нам сообщает: primaryDisplayColumn is undefined.- не определена первичная колонка в объекте для отображения.

В таком случае, откройте Ваш объект- и заполните значение: "Отображаемое значение" на любую текстовую колонку существующую в объекте. Не забудьте отобразить "все" свойства объекта.

"Александр Зубков" написал:

Судя по ошибке в консоли- Вы по-прежнему используете вручную созданный объект раздела.

ошибка нам сообщает: primaryDisplayColumn is undefined.- не определена первичная колонка в объекте для отображения.

В таком случае, откройте Ваш объект- и заполните значение: "Отображаемое значение" на любую текстовую колонку существующую в объекте. Не забудьте отобразить "все" свойства объекта.


Спасибо огромное. Это видать я сам накосячил тк удалил поле которое создалось по умолчанию когда объект создался (я вспомнил , что объект создался при создании раздела через конструктор).

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

Добрый день!

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

Нравится

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

Добрый день!
Да, это возможно. Для этого необходимо в код лендинга в список css-селекторов добавить строки вида:
"Name": "css-selector",
где "Name" - название поля в bpm'online
"css-selector" - класс или id поля в форме лендинга

Анастасия, спасибо за ответ!

У меня еще один вопрос :)

"Савельева Анастасия Юрьевна" написал:
"css-selector" - класс или id поля в форме лендинга

А можно ли ссылаться не на id или класс, а на name?
К примеру, есть потребность интеграции с формой на lpgenerator.ru Возможности редактирования кода там ограничены. class у всех полей формы одинаковый, а для идентификации используется не id, а name.

Николай, добрый день!

К сожалению, использовать можно только class или id.

"Савельева Анастасия Юрьевна" написал:

Николай, добрый день!

К сожалению, использовать можно только class или id.


Добрый день! У меня тот же вопрос, что и у Николая. Решен ли он на сегодняшний день?
У меня Версия 7.9.1.3284 и есть необходимость связать лендинг созданный на спец ресурсе по их созданию (платформа ЛП, флексби, тильда, ЛП генератор) с системой и получать лидов.

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

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

Пока такого решения в bpm'online не разработано. Мои коллеги передали Ваш вопрос на рассмотрение к доработкам.

Приятной работы.

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

Здравствуйте. Возникла проблема с автоматической нумерацией. При добавлении нового заказа, документа и т.д. автоматически изменяется номер. Однако, есть и такие ситуации, что создаётся заказ, но по каким-то причинам его не сохраняют. Возможно ли в системных настройках изменить такую нумерацию, чтобы номер изменялся только лишь при сохранении заказа, документа, договора и т.д.?
Благодарю

Нравится

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

Дмитрий,

В таких случаях логика автонумерации выносится на уровень объекта.
Т.е. пользователь получает номер создаваемой записи после ее сохранения.

В первую очередь вам потребуется заместить метод в js отвечающий за автонумерацию записей на карточке.

Посмотрите вот эту тема:
http://www.community.terrasoft.ru/forum/topic/10362

и то, это не даст вам 100% непрерывности нумерации, например, если произойдет ошибка после генерации номера.
можно вынести логику на триггер SQL, но у этого решения есть весомые минусы

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

Вопросы:
1) Где и как можно конфигурировать планировщик задач (на уровне администрирования - подключение к БД и т.д.)
2) Поделитесь опытом - как исключить запросы Quartz'a из профайлера SQL

Нравится

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

Здравствуйте, Дмитрий.

1. Необходимые параметры находятся в файле ConnectionStrings.config (в корне папки с бинарными файлами)
2. Запросы исключаются следующим образом:
[IMG]http://s012.radikal.ru/i320/1512/51/7bccf3c13715.png[/IMG]
[IMG]http://s017.radikal.ru/i416/1512/d3/f1e118b7cadc.png[/IMG]

"Сергей Кy6риш" написал:Необходимые параметры находятся в файле ConnectionStrings.config (в корне папки с бинарными файлами)

т.е. Quartz подключается по тем же настройкам, что и все приложение? Ок

Совершенно верно!

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

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

var config = {
    entitySchemaName: "SxSupply",
    multiSelect: false,
    columns: ["SxName", "SxShipping"]
};
var groupType = this.Terrasoft.createColumnIsNullFilter(
    "SxShipping");
config.filters = groupType;
this.openLookup(config, this.addSupplyCallback, this);

Вопрос: что необходимо добавить в config чтобы скрыть эту кнопку?

Нравится

6 комментариев
var config = {
						entitySchemaName: "SysAdminUnit",
						multiSelect: true,
						columns: ["Contact", "Name"],
						hideActions: true, // вот оно
						filters: filters
					}

но это коснется не только добавления, но и Изменения, и Удаления

Если требуется закрыть только Добавление - проще будет воспользоваться правами

"Андросов Дмитрий" написал:hideActions: true

А можно скрыть Добавление только определенных типов записей? (здесь в Добавить выбирается тип)

тут потребуются приемы из категории ниндзюцу по замещению толи LookupPage, толи LookupPageViewGenerator, толи LookupPageViewModelGenerator

Здравствуйте, Владимир!

Пример можно посмотреть в разделе "Активности" в версии 7.6.0+. Там несколько страниц редактирования, но в разделе доступны не все.

"Демьяник Алексей Олегович" написал:Пример можно посмотреть в разделе "Активности" в версии 7.6.0+. Там несколько страниц редактирования, но в разделе доступны не все.

С разделом разобрались. Теперь вопрос насчёт окна lookup.
Если я выбираю из списка документов с типом "акт", то должен создавать только акты

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

Попробуйте перед вызовом this.openLookup(config, this.addSupplyCallback, this); в свойство excludedTypes объекта config передавать массив уникальных идентификаторов карточек редактирования, которые не должны отображаться в меню добавления:

config.excludedTypes = ["39b28624-98e6-df11-971b-001d60e938c6","e72d71bc-fe0e-4173-9902-0f0f220beacb"];
this.openLookup(config, this.addSupplyCallback, this);
Показать все комментарии

Коллеги, добрый день.
Имеем следующую проблему:
При копировании из окна браузера текста на армянском языке и вставке его в поле Lookup Data (для поиска адреса) вставляются знаки вопроса вместо текста на армянском.
При вводе на армянском языке с раскладки клавиатуры этого текста - всё нормально.
Вопрос с копированием-вставкой крайне важен, хочется узнать ответ. Спасибо.

Нравится

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

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

Не смог повторить это поведение - с Google Translate все корректно копируется. Может быть все зависит от версии - проверял на 7.6.0.

Верю что норм на 7.6.0, гуд реклама:)
Интересует 3.3.2.1

Такое ощущение что не даёт сохранить текст на армянском в ANSI

Для линейки 3.Х полноценная поддержка Unicode появилась в 3.4.0. При необходимости с 3.3.2 можно обновится до 3.4.0, перезаказать лицензии (платно).

Здорово.
А патч реально какой-то получить для адекватной работы с этим полем?

Нет, согласно статье по ссылке, там полностью обновили ядро.

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

Для начала можно проверить на демоверсии, решает ли 3.4.0 Вашу изначальную потребность.

После обновления бинарников с 3.3.2.1 на 3.4.0.178, есть ошибка открытия конфигурации при входе scr_TaskUtils объект System уже создан.
Конфигурация у нас нетиповая, какие можете дать рекомендации?
Обновить хотим только ядро для поддержки юникода.

Можете использовать отладку и понять, в каком именно месте скрипта scr_TaskUtils возникает проблема. В зависимости от этого и смотреть, это сбой в стандартной логике или в доработках.

Благодарю. Где могу посмотреть порядок открытия конфигурации (в плане загрузки скриптов)?

Чтобы посмотреть и отредактировать скрипты, нужно вместо TSClient.exe запустить TSAdmin.exe, в дереве справа найти нужный скрипт (вручную или поиском).

Посмотрите по коду scr_TaskUtils, как там используется System. У меня встречаются только System.MessageDialog и System.Now. Может, у Вас есть ещё что-то.

Ещё, после запуска на 3.4 при добавлении лота в заказ вылезает ошибка "Для поля "CreatedByName" нет поля в источнике данных. Что это может быть? Дебаггер отправил на метод Scr_DB AppendRecordInDataset(Dataset, FieldNames, FieldValues, DontDisableEvents), но там также ничего не менялось, может в 3.4 этот метод отличается?
Мой:

function AppendRecordInDataset(Dataset, FieldNames, FieldValues, DontDisableEvents) {
	if (FieldNames.length != FieldValues.length) {
		throw DifferentElementCountInNameAndValueArrays;
	}		
	if (!DontDisableEvents) { 
		Dataset.DisableEvents();
	}
	try {
		Dataset.Append();
		Dataset.ValAsGUID('ID') = Connector.GenGUID();
		var Field;          
		for (var i = 0; i < FieldNames.length; i++) {
			Field = Dataset.DataFields(FieldNames[i]); 
			if (Field){
				Dataset.Values(FieldNames[i]) = FieldValues[i];
			}			
		}
		Dataset.Post();
	}
	finally {			 		
		if (!DontDisableEvents) { 	
			Dataset.EnableEvents();	
		}
	}
}		

Бред или нет, но проблема только в одном датасете, он после Append и постинга в себя он ругается на то что для поля для отображения нет поля в источнике данных. Если отдельно взять и вместо справочного поля создать два текстовых - один для ИД, второй для Name, то всё нормально. Как может такое быть, что один конкретный датасет, после перехода только ядра на версию 3.4 перестал себя вести прилично? Не понимаю...Сервис датасета прикладываю.

Добрый день.
Для начала необходимо убедится, что в сервисе tbl_Partable (логичное его имя) присутствует поле CreatedByID.
В сервисе scr_Partable включены поля (Всегда выбирать в запросе):

  • CreatedByID
  • CreatedByName

Такие сообщение появляются только в том случае, когда поле не участвует в запросе, т.е. его отключили. Отключили в сервисе запроса или с помощью одной из функции DisableAllColumns или EnableColumns(с параметром false)

Уже делал.
Удивительно, но проблема только с одним датасетом и только после перехода на новое ядро.
Кэш чистил.
Проблема осталась.

Ещё попробуйте пересохранить сервисы, связанные с этой таблицей: tbl, sq, ds. Что-то в них измените, потом верните как было и нажмите сохранение.

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

Доброго времени суток!
Подскажите где хранится имя первичной колонки для отображения?
Получить ее путем Terrasoft.[moduleName].primaryDisplayColumn.name невозможно, т.к. нахожусь я в другом разделе.

Нравится

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

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

Используйте Terrasoft.[moduleName].primaryDisplayColumn.columnPath. Для этого объект [moduleName] должен быть загружен на клиент. Для загрузки объекта на клиент require(["Activity"], function(schema))

Спасибо! Это то, что нужно.

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

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

Нравится

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

При нажатии на кнопку «Запустить рассылку» оно специально отфильтровывает те записи с детали, у которых состояние равно «Отправлено», чтобы можно было запустить рассылку второй раз только оставшимся и тем, у кого в первый раз отправилось с ошибкой.

Теоретически, логику можно доработать. Например, вытянуть поле «Состояние отправки» в карточку детали и при необходимости менять вручную.

Спасибо, Александр!

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