Доброго дня, коллеги! Есть два вопроса:

 

  1. Возникла такая потребность, что в справочнике необходимо отобразить изображение и как его правильно загрузить в элемент справочника? 
  2. Как мне реализовать связь один к одному и один ко многим в справочниках? Мне необходимо вытягивать id-поле из одного справочника и присваивать его в другом. Есть ли какой-то способ?

 

Нравится

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

Добрый день. По первому пункту такое реализовано в справочнике "Приоритеты обращений" CasePriority (есть в продукте Service). Там можно провалиться в запись справочника и загрузить картинку.

Общий порядок действий примерно таков:

1) создать объект. назовем его BCActivityColor. Наследуем его от базового справочника и добавляем колонку BCImage (Ссылка на изображение).
Не забываем в настройках объекта установить "Изображение" - нашу колонку. запомним UID объекта

2) Создадим для справочника страницу редактирования (я взял коробочную CasePriorityLookupEditPageV2 и выкинул лишнее).  Реализуем там загрузку картинок.
страницу наследуем от Базовая страница справочника ( UIv2 ). пример: CasePriorityLookupEditPageV2

запомним UID странички

3) зарегистрируем нашу страницу редактирования для объекта (sql). 
Привяжем BCActivityColor_SysModuleEntity (указывается UId объекта который создали в п.1) и BCActivityColor_SysModuleEdit (указывается UId схемы странички которую создали в п.2)
не забыть перезайти в почистить кэш.

Пример регистрации страницы справочника CaseCasePriority_SysModuleEdit и CaseCasePriority_SysModuleEntity

4) после заполнения справочника не забыть привязать SysImage и значения нашего нового справочника.

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

Пытаюсь добавить вторую картинку с таким же функционалом как у основной картинки в контрагента.

В статье https://academy.terrasoft.ru/documents/technic-sdk/7-12/dobavlenie-poly… описано добавление картинки в раздел где нет картинки до этого

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

Собственно, как мне добавить независимое поле картинки на страницу контрагента с таким же функционалом (изменение, удаление) как и у первой? В конечном итоге обе картинки должна подтягивать печатная форма

Нравится

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

Ну а добавить вторую системную колонку в объекте? Но по мне это тупиковый вариант, лучше настроить деталь файлы и ссылки на плиточное представление. Удалить при необходимости примечания. Добавить к картинкам в плиточном представлении ваши 2 контрола и вуаля.

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

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

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

Хотелось бы иметь такое же поле как логотип, но отдельное

Ну а добавить вторую системную колонку в объекте? Но по мне это тупиковый вариант, лучше настроить деталь файлы и ссылки на плиточное представление. Удалить при необходимости примечания. Добавить к картинкам в плиточном представлении ваши 2 контрола и вуаля.

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

благодарю за ответ, попробую сделать так.

Григорий Чех пишет:
Ну а добавить вторую системную колонку в объекте?

А как можно в объект добавить вторую системную колонку?

В данном случае речь идет о колонке, которая отображается только в расширенном режиме отображения схемы таблицы: https://prnt.sc/l9xi52

А как можно в объект добавить вторую системную колонку?

Думаю, что без доступа к исходникам ядра такое не получится. Да и не нужно.

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

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

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

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

Есть редактируемая деталь Материалы (аналог деталей Продукты). В карточку детали добавлено поле Изображение. 

Подскажите как вывести в реестр этой редактируемой детали картинку с карточки детали.

Спасибо!!)

 

Нравится

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

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

 

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

Я передал Ваш пост как пожелание аналитикам продукта на рассмотрение актуальности и возможности реализации такого функционала в будущих версиях приложения.

Denys Diachenko, А с привлечением разработчиков  думаете у нас получиться это сделать?)

 

Передал Ваш вопрос разработчикам для дальнейшего анализа и предоставления решения.

Добрый день, Елена!

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

Если же использовать разработку, то для того, чтобы вывести картинку в реестр детали придется создать свой грид, расшрив Terrasoft.Grid (также, как это делает деталь с редактируемым реестром Terrasoft.ConfigurationGridUtilities), плюс добавить свой генератор, т.к. коробочный метод генерирования контролов в редактируемых реестрах не содержит определения для такого типа, как картинка. Тогда такой грид можно использовать для отображения статической картинки.

