Страница 1 из 2

компиляция стандартных форм в 8.00

Добавлено: 07 янв 2006, 19:10
dp
Так как в 8.00 нет вроде больше параметра OpenResources то у меня возникла проблема - как указать в каком именно патче лежит новый прототип для сборки форм. :sad:

Кто нить придумал какое-либо другое решение, кроме компилирования нового прототипа вместе с формами? :(

Добавлено: 09 янв 2006, 12:38
Max_Fin
Идея репозитария в принципе очень не плохая, но реализация притянута за уши. К чему на сегодняшний день этот репозитарий? Что он вообще делает? По большому счету это тот же OpenRes.

Еще один минус - то что клиент должен иметь support, чтоб ему ресурники подключали :lol:
Нам пришлось написать интерфейс регистрации собственных ресурсников, чтоб клиента не напрягать и облегчить работу наших системщиков

Добавлено: 09 янв 2006, 19:18
dp
а можно получить для ознакомления данный интерфейс?

и все-таки - как быть с прототипами?

Добавлено: 10 янв 2006, 10:13
Max_Fin
Сборка выполняется в ресурсник, который Галка подхватывает без регистрации, например, в debug.res.
Запуск непосредственно выполняется из Галактики через ард-отчет.
Выполнено по запросу наших системщиков в том виде в котором они хотели, так что если нужно расширить функционал, дописывайте.

resreg.ard

Код: Выделить всё

.Form MF_ARDResReg
.ARD
.GROUP '[Тюмбит-АСУ]'
.NameInList 'Регистрация пользовательских компонентов - [Тюмбит-АСУ]'
.DEFO LANDSCAPE
.P 60
.begin
  if visualizationactive StopVisual('', 0);
  RunInterface('MF_ResReg');
  StartNewVisual(vtRotateVisual, vfTimer + vfBreak + vfConfirm, 
                 'Выполнено', 1);
  MF_ARDResReg.fexit;
end.
.endform
resreg.vip

Код: Выделить всё

interface MF_ResReg 'Регистрация пользовательских компонентов - [Тюмбит-АСУ]' EscClose, Blue;
Show at (, , 80, 22);

const
  StartUserPriority = 30000;
end;

create view
as select 
  Components.*
from 
  ComponentModules,
  Components,
  ComponentUsers,

  Synonym Components SynComponents
where
((
  'galnet' == ComponentModules.EXEName and

  StartUserPriority <<= Components.Priority and
  Components.Atl_nRec == ComponentUsers.ResCode and

  StartUserPriority <<= SynComponents.Priority
));

Browse brComponents (,,sci1378Esc);
Table Components;
fields
  Components.Name 'Компонент': [30], NoProtect;
  Components.Resource 'Ресурс': [50], NoProtect, PickButton;
  Components.Priority 'Приоритет': [10], NoProtect;
end;

function GetFreePriority: Word;
{
var P: Word;

  P := StartUserPriority;
  _loop SynComponents
  {
    if P < SynComponents.Priority break;
    else P := SynComponents.Priority + 1;
  }
  GetFreePriority := P;
}

Panel pnlComponents
Table Components;

HandleEvent
cmInsertRecord:
{
  insert current Components;

  ClearBuffer(tnComponentUsers);
  ComponentUsers.ResCode := Components.Atl_nRec;
  ComponentUsers.GroupCode := 0;
  ComponentUsers.UserCode := 0;
  ComponentUsers.Flags := 0; //приоритет низкий
  ComponentUsers.DenyFlag := false;
  insert current ComponentUsers;
}
cmUpdateRecord:
{
  update current Components;
}
cmDeleteRecord:
{
  delete all ComponentUsers;

  delete current Components;
}
cmCheckField:
{
  case CurField of
    #Components.Name:
    {
      if Components.Name = ''
      {
        Message('Не задано имя ресурса', Error);
        Abort;
        Exit;
      }
      else
      {
        set Components.Resource := '%startpath%tyumbit\'+ Components.Name + '.res';
      }
    }
    #Components.Resource:
    {
      if Components.Resource = ''
      {
        Message('Не задан ресурс', Error);
        Abort;
        Exit;
      }
    }
    #Components.Priority:
    {
      if Components.Priority < StartUserPriority
      {
        Message('Приоритет должен быть более 30000', Error);
        Abort;
        Exit;
      }
    }
  end;
}
cmCheckRecord:
{
  if Components.Name = ''
  {
    Message('Не задано имя ресурса', Error);
    Abort;
    Exit;
  }
  if Components.Resource = ''
  {
    Message('Не задан ресурс', Error);
    Abort;
    Exit;
  }
  if Components.Priority < StartUserPriority
  {
    Message('Приоритет должен быть выше 30000', Error);
    Abort;
    Exit;
  }
}
cmSetDefault:
{
  ClearBuffer(tnComponents);
  Components.Priority := GetFreePriority;
  Components.Flags := 10;
  if GetFirst ComponentModules = tsOK
    Components.ModuleCode := ComponentModules.Atl_nRec;
}
end;
end;

HandleEvent
cmPick:
{
  case CurField of
    #Components.Resource:
    {
var sTmp: String;
      sTmp := GetFileName('*.RES', 'Выберите ресурс...');
      if sTmp <> '' set Components.Resource := sTmp;
    }
  end;
}
cmClose:
{
  UpdateTable;
}
end;

end.

Добавлено: 10 янв 2006, 12:27
san
понятное дело гоморойно в ехе-шнике имена ресурсов в каждой версии дописывать,сделали в базе реестр. но могли и параметр в конфиге оставить. а если мне например надо одной группе юзеров подключить ресурсы , а другим нет, что в этом случае делать...возможно эта ф-ность нужна для отдела продаж, будут продавать лицензии на заполнение реестра ресурсов, как к примеру прошел опыт с лицензией на вип.

Добавлено: 10 янв 2006, 16:56
dp
Max_Fin - Огромное человеческое спасибо :)

