04 декабря, 2014

Если в СПДС GraphiCS не создаются колллекции.

В видео: «Сохранение и использование данных в редакторе коллекций» и
 «Редактирование данных в "редакторе коллекций"» Яков Коренев очень подробно показал, как создавать пользовательские коллекции и применять их на практике.
Действительно очень удобно, один раз создал коллекцию и можешь применять в таблицах для пользовательской сортировки или в формах выпадающими списками и полями.

 

Все это здорово, но вот незадача, многие пользователи жалуются, что не могут создать новую коллекцию,  изменить существующую или не видят существующие коллекции в таблице в пользовательской сортировке. Эти, мягко говоря, неудобства сводят на нет все полезности  данного инструмента.
Вот об этих небольших проблемах и возможных способах их решения пойдет дальше речь в статье.
Многими замечено, что проблемы создания новых коллекций существуют только на 64-х разрядных ОС, т.е. на СПДС GraphiCS которые работают с базой SQL, на 32-х разрядных с базой Access таких проблем нет.
Возможная причина, в том, что у «редактора коллекций» СПДС GraphiCS недостаточно прав в (базе данных) БД для создания нового объекта, хотя права на редактирование существующего и создание каталогов в БД у редактора есть. Причем проявление этой проблемы не зависит от того какие права в БД у пользователя. Надеюсь, в дальнейшем CSoft исправит это досадное неудобство. Но работать надо сейчас, поэтому предлагаю варианты обхода этого «бага».
Решение достаточно простое и лежит на поверхности:
В мастере объектов создаем новую коллекцию как копию существующей.

Обращаю ваше внимание, что существующие коллекции в базе хранятся по пути: \Templates\listSources.
Переименовываете наименование исполнения, а в само исполнение вставляете из буфера обмена или вводите руками свою коллекцию.

Сохраняете. С коллекцией можно работать, как было задумано CSoft.
Недостаток этого способа в том, что в редакторе появляются коллекции DataStorage и Header удалять их ни в коем случае не надо, они ни на , что не влияют, а вот только что созданную коллекцию заодно удалите это точно.
Можно поступить еще проще, переименовать существующую коллекцию как вам требуется, и заполнить ее состав нужными данными. В этом случае СПДС GraphiCS в существующем объекте создаст еще одно исполнение.
Недостаток один, но существенный, при удалении любой коллекции, будет удален объект СПДС GraphiCS , соответственно все коллекции-исполнения в этом объекте, тоже будут удалены.
В редакторе объектов можно создать коллекцию с «нуля»,
Во вновь созданном объекте удаляем скрипт, создаем новое исполнение, по его названию будет называться коллекция, системное имя исполнению присваиваем Empty. И заполняем вид в исполнении данными.

Напоследок меняем в описании объекта класс на «631», сохраняем и пользуемся коллекцией.
Недостатки, те же, что и в первом примере.
При каждой правке коллекций из «редактора коллекции» в объекте БД в исполнении создается еще один вид-копия коллекции.

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

Дело в том, что по умолчанию объекты коллекций расположены в базе по пути \Templates\listSources.
Если из редактора форм запустить «редактор коллекций», то коллекции он будет пытаться создавать именно в этом каталоге. Коллекции ищет по всей БД.
Иначе себя ведет «редактор коллекций» запущенный из пользовательской сортировки таблиц. Он пытается создавать коллекции в каталоге \Templates\TableSort, коллекции же ищет только в этом каталоге.
При попытке создания коллекции, несмотря, на то, что объекты не создаются, каталоги, если их нет, будут созданы.
В связи с таким алгоритмом работы и возникает проблема, что коллекции вроде есть, но не видны.
Решение простое, запустите СПДС -> Объекты из базы -> Стандартные. Команда spstd.
И переместите  объекты из папки listSources в TableSort, коллекции будут видны из табличного редактора и редактора форм.

В случае если каталога TableSort в БД нет, то Редактор таблиц -> Пользовательская сортировка, запустите редактор коллекций и создайте новую коллекцию, несмотря на то, что объект БД создан, не будет, каталог TableSort в БД появится.
Мне еще не пришлось поработать в СПДС GraphiCS 9, возможно в нем эти проблемы устранены, в СПДС GraphiCS 8  и версиях младше уповать на то, что CSoft исправит эти баги, не приходится, поэтому приходится работать так.

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