Привет. 
Нудно создать редактируемый грида в DataView (по аналогии с "Расписанием" в активностях) из отдельной таблицы.
Насколько я понимаю все сводиться к созданию своего аналога GridData, возможно с логикой из схема "Деталь с редактируемым реестром". Но опять же интересуют детали.

Есть идеи или примеры кода по реализации?

Нравится

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

Андрей, если интересуют детали, как создать деталь с редактируемым реестром, есть в статье. Также шаблоны разных деталей, как редактируемых, так и нет, есть в бесплатном дополнении.

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

Создание редактируемой детали на странице не проблема, проблема доставание этого грида и помещение его в схему раздела (Section) по соседству с основным.

По соседству — это как? Он должен выводить с фильтром по записи в основном реестре? Так такое уже есть в любом разделе с редактируемой деталью, если в карточке слева открыть панель с вертикальным реестром. Например, раздел «Заказы»:

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

по соседству с базовым DataView, а именно на новом(DataView), мной созданным.
Пример что имею ввиду под этим показано на скрине, это раздел Активности: 
 

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

Андреев Андрей Сергеевич,

Возможно, раздел "Планирование" похож на ваши задачи?

Андрей, таких не видел. Есть разные дополнения, добавляющие в разделы ещё одну кнопку, включающую режим с каким-то необычным видом, например, бесплатное «Канбан-доска» или два вида «Диаграммы Гантта» (но те платные). Установив, можно увидеть, как происходит добавление компонента и работа в нём с данными в таблице раздела.

Владимир Соколов пишет:
Возможно, раздел "Планирование" похож на ваши задачи?

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

Зверев Александр пишет:

Кстати, планируется в интерфейсе пользователя появление новых контролов на Angular? Или всё останется в конфигураторе? 

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

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

Есть потребность сделать реестр который можно редактировать. У реестра нет таблица в БД. Он должен формироваться динамически с разных таблиц. Одна колонка должна быть редактируемая где пользователь будет писать значение. Этот реестр наверно должен быть в отдельном окне. После заполнения пользователь жмет кнопку Ок и БПМ обрабатывает реестр и проделывает работу в исходном коде.

Вопрос: Возможно ли сделать такое окно и если да то куда копать?

Нравится

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

На мой взгляд, Вашу задачу можно решить проще.

1. Создаете представление (view) с нужными Вам данными.

2. На основании представления создаете деталь с обыкновенным нередактируемым реестром. Возможность добавления, редактирования и удаления у детали убираете. Использование обычной детали имеет, как минимум одно преимущество, - возможность настройки колонок из связанных объектов.

3. Над реестром добавляете виртуальное поле и кнопку [OK]. В зависимости от перемещения по детали подтягиваете в виртуальное поле нужное значение соответствующее активной записи. На click кнопки реализуете сохранение введенного пользователем значения в нужную таблицу или таблицы.

Визуально это будет выглядеть приблизительно так.

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

На мой взгляд, Вашу задачу можно решить проще.

1. Создаете представление (view) с нужными Вам данными.

2. На основании представления создаете деталь с обыкновенным нередактируемым реестром. Возможность добавления, редактирования и удаления у детали убираете. Использование обычной детали имеет, как минимум одно преимущество, - возможность настройки колонок из связанных объектов.

3. Над реестром добавляете виртуальное поле и кнопку [OK]. В зависимости от перемещения по детали подтягиваете в виртуальное поле нужное значение соответствующее активной записи. На click кнопки реализуете сохранение введенного пользователем значения в нужную таблицу или таблицы.

Визуально это будет выглядеть приблизительно так.

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

Алла Савельева,

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

Радчук Виталий Владимирович,

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

В любой задаче всегда есть, как минимум, два варианта решения, а то и больше... кто ищет, тот найдет!

Если логика реализуемая на уровне БД, то ещё можно и представлением с II, IU, ID-триггерами сделать. А потом с ним работать как с обычной таблицей, привязав к ней схему, а затем делать деталь с редактируемым реестром.

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

Уважаемые знатоки BPM 5х, подскажите, какие нужно проделать действия, чтобы реестр стал редактируемым? Ну помимо указания параметра "разрешить редактирование в ячейках" для DataGrid.
Не хочу использовать карточку редактирования в одной из новых деталей...
Есть ли где в "коробке" такой грид, чтобы списать оттуда код?
Заранее благодарность и уважение подсказавшим :smile:

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

