Речь пойдет о разных, новых механизмах ядра 3.4

1. Производительный BeginUpdate/EndUpdate

В разработке UI (User Interface) многое зависит от того, какое расположение элементов управления, цвета, подсветки и т.д. Но, также много зависит от того, что видит пользователь при динамическом изменении карточки, конролов, окна при определенных действиях. Поэтому, всегда нужно уделять внимание тому, что пользователь визуально видеть не должен. Существуют механизмы скрытия рисования при динамическом изменении содержимого. Итак, постараюсь описать существующий механизм BeginUpdate/EndUpdate в Terrasoft 3.4.x.

В Terrasoft 3.4.x+ реализовано 2 возможности запретить окну обновлять содержимое:

  • «Глобальный» Lock (далее GlobalLock). Данный метод запретит Вам обновлять все окно (используется в Terrasoft 3.3.x)
  • «Индивидуальный» Lock (далее ControlLock). Этот метод запретит обновлять только тот контрол (и все его содержимое), которому был установлен Lock

В чем же разница и как понять, какой метод использовать? Для начала немного теории. GlobalLock – это функция, написанная Microsoft на все случаи жизни еще в Windows 2000. Она, конечно же, имеет право на жизнь, но с одним НО – только одно окно в системе может быть заблокировано в одну единицу времени. Блокировка любого другого окна (даже не вашего) - приведет к автоматической разблокировке вашего окна. Что же делает ControlLock? Этот метод блокирует обновление окна до того момента, пока вы лично не скажете ему, что оно может обновляться. В каждом из этих методов есть свои плюсы и минусы. В Terrasoft 3.4.x GlobalLock используется только для окон (Window), а для всего остального используется ControlLock. Для того чтобы понять разницу какой метод и когда запускается, рассмотрим пример:

/*Припустим, что у нас имеется FrameGroup’а, в которую динамически добавляются контролы.
Поэтому, на время добавления Нам нужно запретить окну обновляться*/

function wnd_WindowOnPrepare(Window) {
        Window.BeginUpdate(); /*Будет использован GlobalLock, так как это Window*/
        CreateControls();
        Window.EndUpdate();
}
function wnd_WindowOnPrepare(Window) {
        Self.BeginUpdate(); /*Будет использован GlobalLock, так как Self всегда является окном*/
        CreateControls();
        Self.EndUpdate();
}
function wnd_WindowOnPrepare(Window) {
        FrameGroup.BeginUpdate(); /*Будет использован ControlLock*/
        CreateControls();
        FrameGroup.EndUpdate();
}

Разница заключается в том, что в первом случае обновится все окно, а во втором – только FrameGroup’а. Отсюда следует, что использовать ControlLock производительнее, нежели GlobalLock. Но, использование GlobalLock также нужно, оно используется для окон, размеры которых вы хотите изменить, или же изменить содержимое самого окна. При этом комбинированное использование разрешено. Эти методы не конфликтуют друг с другом. Рассмотрим пример:
Пример
function Lock() {
        Window.BeginUpdate();
        FrameSet.BeginUpdate(); /*FrameSet заблокирован*/
        Frame.BeginUpdate(); /*заблокировали Frame*/
        Window.EndUpdate(); /*на этом этапе окно обновит элементы управления, кроме Framе’a, FrameSet’а и их содержимого*/
        FrameSet.EndUpdate(); /*Обновится FrameSet, но Frame по прежнему заблокирован, а значит и его содержимое также не обновится*/
        Frame.EndUpdate(); /*Теперь Frame обновится*/
}

Также, в связи со спецификой GlobalLock – ведется счетчик блоков. Т.е. сколько раз был вызван BeginUpdate(), то столько же нужно вызвать и EndUpdate(). А вот при ControlLock такой счетчик отсутствут, достаточно один раз вызвать EndUpdate().
Итого:
  • GlobalLock. Используйте для окна, размеры которого меняются или меняется непосредственно его содержимое
  • ControlLock. Используйте для конкретного Frame’а/FrameGroup’ы и т.д. внутри которого будут происходить изменения

2. Button + Image
Button – один из самых используемых элементов управления. Без него практически не существует ни одного окна. Поэтому этот элемент управления просто обязан иметь какие-то дополнительные возможности для дизайна.
В Terrasoft 3.4.x добавлена возможность установить Image для Button’а. Причем, чтобы добавить изображение нужно только указать ImageList и указать имена для изображения (Normal, Hot, Pressed и Disabled). Также, изображение можно позиционировать с разных сторон от текста. Индивидуально хочется еще добавить, что, в отличие от Terrasoft 3.3.x, Button может быть любого размера (с выключенным AutoSize). Также, размеры можно ограничить минимальными значениями. Форматы изображения: *.ico, *.bmp, *.jpg, *.png (в принципе все, которые можно добавить в ImageList)
Button

3. Label. Выравнивание текста
При дизайне карточки или окна, иногда нужно сделать некий косметический момент с помощью Label. Но в то же время при его использовании испытывались некоторые трудности: как выровнять текст внутри Label’а? Эта проблема была решена в версии 3.4.1.14+. К свойствам Label была добавлена возможность позиционирования текста
Label

4. Настройка шрифтов
Наверное, каждый разработчик сталкивается с задачей настройки шрифтов: сделать Label большим шрифтом, изменить цвет фона контрола и т.д. До этого момента изменить шрифт и цвет можно было только во время выполнения (например, на OnPrepare). Для решения этого вопроса, начиная с версии Terrasoft 3.4.1.14+, были добавлены свойства, позволяющие в TSAdmin настроить шрифты и цвета. Что же можем делать?:

  1. Можем изменять шрифт и цвет Caption’а:
  2. CaptionFont

  3. Можем изменить шрифт и цвет текста
  4. TextFont

  5. Можем изменять цвет фона
  6. backgroundColor

Но, кроме элементов управления есть контролы, которые используются для группировки (FrameSet, Frame и FrameGroup). Для них также есть возможность настройки шрифтов
LayoutFont

Вот, собственно, часть того, что нового для разработки UI в Terrasoft 3.4.x я хотел рассказать.
Приятной разработки!

P.S. Напомню, что и в каких версия появилось (появится):

  • механизм BeginUpdate/EndUpdate работает во всех версиях 3.4.х;
  • возможность добавления изображения к Button – 3.4.0.x;
  • возможность позиционирования текста в Label – 3.4.1.14+;
  • возможность настройки шрифтов – 3.4.1.14+

Нравится

Поделиться

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

Спасибо, полезная информация.

А если в сервисах использовать позиционирование и шрифты и запустить на бинарниках 3.4.0 - будет валиться или просто игнорировать?

Если запустить на бинарниках 3.4.0, то будет просто игнорироваться

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

Добрый день, уважаемые!

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

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

Заранее благодарен за ответы.

Нравится

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

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

Уважаемый Александр, курсы по внедрению дают сразу два важных результата:
1) Тренинг действительно предоставляет возможность ознакомиться с системой максимально хорошо за небольшой промежуток времени.
2) На курсах обучающиеся получают реальные практические примеры внедрения из «первых рук», также им предоставляется методика успешного внедрения. По окончанию пользователи системы имеют необходимый багаж знаний для того, чтобы сразу начинать работу в Terrasoft.
Детальную программу курсов Вы можете узнать у ответственного менеджера.

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

Уважаемый Фариз, на постоянной основе у нас ежемесячно проводятся курсы для разработчиков http://www.training.terrasoft.ua/trainings/customizationl/ , даты проведения которых Вы можете узнать в расписании нашего Тренингового Центра http://www.training.terrasoft.ua/trainings/ . Необходимые Руководства пользователя и техническую документацию Вы можете загрузить из нашего раздела Документация на этом же сайте http://www.training.terrasoft.ua/resources/document

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

Уважаемые клиенты и партнеры! Нужно Ваше мнение по этому вопросу. Нужно не только автору поста, но и самой компании, чтобы понимать уровень наших обучений, если нам что-то и менять, то что именно и т.д.

[quote="Смоляков Станислав Игоревич"]Уважаемый Фариз, на постоянной основе у нас ежемесячно проводятся курсы для разработчиков http://www.training.terrasoft.ua/trainings/customizationl/ , даты проведения которых Вы можете узнать в расписании нашего Тренингового Центра http://www.training.terrasoft.ua/trainings/ . Необходимые Руководства пользователя и техническую документацию Вы можете загрузить из нашего раздела Документация на этом же сайте http://www.training.terrasoft.ua/resources/document[/quote]

Станислав, я бы все таки разделил понятия Кастомизации и Разработки. Из программы курса http://www.training.terrasoft.ua/trainings/customizationl/ видно, что он основывается в первую очередь на работе с готовыми инструментами, доступными в Клиенте, Администраторе и прочими wnd_CreateNewWorkspace. Это, безусловно, полезный курс, но вот мне, например было бы интереснее и полезнее ознакомиться с описанием используемых функций, лежащих в скриптах, глубже понять механизмы интеграции. И мне кажется есть смысл ввести подробный курс по интеграции с 1С, с рассмотрением необходимых конструкций языка 1С, так как это очень востребовано.

Согласен с Фаризом, интересует не столько навыки работы с администратором и стандартными инструментами, а именно разработка собственной логики программы, скриптов, интеграции с другими ПО, АТС и т.д.

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

Уважаемый Фариз и Александр! Компания Terrasoft стремится предоставить своим клиентам максимум информации для самостоятельного внедрения продуктов. Данный курс рассчитан на пользователей которые еще не знакомы с системой и не имели ни опыта внедрения продукта, ни самостоятельной разработки.
В процессе проведения курса Конфигурирования разработчики выполняют реальные практические задачи, которые могут им пригодится в процессе доработки. При этом обязательно учитываются пожелания. Вы вправе задать вопрос на обучении в формате "Как реализовать такую-то бизнес-задачу", и лектор подскажет Вам алгоритм её решения. Также после окончания обучения лектор в режиме e-mail отвечает на дополнительные вопросы. Или Вы можете задать эти вопросы на http://www.community.terrasoft.ua
При этом следует понимать, что невозможно "объять необъятное", то есть курс рассчитан на то, чтобы помочь всем в равной степени. И безусловно Вы правы, что передать свой опыт без практики никто не может. То есть Вам, чтобы наработать свой опыт, придется после прохождения курса самостоятельно выполнять необходимые задачи. Ведь даже интеграция с 1С не является тривиальной ввиду того, что у каждой компании своя структура базы 1С и своя методика работы с ней. Безусловно общие принципы одинаковы, и вот взаимодействию между Terrasoft и 1C по этим похожим задачами (с углублением в Ваши вопросы в процессе курса) и обучает лектор.
Если Вы желаете поучаствовать в более продвинутом курсе по разработке, предлагаю Вам сформировать список вопросов (с описанием реальных практических задач в Вашем бизнесе) в данной теме или сообщить своему менеджеру. На основании Ваших пожеланий мы сможем сформировать индивидуальную программу и провести необходимое Вам обучение.

Добрый день,

У меня опыт кастомизации/консультирования Pivotal CRM всех версий около 5 лет (работал с компаниями из UK).

Просмотрел программу курса - полезных вещей нет.

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

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

Документации нужно много и разной...
Если интересно, список вопросов, которые меня интересуют:

1) Развертывание приложения. Best Practice. Существующие ограничения на развертывание. «Узкие места».
2) Производительность системы. Best Practice. Средства мониторинга производительности.
3) Выявление проблем в Terrasoft XRM, Trouble shooting.
4) Эффективная разработка бизнес-процессов: средства разработки, контроль производительности, контроль версий конфигураций, Development Environment.
5) Terrasoft API, рекомендации по разработке.
6) Интеграция с другими приложениями. Уровни интеграции. Проблемы интеграции. Best Practice.

У меня есть с чем сравнивать, и когда мне показали ту документацию, которая есть в Terrasoft... то в общем то даже не нашлось что сказать по данному поводу...

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

Несмотря на то, что этот курс я не слушал, и сейчас не вижу уже в нём необходимости для себя, если спросить, стоило ли брать его вначале - стоило бы. Я бы сэкономил много времени, да и систематизированнее был бы тот хаос, что в голове творится :-) И будущих сотрудников, работающих по Террасофт я направлю на этот курс.

Согласен с komgbu, большая честь проблем - в поверхностной документации во всем, что касается разработки и скриптов. Типичный пример - реализация вывода суммы прописной строкой (три тысячи пятьсот рублей 56 копеек) - по умолчанию это не реализовано в в интерфейсе, но в сервисах есть скрипты готовые для всего этого, функции, бери и применяй. Но узнать об этом можно, только проведя некоторые раскопки на форуме. Здорово, что хоть так, но сколько еще уже изобретенных велосипедов есть в системе? Хотя бы хороший интерактивный справочник по функциям, лежащим в базовой поставке, был бы уже сильным подспорьем.

Уважаемый Фариз! Благодарю за доверие и понимание! Все сотрудники департамента разработки компании Terrasoft перед трудоустройством на соответствующие должности обязательно проходят данный курс, независимо от уровня их подготовки. Также будем рады видеть и Ваших коллег.
Система Terrasoft активно развивается благодаря стараниям как специалистов отдела разработки продуктов так и разработчиков проектного отдела. Очень часто удачный функционал, реализованный в проектном решении, внедряется в коробочную версию. Базируясь на вышеописанных принципах мы изначально не ставили перед собой задачу выпустить Документацию, в которой будут подробно описаны все технические моменты, однако компанией был разработан специализированный форум для общения разработчиков. Поэтому, чаще всего Вы можете найти ответ на интересующий Вас вопрос воспользовавшись поиском по данному ресурсу. Если Ваш поиск не увенчается успехом, Вы всегда можете создать новый пост и Вам подскажут либо ответ, либо тему форума, где данный вопрос уже обсуждается.
Таким образом Руководство Пользователя и Администратора позиционируются нами как начальная документация, необходимая чтобы приступить к эксплуатации системы. А http://www.community.terrasoft.ru как Библиотека Знаний, всегда доступная онлайн как для получения информации, так и для того чтобы добавить что-то новое.
Уважаемый komgbu! Ответы на Ваши вопросы частично есть в руководстве Администратора, частично уже обсуждались на форуме. Для поиска необходимого ответа воспользуйтесь, пожалуйста, встроенное системой поиска, указывая при этом конкретные вопросы. Например, детальная установка Terrasoft описана в руководстве пользователя.
Если Вы желаете получить примеры лучших практик, то Вам для начала необходимо детально сформулировать задачу, потому что в зависимости от задач конечного пользователя и внешних факторов реализация может отличаться. Именно на курсах разработчики формулируют свои вопросы частным образом. Например: "В нашей компании на текущий момент планируется использовать такой-то сервер, и работаем мы в следующих разделах. Как нам ускорить такой-то бизнес-процесс (демонстрируется схема)?" В этом случае Лектору предоставлено достаточно информации и он может помочь клиенту. Ведь чаще всего наших клиентов интересует практическое использование системы, а не эмпирические возможности. Хотя и возможности по внедрению и модификации очень широкие.

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

Не могу не согласиться с komgbu, мне, как программисту, было дико видеть настолько бедную документацию для разработчика.
Даже сложилось впечатление, что программный код системы намеренно лишен комментариев.
Цена входа в разработку под Terrasoft очень велика!

Уважаемый Егор! Данный ресурс создавался как раз для того чтобы любой пользователь мог найти необходимую ему информацию. Мы не планировали его делать закрытым и что-либо скрывать от клиентов или разработчиков.
Названия функций написаны логично для понимания. Наша конфигурация написана на jscript. В интернете есть очень много документации по jscript. Используйте инструмент Grep Search в TSAdmin для того чтобы видеть примеры использования функций.
Для всех пользователей также открыт SDK Terrasoft по следующей ссылке: http://terrasoft.com.ua/sdk/

"Федотьев Егор Николаевич" написал:Возможно, причина скудной документации в том, что партнеры Terrasoft, занимающиеся внедрениями хотят остаться при своем куске хлеба.

Не вижу связи. Заказчик самостоятельно не будет лезть во внедрение на уровне кода (за редчайшими исключениями, например телекоммуникационные компании имеющие в штате специалистов-программистов по какому-нибудь экзотическому биллингу, при внедрении TS могут решить с какого-то момента писать сами), а по остальному функционалу документация достаточная.

Вот кстати еще характерный пример: http://www.community.terrasoft.ru/forum/topic/6924

"Смоляков Станислав Игоревич" написал:
Названия функций написаны логично для понимания. Наша конфигурация написана на jscript. В интернете есть очень много документации по jscript. Используйте инструмент Grep Search в TSAdmin для того чтобы видеть примеры использования функций.

Конечно, Станислав Игоревич, инструмент Grep Search активно используется. Например без него никак не понять, что делают такие функции, как например CopyAttributes(Source, Destination) или CopyAllAttributes(Source, Destination).
Но согласитесь, если бы API имело документацию в любом виде (хотя бы было комментировано) - не пришлось бы каждый раз вглядываться в тело функции чтобы понять, что она делает.
А документация по языку jscript вовсе не заменяет документацию по API.

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

[quote="Мамедов Фариз Эльдарович"]Вот кстати еще характерный пример: http://www.community.terrasoft.ru/forum/topic/6924[/quote]

Характерный пример того, как результат был получен не благодаря, а вопреки?

"Федотьев Егор Николаевич" написал:

Ага :-)

Уважаемый Фариз и Егор! Благодарю за Вашу преданность системе и желание конфигурировать несмотря на некоторою нехватку информации! Ваше пожелание по улучшению документации передано в отдел Документирования.

Скажите, нужны ли какие-то начальные знания у обучающегося?

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

"S.Kalishenko" написал:Об этом, насколько я помню, всех и так предупреждают.

когда, где?

Насколько я помню, когда компания-клиент заказывают у нас (у Террасофта) участие своего специалиста в обучении по разработке конфигурации, то его информируют, что желательны знания того-то и того-то. От себя могу, сказать, что желательны как минимум знания SQL (выполнение хотя бы элементарных запросов). И если есть опыт в программировании на одном из языков программирования - вообще замечательно. Глубоких познаний в программировании при этом не требуется.

"Смоляков Станислав Игоревич" написал:Очень часто удачный функционал, реализованный в проектном решении, внедряется в коробочную версию. Базируясь на вышеописанных принципах мы изначально не ставили перед собой задачу выпустить Документацию, в которой будут подробно описаны все технические моменты, однако компанией был разработан специализированный форум для общения разработчиков.

Сталкиваясь с определённой задачей, вместо её решения, опираясь на подробную документацию, разработчик должен сидеть на форуме в ожидании помощи?

Текущая документация даёт понимание настройки продукта, но не разработки.

Terrasoft API имеется ввиду документация SDK http://terrasoft.ru/sdk/
очень скудна, скромное описание классов и функций, примеров использования в SDK можно сказать нет вообще, т.е. возможность самообучения сводится к минимуму, черпать информацию из форума и блогов это хорошо, но не серьезно.

Вот пример вменяемого документирования API http://dev.1c-bitrix.ru/api_help/

Я проходила курсы в конце ноября 2010 года, к тому моменту уже изрядно помучив техподдержку :)
С помощью техподдержки и коммьюнити (+ наличие мозгов и желание работать) можно свернуть горы :)
А курсы здорово помогли для понимания сути объектов системы. До этого было тяжело даже желающим помочь объяснить, в чем именно проблема.

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

Евгений, работа над документацией для разработчиков ведется специалистами академии Террасофт безостановочно, ежедневно пополняя количество новых и полезных статей. На данный момент Вы можете пользоваться официальной консолидированной документацией на общедоступном ресурсе http://academy.terrasoft.ru/documents/?product=SDK&ver=7.6.0, а также большинство ответов на интересующие Вас вопросы можно найти здесь же на http://www.community.terrasoft.ru

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