В комментариях к некоторым постам упоминается, что Terrasoft.showInputBox может быть многострочный, но на практике это не работает.

Делаю так:

Terrasoft.showInputBox("Список рекомендаций", function() {}, ["ok"], null, {
name : {
	dataValueType: Terrasoft.DataValueType.TEXT,
	value: text,
	values: {
		layout: {
			rowSpan: 3
		},
		contentType: Terrasoft.ContentType.LONG_TEXT
	}
}
},
{
	defaultButton: 0
});

Получаю однострочное поле (input type="text"), в консоли ошибок нет.

Я что-то делаю не так?

Нравится

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

Оно крайне забавно съезжает в процессе заполнения текстом :DDD

 

Terrasoft.showInputBox("Список рекомендаций", function() {}, ["ok"], null, {
name : {
	dataValueType: Terrasoft.DataValueType.TEXT,
	value: "",
	customConfig: {
        className: "Terrasoft.MemoEdit"
    }
  }
},
{
	defaultButton: 0
});

 

Исправляюсь. Там оказывается есть параметр высоты.

Terrasoft.showInputBox("Список рекомендаций", function() {}, ["ok"], null, {
	name : {
		dataValueType: Terrasoft.DataValueType.TEXT,
		value: "",
		customConfig: {
			className: "Terrasoft.MemoEdit",
			height: "150px"
		}
	}
},
{
	defaultButton: 0
});

 

Варфоломеев Данила,

Ну раз пошла такая пьянка, какие там еще параметры есть? :)

Алексей-Карягин пишет:

какие там еще параметры есть

конкретно под  MemoEdit? поиск по all-combined выдал:

memo: {
	dataValueType: Terrasoft.DataValueType.TEXT,
	value: a,
	customConfig: {
		className: "Terrasoft.MemoEdit",
		height: "235px",
		readonly: !0,
		markerValue: "validationMessage"
	}
}

Можно тут глянуть что ещё можно добавить из свойств (placeholder и width точно работают). Ну и я так понимаю аналогично с др. контролами.

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

Добрый день. Нужно решение такой задачи.

"Каждый ответственный видит только своих контрагентов"

Подскажите пожалуйста как её организовать?

Фильтрами + права доступа, или бизнес процессом. Поделитесь пожалуйста опытом.

Спасибо

Нравится

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

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

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

"своих контрагентов" - это тех, которых он создал? Или тех,  в которых он ответственный?



Первый вариант решается, как описал Андрей.

Второй вариант решается бизнес-процессом

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

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

Формируем печатную формы сметы. Отображаем в смете продукты. При выводе на печать строки с продуктами в смете нужно пронумеровать.

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

Добавлять на деталь порядковый номер уж как то совсем костыль)). 

Спасибо!

Нравится

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

В печатных формах MS Word порядковый номер строки в таблице можно сделать средствами самого ворда:

https://support.office.com/ru-ru/article/Нумерация-ячеек-в-таблице-в-wo…

 Достаточно сделать для строки с продуктом в шаблоне и дальше оно само.

 

Елена, здравствуйте!

На стороне bpm'online такой возможности нет (зафиксировали пожелание).

Как вариант Вы можете настроить нумерацию прям в шаблоне Word. Алгоритм следующий:

- настраиваете табличную часть;

- в колонке ставите курсор и выбираете режим "Numbering" - http://prntscr.com/jmeujc. В результате должен появиться номер.

- проверяете, что нумерация работает - http://prntscr.com/jmeuoo и http://prntscr.com/jmew6d (необходимо курсор поставиь за пределы таблицы и нажать Enter);

- сохраняете шаблон.

Вильшанский Дмитрий,

Дмитрий, спасибо! Будем пробовать).

 

Борис Леонов, Борис, спасибо!  ))

 

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

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

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

Борис Леонов пишет:

В печатных формах MS Word порядковый номер строки в таблице можно сделать средствами самого ворда:

https://support.office.com/ru-ru/article/Нумерация-ячеек-в-таблице-в-wo…

 Достаточно сделать для строки с продуктом в шаблоне и дальше оно само.

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

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

Добрый день!

Счета выставляются от двух компаний, одна на ОСНО, вторая - УСН.

Для первой нужно указывать НДС в счетах, для второй - нет.

У меня мысль сделать в "Реквизиты плательщика" у Контрагента флажок "Плательщик НДС" и на него завязываться в дальнейшем, но это надо логику добавления счетов переделывать, макросы для печатной формы дописывать для формирования строки "Включая НДС"/"Без налога" и тд...

Может есть способ проще?

Нравится

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

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

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

не могли бы вы чуть более подробно описать идею с VIEW?

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

 

Примерно так (постарался вырезать лишнюю информацию, относящуюся к проекту, но не проверял на работоспособность.



Единственное, что в СНГ немного по другой методике НДС считается (у нас он считается как % от суммы всех продуктов, а в СНГ, насколько я знаю, как сумма НДС всех продуктов)



CREATE VIEW [dbo].[UsrInvoiceTax]

AS

SELECT MIN(p.Id) As Id

    ,i.CreatedOn

    ,i.CreatedById

    ,i.ModifiedOn

    ,i.ModifiedById

    ,p.InvoiceId As UsrInvoiceId

    ,p.[TaxId] As UsrTaxId

      ,p.[DiscountTax] As UsrDiscountTax

        ,CAST ( SUM((Quantity*PrimaryPrice) - PrimaryDiscountAmount) AS DECIMAL(18,2)) As UsrTotalPrimaryAmount

        , CAST (SUM((Quantity*PrimaryPrice*i.CurrencyRate) - PrimaryDiscountAmount*i.CurrencyRate)AS DECIMAL(18,2)) As UsrTotalAmount

        ,t.Name As UsrTaxName

        ,ROUND((SUM(Quantity*PrimaryPrice- PrimaryDiscountAmount))*p.DiscountTax/100,2) As UsrTotalTaxPrimaryAmount

        ,CAST (ROUND((SUM((Quantity*PrimaryPrice-PrimaryDiscountAmount)*i.UsrCurrencyRate ))*p.DiscountTax/100,2)AS DECIMAL(18,2)) As UsrTotalTaxAmount

FROM [dbo].[InvoiceProduct] p

LEFT OUTER JOIN [dbo].[Tax] t ON t.Id=p.TaxId

LEFT OUTER JOIN [dbo].[Invoice] i ON i.Id=p.InvoiceId

GROUP BY      i.CreatedById

    ,i.ModifiedOn

    ,i.ModifiedById, i.CreatedOn,p.InvoiceId, p.TaxId

     ,p.DiscountTax

    ,t.Name

GO

Коллеги,

создал View

CREATE VIEW dbo.VwZLInvoice
AS
SELECT 
	i.Id,
	i.Number,
	i.StartDate,
	IIF(SUM(CASE WHEN ZLVATPayer = 1 THEN p.TaxAmount ELSE 0 END) <> 0, 'В том числе НДС:', 'Без налога (НДС):') VATSumCaption,
	SUM(CASE WHEN ZLVATPayer = 1 THEN p.TaxAmount ELSE 0 END) ZLInvoiceVATSum
FROM dbo.Invoice i
LEFT JOIN  dbo.InvoiceProduct p
	ON i.Id = p.InvoiceId
LEFT JOIN dbo.AccountBillingInfo abi
	ON i.SupplierBillingInfoId = abi.Id
GROUP BY
	i.Id,
	i.Number,
	i.StartDate

далее создал объект с такими же колонками, как у View, а как мне теперь сделать что бы колонки этого объекта стали доступны для добавления при редактировании печатной формы для раздела Счета?

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

я же правильно понимаю, что вьюшка вашего варианта попадет в колонки печатной формы как "Название объекта (по колонке Счет)"?

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

Возможен вариант создания View - копии объекта с дополнительными вычисляемыми колонками. Это классная техника, но она годится только для таких задач, как подготовка данных для экспорта, ибо для использования в печатных формах придется замещать родителя и, скорее всего, создавать триггеры для добавления/удаления/обновления.

Пока мне видится более приемлемым традиционный вариант с добавлением нужных полей в объект и логикой в карточках объектов, продолжаю исследования :)

 

 

Борис Леонов пишет:

я же правильно понимаю, что вьюшка вашего варианта попадет в колонки печатной формы как "Название объекта (по колонке Счет)"?

Не совсем. Эта VIEW попадает в печатную форму как отдельный объект. Полная аналогия с объектом "Продукт в счете" 