Нравится

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

"Александр Кудряшов" написал:Есть ли где в "коробке" такой грид, чтобы списать оттуда код?

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

"Бондарь Наталия" написал:Александр, примеров в коробочной версии нет, так как функциональность редактируемого реестра не поддерживается

А вот это ценный комментарий! Сэкономили мне массу нервов и времени:smile:
Соответственно сразу вопрос - планируется ли в рамках 5х в перспективе такой функционал? или смотреть надо в сторону 7ки?

Добрый день!
действительно, скорее всего Вам необходимо смотреть в сторону 7ки. Будут ли дорабатывать данный функционал ? может быть вернемся к реализации подобного функционала в 7.0, но на данный момент существуют много других первоочередных задач, в перспективе пока не рассматривали.

"Александр Кудряшов" написал:

Получилось ли победить проблему с одной записью?

"Илья Т." написал:Получилось ли победить проблему с одной записью?

Бросил я эту затею и сделал окно редактирования. Насколько помню, так и не решил проблему.

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

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

Помогите, пожалуйста, с такой проблемой.
Если любой грид сделать редактируемым и свойства HasCustomDraw и HasCustomCellDraw = true;
При вводе данных слишком быстро строки выделяются черным цветом

Terrasoft Sales, 3.3.2.47

Нравится

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

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

Воспроизводится ли проблема на более поздних бинарных файлах?

Рекомендуется в обработчике события function grdDataOnGetRowDrawInfo добавить условие else при проприсовке и делать присвоение:

Color.Value = DefaultLayoutColor;

Анна, добавила по вашему совету эту строку, но проблему это не решило
Так же, ошибка воспроизводится на версии 3.3.2.222

// Подсветка строк (активное направление)
function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) {
	var Dataset = dlData.Dataset;
	var IsActive = GetFieldValueFromDisabledField(Dataset, 'IsActive');
	if (IsEmptyValue(IsActive)) {
		IsActive = 0;
	}
	var DirectOpportunityID = GetFieldValueFromDisabledField(Dataset, 'DirectOpportunityID');
	if (IsActive) {
		// текст строки активного направления отображается синим цветом
		TextColor.Value = clBlue;
	} else {
		Color.Value = DefaultLayoutColor;
	}
	if (!IsEmptyValue(DirectOpportunityID)) {
		ImageName.Value = 'DirectOpportunity';
	}	
}

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

Вероятнее всего, где-то в скрипте у Вас происходит неявное присвоение переменной Color значения, соответствующего черному цвету.

Для того, чтобы это оттестировать, можно добавить в конец функции OnGetRowDrawInfo следующую конструкцию:

if(Color.Value == clBlack){
       MessageBox('Строки заливаются черным цветом!');
}

Если заливка происходит в конфигурации, тогда имеет смысл искать нужную строку при помощи оnладчика. Если в ядре (сообщение не появилось) - рекомендуем Вам произвести обновление сборки до самой новой - 3.3.2.254. Запрос на новую сборку бинарных файлов можно направить на support@terrasoft.ru

Кстати, а что у вас за операционная система и какая в ней тема/цветовая схема выбрана? Попробуйте на классическое оформление все сбросить...
Что если на другой машинке клиента запустить и оттуда посмотреть? Везде цвет черный?

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

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

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

Анна,
да, мы перед тестированием уже привыкли постоянно чистить профиль и кэш :)

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

Обновление бинарников не помогло, по этому прикладываю сервисы

Update: архив не прикладывается по какой-то причине, попробую немного позже

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

Пожалуйста, перешлите сервисы и ссылку на данную тему форума на support@terrasoft.ru

Анализ проблемы с привлечением разработчиков дал следующие результаты:

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

В качестве обходного решение можем порекомендовать следующее:

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

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

Self.BeginUpdate();
Dataset.Close();
Dataset.Open();
Self.EndUpdate();

Анна, спасибо, все понятно.

Коллеги, просьба запланировать данное исправление в бинарные файлы 3.3.2

"Светланa" написал:Если любой грид сделать редактируемым и свойства HasCustomDraw и HasCustomCellDraw = true;
При вводе данных слишком быстро строки выделяются черным цветом

Временное решение, предложенное Алимовой Анной
"Alimova Anna" написал:Для этого необходимо на событие DataChange датасета реестра в скрипте реестра добавить следующие строки:

Self.BeginUpdate();
Dataset.Close();
Dataset.Open();
Self.EndUpdate();


Не решает проблему, так как если имеем древовидный реестр, подвигаем колонки и сделаем Expand All (Раскрыть все) реестра, весь грид закрасится в черный цвет.

Добрый день, АльфаКрыса!
Доработка отрисовки редактируемого реестра запланирована на следующие версии: 3.4.0+ и 3.4.1+
Перенос подобные изменений в ядро 3.3.2 не планируется, к сожалению.

Здравствуйте Павел,
Спасибо Вам за отклик, но дело в том что речь не идет про редактируемый грид.
Это обычный древовидный грид, с 1й степенью вложенности, который предназначен только для отображения записей.
Так как объем выборки достаточно велик, нам принципиально подсвечивать корневые (Parent) записи.
Но при попытке прорисовки появляется грид имеет следующий вид
bug
Просьба рассмотреть данный вопрос еще раз, так как у нас нет возможности исправить данную ошибку в бинарных файлах Terrasoft'a, так как исходные коды являются закрытыми.

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

Но, в качестве возможного решения задачи, разработчики рекомендуют не использовать заливку фона ячеек, а выделять шрифт, например жирным нужные записи. Чтобы сократить объем данных также можно предусмотреть группы, представления таблиц (view) в дереве и т.п.

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

function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) {
	 var Dataset = dlData.Dataset;
      var MyNum = GetFieldValueFromDisabledField(Dataset, 'MyNum');
       if (MyNum.indexOf('-') == -1 )
       {
       Font.bold = true;                       
        }
}

Код выше делает шрифт жирным в зависимости от значения
В гриде все равно будут присутствовать черные квадраты
bug
Я не думаю, что здесь играет роль объем выборки, черные квадраты будут рисоваться и при маленьком количестве строк.

Позиция компании, нам понятна. Каковы сроки устранения данной ошибки на версии 3.4.0+ ?

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

Спасибо за понимание.

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

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

Если данных слишком много, можно попробовать грузить реестр в режиме отложенной загрузки (lazy):
lazytreegrid

Частично это поможет устранить проблему с отрисовкой.

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

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

Здравствуйте Анна,
Спасибо за отзыв, я правильно понимаю, что при Mode = dtmLazy, данные будут подгружаться и соответственно отрисовываться в реестре постранично?
Я немного не понял Ваши идую про дерево груп, вы имеете в виду сделать корневые записи отображать в окне груп (wndGroups), выбирать записи как корневую в wnd_Groups а после этого отображать их в главном реестре (wndGridData), т.е по сути отказаться от древовидного реестра в качестве грида?

Странная вещь, если поставить в окне реестра grdData, Mode = dtmLazy. Реестр пустой (т.е ни одна запись не отрисовалась, и выделить ни одну запись нельзя) , считаются только Итоги, возможно это связанно с тем что в grdDataOnGetRowDrawInfo я использую закраску цветом, и выделение шрифта

function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) {
		var Dataset = dlData.Dataset;
      var OffshNumber = GetFieldValueFromDisabledField(Dataset, 'OffshNumber');
       if (OffshNumber.indexOf('-') == -1 )
       {
		Font.bold = true;                       
	   }
 
     var OffshServiceName = GetFieldValueFromDisabledField(Dataset, 'Name');
     if (OffshServiceName  == 'Хочу счастья')     
     {
	 Color.Value = clMoneyGreen;     
     }
 
}

К сожалению бэкап БД, дать не могу, сервисы также не помогут, так как раздел полностью основывается не на базовых таблицах Terrasoft.
Еще одно: Саму отрисовку, я провожу только после фильтрации в реестре, после самой фильтрации производится update в БД для записи данных сумм, для корневых записей.
Фильтрация производится, как я описал тут

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

Если раздел основывается не на базовых таблицах, тогда нужны будут еще сервисы таблиц, запросов, датасетов.

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

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

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

1. Добавить новое поле в tbl_MailMessage

01

2. Добавить поле и фильтр в sq_MailMessage

02

Для добавления фильтра необходимо вначале добавить переменную со следующими настройками в Parameters :

03

Затем добавить фильтр типа Compare со следующими настройками:

04

3. Добавить поле в датасет ds_MailMessage

05

06

4. Добавить поле в грид

07

В свойствах новой колонки указать:

08

5. Сделать грид редактируемым и запретить редактирование для всех полей, кроме Обработано

09

Чтобы редактируемым было только одно поле, нужно в событиях грида добавить двойным кликом обработчик события OnBeforeEdit:

10

И в открывшемся скрипте прописать следующий программный код:
CanEdit.Value = (DataField.KeyValue == 'Processed');

11

6. После перезапуска видим результат:

12

Нравится

Поделиться

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

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

function Processed() {
	var ProcessedDataset = BaseGridArea.GridDataset;
	ProcessedDataset.DisableEvents();
	ProcessedDataset.Open();
	ProcessedDataset.Edit();
	ProcessedDataset.Values('Processed') = true;
	ProcessedDataset.Post();
	ProcessedDataset.EnableEvents();
}

А в функцию ShowMailMessage() добавили строчку:

Processed();

Благодарю, Евгений, действительно, так намного удобнее :)

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

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

Нравится

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

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

Неужели с этим ничего нельзя сделать?

Когда Вы нажимаете на ячейку и содержимое не выделяется -- нажмите еще дважды, оно выделится полностью. Это же базовые принципы работы с полями в среде Windows. Таким образом на двойной клик больше, но возможно обойти проблему.

Да. Это конечно возможно, но речь идет об оооочень большом наборе цифр .... это затягивает работу.....

"Михайловский Игорь" написал:Да. Это конечно возможно, но речь идет об оооочень большом наборе цифр .... это затягивает работу.....

Как вариант сделайте это поле текстовым.
Или так: сделайте еще однго поле текстовым - скриптом продублируйте существующие данные - в гриде пользуйте ето поле - а по факту сохранения записи или на триггере вносите изменения в оаб поля или в скриптах террасофта делайте какойнибудь parseFloat для вашего дробного поля.
Так гляди на костылях и работать приятней будет ;)

;) Сортировка будет происходить как String 1,10,2,20 а не число 1,2,10,20 Уже делал так :)

Когда происходит сортировка - датасет переоткрывается.
На BeforeOpen - подменяйте сортировку на свою.

Сортировку, например, можно изменить вручную вот так:

Dataset.DataFields('FieldName').OrderType = otAsc;
Dataset.DataFields('FieldName').OrderPosition = 1;

Какая у Вас версия Terrasoft?

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

С огорчением узнал что для DataTreeGrid не вынесено в администраторе свойство IsEditable и соответственно редактировать его якобы нельзя... (3.3.2.140)

Visual studio, однако, говорит, что такое свойство для DataTreeGrid есть - пробуем в коде включить:

grdData.IsEditable = true;

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

Нравится

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

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

Режим редактирования для DataTreeGrid не доступен. В будущем планируем реализовать редактируемое дерево.

"Александр Кравчук" написал:Режим редактирования для DataTreeGrid не доступен

Однако включить его удалось + поля Boolean очень даже редактируются:smile: В любом случае спасибо за ответ, пока от редактирования дерева отказался

Еще один нюанс - для DataTreeGrid не вынесен в список свойств в администраторе такой параметр как UseColumnLookupType - он прекрасно назначается для "дерева" в скрипте.

Кстати, не сделать ли какой-нибудь "нанораздел" на комьюнити для так сказать minor bug report - мелкие нюансы на исправление, замеченные особенности и прочее...

Спасибо, Александр. Запланировал до конца месяца вынести в дизайнер свойство UseColumnLookupType.

"Александр Кудряшов" написал:Кстати, не сделать ли какой-нибудь "нанораздел" на комьюнити для так сказать minor bug report - мелкие нюансы на исправление, замеченные особенности и прочее...

Была когда то идея - как оказалось, невостребованная :)

А насчет редактируемого дерева - я очень за.

Насчет идеи, так уже есть такой список: http://community.terrasoft.ua/sales/general/changes
Редактируемое дерево -- будет рассматриваться после реализации бета-версии Terrasoft 3.4.0.

"Александр Кравчук" написал:Насчет идеи, так уже есть такой список: http://community.terrasoft.ua/sales/general/changes
Редактируемое дерево -- будет рассматриваться после реализации бета-версии Terrasoft 3.4.0.

Почему не получается открыть ссылку

"Забродцкий Валерий" написал:Почему не получается открыть ссылку

Права доступа....

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

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

