Доброго времени суток всем!
Вопрос к тем, кто уже работал с такой деталью и разобрал всё по полочкам.
Каким образом можно получить доступ к уровню записи в иерархии детали?

Нравится

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

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

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

Добрый день!

Подскажите, пожалуйста, на что влияет количество пакетов? Будет ли тормозить продакш среда из-за этого или увеличивается только время компиляции?

Можно ли переносить пакеты между средами частично? Допустим пакет содержит схему1, объект1, процесс1 и объект2, схему2.
Схема1, объект1 и процесс1 готовы к переносу, а схема2, объект2 - нет.
Я могу перенести на рабочую среду только Схему1, объект1 и процесс1 из пакета?

Нравится

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

Здравствуйте, Любовь!

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

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

"Савельева Алла" написал:

Здравствуйте, Любовь!

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

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


Спасибо!

"Савельева Алла" написал:Частичный перенос возможен, если Вы выполняете перенос с помощью SVN. В этом случае обязательным условием является наличие одного и того же пакета и совпадание их версий на Ваших средах.

Подскажите, пожалуйста, как создать новую версию пакета? ни на community,ни на академии не нашла информации по этому вопросу

Также не могу сообразить, как сделать частичную фиксацию в SVN . В самом UI можно зафиксировать только пакет целиком, отдельно файлы нельзя. Это делается через файловую систему или visual studio?
Или частичный перенос не обеспечивается частичной фиксацией в svn?

"Zaitova Liubov" написал:Подскажите, пожалуйста, как создать новую версию пакета?

Создать новую версию пакета можно 2-мя способами:
1) в конфигурации bpm'online создаете новый пакет с таким же названием и указываете номер версии;
2) для существующего пакета версию можно изменить на уровне базы данных - в таблице SysPackage поле Version.

"Zaitova Liubov" написал:Также не могу сообразить, как сделать частичную фиксацию в SVN . В самом UI можно зафиксировать только пакет целиком, отдельно файлы нельзя. Это делается через файловую систему или visual studio?

Первый раз нужно зафиксировать в svn пакет целиком. Фиксация пакетов выполняется через конфигурацию bpm'online или файловую систему по выбору разработчика. Мы рекомендуем делать это через конфигурацию bpm'online.

"Zaitova Liubov" написал:Или частичный перенос не обеспечивается частичной фиксацией в svn?

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

Обращаю Ваше внимание, что ответ на данный вопрос подразумевает использование версии не ниже bpm'online 7.9.0.

"Савельева Алла" написал:Создать новую версию пакета можно 2-мя способами:
1) в конфигурации bpm'online создаете новый пакет с таким же названием и указываете номер версии;
2) для существующего пакета версию можно изменить на уровне базы данных - в таблице SysPackage поле Version.

1) создать пакет с таким же названием, но с другой версией мне не дала система. вышла ошибка, что пакет с таким названием уже существует.

2) Поменяла версию в базе данных с 1.0.0 на 1.2.0. Попыталась зафиксировать пакет в хранилище - вышла ошибка, что такого пути нет http://ххх/view/head/packageD/branches/1.2.0. Создала папку 1.2.0 по указанному пути вручную. При попытке зафиксировать пакет в хранилище выходит ошибка "При работе с хранилищем произошла ошибка". в журнале событий ошибок нет
Как правильно организовать работу с версиями?
Нам они нужны, например, чтобы делать хотфиксы

Здравствуйте, Любовь!

Для консультации по возникающей у Вас ошибке с работой SVN обратитесь, пожалуйста, в службу поддержки - напишите письмо на support@terrasoft.ru с детальным описанием ошибки (со скриншотами) и последовательностью действий, которая привела к её возникновению.

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

Добрый день.
Подскажите как правильно настроить IDE среду для отладки серверного.
Интересует именно отладка методов работающих с БД. К примеру есть метод получающий запись из базы но отладить его я не могу, при установке точки остановки получаю ошибку:
---------------------------
The following breakpoint cannot be set: At FileUtilService.cs, line 28 character 13 ('Terrasoft.Configuration.CustomConfigurationService.FileUtilService.test(List model)') The breakpoint failed to bind. ---------------------------

bpm'online version 7.9.1

Нравится

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

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

Нравится

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

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

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

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

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