Без него не обойтись, если решать задачу в общем случае, когда на разные продукты в счете может применяться своя ставка НДС

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

Владимир Соколов пишет:

да, именно это я и подразумевал, не совсем ясно выразился 

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

При запуске приложения всплывает такая ошибка. Собственно, как это фиксить? (установка была выполнена согласно туториалу по установке приложения on-site)Изображение удалено.

Нравится

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

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

Судя по ошибке проблема с redis, либо указаны некорректно параметры подключения, либо нет доступа к нему.

Рекомендую обратиться в тех. поддержку Террасофт - support@terrasoft.ru

 

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

Можно ли как-то продолжить двигаться по процессу после ошибки? В автоматическом или ручном режимах (в журнале процессов)?

Например, не сохранились данные в элементе "добавить данные", допустим, это не критично, можно ли продолжить процесс?

Нравится

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

Добрый день, Алексей!



В момент возникновения ошибки экземпляр процесса фиксирует текущее состояние.



Если устранить источник проблемы и повторно выполнить элемент с ошибкой в журнале процессов - БП продолжит выполнение.



Если ошибка возникает на уровне БД (блокировка транзакции, дедлок) возможен риск потери служебных данных. В таком случае продолжить экземпляр процесса не представляется возможным.



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

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

 

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

Нравится

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

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

Получить не хэшированный пароль нельзя.

Можно выгрузить хэша пароля, но раскодировать его нельзя.

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

Shevchenko Andrey,

Спасибо

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

Коллеги, интересует можно ли ограничить доступ к bpm только по внутренней сети и вывести field sales в открытый доступ?

 

Нравится

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

Если приложение не будет доступно по внешнему адресу, мобильное приложение не сможет синхронизироваться с БД.

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

Добрый день!

Есть БП с текстовым параметром (TextResult), целочисленным параметром (IntResult), идентификатор (AccountId). В БП я задаю им определенные значения, явно отличные от пустой строки, нуля и пустого Guid. После выполнения БП я хочу получить результирующее значение любого параметра.

Пробовал как указано на академии Get запрос делать прямо в строке браузера http://localhost:8082/0/ServiceModel/ProcessEngineService.svc/TestProce…

ответ: http://schemas.microsoft.com/2003/10/Serialization/">null     ---- null, вместо текста который должен был быть результатом.

на запрос http://localhost:8082/0/ServiceModel/ProcessEngineService.svc/TestProce…получаю ответ http://schemas.microsoft.com/2003/10/Serialization/">0   ---- опять ноль, хотя указывал разные целые числа

ну и для Guid ответ http://schemas.microsoft.com/2003/10/Serialization/">"00000000-0000-0000-0000-000000000000"  --- снова ноль.

НО входящие значения параметров БП применяются и всё отлично.

Что за ньюанс такой, кто ведает прошу поделиться знаниями.

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

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

 

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

 

Нравится

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

Добрый день, 

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

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

Tsopa,

Все верно спасибо.

Tsopa,

а что делать если процесс не компилируется (7.15.3) и в процессе не используется элемент задание-сценарий?

Сейчас используют интерпретируемые процессы, компилируемые остались только старые. А в интерпретируемых возврат значения не предусмотрен. Для обмена информацией либо писать в какую-то таблицу, а потом извне читать по OData, либо вызывать в самом БП веб-сервис системы, с которой идёт интеграция.

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

Всем привет, подскажите как сделать цикл в бизнес процессе?

Задача пробежаться по всем лидам и на каждой итерации выполнить некую логику

Нравится

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

Ну, не знаю что конкретно Вы хотите сделать, но можно создать булевое поле, Читать количество записей, где это поле = false, если такие записи найдены, то выполняете свою логику и ставите в это поле true. Опять идет читка данных из лидов, если опять найдены такие лиды где false - отрабатывает та же логика. Если записей не найдено. завершаете процесс. Надеюсь чем-то помог.

 

Можно сделать блок БП «скрипт» и в С#-коде написать GetEntityCollection, а затем по результату foreach-циклом, как в примере №4 тут.

Но нужно быть осторожным, чтобы всё не повесить длительным выполнением запроса на сервере. Если лидов реально много, можно скомбинировать с прошлым советом и за каждый запуск брать и обрабатывать в цикле первые N ещё не обработанных.

Товарищи спасибо

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