а зачем приоритет больше 30000?

Добавлено: 10 янв 2006, 17:55
Max_Fin
Так решили, что наши ресурники будут иметь приоритет не ниже 30000. Все писалось исключительно под наши запросы, так что меняйте как вам будет удобнее.
:!:

Добавлено: 14 фев 2007, 12:20
dp
ну вот теперь моя тема стала как никогда актуальна, поскольку пошел процесс перехода уже не только на 8.0, но и на 8.1 :(

и вывод - я побадался недели две - и пошел требовать репозитарий. и вам того же советую.

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

Добавлено: 01 мар 2007, 11:58
cruger
Основная идея репозитария - централизованное хранение информации о подключаемых ресурсах, возможность админу контролировать её.

Скажете, с OpenResources это тоже было возможно? При условии одного единственного конфига - да. Но если представить, что у каждого пользователя свой, а ещё есть и командная строка, то становится очевидным, что предсказать, какие же именно ресурсы и в каком порядке будут подключаться, не так то просто. Контролировать, что пользователь подключает в командной строке было вообще нереально.
san писал(а):а если мне например надо одной группе юзеров подключить ресурсы , а другим нет, что в этом случае делать
В репозитарии можно настроить группы пользователей, а для групп - подключаемые ресурсы. Можно и отдельно для пользователей.
Max_Fin писал(а):решили, что наши ресурники будут иметь приоритет не ниже 30000
Приоритет ресурса не пустое число, а определяет порядок поиска объектов в ресурсе. Если я ничего не путаю, то в случае конфигурирования интерфейса, лежащего в ресурсе с приоритетом 30000, результат этого конфигурирования виден не будет, т.к. у рабочего ресурса конфигуратора приоритет ниже.

Что делать, если нет саппорта с репозитарием? Выход есть - экспорт/импорт репозитария в xml.

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

зы.
san писал(а):будут продавать лицензии на заполнение реестра ресурсов, как к примеру прошел опыт с лицензией на вип.
То, что vip с некоторого момента стал распостраняться с Галактикой - ошибка и недосмотр. Vip не является частью Галактики или Support'а и по большому счёту не нужен для её функционирования. Изначально предполагалось, что vip получают те, кто купил Атлантис. Так что для тех, кто использовал vip в составе купленного Атлантиса, ничего не изменилось. А остальные, выходит, использовали его нелегально. Разве где-то сказано, что купив пару модулей Галактики можно разрабатывать свои интерфейсы?

Добавлено: 01 мар 2007, 12:27
Алексей
cruger
Как быть с подключением ресурсов для компиляции? Полагаю, скоро будет возможность при компиляции указать систему, ресурсы которой надо подключать для данной компиляции. (Вот и ещё одно преимущество репозитария, кстати)
Т.е. если я раньше компилил фрм-ку и подключал в конфиге один ресурс где лежит прототип, то теперь мне надо целую систему надо указывать? А зачем? Ведь при компиляции кадый ресурс подключается, считывается целиком... а оно надо?

Если сейчас, я например подключаю ресурс mto.res в котором собрано всё по МТО и мне надо что-то подправить
Я компилю на стороне в этот ресурс ФРМ-ку с исправлениями и подкладываю её в папку например resources на сервер с именем mto1.res
Далее в стартапе меняю имя подключаемого ресурса mto.res на mto1.res и никого не выгоняя из системы имею при каждом новом запуске Галактики подключенную нужную ФРМ-ку. Кому нужна - тот перегрузится
А в случае с репозитарием как такое будет возможно? Можно на горячую заменить один ресурс на другой?

Добавлено: 01 мар 2007, 12:54
san
cruger писал(а): Разве где-то сказано, что купив пару модулей Галактики можно разрабатывать свои интерфейсы?
Разрешено все что не запрещено.

Не обязательно интерфейсы.Раньше при покупке например f-com была возможность компилировать строчным компилятором fcom и отдельно был vip. Потом ф-ком убрали в вип и некоторое время была возможность компилировать вип-ом,пока на него не ввели лицензии.В итоге отобрали строчный компилятор форм.
Почему сейчас купив лицензию на компилятор форм я не могу использовать строчный компилятор? Пускай он не будет компилировать интерфейсы, а формы то почему нельзя?

Добавлено: 01 мар 2007, 13:22
WiRuc
cruger писал(а):Основная идея репозитария - централизованное хранение информации о подключаемых ресурсах, возможность админу контролировать её.
Идея то неплоха, только реализация как всегда хромает :-(
К версии 9.х до ума доведут, вот тогда будет хорошо :grin:

Добавлено: 01 мар 2007, 17:37
KATZ
cruger писал(а):Основная идея репозитария - централизованное хранение информации о подключаемых ресурсах, возможность админу контролировать её. Скажете, с OpenResources это тоже было возможно? При условии одного единственного конфига - да. Но если представить, что у каждого пользователя свой, а ещё есть и командная строка, то становится очевидным, что предсказать, какие же именно ресурсы и в каком порядке будут подключаться, не так то просто. Контролировать, что пользователь подключает в командной строке было вообще нереально.
Не обладаю достоверной статистикой, но рискну предположить: не менее чем на 90-95 процентах предприятий пользователи работают с единым набором ресурсных файлов (файлы от разработчиков плюс, при необходимости, собственные доработки USERx.RES и DEBUGx.RES), и для них проблема управления компонентами вообще не стоит. А вот наличие на одном предприятии нескольких БД - явление гораздо более частое, и то, что репозитарий является составной частью БД, нисколько не добавляет удобств в администрировании. По сути дела, одна разновидность "децентрализации" сменилась другой. К тому же, если и есть смысл манипулировать набором ресурсных файлов, то только в "Галактике", но никак не в Supportе или PatchManagerе.
cruger писал(а):То, что vip с некоторого момента стал распостраняться с Галактикой - ошибка и недосмотр. Vip не является частью Галактики или Support'а и по большому счёту не нужен для её функционирования. Изначально предполагалось, что vip получают те, кто купил Атлантис. Так что для тех, кто использовал vip в составе купленного Атлантиса, ничего не изменилось. А остальные, выходит, использовали его нелегально. Разве где-то сказано, что купив пару модулей Галактики можно разрабатывать свои интерфейсы?
Могу ошибаться, но дело, скорее всего, не в недосмотре. Без VIPа БД не сконвертировать и, следовательно, версию не поменять. Полагаю, потому он и входил в дистрибутив. А уж коли он там присутствовал, то отчего ж было им не пользоваться? Если человек купил в магазине, к примеру, компьютер, а впридачу ему дали еще и принтер (сами дали, никто не просил), так теперь на этом принтере принципиально не печатать?
dp писал(а):сейчас мучаюсь с patchman - репозитарий по сравнению с этой поделкой - замечательная вестчь. по-крайней мере он хоть нормально работает... а тут...
Меня он тоже не вдохновил. Предлагаю попробовать скромную любительскую альтернативу профессиональной программе. Может быть, кому-то понравится.

Добавлено: 02 мар 2007, 03:32
cruger
Алексей писал(а): Т.е. если я раньше компилил фрм-ку и подключал в конфиге один ресурс где лежит прототип, то теперь мне надо целую систему надо указывать? А зачем?
Действительно, зачем? "Возможность" совершенно не означает безальтернативную "необходимость".
Алексей писал(а): Далее в стартапе меняю имя подключаемого ресурса mto.res на mto1.res и никого не выгоняя из системы имею при каждом новом запуске Галактики подключенную нужную ФРМ-ку.
Полагаю, такой же финт можно проделать и с репозитарием, отчего нет? Только зачем же заменять один ресурс на другой. Можно просто подключать дополнительный с более высоким приоритетом.
san писал(а): Почему сейчас купив лицензию на компилятор форм я не могу использовать строчный компилятор?
Потому что строчный компилятор входит в состав Атлантиса, а не в состав встроенного в Галактику и Саппорт компилятора форм.
KATZ писал(а): Не обладаю достоверной статистикой, но рискну предположить: не менее чем на 90-95 процентах предприятий пользователи работают с единым набором ресурсных файлов (файлы от разработчиков плюс, при необходимости, собственные доработки USERx.RES и DEBUGx.RES), и для них проблема управления компонентами вообще не стоит.
А ресурсы конфигуратора? И в любом случае - проконтролировать, что именно запускает пользователь, было невозможно. Кому-то это не нужно? Кто-то не использует доп. ресурсов? Тогда какая разница: репозитарий или конфиг?
KATZ писал(а): А вот наличие на одном предприятии нескольких БД - явление гораздо более частое, и то, что репозитарий является составной частью БД, нисколько не добавляет удобств в администрировании.
Как раз в этом и состоит удобство, ибо имеется чёткое представление, что работает с конкретной БД. Ну а вообще работа на нескольких БД, как бы это сказать, не является учитываемом при разработке способом эксплуатации. Кроме того, для планируемых дальнейших доработок системы просто-таки жизненно важно наличие в БД ссылок на ресурсы, работающие с ней.
KATZ писал(а): Без VIPа БД не сконвертировать и, следовательно, версию не поменять. Полагаю, потому он и входил в дистрибутив.
Дистрибутив конвертора - это конечно да. Но он почему то обнаруживается и в ехе каталоге самой Галактики. Полагаю, его пытаются использовать для компиляции именно оттуда. И ещё его новые версии почему-то включаются в патчи. Галактики, а не конвертора.

Добавлено: 02 мар 2007, 11:39
dp
Меня он тоже не вдохновил. Предлагаю попробовать скромную любительскую альтернативу профессиональной программе. Может быть, кому-то понравится.
о! ты мой герой! :eek:

а если она еще и работает! :cool: