Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Дополнительные реквизиты (размышления..) (число прочтений - 15044 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Дополнительные реквизиты (размышления..)
12. Ноября 2009 :: 12:25
Печать  
Хотел бы поделится своими идеями по поводу задачи, с которой, думаю, многие сталкивались - добавление дополнительных реквизитов (например справочника) без изменений конфигурации.

В текущий момент обдумываю следующий вариант:
1. для каждого дополнительного реквизита заводится отдельный файл SQLite c таблицей Реквизит (id, value)
   с именем <ОбъектТип>.<ОбъектВид>.<ИмяРеквизита>.sqlite, например Справочник.Номенклатура.Скидка.sqlite
2. есть файл описания дополнительных реквизитов, в котором содержаться строки вида:
Код
Выбрать все
<ОбъектТип>.<ОбъектВид>.<ИмяРеквизита> | Тип | Вид | Длина | Точность 


например:
Код
Выбрать все
Справочник.Номенклатура.Скидка | Число | | 8 | 2 


В запросах я использую компоненту 1SQLite (я работаю с DBF-версией базы), в которой есть возможность подключить базу данных из внешнего файла
Таким образом, например, что бы выбрать элементы из справочника с дополнительным реквизитом, производятся следующие действия:
1. подключается файл Справочник.Номенклатура.Скидка.sqlite под псевдонимом "Скидка"
2. запрос выглядит следующим образом
Код
Выбрать все
select
  Спр.id as [Элемент :Справочник.Номенклатура],
  Спр.descr as Наименование,
  Скидка.value as [Скидка :Число.8.2]
from Справочник_Номенклатура as Спр
left join [Скидка].Реквизит as Скидка on Скидка.id = Спр.id 



Возможно несколько сумбурно изложил..
Если у кого есть что сказать по данной теме, было бы интересно послушать..
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Дополнительные реквизиты (размышления..)
Ответ #1 - 12. Ноября 2009 :: 12:29
Печать  
Сразу думай о переодике... она более интересна чем статика, и еще периодику надо уметь менять документами, чтобы смочь откатиться назад...
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #2 - 12. Ноября 2009 :: 12:30
Печать  
Честно говоря в контексте моей задачи периодика не нужна.
И еще один момент - базы не распределенные, так что заморочки с УРБД также не актуальны..
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Дополнительные реквизиты (размышления..)
Ответ #3 - 12. Ноября 2009 :: 12:33
Печать  
и еще глянь ветку http://www.1cpp.ru/forum/YaBB.pl?num=1224084638/10#10 там похожее обсуждали
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Дополнительные реквизиты (размышления..)
Ответ #4 - 12. Ноября 2009 :: 12:34
Печать  
Цитата:
Честно говоря в контексте моей задачи периодика не нужна.

Мысли глобально. сейчас не нужна, а когда понадобиться может быть уже поздно...
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #5 - 12. Ноября 2009 :: 12:36
Печать  
Спасибо, читал, но мне кажется там слишком сложное/универсальное решение..
Дело в том, что мне нужно легко/быстро добавить реквизит к спарвочнику/документу, причем это может быть всего для нескольких элементов и в разных базах может быть разный состав..
Мне мой вариант кажется проще..
Особенно с точки зрения работы через запросы
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #6 - 12. Ноября 2009 :: 12:37
Печать  
kriblya писал(а) 12. Ноября 2009 :: 12:34:
Мысли глобально. сейчас не нужна, а когда понадобиться может быть уже поздно...

Возможно ты прав, спасибо, подумаю..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #7 - 12. Ноября 2009 :: 12:39
Печать  
Для периодических реквизитов можно просто добавить поле <date>..
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Дополнительные реквизиты (размышления..)
Ответ #8 - 12. Ноября 2009 :: 12:41
Печать  
это минимум, + поле время, плюс поле признака переодичности(под вопросом...)
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #9 - 12. Ноября 2009 :: 12:43
Печать  
Так как доступ к дополнительным реквизитам будет инкапсулироваться в класс, думаю можно будет в последствии подправить реализацию, возможно только с точки зрения производительности запросов могут возникнуть вопросы..
  
Наверх
 
IP записан
 
kriblya
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 313
Зарегистрирован: 24. Декабря 2007
Re: Дополнительные реквизиты (размышления..)
Ответ #10 - 12. Ноября 2009 :: 12:50
Печать  
Здесь еще важна физическая структура таблиц, и индексы не забудь
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #11 - 12. Ноября 2009 :: 13:19
Печать  
А почему во внешней БД, а не на родных справочниках?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #12 - 12. Ноября 2009 :: 14:03
Печать  
kriblya писал(а) 12. Ноября 2009 :: 12:50:
Здесь еще важна физическая структура таблиц, и индексы не забудь

Насчет физической структуры не понял - за это вроде движок SQLite отвечает? Или имеется ввиду состав полей таблиц?
А индексы - это да, тут недавно делал класс для вывода таблицы итогов с разворотом по группам с использованием временной таблицы SQLite, дык без индексов при развороте по 5 группам у меня один отчет минут 40 формировался  Ужас
Индексы добавил - стало 2 Улыбка
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #13 - 12. Ноября 2009 :: 14:06
Печать  
JohnyDeath писал(а) 12. Ноября 2009 :: 13:19:
А почему во внешней БД, а не на родных справочниках?

Да просто не хочется раздувать справочники..
У меня например есть реквизиты, которые используются у 1% элементов всего справочника.
Или например мне для 10 документов из 5000 надо проставить некий признак, например "Предоплата", получится табличка на 10 строк, а так в шапке остальных 4990 будет ненужный там реквизит
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Дополнительные реквизиты (размышления..)
Ответ #14 - 12. Ноября 2009 :: 14:19
Печать  
Скажу даже больше - у меня есть одна база, где есть реквизит у документа, который в остальных 10 не используется, а конфа универсальная, используется везде.
На текущий момент этот реквизит так и храниться во внешней SQLite базе, просто хочется сделать некий относительно универсальный и простой в использовании механизм..
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать