ОБЩИЕ

Главная

МОЙ КАБИНЕТ

Корзина
Заказы
Профиль

СКАЧАТЬ

Дистрибутивы

ЦЕНЫ

Прайс-лист

СВЯЗЬ

Форум
Техподдержка
Контакты

СОТРУДНИЧЕСТВО

Стать дилером
Вакансии


Команда RegionSoft:
"Мы создаем решения, которые
делают Ваш бизнес эффективнее!"
 

Логин:

Пароль:






Я забыл пароль


НАВИГАТОР


+ RegionSoft CRM. Использование конфигуратора
- Конфигуратор для чайника
- Работа в конфимгураторе
- Изменения в отчете "конверт"
- Редактирование формы счёта на оплату
- ShellExecute в конфигураторе.
- Фактический индекс клиента в письме
- Изменения в БД через конфигуратор.
- Использование компонентов других модулей в кофигураторе для формы.
- Нужен скрипт для выгрузки базы данных в excel
- Регион и район в конфигураторе
- Как восстановить удаленных клиентов или контакты
- Что можно сделать с помощью конфигуратора?
- Пример кастомизированного отчета
- Как поставить на автомат вывод Отчета
- Как узнать название объектов в карточке клиента?
- Как добавить фирменную шапку в печатную форму счета
- Как попасть в конфигуратор
- Пример интеграции с 1С
- Как убрать неиспользуемые вкладки в карточке клиента?
+ RegionSoft CRM. Установка, настройка, эксплуатация


ВАШИ ПРАВА

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


 Форум: 'RegionSoft CRM. Использование конфигуратора'
 ТЕМА: Использование компонентов других модулей в кофигураторе для формы. 
Автор темы: Janevish
Тема создана: 2014-10-06 13:40:18

Добрый день.

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

Конкретный пример: как, например, на формер в конфигураторе на форме fSchetEidt использовать TrsFileBrowser?

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

Спасибо.

Переменная "fSchetEdit_New" определяет - новый счет вводится или редактируется старый. Значение "fSchetEdit_id" имеет смысл только тогда, когда редактируется счет, поскольку он имеет идентификатор. Новый счет получает идентификатор в момент сохранения формы. Axel
2014-11-05 02:49:51

Подытожу, что нужно, чтоб не перечитывать все по-новой:
1. Создать TrsFileBrowser на форме fSchetEdit так, чтоб иметь возможность каждый раз переустанавливать fb.FileOwner_Id := fSchetEdit_id
2. Если сначала был открыт какой-либо счет, а после мы его закрываем и создаем новый (не сохраненных) fSchetEdit_id содержит старое значение. Может можно как-нибудь по-другому узнать, что счет новый и реализовать соответствующую логику?!
Janevish
2014-11-04 13:32:55

Хорошо, если не сильно долго :) Janevish
2014-11-03 14:22:02

Дайте немного времени - подскажем решение... Axel
2014-10-27 21:08:10

По поводу создания TrsFileBrowser в событии fMain.OnShow - это первое, о чем я подумал. Но по ходу выяснилось, что в момент отработки fMain.OnShow форма fSchetEdit еще не создана и получаем ошибку времени выполнения. Посему сразу откинул этот вариант. С другой стороны, даже если и удастся его как-то создать, где хранить на него указатель?
Т.е. в событии fSchetEdit.OnShow у нас нет указателя на TrsFileBrowser, чтоб получить доступ к FileOwner_Id.
Также смотрел в сторону свойств Children для TTabSheet, чтоб как-то вытянуть созданный экземпляр TrsFileBrowser, но так ничего и не раскопал из того, что бы заработало в конфигураторе.
Janevish
2014-10-27 17:27:51

В строке
fSchetEdit.OnClose := @SchetEdit_Close;
Вы подменяете стандартный обработчик закрытия формы вашей процедурой. Работать это, конечно, будет, однако это неправильный вариант, поскольку на типовом обработчике OnClose есть логика, отключение которой может привести к непредсказуемым результатам. Лучше Ваш скрипт написать в конфигураторе в событии OnClose, поскольку он будет выполняться вместе с типовым OnClose и все будет при этом соблюдено.