Был бы реестр нередактируемый, было, конечно, проще.

Вывести картинку можно и не одну.

Добавляем в diff 

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"activeRowActions":
		[
			{
				"className": "Terrasoft.ImageView",
				"imageSrc": { bindTo: "UsrPhotoLargeURL" },
				"visible": true,
				"wrapClasses": ["gallery-image"]
			}
		]
	}
}

Делаем функцию

clickAllRows: function() {
	var scope = this;
	this.getGridData().collection.keys.forEach(function(item) {
		scope.setActiveRow(item);
	});
 
	this.setActiveRow("");
 
},
 
onRender: function() {
	this.callParent(arguments);
 
	this.clickAllRows();
},

Т.е. в OnRender мы делаем "раскрываем" все строки.

Алексей-Карягин,

Но картинка-то будет только при выделении) Костыльно как-то получается. У меня была идея на основе детали с проектами сделать: рендерить кнопку с изображением в грид, а при выделении контрола в ряде - imageView. Но тоже хз что получится по итогу)

Золотарев Артем Андреевич,

Артем, добрый день! Можете посоветовать, что нам почитать из документации, чтобы сделать такую разработку? Спасибо!

Елена, можно почитать каталог партнёров, выбрать кого-нибудь с красивым логотипом и заказать им за деньги разработку такой логики.

Можно добавить поле с изображением, добавив в блок diff следующий код:
           diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "merge",
                    "name": "DataGrid",
                    "values": {
                        useListedLookupImages: true,
                    }
                }
            ]/**SCHEMA_DIFF*/

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

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

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

Возникла задача отправлять пользователям е-мейлы, содержащие html  с картинками, которые не хранятся на внешних ресурсах (то есть url нельзя указать как источник). Пробовал сделать через base64, но outlook не отображает такие картинки. Вопрос: как отправляются, например, письма с оценками (как на скриншоте)?

Судя по исходникам письма, для картинок создаются cid. Нашел файл EstimateLinksGenerator, но он, во-первых, генерирует именно base64, во-вторых, не могу найти, где он вызывается. Буду очень благодарен за пример кода, создающего html со встроеннными картинками для отображения в outlook.

 

PS используем версию 7.6, но есть возможность смотреть в код 7.11

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

Нравится

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

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

Для отображения оценок исполузуется макрос EstimateLinksGenerator.
Каким образом это реализовано можно посмотреть в статье

Но такие макросы работают толькло в разделе Обращения при отправке письма по шаблону. Это связано с тем что в обращениях для обработки тела письма используется InvokableMacrosHelperService, который знает как работать с такими макросами (которые реализуют IMacrosInvokable).

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

День добрый, столкнулся с проблемой, как сохранить изображение в BPM полученное парсингом?
Спарсил я допустим продукт и у меня есть ссылка на изображение продукта, тупо ссылку сохранять в базе или как???
При условии, что в BPM я использую стандартное поле загрузки изображений (https://academy.terrasoft.ru/documents/technic-sdk/7-6-0/kak-dobavit-na-...), и мне спарсенное изображение сюда нужно будет выводить, а лучше сохранить и вывести.

Есть у кого-нибудь готовое решение? Или идеи с куском кода?

Нравится

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

Здоавствуйте, Максим

Можно посмотреть примеры до добавлению данных в системе здесь - https://academy.terrasoft.ru/documents/technic-sdk/7-9/dataservice-sozd…

"Мотков Илья" написал:

Здоавствуйте, Максим

Можно посмотреть примеры до добавлению данных в системе здесь - https://academy.terrasoft.ru/documents/technic-sdk/7-9/dataservice-sozda...

На самом деле Вы меня отправили в "ЛЕС", я же попросил подобный пример если таковое имеется или кто-то уже делал или механизм загрузки изображений и вообще где они хранятся?. У меня просто не так много времени, чтобы разбираться в причудах террасофта, и без того непонятной документации.

Понаберут школьников которые документации пишут.

Дело в том, что как метод INSERT происходит я знаю. Я это мог бы сделать и без обращения сюда, тупо сохранить в базе ссылку на изображение. Я же имею ввиду есть-ли какой-то метод в который можно будет передавать URL-изображения (тут происходит загрузка в BPM) c Id продукта например. Вариантов много, что это может быть или же отлавливать куда постом передаётся картинка, чтобы написать свой обработчик.

Максим, было бы странно, если бы такой метод был.

Понять принцип хранения картинки в БД можно за несколько минут, проверив таблицу Product в базе.

Там есть колонка PictureId со ссылкой на идентификатор картинке, дальше по связям таблицы видно, что ссылается она на SysImage.

В SysImage картинки хранятся в Base64. То есть для добавления нужно только выполнить insert картинки в нужном формате. Помочь в обработке ссылки и извлечении картинки сможет Google.

В итоге для решения всей задачи хватит и уровня тех. писателя.

"Мотков Илья" написал:

Максим, было бы странно, если бы такой метод был.

Понять принцип хранения картинки в БД можно за несколько минут, проверив таблицу Product в базе.

Там есть колонка PictureId со ссылкой на идентификатор картинке, дальше по связям таблицы видно, что ссылается она на SysImage.

В SysImage картинки хранятся в Base64. То есть для добавления нужно только выполнить insert картинки в нужном формате. Помочь в обработке ссылки и извлечении картинки сможет Google.

В итоге для решения всей задачи хватит и уровня тех. писателя.


Огромное спасибо :-)

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