Версия 7.9 sales.

Нашёл тему, что возможно сделать редактируемый реестр сразу на странице раздела: https://community.terrasoft.ru/forum/topic/12854

Возможно ли это в версиях 7.8 - 7.9, и если да - то можно ли где-нибудь посмотреть пример?

Нравится

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

"Смородинов Денис" написал:можно ли где-нибудь посмотреть пример?
Я так полагаю в BaseLookupConfigurationSection. Конкретно:

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"type": "listed",
		"generateControlsConfig": {"bindTo": "generateActiveRowControlsConfig"},
		"changeRow": {"bindTo": "changeRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
}

Ну и соответственно покопаться в методах.

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

Версия приложения 7.8

Тривиальнейшая для любой многопользовательской системы задача:
"Разграничивать UI функциональность на основе принадлежности текущего пользователя к группе/роли и т.д."
Как правило в системах имеется API/функционал для получения/проверки этой информации.
Как быть с BPMOnline и кодом исполняющимся в клиентских схемах (JavaScript).
Пример юзкейса: Показывать кнопку только пользователям одного OU или FU, а стало быть осуществлять проверку при инициализации по данным текущего юзера.

Все что пока что удалось найти это:

this.Terrasoft.SysValue


Из этого объекта можем получить ряд информации, на любом этапе выполнения кода.
PS: В исходных кодах (Правда 7.9, возможно в 7.8 - еще не было) обнаружено также частое использование
Terrasoft.CurrentUser
// его свойств userType, contactId и т.д.

Но в моем случае он постоянно undefined

Далее в исходниках и на этом форуме пытался найти функционал который так или иначе использует значения Id-шника пользователя для получения списка его OU и FU
Я прямо таки вижу какой ни будь

Terrasoft.util.getUserOrganizationUnits(UserId);
Terrasoft.util.getUserFunctionalityUnits(UserId);

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

Нравится

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

Здравствуйте, Илья.

Получить Id текущего пользователя возможно следующим кодом:

Terrasoft.core.enums.SysValue.CURRENT_USER.value

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

"Севостьянов Илья Сергеевич" написал:единственный способ это ESQ-запрос в соответствующие таблицы БД ?

Ага. Самое обидное - запрос с коллбэком и приходится каждый раз изворачиваться.
Кстати в приведённом кейсе все относительно легко делается.

А где, в каких таблицах что лежит, что-то я запутался...
SysAdminUnits - содержит в себе и пользователей и орг роли вперемешку.
В каких таблицах соотношение самих пользователей к OU не ясно
Есть некая SysAdminUnitsInRole
Может кто ни будь прояснить:
1) В какой таблице хранятся сами пользователи ?
2) В какой таблице хранятся Организационные юниты ?
3) В какой таблице хранятся Функциональные роли ?
5) В каких таблицах определяется принадлежность пользователя или OU к FR и и т.д.?

Илья, названия таблиц в единственном числе: SysAdminUnit, SysAdminUnitInRole.

SysAdminUnit — хранятся и пользователи, и роли всех видов. Тип записи задаётся числом в поле SysAdminUnitTypeValue. Расшифровку чисел можно посмотреть в таблице SysAdminUnitType. 4 — пользователь, 5 — портальный, 6 — функциональная, 0, 1, 2, 3 — разные организационные.

SysAdminUnitInRole — вхождение пользователей в роли. В записи две ссылки на SysAdminUnit, в полях SysAdminUnitId и SysAdminUnitRoleId указаны, соответственно, пользователь и роль.

Для всех кто будет озадачен этой проблемой, выкладываю решение, чтобы вы не тратили свое драгоценное время.
Миксин-модуль "UserUtilsMixin"

