Здравствуйте! Не нашел в академии, что означают события на объекте "Перед загрузкой данных" и "После загрузки данных". В каких случаях они применяются?

Нравится

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

Это события Loading и Loaded. Первое срабатывает до загрузки значений полей в цикле, второе —после.

Посмотреть, в каких схемах объектов они применяются, можно запросом в базу:

select *
from SysSchemaSource
where (source like '%loading +=%' or source like '%loaded +=%')
and  not (name  like '%page.cs')

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

Зверев Александр,

спасибо за ответ!

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

Добрый день!

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

+ Подскажите пожалуйста, каким методом реализации пользовались?

Нравится

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

у цб рф есть api, поэтому:

-в vs добавляете в проект ссылку на службу (https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl)

-генерится класс, его копипастом переносим в crm

-в бп просто вызываем

DailyInfoSoapClient cl = new DailyInfoSoapClient();
var set = cl.DragMetDynamic(new DateTime(2018,12,3), new DateTime(2018, 12, 4));

и разбираем данные в нужные таблицы

Если речь о XAU, XAG и подобном, то можно так же само, как с курсами валют: или использовать готовые решения из маркета, или делать загрузку самостоятельно в БП при помощи элементов «веб-сервис» и «добавление данных». Информацию о курсе брать из веб-сервисов на сайте ЦБ.

у цб рф есть api, поэтому:

-в vs добавляете в проект ссылку на службу (https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl)

-генерится класс, его копипастом переносим в crm

-в бп просто вызываем

DailyInfoSoapClient cl = new DailyInfoSoapClient();
var set = cl.DragMetDynamic(new DateTime(2018,12,3), new DateTime(2018, 12, 4));

и разбираем данные в нужные таблицы

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

Добрый день!

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

Нравится

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

Поскольку по действию «Печать» реально происходит генерация PDF-файла и его скачивание, можно на уровне браузера настроить папку для скачивания на нужный путь. В Windows 10 стандартно есть интеграция с OneDrive, когда он видится как обычная папка, можно указать туда.

Click image for larger version. </p>
<p>Name:	change_Google_Chrome_download_location-2.png <br />
Views:	679 <br />
Size:	62.8 KB <br />
ID:	116341

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

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

При обновлении пакета из SVN возник ряд ошибок - http://prntscr.com/lo4cyk

Хотя подвязка данных к пакету была выполнена без ошибок - http://prntscr.com/lo4djshttp://prntscr.com/lo4e0u и т.д.

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

Благодарю.

Нравится

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

Черным же по белому написано Название таблицы и Название Констрента. Смотрим Констрент и поля что входят в данный Констрейнт. Делаем выборки по 2 таблицам и ищем недостающие ID, что есть в Пакете но нет в этих 2 таблицах в Полях что Описаны в Констрейнте. Заливаем новые ID через данные и выполняем новое обновление и все взлетит.

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

Черным же по белому написано Название таблицы и Название Констрента. Смотрим Констрент и поля что входят в данный Констрейнт. Делаем выборки по 2 таблицам и ищем недостающие ID, что есть в Пакете но нет в этих 2 таблицах в Полях что Описаны в Констрейнте. Заливаем новые ID через данные и выполняем новое обновление и все взлетит.

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

Здравствуйте! Необходимо с помощью ESQ (не Select !) реализовать такой запрос

select Number
from Document
order by CreatedOn desc

Столкнулся с проблемой: чтоб задать сортировку по колонке, ее необходимо добавить в запрос, то есть по факту получиться такой запрос

select Number, CreatedOn
from Document
order by CreatedOn desc

В моем случае включить в выборку нужно именно одну колонку.Подскажите, как задать сортировку без добавления колонки?

Нравится

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

Как вариант думаю можно попробовать создать представление (view) которое отсортирует как вам нужно и вернет нужное вам количество колонок

Максим а в чем разница сколько колонок в запросе? 2 или 1. Вы же не делаете группировку и при этом сортировку. Суть своей задачи более подробно поясните.

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

select
	p.Number as Number,
	(
		select top 1 d.Number
		from Document d
		where d.ProjectId = p.Id and
		d.TypeId = 'DC2768E3-8767-4E59-AD83-2DC7C3B40DAA'
		order by d.CreatedOn desc
	) as LastDocument
from Project p 

И таких подзапросов больше одного, поэтому обычный join не подходит

Тогда вам Максим нужно использовать не ESQ а Select конструкцию и тогда все у вас взлетит. Так как ESQ в конце Генерирует результирующий запрос, а SELECT вы сами описываете весь свой запрос. Я бы пошел по пути SELECT.

Власов Михаил Викторович,

 

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

В таком случае можно построить одну большую View с колонкой-подзапросом, зарегистрировать как схему и работать в ESQ с ней.

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

Здравствуйте, что-то я запутался((

Есть колонка(дробное число) необходимо её заполнить одинаковым значением - 1000000 для всех контрагентов, как это сделать не импортом... Пробовал  БП, он вроде проходит, но не заполняет(

Нравится

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

Колосов Алексей,

Если Вам нужно это выполнить единоразово, то проще всего cделать, действительно, sql-запросом вида:

update Account

set Field1 = value

where IsNull(Field1, 0) = 0

где Field1 - это название Вашего поля, value - его значение.

А выполнить этот запрос можно либо предложенным в первом комментарии способом, либо установив бесплатное расширение SQL Executor.

 

Выполнять прямой запрос к БД или через Microsoft Management Studio если у вас On-Site или через SQL Script в Админки BPM'Online. Нужна помощь в написании SQL скрипта пишите поможем.

а средствами BPM?

В С#-коде можно сформировать и запустить Update-запрос. Пример запроса:

Query update = new Update(UserConnection, "SysEntitySchemaRecordDefRight")
	.Set("AuthorSysAdminUnitId", Column.Parameter(authorId))
	.Where("Id").IsEqual(Column.Parameter(RedactedRecordId));
update.Execute();

В Вашем случае будет ещё и без условия Where.

Зверев Александр,

Данная конструкция на C# может не сработать, так как ключевые входные данные это 1 миллион записей. Есть вероятность что по Таймауту ошибка выйдет.

Здесь лучше чтобы Автор поста описал свои знания и от этого лучше отталкиваться чтобы дать совет.

Если много записей, можно порциями, where Id in select top 1000 Id from...

1000000 это не записи, а значение в колонку... Знаний на уровня С# нету....(( Хотелось бизнес-процессом...

В  БП есть элемент «Изменить данные», который делает примерно то же.  Возможно, медленнее, за счёт отрабатывания событий сохранения по каждой записи.

Зверев Александр, этим элементом можно только значения из справочника передать, а у меня дробное число((

Числовые тоже можно.

Колосов Алексей,

Если Вам нужно это выполнить единоразово, то проще всего cделать, действительно, sql-запросом вида:

update Account

set Field1 = value

where IsNull(Field1, 0) = 0

где Field1 - это название Вашего поля, value - его значение.

А выполнить этот запрос можно либо предложенным в первом комментарии способом, либо установив бесплатное расширение SQL Executor.

 

Спасибо, разобрался... наверное - понедельник был)))

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

Добрый вечер!

Вопрос такой, нужно в разделе "Контрагенты" сформировать список клиентов, у которых в "фактическом" адресе указан город Москва (с чем я разобрался) и присутствует также "юридический" адрес. Не могу понять, как включить в выборку условие с "юридическим" адресом?



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

 

Нравится

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

Вот пример Как я его понял исходя из условий Задачи

Михаил, не уверен, что получится именно то, что хочет автор. У Вас найдёт где есть или тот, или тот тип адреса.

Лучше так:

 

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

Добрый день!

Не совсем понятно как выглядит процесс разработки в файловой системе. Файлы должны храниться на сервере или их можно перенести на клиентский компьютер? Можно ли для файловой разработки использовать IIS Express на клиентском компьютере? Подскажите, пожалуйста, как вы выполняете разработку в файловом режиме. 

Нравится

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

Как по мне так лучший вариант, это разворачиваете локально копию рабочей системы, включаете режим разработки в файловой системе, подключаете Git/Svn (для себя), создаете новый пакет и работаете.

Затем, переносите пакет на прод.

См. большую серию статей «Разработка в файловой системе».

По поводу IIS Express, судя по примечанию ниже, поддержка есть:

Название рабочего процесса может различаться в зависимости от конфигурации используемого сервера IIS. Так, для полнофункционального IIS процесс называется w3wp.exe, для IIS Express — iisexpress.exe.

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

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

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

Нравится

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

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

Добрый день, да возможно для этого к вашему пакету необходимо прикрепить данные из таблиц и можете связанные сущности по необходимости смотреть

VwWorkspaceObjects (Объекты рабочего пространства (представление))

SysAdminOperation (Operation permissions, если надо)

SysAdminOperationGrantee (Доступ к operation permissions, если надо)

SysEntitySchemaOperationRight (Доступ к объектам)

SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)

SysEntitySchemaRecordRight (Доступ пользователей к операциям над объектом)



SysAdminUnit(Объект администрирования) и тд. 



так же можете в конфигурации системы найти схемы объектов с словом "Доступ", может быть что-то упустил 

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

Появилась потребность расширить таблицу Прайс-лист, добавив колонку с типом дата. Но обнаружилось что стоит проверка (и не одна) на дублирование записей. Первую проверку, так чтобы она учитывала новую колонку, изменить удалось (она находится на странице редактирования детали). Но осталась еще одна (а может и больше) проверка до которой не могу добраться. Вот такое сообщение она выдает -"Дублирующиеся данные в объекте ProductPrice". Подскажите, пожалуйста, где эта проверка находится и как ее можно изменить. Спасибо.

Нравится

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

Стандартно в разделе «Правила поиска дублей» есть только правила по контактам, контрагентам и лидам. Открывать этот раздел можно  в блоке ссылок «Настройка системы» из окна дизайнера системы.

Возможно, у Вас что-то ещё настроено или это отдельная логика, не связанная с этим механизмом.

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

select * from DuplicatesRule as dr where dr.ObjectId=(SELECT TOP 1 SysSchema.UId FROM SysSchema

WHERE SysSchema.Name = 'ProductPrice' AND SysSchema.ExtendParent = 0)

- для правил поиска дублей в цене продукта



select * from DuplicatesRule as dr where dr.ObjectId=(SELECT TOP 1 SysSchema.UId FROM SysSchema

WHERE SysSchema.Name = 'Pricelist' AND SysSchema.ExtendParent = 0)

- для правила поиска дублей в Прайс-листе

И посмотрите на ваши новые колонки у них должен быть признак "Выполнять копирование", от так же может влиять на правило

К сожалению данные запросы ни чего не возвращают.

Комментарий удален, чтобы не вводить пользователей в заблуждение 

До этого не была установлена. Сейчас поставил, опубликовал, выполнил запрос к базе - ни чего нет. Так же не нашел описания этой галочки.

Руслан Хасанов,

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

Тогда я не совсем понимаю назначение этой галочки. За уникальность записей отвечает, если я правильно понимаю, поле "Id". Строка в любом случае будет уникальной, зачем эта опция?

Вот свойства колонки.

Запросы ни чего не возвращают. 

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

Спасибо, Александр, за уточнение, стало более понятно зачем нужна эта галочка. А что по поводу проверки на дублирование записей при добавлении цены? Где ее можно найти и изменить чтобы принималось во внимание поле "Дата начала действия цены"?

Стандартно в разделе «Правила поиска дублей» есть только правила по контактам, контрагентам и лидам. Открывать этот раздел можно  в блоке ссылок «Настройка системы» из окна дизайнера системы.

Возможно, у Вас что-то ещё настроено или это отдельная логика, не связанная с этим механизмом.

Да, какая то отдельная логика, видимо на странице. Буду искать дальше.

Попробуйте в разделе переводов поискать этот текст «Дублирующиеся данные в объекте», обрамлённый символами процента. Если что-то найдётся, можно будет увидеть английское название переменной, по которому искать по исходникам C# и JS-схем. У меня, правда, ничего не нашлось.

Вы имеете ввиду таблицу SysDuplicatesRuleLcz? У меня тоже ни чего не нашлось. Интересно а поиск по тексту схем можно как то произвести?

Имею в виду пользовательскими средствами, раздел «Переводы». Там должны быть строки из всех мест конфигурации.

А поиск по тексту схем можно вести через базу, по полю Content в SysSchemaContent для JS и Source в SysSchemaSource для C#.

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