Добрый день.
На данный момент загрузка изображений происходит в табличку SysImage. В таблицах же храниться id картинки. При загрузке изображения в карточку, оно сразу же попадает в БД. При сохранении карточки id сохранённой картинки привязывается к карточке. А в случае если пользователь отменил сохранение то картинка висит бесхозная в SysImage, до каких пор она там будет висеть? Нужно ли каким либо образом чистить данную табличку?
Подскажите возможно ли сохранять изображения в самом объекте с которым я работаю? Настроить отображение мне удалось, а вот с загрузкой нового изображения возникли затруднения. Может кто подсказать где искать?

Нравится

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

Картинку в объекте хранить можно, вот статья:
https://academy.terrasoft.ua/documents/technic-sdk/7-6-0/kak-dobavit-na…
Но базовые механизмы без перезаротки позволят хранить только одну такую картинку.

Евгений, добрый день.

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

Показать все комментарии
Добавить возможность вставлять картинки (особенно screenshots) в письма не через "сделать - сохранить - найти - прикрепить", а с помощью Copy-Paste.Особенно актуально для работников поддержки.
1 комментарий

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

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

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

Добрый день!
Подскажите, пожалуйста, возможно ли извлечь изображения из пакетов раздела Images?
фото

Нравится

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

Добрый день!

В общем данный вопрос обсуждался в этом топике - http://www.community.terrasoft.ru/forum/topic/12709
Ответ на свой вопрос можете найти в этом комментарии - http://www.community.terrasoft.ru/forum/topic/12709#comment-54014

Дмитрий, спасибо большое!

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

Добрый день!
Стоит задача: добавить в реестр детали продуктов изображение восклицательный знак возле записи, у которой выполняется некое условие, наподобие функционала в подборе продуктов.
Как это можно реализовать?
Версия 7.6

Нравится

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

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

В разделе "Продажи" есть колонка "Настроение", которая выводится в реестр в виде изображения.

Вы можете посмотреть реализацию и сделать по аналогии.

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

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

Столкнулся с проблемой: заказчику необходим Excel-отчет. Отчет готов, но в его шапке необходимо разместить логотип компании. Само изображение считывается из БД, записывается в stream примерно вот так:

var ImageStream = new ActiveXObject('ADODB.Stream');
ImageStream.Open();
Image.SaveToStream(ImageStream);

И теперь самое главное, каким образом поместить изображение в WorkBook.ActiveSheet? Находил способы считывания файла с ФС, но это накладывает свои неудобства - не у всех есть какая либо папка, или может быть закрыт доступ к ней.

Нравится

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

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

Здравствуйте, напрямую поместить изображение в WorkBook.ActiveSheet из БД возможности нет. Вариант решения - сохранять файл изображения во временную папку, а затем, использовать его.

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