Еще совет: Не требуется каждый раз при открытии формы fSchetEdit создавать на ней компонент, а при закрытии удалять. Достаточно создать один раз в событии fMain.OnShow, как я показывал в примере. Просто создавайте его на форме fSchetEdit. В этом случае при входе в форму fSchetEdit Вам всего лишь потребуется установить компоненту новый идентификатор счета. И никогда не нужно будет компонент удалять...
Axel
2014-10-27 15:57:09

Кстати, само собой для вашего примера (форма fmain) TrsFileBrowser также пустой до первого клика по нему по тем же причинам. Janevish
2014-10-27 10:49:12

ваш скрипт для fSchetEdit.Onshow
я чуть-чуть дополнил

var
fb: TrsFileBrowser;

procedure SchetEdit_Close(Sender: TObject); // Обработчик нажатия кнопки
begin
try
fb.Free();
fb := Nil;
finally
fSchetEdit.OnClose := nil;
end;
end;

begin

{ создаем и инициализируем свойства fb }
//И УСТАНАВЛИЕВАЕМ ТЕКУЩИЙ СЧЕТ: fb.FileOwner_Id := fSchetEdit_id;

fSchetEdit.OnClose := @SchetEdit_Close;

end.

В нем 2 проблемы:
1. Сразу при открыти формы fSchetEdit в случае, когда до этого мы загружали файлы, сам контрол пустой (не отображает загруженные файлы) до тех пор, пока не кликнуть по нему мышкой.
Сэмулировать клик в конфигураторе не знаю как. FileListRefresh конфигуратор также не понимает.
2. при закрытии формы удаляем контрол, т.к. при новом открытии нужно будет переприсвоить значение текущего schet_id.
При закрытии выкидывает ошибку времени выполнения 'List index out of bounds(1)'

Как починить 2 этих неудобства?

2014-10-24 20:41:37

Скачайте дистрибутив CRM с номером сборки 3108 или выше, войдите в конфигуратор, в обработчике fMain.OnShow пропишите скрипт:

var
fb: TrsFileBrowser;

begin
fb := TrsFileBrowser.Create(fMain.pWorkPlace);
fb.Parent := fMain.pWorkPlace;
fb.Width := 300;
fb.Height := 200;
fb.Visible := true;
fb.Align := alBottom;
fb.Name := 'fbname';
fb.FileDataBase := dm.base;
fb.FileTransaction := dm.tr;
fb.FileTable := 'FILES';
fb.FileFolder_ID := 0;
fb.FileID_Field := 'CUSTNO';
fb.FileOwner_ID := 0;
fb.FileUser_ID := 1;
end.

В результате при входе в систему на главной форме будет создан объект, к которому можно будет прикреплять файлы. Это пример.
Axel
2014-10-17 18:56:59

Тогда спрошу по-другому. Есть задача: реализовать механизм сохранения папок и файлов на форме fSchetEdit.
Самым логичным выходом мне видилось использовать TrsFileBrowser. Но пошаманить в конфигураторе не удалось, поскольку не понятно на какой внутренний модуль ссылаться и вообще не уверен, что в конфигураторе возможно использовать ключевое слово "uses".

Как это сделать другим способом с наименьшими усилиями?
Janevish
2014-10-15 14:17:33

Воот, вы по-русски это объяснили "поскольку это компонент внутренней платформы системы" и мой вопрос заключался в том, как именно использовать такие компоненты, поскольку при объявление переменной t: TrsFileBroweser - ругается компилятор: "Сообщение компилятора: 'Неизвестный тип: 'TrsFileBrowser'".

Другими словами, как именно "пошаманить"?! :)
Janevish
2014-10-10 14:55:12

Вообще создание любого объекта делается так:

var
t: TrsFileBrowser;

begin
try
t := TrsFileBrowser.Create(fSchetEdit); // Указываем контейнер
t.Parent := fSchetEdit; // указываем родителя, в данном случае равен контейнеру
except else
ShowMessage('Ошибка создания компонента');
end;
end.

Но не уверен, что именно компонент TrsFileBrowser заведется в конфигураторе, поскольку это компонент внутренней платформы системы, хотя ничего невозможного нет. Если немного "пошаманить", должно получиться :)
Axel
2014-10-06 21:13:19

Этот сайт защищен международными и российскими законами об авторском праве.
Перепечатка, а также любое другое воспроизведение материалов сайта без письменного разрешения администрации - запрещена.
RegionSoft CRM - Автоматизация бизнеса Copyright (C) 2001-2018 RegionSoft Developer Studio