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

Но возникает вопрос - когда я восстановлю бэкап и запущу IIS, у меня запустятся все БП по расписанию, чего очень нужно избежать. 

Каким образом отключить эти БП sql-скриптом до старта IIS (все имена известны), чтобы результат был аналогичен действию из библиотеки процессов? И они не стартовали?

Нравится

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

Внесите ваши процессы (их SysSchemaId) в таблицу SysProcessDisabled (список отключенных БП)

Выбрать SysSchema.Id можно по их имени запросом:

SELECT id FROM SysSchema ss WHERE ManagerName='ProcessSchemaManager' AND name IN ('MIRegCRF0', 'MICRFdatecontrolM',

'SendResolution',

'IncidentRegistrationFromEmailProcess',

'SetOrderInWorkFromOperatorSingleWindowProcess')

 

Внесите ваши процессы (их SysSchemaId) в таблицу SysProcessDisabled (список отключенных БП)

Выбрать SysSchema.Id можно по их имени запросом:

SELECT id FROM SysSchema ss WHERE ManagerName='ProcessSchemaManager' AND name IN ('MIRegCRF0', 'MICRFdatecontrolM',

'SendResolution',

'IncidentRegistrationFromEmailProcess',

'SetOrderInWorkFromOperatorSingleWindowProcess')

 

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

Всем добрый день! 

Реализовал в заказе/лиде кнопку звонка - http://prntscr.com/ngpc8u

звонок вызываю через публикацию CallCustomer:

 

this.sandbox.publish("CallCustomer", {
					number: mobilePhone, 
					customerId: Terrasoft.SysValue.CURRENT_USER.value, 
					entitySchemaName: "Lead",
					callRelationFields: undefined
				});

 Какие параметры необходимо добавить что бы в звонке сохранился либо Лид/Заказ  + Контакт заказа если звоним из Заказа - http://prntscr.com/ngpenx ?

Или необходимо использовать другой метод?

Заранее благодарен.

Нравится

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

Перед отправкой сообщения сохраните ваш конфиг в "AdvisedIdentifiedSubscriberInfo", те

 

this.set("AdvisedIdentifiedSubscriberInfo", {

number: _nomer, 
                    customerId: this.get("Id"), 
                    entitySchemaName: "Lead",
                    callRelationFields: ...

});

 

Если не поможет (Насколько понимаю каждая интеграция с телефонией реализована по своему, возможно что запись в базу информации о звонке реализована напрямую из dll инсертами) то посмотрите что поступает в БД через sql профайлер и что за запросу идут через сервисы во вкладке Netwoork браузера. Возможно вам придется  найти Id звонка и обновить нужные вам поля в объекте.

Добрый день!

Попробуйте передать данные поля в callRelationFields. Это массив из объектов, типа:

{
	name: columnName,
	value: columnValue,
	type: this.Terrasoft.DataValueType.GUID
}

 

Сидоров Александр В.,

this.sandbox.publish("CallCustomer", {
					number: mobilePhone, 
					customerId: Terrasoft.SysValue.CURRENT_USER.value, 
					entitySchemaName: "Lead",
					callRelationFields: [{
						name: "Lead",
						value: leadId,
						type: this.Terrasoft.DataValueType.GUID
					}]
				});

Подставил параметры, не помогло, что не так?

Нигрескул Алексей,

Посмотрите, какие поля приходят в метод updateCallByIdentificationData схемы CtiPanelIdentificationUtilities. Может быть там возникают ошибки

Насколько я понимаю в customerId должна быть Id вашего Lead  с которого совершается звонок те набор полей customerId и EntitySchemaName вы определяете схему и идентификатор записи к которой будут добавлен набор полей из callRelationFields

Григорий Чех,

Передавал  customerId: leadId, entitySchemaName: "Lead" не помогло

Добавить комментарий

Сидоров Александр В.,

Продебажил данный метод, он даже не срабатывает при вызове через публикацию CallCustomer.

Перед отправкой сообщения сохраните ваш конфиг в "AdvisedIdentifiedSubscriberInfo", те

 

this.set("AdvisedIdentifiedSubscriberInfo", {

number: _nomer, 
                    customerId: this.get("Id"), 
                    entitySchemaName: "Lead",
                    callRelationFields: ...

});

 