define("UserUtilsMixin", ["UserUtilsMixinResources"],
	function(resources) {
		Ext.define("Terrasoft.configuration.mixins.UserUtilsMixin", {
			"alternateClassName": "Terrasoft.UserUtilsMixin",
			"getRelAU": function(UserId, callback) {
				var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
					rootSchemaName: "SysUserInRole"
				});
				var filter = this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.EQUAL,
					"SysUser",
					UserId
				);
				esq.filters.addItem(filter);
				esq.addColumn("SysRole");
				esq.addColumn("[SysAdminUnit:Id:SysRole].Name", "AuName");
				esq.addColumn("[SysAdminUnit:Id:SysRole].ParentRole", "Parent");
				esq.addColumn("[SysAdminUnit:Id:SysRole].[SysAdminUnitType:Value:SysAdminUnitTypeValue].Name", "AuType");
				esq.getEntityCollection((function(response) {
					if (response && response.success) {
						var resultObject = {
							FuncRoles: [],
							OrgUnits: [],
							Organizations: []
						};
						response.collection.each(function(item) {
							var wrapObj = {
								name: item.values.AuName,
								id: item.values.SysRole.value,
								parentAU: item.values.Parent
							};
							var type = item.values.AuType;
							if (type === "Division") {
								resultObject.OrgUnits.push(wrapObj);
							} else if (type === "Функциональная роль") {
								resultObject.FuncRoles.push(wrapObj);
							} else if (type === "Organization") {
								resultObject.Organizations.push(wrapObj);
							}
						});
						this.callback(resultObject);
					}
				}).bind({"callback": callback}), this);
			}
		});
	});

Расширяет текущий набор методов (схемы куда данный миксин будет подключен), методом
getRelAU (user_id, callback);
user_id - [color=red](String)[/color] [color=green][Обязательный][/color] идентификатор Id пользователя информацию по Административным юнитам которого требуется получить.
callback - [color=red](Function)[/color] [color=green][Обязательный][/color] коллбек, принимающий один аргумент, в котором будет содержаться результирующий объект, см. структуру результирующего объекта далее
пример вызова:

	this.getRelAU(
             Terrasoft.core.enums.SysValue.CURRENT_USER.value, 
             function(result) {
		console.log(result);
             }
        )

Результирующий объект:

в нем "Функциональные роли":

в нем "Организационные юниты":

и "Организации":

Пользуйтесь на здоровье :)
PS: В идеале надо иерархическую информацию полностью до корня по FU и OU собирать, но это подзапросы (тяжело по перфомансу и все таки наверное это частный случай) в текущем варианте вытягиваются данные по прямому родителю - обычно этого достаточно.

в отдельной теме разместил обновленный вариант миксина.

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

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

var recId = this.get("Id");
var requestUrl = " CardModuleV2/LeadPageV2/edit/" + recId;
this.sandbox.publish("PushHistoryState", {
    hash: requestUrl
});

Нравится

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

Могу предположить что нужно посмотреть в исходных кодах базовой карточки или раздела, и искать в направлении historyStateInfo.workAreaMode === 2 (так выполняется проверка на совмещенный режим).

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

Не совсем понятно, что нужно конкретно.
Вы можете объявить в diff раздела и карточке, а сами функции, например, прописать в миксине, который подключите к разделу и карточке.
В этом миксине можете так же написать функцию, на проверку того в каком режиме открыта карточка, а в самой карточке вызывать эти функции.

Спасибо за помощь :smile:
Суть в том, что есть кнопка удаления в разделе карточки, которая прописана в LeadSectionV2, использующая стандартную функцию deleteRecords из GridUtilitiesV2 и работает в совмещенном режим, но если перейти из контакта в лид или просто перезагрузить страницу, то карточка открывается в раздельном режиме и уже кнопка берется из LeadPageV2, и deleteRecords не срабатывает корректно. В соседней теме советовали использовать deleteQuery, но она не отображает связанные записи и не выполняет каскадное удаление. Поэтому хотели попробовать сделать, чтобы по нажатию кнопки из раздельного режима выполнялся переход в совмещенный и сразу запускалась необходимая функция из LeadSectionV2.

Сам лично не сталкивался с подобным кейсом.
Значит всё же вам по исходным кода javascript надо искать логику открытия страницы в совмещенном режиме и копировать её в LeadPageV2.
Моё мнение.
Либо нужно сделать миксин и логику кнопки из LeadSection копировать в миксин, заранее немного пересмотрев логику удаления связей.

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