Добрый день, Валерий!
Спасибо за Ваш вопрос. Этот раздел на Terrasoft Community доступен только партнерам. Клиенты же могут запрашивать последние версии продуктов через Службу поддержки.

Здравствуйте, Ольга!
Я не про запрос/получение новых версий спрашивал, а про описание багов, которые можно решить, обновив бинарные файлы,и про определенные особенности определенных версий.
Может из-за этих особенностей лучше воздежраться от обновления и не дергать лишний раз службу поддержки, до исправления этих ошибок.

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

У меня такая ситуация:
Для документа типа "Установка цен номенклатуры" создал деталь "Продукты", которая содержит список продуктов, значение старой цены и значение новой цены для каждого продукта. Грид детали сделан редактируемым, поскольку должна быть возможность быстро изменить значение новой цены для каждой позиции товара. Этот документ регулирует цены для указанной торговой марки (производителя), соответственно при добавлении продукта на деталь я хочу, чтобы у меня накладывался фильтр и я мог добавить только продукты этой торговой марки.

Вопрос: как мне отфильтровать по торговой марке список продуктов, который появляетя, когда я изменяю значения справочного поля "Продукт" на детали?

ПС: Прикрепил картинку, чтобы было понятно о чем я говорю

Нравится

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

У датасета есть событие, в котором можно наложить фильтр на его справочные поля.
Называется примерно OnDatasetPrepareLookup...

Дословно название события не помню - сейчас нет возможности глянуть. В общем, ищите событие со словом Lookup в названии :)

OnDatasetBeforeLookupDatasetOpen

--
www.it-sfera.com.ua

"Валерий Андрусик" написал:У датасета есть событие, в котором можно наложить фильтр на его справочные поля.
Называется примерно OnDatasetPrepareLookup...

"Виталий Ковалишин aka samael" написал:OnDatasetBeforeLookupDatasetOpen

Спасибо за помощь.
По слову OnDatasetBeforeLookupDatasetOpen нашел вот эту статью:
"Наложение фильтров в окне редактирования"
http://community.terrasoft.ua/developer/solutions/1901

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

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

Была создана новая таблица с полями:

  • Клиент
  • Статус
  • Телефон
  • Улица
  • Дом
  • Офис
  • Ответственный
  • Дата смены статуса

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

Так же были добавлены общие детали Группа и Описание. В Описание заносились результаты работы.

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

Но при работе с фильтром дат возникли следующие проблемы:

  1. Очень не удобно в ручную исправлять дату, так как фокус все время скачет обратно в грид.
  2. Практически невозможно работать с календарём при выборе дат, так как если курсор стоял в гриде и сразу нажать кнопку календаря, то вываливается ошибка "Cannot change Visible on OnShow or OnHide" и предлагается отправить отчет в Террасофт.

Данная проблема относится видимо только к более старым версиям (у нас 3.1.1.6). По совету в первой записи моего блога, которая "чудесным" образом исчезла (видимо за критику) проверил ситуацию на последней версии, там этой проблемы нет - календарь корректно работает даже при редактируемом гриде. А вот скачет ли фокус - забыл проверить.

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

Пробовал добавлять обработчик, который менял бы свойство IsEditable на событиях OnEnter и OnExit самого грида, но тогда даже при простом перемещении по строкам срабатывают оба события и тоже самое сообщение - "Cannot change Visible on OnShow or OnHide" - начинает вываливаться в лог. Уже легче, но все равно не то.

Результат:

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

Планируемые доработки:

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

Нравится

Поделиться

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

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

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

Алексей, спасибо за замечания! Обязательно внесем корректировки и вышлем Вам исправления.

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

Нет. Это точно не из-за доработок. В версии 3.1.1.49 ошибку "Cannot change Visible on OnShow or OnHide" еще не проверял. А вот фокус скачет даже в самой последней версии, которая на вашем сайте в Демо.

Можете сами попробовать, в любом разделе, любой грид делаете редактируемым. Открываете этот раздел, щелкаете на любой записи грида, а потом в фильтре дат, попробуйте любую дату сразу поменять, например, на "01.01.2000". После того как вы введете "01" обновится грид с записями и курсор выбросит из поля вода даты обратно в грид с данными. Чтобы ввести вторую цифру "01" придется снова щелкать в поле ввода даты, после этого снова выбросит в грид, потом придется еще раз щелкать и вводить "2000".

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

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