Если не поможет (Насколько понимаю каждая интеграция с телефонией реализована по своему, возможно что запись в базу информации о звонке реализована напрямую из dll инсертами) то посмотрите что поступает в БД через sql профайлер и что за запросу идут через сервисы во вкладке Netwoork браузера. Возможно вам придется  найти Id звонка и обновить нужные вам поля в объекте.

Благодарю, попробую. Id звонка не проблема получить, переопределил схему CtiPanel, переопределил метод onCallSavedEvent и в нем по сути получаю звонок, и тут можно пушить в sandbox и подписываться там где нужно, ну это теоретически, Нужно только подумать как отловить нужную публикацию. Телефония Webitel. Может есть идеи по данному поводу, как отлавливать звонок, вот получаю лог звонка из переопределенного метода onCallSavedEvent - http://prntscr.com/ngvqpx. Просмотрел объект зацепится не за что, у кого какие идеи,заранее благодарен!

Вы пробовали сохранить в this.get("AdvisedIdentifiedSubscriberInfo") конфиг звонка включая поля которые вам нужно сохранить в карточке звонка?

Посмотрите при  сохранении что попадает в identificationFieldsData

 

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

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

После обновлении( https://academy.terrasoft.ru/documents/instrukciya-po-obnovleniyu-bpmonline-7-12-4?document=enterprise#HT_user_upgrade_instruction_backup) новой версий приложения, вошёл в систему все нормально, но когда я нажал компилировать все, до конца не дошёл, появляется несколько ошибок.

Это системные файлы, изменить нельзя.

Можете подсказать решение для такой ситуаций??

Прикрепленные файлы

Нравится

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

Добрый день. Вы уверены что при обновлении использовали бинарники для того же продукта что и у вас? (т.е. если у вас SalesEnterprice, бинарники от SalesCommerce не подойдут). Также обновляться можно только на одну версию (на версию 7.12.4 можно обновляться только с 7.12.3).

Добрый день. Вы уверены что при обновлении использовали бинарники для того же продукта что и у вас? (т.е. если у вас SalesEnterprice, бинарники от SalesCommerce не подойдут). Также обновляться можно только на одну версию (на версию 7.12.4 можно обновляться только с 7.12.3).

Дмитрий А.,

Добрый день Дмитрий

Вот здесь название бинарных файлов, версия 7.12.3.980_SalesEnterprise_Marketing_ServiceEnterprise_Demo_MSSQL_ENU и 7.12.4.924_SalesEnterprise_Marketing_ServiceEnterprise_Softkey_MSSQL_ENU, из название видно что старое версия идет с демо-наполнением, а новая Softkey, может быть в этом причина ??

Не могу ответить,наверно лучше обратиться в саппорт.

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

Добрый день,

у меня версия 7.12.3, и хочу обновить до версии 7.12.4, и согласно инструкциям(https://academy.terrasoft.ru/documents/instrukciya-po-obnovleniyu-bpmonline?utm_source=newsletter&utm_medium=email&utm_campaign=regular_updates_v7133_partners_ru&bulk_email_rid=8931&bpmtrackid=4&bpmreplica=0&contactId=3ab32569-7f5a-4cc8-a6f6-fd19fcac2ec5&bulkEmailRecipientId=99611cd5-0227-450f-a60d-9ba30890d353), сначала надо выполнить действия Сгенерировать исходный код для всех элементов, и когда я это делаю, появляться ошибка.  В логах  такая ошибка: 

Ошибка генерации исходного кода схемы "PredictCaseFieldValuesProcess" из пакета "MLCaseClassification". UId ce078417-ab31-44be-9c43-9199d72e8a92: Unable to cast object of type 'Terrasoft.Core.Process.ProcessSchemaStartSignalEvent' to type 'Terrasoft.Core.Process.ProcessSchemaActivity'.

2019-04-22 16:27:18,176 System.InvalidCastException: Unable to cast object of type 'Terrasoft.Core.Process.ProcessSchemaStartSignalEvent' to type 'Terrasoft.Core.Process.ProcessSchemaActivity'.

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.AddParameterMapInfo(Dictionary`2 processParameters, String match)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.AnalyzeParameterScriptCode(Dictionary`2 processParameters, ProcessSchemaParameter schemaParameter)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.FillProcessParameterInfo(Dictionary`2 processParameters, ProcessSchemaParameter schemaParameter, String keyPrefix)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.FillProcessParameterMappings(Dictionary`2 parametersMapInfo, IEnumerable`1 schemaParameters, Guid schemaElementUId)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.GenerateProcessParameterMappings()

   at Terrasoft.Core.Process.FlowSchemaGenerator.Generate()

   at Terrasoft.Core.Process.BaseProcessSchema.GenerateFlowSchema(IProcessComponentSetStateService stateService)

   at Terrasoft.Core.Process.ProcessSchemaManager.SaveFlowSchema(ProcessSchema schema, UserConnection connection)

   at Terrasoft.Core.Process.BaseProcessSchemaManager`1.ActualizeSchemaInfo(TBaseProcessSchema schema, Guid schemaId, UserConnection connection)

   at Terrasoft.Core.Process.BaseProcessSchemaManager`1.GetSchemaSources(TBaseProcessSchema schema, Guid schemaId, UserConnection connection)

   at Terrasoft.Core.SchemaManager`1.GenerateSchemaSources(TSchemaManagerSchema schema, Guid schemaId, UserConnection userConnection)

   at Terrasoft.Core.SchemaManager`1.GenerateSchemaSources(Guid sysSchemaId, ISchemaManagerItem schemaManagerItem, UserConnection userConnection)

   at Terrasoft.Core.Packages.PackageInstallUtilities.InternalInstallSchemasAssociatedData(Guid schemaId, SchemaDescriptor schemaDescriptor, Boolean continueIfError)

2019-04-22 16:27:18,184 Ошибка выполнения операции на элементе "PredictCaseFieldValuesProcess", UId = ce078417-ab31-44be-9c43-9199d72e8a92.

2019-04-22 16:27:18,184 System.InvalidCastException: Unable to cast object of type 'Terrasoft.Core.Process.ProcessSchemaStartSignalEvent' to type 'Terrasoft.Core.Process.ProcessSchemaActivity'.

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.AddParameterMapInfo(Dictionary`2 processParameters, String match)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.AnalyzeParameterScriptCode(Dictionary`2 processParameters, ProcessSchemaParameter schemaParameter)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.FillProcessParameterInfo(Dictionary`2 processParameters, ProcessSchemaParameter schemaParameter, String keyPrefix)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.FillProcessParameterMappings(Dictionary`2 parametersMapInfo, IEnumerable`1 schemaParameters, Guid schemaElementUId)

   at Terrasoft.Core.Process.BaseFlowSchemaGenerator`1.GenerateProcessParameterMappings()

   at Terrasoft.Core.Process.FlowSchemaGenerator.Generate()

   at Terrasoft.Core.Process.BaseProcessSchema.GenerateFlowSchema(IProcessComponentSetStateService stateService)

   at Terrasoft.Core.Process.ProcessSchemaManager.SaveFlowSchema(ProcessSchema schema, UserConnection connection)

   at Terrasoft.Core.Process.BaseProcessSchemaManager`1.ActualizeSchemaInfo(TBaseProcessSchema schema, Guid schemaId, UserConnection connection)

   at Terrasoft.Core.Process.BaseProcessSchemaManager`1.GetSchemaSources(TBaseProcessSchema schema, Guid schemaId, UserConnection connection)

   at Terrasoft.Core.SchemaManager`1.GenerateSchemaSources(TSchemaManagerSchema schema, Guid schemaId, UserConnection userConnection)

   at Terrasoft.Core.SchemaManager`1.GenerateSchemaSources(Guid sysSchemaId, ISchemaManagerItem schemaManagerItem, UserConnection userConnection)

   at Terrasoft.Core.Packages.PackageInstallUtilities.InternalInstallSchemasAssociatedData(Guid schemaId, SchemaDescriptor schemaDescriptor, Boolean continueIfError)

Подскажите что нужно сделать что бы ее исправить?

Конфигурация успешно компилируется. Сайт работает.

Прикрепленные файлы

Нравится

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

Для решения необходимо добавить запись <add key="Feature-UseCodeAnalyzer" value="false" /> (или если она есть модифицировать значением false), в конфиге приложения  и WorkspaceConsole (Terrasoft.WebApp\Web.config и Terrasoft.Tools.WorkspaceConsole.exe.config). Затем выполнить команду "Сгенерировать для требующих генерации" и команду "Компилировать все".

Мотков Илья,

Спасибо, внес изменения в Web.config и Terrasoft.Tools.WorkspaceConsole.exe.config и заработало.

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

Всем доброго времени суток!

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

Если стандартными средствами невозможно реализовать данный функционал, что посоветуете, в какую сторону смотреть?

 

Заранее благодарен!

Нравится

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

Только записи на которые у оператора есть права должны ему выводится (согласно документации по работе с Единым окном), обратитесь в тех поддержку с вопросом возможно в следующих версиях продукта данная проблема устранена. 

Только записи на которые у оператора есть права должны ему выводится (согласно документации по работе с Единым окном), обратитесь в тех поддержку с вопросом возможно в следующих версиях продукта данная проблема устранена. 

Механизм открытия карточки из очереди реализуется в БП «Обработка обращений из очереди в Едином окне», недавно обсуждавшемся.

Там нет никаких проверок прав. Можно добавить логику, чтобы карточка открывалась только в случае наличия прав у текущего пользователя.

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

Здравствуй, уважаемое сообщество!

Долгое время назад был написан бизнес-процесс, который до некоторого времени стабильно выполнял свои функции, и в конце отправлял email пользователю... но последние несколько дней перестал это делать.

Решил проверить БП и при нажатии на элемент "Отправить email" появляются ошибки в консоли "Cannot read property 'setValue' of undefined", и параметры элемента не отображаются - вечная "Загрузка".

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

 

Подскажите, пожалуйста, куда копать и что можно глянуть?

Нравится

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

Попробуйте перегенерировать схемы  очистить редис и скомпилировать все. При компиляции если ошибка останется вы должны увидеть в какой схеме происходит ошибка (источник ошибки).

Попробуйте перегенерировать схемы  очистить редис и скомпилировать все. При компиляции если ошибка останется вы должны увидеть в какой схеме происходит ошибка (источник ошибки).

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

У меня имеется пакет установлен как и другие через репозиторий и он заблокировался каким-то образом. При попытке добавить файл выдает ошибку "Невозможно сохранить изменения элемента, так как пакет, в который он сохраняется, заблокирован другим пользователем". Попробовал поменять значения IsLocked и IsChanged в SysPackage, SysSchema. Привязанных данных нет. Почистил Redis, перезапускал Redis. Менял обратно значения. Ничего не помогает. Зафиксировать тоже не дает. Как такое лечить? Maintainer установлен также как в системных настройках. Другие пакеты в порядке

Нравится

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

Решил вопрос. Зашел через тортилку в repo-browser и снял блокировку с каждого файла в пакете. Сделал коммит в файловой системе, восстановил в БД из репозитория и там у пакета оказался maintainer прежним, до моего изменения. Не знаю почему так вышло, поменял maintainer как надо. всё работает

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

Доброго дня!

Приведу пример на стандартных объектах. В карточке Контрагента есть поле Страна. В справочник Страна добавлено поле Источник. Нужно в поле Источник записывать информацию о том, из какого объекта (контрагента) была создана эта запись. 

Сценарий такой:

- Пользователь через лукап в поле Страна открывает окно поиска

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

 

Вопрос. Как сохранить сведения об источнике добавления записи...что она добавлена именно из этого контрагента?

Есть похожая тема: https://community.terrasoft.ru/questions/zapolnenie-polei-v-kartocke-pr… там нет решения.. и новых ответов тоже.

 

Спасибо!

 

Нравится

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

А если использовать гипотезу, что раз он добавил новую запись, например, страны, то он ее и выберет в контрагенте. Далее смотрим, что у новой страны нет записи, откуда она была добавлена и находим те записи, которые ссылаются на нее (брать первую запись по дате изменения). Это можно сделать периодическим бизнес процессом.

Думаю простого решения нет, как вариант сохранить в сессии пользователя источник (название страницы редактирования) переопределить добавление записи в LookupPage (заполнять источник из сессии)

Если делать свою страницу выбора со справочника (наследник LookupPage), то потом можно его подключить добавив в атрибут (Пример для страницы выбора из справочника городов): 

"City": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"lookupListConfig": {
		lookupPageName: "MyBaseLookup",
	}
}

Подробнее тут

Так же похожий вопрос обсуждался тут

 

А если использовать гипотезу, что раз он добавил новую запись, например, страны, то он ее и выберет в контрагенте. Далее смотрим, что у новой страны нет записи, откуда она была добавлена и находим те записи, которые ссылаются на нее (брать первую запись по дате изменения). Это можно сделать периодическим бизнес процессом.

Тогда можно ещё проще: при сохранении контрагента во встроенном или отдельном БП проверять значение «Страна.Источник» и если там пусто, заполнять Id этого контрагента.

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

 

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

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

Пытаюсь синхронизировать Организационные роли с AD, при запуске синхронизации пользователи перемещаются, но в журнале появляется ошибка "Terrasoft.Common.DbOperationException: The UPDATE statement conflicted with the FOREIGN KEY constraint "FKMpbRxbvqMdsx1Iial2kKB1MywA". The conflict occurred in database "TerrasoftDB", table "dbo.Account", column 'Id'."

FK связывает столбец AccountId в таблице Contact и Id в Account.

Id в таблице проверил, пустых и битых нет.

Не подскажете, куда копать?

Нравится

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

В синхронизации с АД в лоб был зашит контрагент с именем Наша компания и id="E308B781-3C5B-4ECB-89EF-5C1ED4DA488E"

Проверьте что в базе (таблица Account) есть такой Id. Если нет создайте запись. Контрагента наша компания не рекомендуется удалять лучше  его переименовать в название вашей компании!

Обычно такая ошибка может возникнуть, если в поле пытаются вставить Id, которого нет в базе данных. В данном случае Id из таблицы Account.

Посмотрите sql-профайлером, на каком именно запросе происходит свал и проанализируйте его значения.

В синхронизации с АД в лоб был зашит контрагент с именем Наша компания и id="E308B781-3C5B-4ECB-89EF-5C1ED4DA488E"

Проверьте что в базе (таблица Account) есть такой Id. Если нет создайте запись. Контрагента наша компания не рекомендуется удалять лучше  его переименовать в название вашей компании!

Спасибо, Алла, нашел ошибку с помощью Профайлера.

Спасибо, Григорий, вы правы, контрагента с таким Id в таблице нет, но и в свойствах контакта указан другой контрагент с именем Восток Запад и типом "Наша компания", который существует. Не пойму откуда взялся Id E308B781-3C5B-4ECB-89EF-5C1ED4DA488E? Создать конечно могу, но разобраться бы как это работает.

Виталий Егоров,

Если наткнулись на E308B781-3C5B-4ECB-89EF-5C1ED4DA488E, то как я и писал в лоб зашито в интеграции с АД :) Лучше востановите контрагента

Спасибо, Григорий.

А не помните случайно, в какой схеме это можно увидеть?

Виталий Егоров,

Увы нет, но она в нескольких местах вылазила недавно вот всплыла в формировании счета на оплату.

Например, если поискать через базу по коду, в схеме AccountConsts и в БП объекта Invoice упомянут этот GUID.

select *
from SysSchemaSource
where source like '%E308B781-3C5B-4ECB-89EF-5C1ED4DA488E%'

 

Всем огромное спасибо, ошибка устранена.

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

Здравствуйте, коллеги!

Создал по аналогии с CreateInvoiceFromOrder создание счета из договора - CreateInvoiceFromContract

Все работает отлично, за исключением одного момента

В новом счете не заполняется поле Supplier (подразумевается, что это наша компания), всегда пустое после открытия карточки.

Ранее обнаружил, что и CreateInvoiceFromOrder не работал, ибо что то там foreign key в таблице Account, оказалось, что в в объекте Invoice по умолчанию стояло заполнять это поле каким то левым гуидом e308b781-3c5b-4ecb-89ef-5c1ed4da488e. Я это дело исправил в одном из своих пакетов, но видно все равно это как то сказывается.

Прошу помощи.

Нравится

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

Борис Леонов,

namespace Terrasoft.Configuration

{

    public static class AccountConsts

    {

        public static readonly Guid OurCompanyAccountId = new Guid("E308B781-3C5B-4ECB-89EF-5C1ED4DA488E");

    }

}

OurCompanyAccountId  это Id Нашей компании, рекомендуется при начале внедрения эту запись переименовать в название вашей компании, возможно вы ее удалили изза этого и могли возникнуть проблемы в работе с созданием счета

В чем вы просите помощи?

Добрый день!

В БП  CreateInvoiceFromOrder есть метод

public virtual void CreateInvoice() {
	OrderInvoiceHelper helper = Factories.ClassFactory.Get&lt;OrderInvoiceHelper&gt;(new Factories.ConstructorArgument("userConnection", UserConnection));
CreatedInvoiceId = helper.CreateEntity("Order", "Invoice", CurrentOrder, new Dictionary&lt;string, string&gt; {
	{"Currency", "Currency"},
	{"CurrencyRate", "CurrencyRate"},
	{"Contact", "Contact"},
	{"Account", "Account"},
	{"Owner", "Owner"},
	{"Amount", "Amount"},
	{"Opportunity", "Opportunity"}
}, new Dictionary&lt;string, object&gt; { { "Order", CurrentOrder } });
}

который создает Invoice по Order. 3им параметром идет словарь-маппинг полей Invoice по Order, 4ым параметром (new Dictionary<string, object> { { "Order", CurrentOrder } }) предустановленные параметры. Вот ваш Supplier надо добавить туда

Григорий Чех пишет:

В чем вы просите помощи?

Победить глюк с незаполнением Supplier в новом счете.

Сидоров Александр В.,

Александр, мой вариант сейчас выглядит так:

public virtual void CreateInvoice() {
	OrderInvoiceHelper helper = Factories.ClassFactory.Get&lt;OrderInvoiceHelper&gt;(new Factories.ConstructorArgument("userConnection", UserConnection));
	var createdInvoiceId = helper.CreateEntity(
		"Contract", "Invoice", Get&lt;Guid&gt;("CurrentContract"), new Dictionary&lt;string, string&gt; {
			{"Currency", "Currency"},
			{"CurrencyRate", "CurrencyRate"},
			{"Contact", "Contact"},
			{"Account", "Account"},
			{"CustomerBillingInfo","CustomerBillingInfo"},
			{"OurCompany", "Supplier"},
			{"SupplierBillingInfo", "SupplierBillingInfo"},
			{"Owner", "Owner"},
			{"Amount", "Amount"},
			{"Order","Order"},
			{"Opportunity", "Opportunity"}
		},
		new Dictionary&lt;string, object&gt; {
			{"Contract", Get&lt;Guid&gt;("CurrentContract")},
			{"ZLPaymentType", Get&lt;Guid&gt;("PaymentType")}
		});
	Set("CreatedInvoiceId", createdInvoiceId);
}

 

Про левый Guid в значении по умолчанию для Supplier в Invoice имею в виду это:

я переопределил это безобразие на "не устанавливать значение по умолчанию" в своем пакете, CreateInvoiceFromOrder заработал, но лишь потому, что  в Заказе нет полей с нашей компанией (поставщиком), нечем в счете заполнять.

откуда лезет этот e308b781-3c5b-4ecb-89ef-5c1ed4da488e, причем у объектов в залоченных фирменных террасофтовских пакетах?

Борис Леонов,

namespace Terrasoft.Configuration

{

    public static class AccountConsts

    {

        public static readonly Guid OurCompanyAccountId = new Guid("E308B781-3C5B-4ECB-89EF-5C1ED4DA488E");

    }

}

OurCompanyAccountId  это Id Нашей компании, рекомендуется при начале внедрения эту запись переименовать в название вашей компании, возможно вы ее удалили изза этого и могли возникнуть проблемы в работе с созданием счета

Борис Леонов,

{"OurCompany", "Supplier"}, - это значит значение из поля OurCompany объекта Contract скопировать в поле Supplier объекта Invoice.
Если вам надо именно одно и то же значение всегда записывать, то вам надо добавить параметр в словарь 
new Dictionary<string, object> {
			{"Contract", Get<Guid>("CurrentContract")},
			{"ZLPaymentType", Get<Guid>("PaymentType")}
		}

Да, ни в коем случае не удаляйте эту "Нашу компанию". Она ещё в некоторых местах жёстко зашита. Например, в интеграции с AD

Григорий Чех,

Владимир Соколов,

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

Если я руками создам Account с нужным Id и объединю его с существующей «нашей компанией», проблема решится?

Да должно

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