Спасибо, попробовали с помощью PushHistoryState передавать Id.
В LeadPageV2 прописали :

		methods: {
		        delete: function() {
		            var recId = this.get("Id");
 
		            this.sandbox.publish("GetRecordId", this.get("Id"), [this.sandbox.id]);
		            console.log(this.sandbox.id);
 
		            var requestUrl = "SectionModuleV2/LeadSectionV2/";
		            this.sandbox.publish("PushHistoryState", {
		                hash: requestUrl
		            });
 
		        }
 
		    },
		    messages: {
		        "GetRecordId": {
		            mode: Terrasoft.MessageMode.PTP,
		            direction: Terrasoft.MessageDirectionType.PUBLISH
		        }
 
		    }

,а в LeadSectionV2 :

            onEntityInialized: function() {
                this.callParent(arguments);
 
                var recId2 = this.sandbox.id;
                this.sandbox.subscribe("GetRecordId", function() {
                    alert("check")
                }, [this.sandbox.id]);
 
                if (recId2) {
 
                    var activeRow = this.getActiveRow();
                    if (activeRow && activeRow.isNew) {
                        this.removeGridRecords([activeRow.recId2]);
                    } else {
                        var items = this.getSelectedItems();
                        if (!items || !items.length) {
                            return;
                        }
                        this.checkCanDelete(items, this.checkCanDeleteCallback, this);
                    }
                }
            }
 
 
            },
 
            messages: {
                "GetRecordId": {
                    mode: Terrasoft.MessageMode.PTP,
                    direction: Terrasoft.MessageDirectionType.SUBSCRIBE
                }
            }

Но в консоли пишет ошибку:  message direction set as publish
И не передается Id, подскажите, пожалуйста в чем может быть ошибка?

Хм, а вы точно уверены что в месте подписки [this.sanbox.id] идентичный с [this.sanbox.id] в месте отправки?
Добавлю работающий пример передачи значений c детали в карточку через песочницу.
Так же могу предположить, что массив messages нужно было объявить до methods, но скорее всего это не имеет значения.

За это отвечает свойство конфигурационного объекта workAreaMode и соответствующее значение ConfigurationEnums.WorkAreaMode.COMBINED
пример для PushHistoryState

this.sandbox.publish("PushHistoryState", {
	hash: this.Terrasoft.combinePath("SectionModuleV2", "SysAdminUnitSectionV2",
		pageName, "edit", primaryColumnValue),
	stateObj: {
		module: "SectionModuleV2",
		operation: "edit",
		primaryColumnValue: primaryColumnValue,
		schemas: [
			"SysAdminUnitSectionV2",
			pageName
		],
		workAreaMode: ConfigurationEnums.WorkAreaMode.COMBINED,
		moduleId: this.sandbox.id,
		UsersActiveRow: this.get("ActiveRow"),
		FuncRolesActiveRow: this.get("FuncRolesActiveRow"),
		OrgRolesActiveRow: this.get("OrganizationalRolesActiveRow")
	}
});

пример для OpenCardInChain (В сути оберткой над PushHistoryState)

this.openCardInChain({
	"schemaName": "ServiceModelPage",
	"moduleId": this.sandbox.id + "_ServiceModelPage",
	"isSeparateMode": false,
	"defaultValues": defaultValues,
	"workAreaMode": ConfigurationEnums.WorkAreaMode.COMBINED
});

Огромное спасибо, получилось переключать режим по нажатию кнопки. :smile:
Не подскажите, пожалуйста, в чем может быть причина, что при переходе напрямую из раздела в карточку кастомная кнопка работает, а если перейти в совмещенный режим используя код выше, то кнопка не откликается на нажатие, и ошибки в консоли отсутствуют.

"Maria H" написал:ошибки в консоли отсутствуют.

А что за кнопка? Вероятно кнопка ищет реализацию метода в карточке секции, т.к. совмещенный режим обрабатывается секцией.

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

Коллеги, добрый день!

Подскажите, в чем может быть проблема:
спроектирован бизнес-процесс, который корректно отрабатывает при запуске от пользователя.
Если данный процесс запланировать в QUARTZ, то он запускается, но выполняет только часть своей задачи. В журнале отображается ошибка:

System.Exception: Ошибка выполнения БП: BulkSmsId:95839e74-7d60-4220-8993-7a3995e0674b; Msg: Object reference not set to an instance of an object. BulkSmsId:5435b20b-55a9-4b5d-9844-20ee5e4b0459; Msg: Object reference not set to an instance of an object. at Terrasoft.Core.Process.NrbActualizeDailyBulkSms2MethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context) at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

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

UPD: ввел в заблуждение, так как id не имеют значения. Необходимо понять почему система не может найти объект при запуске из QUARTZ, а при запуске от пользователя - находит.

Нравится

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

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

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

Пропишите по возможности логирование в выполнение элемента ScriptTask1Execute.

"Терещук Павел" написал:

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

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

Пропишите по возможности логирование в выполнение элемента ScriptTask1Execute.


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

"Сережкин Дмитрий Сергеевич" написал:А как такое возможно, что при запуске от пользователя параметры все заполнены, а при запуске из планировщика, какой-то теряется?

Может быть UserConnection?

Вполне может быть.

Добавьте логи в свою логику работы процесса. Можно залогировать параметры, чтобы понимать, есть в них данные или нет, а также проверить логику работы элемента БП.

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

Коллеги, добрый день.

Можете, пожалуйста, подсказать каким образом можно в разделе аналитики создать кнопку через виджет? По кнопке открывается определенная ссылка и кнопок планируется сделать достаточно много. Блок "Web-страница" не подходит по ряду причин, необходимо реализовать именно кнопками.

Нравится

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

Здравствуйте, вот пример виджета с произвольным HTML, по аналигии можете там написать любой HTML:

define("UsrMySimpleWidget", ["ext-base", "terrasoft", "sandbox", "BaseFiltersGenerateModule",
"UsrMySimpleWidgetResources"], function(Ext, Terrasoft, sandbox, BaseFiltersGenerateModule, resources) {
 
           function getViewModel() {
                return Ext.create("Terrasoft.BaseViewModel", {
                     entitySchema: "Activity",
                     methods: {
                           getChart: function(key) {
                                sandbox.publish("GenerateChart", key);
                           },
                           load: function() {
                           }
                     }
                });
           }
 
           function generateMainView(renderTo) {
 
                var resultConfig = Ext.create("Terrasoft.Container", {
                     id: "myContainer",
                     selectors: {
                           wrapEl: "#myContainer"
                     },
                     renderTo: renderTo
                });
                return resultConfig;
           }
 
           function fillDom() {
                var htmlAdded = "<div>hello world!</div>";
                Ext.get("myContainer").setHTML(htmlAdded);
           }
 
           var render = function(renderTo) {
 
                var viewConfig = generateMainView(renderTo);
                var viewModel = getViewModel();
 
                fillDom();
 
                viewConfig.bind(viewModel);
                viewConfig.render(renderTo);
           };
 
           return {
                schema: "Activity",
                methods: {
 
                },
                userCode: function() {
 
                },
                init: function() {
 
                },
                filterChanged: function(filter, eOpts) {
 
                },
                render: render
           };
     }
);

Максим, спасибо! будем пробовать)

как это вызвать в настройках самого виджета? никто не пишет

Сергей Зеленский,

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

https://academy.terrasoft.ru/docs/developer/interface_elements/dashboar…

 

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

Поясню суть.
Было реализовано собственное визирование на основе базовых примеров, которые присутствуют в системе, например Invoice или Contract.
Одним из этапов создания визирования является написания VisaNitificationProvider.
Так же написание собственного провайдера нотификаций было сделано на основе базового примера ContractVisaNotificationProvider.

До обновления до версии 7.9.2 всё работало корректно (версия 7.9.1), буквально сегодня утром.
После этого обновления провайдеры, которые ни единожды были мной созданы, по какой-то неопознанной причине отказываются опубликовываться показывая ряд из 19 ошибок.

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

Так же прилагаю исходный код провайдера для визирования счетов (созданный вашими разработчиками).

Нравится

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

У вас ошибки в схеме TravelingLeafVisaNotification.cs

"Варфоломеев Данила" написал:

У вас ошибки в схеме TravelingLeafVisaNotification.cs


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

"Кисловский Михаил Андреевич" написал:те же просто код идентичный с базовым.

Так. Секунду.
Ошибки в схеме TravelingLeafVisaNotification.cs. Вы скинули код InvoiceVisaNotificationProvider.cs.
Как можно искать ошибки в одной схеме по коду другой?
Или я неправильно вас понял?

Варфоломеев Данила, прошу прощения.
Я нашел ошибку исправил.
Спасибо за внимание.

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