Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Периодические реквизиты плюс УРБД (число прочтений - 4192 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Периодические реквизиты плюс УРБД
03. Ноября 2009 :: 03:44
Печать  
Здравствуйте, коллеги!
Столкнулся с одной очень неприятной проблемой на рабочей конфигурации - цены номенклатуры у меня хранятся в периодических реквизитах справочника и последнее время на автообмен при регламентных пересчетах цен стало тратится ну уж очень много времени.
Как показали раскопки в файлах выгрузки и работа профайлером, при любом изменении элемента справочника УРБД тянет через себя всю его историю!
Вот яркий пример - загрузка курса доллара:
Код
Выбрать все
{234,
{"6|","0|","840","USD","0|",0,0,"Доллар США",
{236,
{"6|",20081103,"0|",0,0,0,27.0793},
{"6|",20081104,"0|",0,0,0,27.0793},
{"6|",20081105,"0|",0,0,0,27.0793},
{"6|",20081106,"0|",0,0,0,26.9146},
{"6|",20081107,"0|",0,0,0,26.9114},
{"6|",20081108,"0|",0,0,0,27.0041},
{"6|",20081109,"0|",0,0,0,27.0041},
{"6|",20081110,"0|",0,0,0,27.0041},
{"6|",20081111,"0|",0,0,0,26.9639},
{"6|",20081112,"0|",0,0,0,27.3399},
{"6|",20081113,"0|",0,0,0,27.4704},
{"6|",20081114,"0|",0,0,0,27.6704},
{"6|",20081115,"0|",0,0,0,27.3386},
...
{"6|",20091028,"0|",0,0,0,29.0184},
{"6|",20091029,"0|",0,0,0,29.1749},
{"6|",20091030,"0|",0,0,0,29.3441},
{"6|",20091102,"0|",0,0,0,29.0488},
{"6|",20091103,"0|",0,0,0,29.1944}},
}, 


Естественно, весь код не привожу - он бы просто не влез сюда Улыбка
Поэтому, вопрос:
Кто и как использует альтернативные системы хранения периодических реквизитах в 1С?
Какие есть мысли по этому поводу?
Отказаться от периодики - не предлагать Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Периодические реквизиты плюс УРБД
Ответ #1 - 03. Ноября 2009 :: 05:20
Печать  
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #2 - 03. Ноября 2009 :: 05:44
Печать  
Спасибо Улыбка
А есть еще к-л варианты?
Тоже думал запихать данные в реквизиты регистра и написать класс - но тут есть минус: Надо накладывать доп. индексы и следить за ними в более чем 30 периферийных базах Печаль
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #3 - 03. Ноября 2009 :: 05:53
Печать  
slider26 писал(а) 03. Ноября 2009 :: 05:44:
Спасибо Улыбка
А есть еще к-л варианты?
Тоже думал запихать данные в реквизиты регистра и написать класс - но тут есть минус: Надо накладывать доп. индексы и следить за ними в более чем 30 периферийных базах Печаль

Не нужно этого.

(0) это фича 1с или баг - как посмотреть.

вместо переодич. реквизитов делается подчиненный справочник у которого есть атрибут Дт - Дата и второй атрибут Цена +
по полю Дт ставишь сортировку.
Все. Плюсы такого решения нет избыточности при УРБД доступ к аттрибутам будет быстрее чем через переодич. реквизиты.
разные "переодич зависимости" находятся в разных таблицах.
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #4 - 03. Ноября 2009 :: 06:04
Печать  
Z1 писал(а) 03. Ноября 2009 :: 05:53:
...вместо переодич. реквизитов делается подчиненный справочник у которого есть атрибут Дт - Дата и второй атрибут Цена +
по полю Дт ставишь сортировку.
Все. Плюсы такого решения нет избыточности при УРБД доступ к аттрибутам будет быстрее чем через переодич. реквизиты.
разные "переодич зависимости" находятся в разных таблицах.

Спасибо, хороший вариант Улыбка
Однако и тут есть свои тонкости -
1. Регламентный пересчет выполняется спец. документом - соответственно, есть возможность отката неправильных результатов перерасчета. В этом варианте такое реализовать достаточно сложно.
2. При создании новых значений мы обязательно должны получить ID справочника. У меня, при разделенных блокировках, при этом блокируется получение новых ID объектов на время транзакции (читай - автообмена) со всеми вытекающими Печаль
3. Это скорее голая теория, но число элементов справочника ограничено...
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #5 - 03. Ноября 2009 :: 06:27
Печать  
slider26 писал(а) 03. Ноября 2009 :: 06:04:
Z1 писал(а) 03. Ноября 2009 :: 05:53:
...вместо переодич. реквизитов делается подчиненный справочник у которого есть атрибут Дт - Дата и второй атрибут Цена +
по полю Дт ставишь сортировку.
Все. Плюсы такого решения нет избыточности при УРБД доступ к аттрибутам будет быстрее чем через переодич. реквизиты.
разные "переодич зависимости" находятся в разных таблицах.

Спасибо, хороший вариант Улыбка
Однако и тут есть свои тонкости -
1. Регламентный пересчет выполняется спец. документом - соответственно, есть возможность отката неправильных результатов перерасчета. В этом варианте такое реализовать достаточно сложно.
2. При создании новых значений мы обязательно должны получить ID справочника. У меня, при разделенных блокировках, при этом блокируется получение новых ID объектов на время транзакции (читай - автообмена) со всеми вытекающими Печаль
3. Это скорее голая теория, но число элементов справочника ограничено...

1. вот и напиши на пункт 1 класс который скроет детали реализации цен.
2. блокировки на справочники не актуальны ну в крайнем случае можешь для конкретно этого справочника поставить стандартные блокировки.
3.элементов справочников у тебя 36**6 переведи на дни.
также это число можно еще увеличить на два порядка.

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #6 - 03. Ноября 2009 :: 06:43
Печать  
PS Посмотрел сейчас таблицу _1sconst
получается что любое значение хранится в поле
value varchar(256) т.е. ко всему сказанному выше имеем если мы храним цены(числа) то еще и преобразование типов.

И ошибки если мы будем хранить  ID9 скажем ссылку на справочник
а ID переф базы будет 2 символа ( как в соседней ветке 'IV ' ).
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #7 - 03. Ноября 2009 :: 08:02
Печать  
Z1 писал(а) 03. Ноября 2009 :: 06:27:
2. блокировки на справочники не актуальны ну в крайнем случае можешь для конкретно этого справочника поставить стандартные блокировки.

К сожалению, блокирование создания ИД в транзакции - это стандартная фишка при включении разделенных блокировок - связана с ошибкой 1С (создание одинаковых UID).
Её невозможно отключить без неприятных последствий...
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #8 - 03. Ноября 2009 :: 08:44
Печать  
slider26 писал(а) 03. Ноября 2009 :: 08:02:
Z1 писал(а) 03. Ноября 2009 :: 06:27:
2. блокировки на справочники не актуальны ну в крайнем случае можешь для конкретно этого справочника поставить стандартные блокировки.

К сожалению, блокирование создания ИД в транзакции - это стандартная фишка при включении разделенных блокировок - связана с ошибкой 1С (создание одинаковых UID).
Её невозможно отключить без неприятных последствий...

ничего  не понял.
Цитата:
Спр1 = СоздатьОбъект(Справочник.Товары");
Спр1.Новый();
Спр1.Код = 100;
Спр1.Наименование = "123";
Спр1.Записать();

Неявная транзакция ну и что она очень короткая.
Это же не документ с модулем проведения.

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #9 - 03. Ноября 2009 :: 09:26
Печать  
Z1 писал(а) 03. Ноября 2009 :: 08:44:
...Неявная транзакция ну и что она очень короткая.
Это же не документ с модулем проведения.

Кто Вам сказал что на все таблицы 1с должны быть одинаковые блокировки ? т.е. без  Вашей схемы блокировок вроде и обсуждать нечего.

Речь идет об этом:
Код
Выбрать все
ALTER procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, @id CHAR(9) OUTPUT) AS
		select @id=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid
		if @id is null select @id='	   ' 


Вот такая подмена штатной процедуры.
И при этом в транзакции имеем UPDLOCK
На время автообмена (Если конечно он - одна транзакция)...
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Периодические реквизиты плюс УРБД
Ответ #10 - 03. Ноября 2009 :: 09:37
Печать  
так у вас проблема с блокировками или с тем что
slider26 писал(а) 03. Ноября 2009 :: 03:44:
при любом изменении элемента справочника УРБД тянет через себя всю его историю!

может просто историю периодически чистить(или переносить в другую таблицу, если она нужна). Нормальная практика, имхо
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #11 - 03. Ноября 2009 :: 09:39
Печать  
slider26 писал(а) 03. Ноября 2009 :: 09:26:
Z1 писал(а) 03. Ноября 2009 :: 08:44:
...Неявная транзакция ну и что она очень короткая.
Это же не документ с модулем проведения.

Кто Вам сказал что на все таблицы 1с должны быть одинаковые блокировки ? т.е. без  Вашей схемы блокировок вроде и обсуждать нечего.

Речь идет об этом:
Код
Выбрать все
ALTER procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, @id CHAR(9) OUTPUT) AS
		select @id=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid
		if @id is null select @id='	   ' 


Вот такая подмена штатной процедуры.
И при этом в транзакции имеем UPDLOCK
На время автообмена (Если конечно он - одна транзакция)...

Я считаю что подгрузка автообмена это всегда одна транзакция.

Но ведь при переносе новых справочников в текущую это никак не влияет потому что у нас есть три последних символа отвечающих за id и они будут разные.
При подгрузке самое большое время занимают не справочники
а регистры и их пересчет и если Вы распаралелите только справочники то ( ИХМО) смысла особого нет все равно на рабочих местах данные застрянут на блокировке регистров и журнала документов.
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #12 - 03. Ноября 2009 :: 09:41
Печать  
alexdd писал(а) 03. Ноября 2009 :: 09:37:
так у вас проблема с блокировками или с тем что
slider26 писал(а) 03. Ноября 2009 :: 03:44:
при любом изменении элемента справочника УРБД тянет через себя всю его историю!

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

Вместе с документами? Не вариант.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Периодические реквизиты плюс УРБД
Ответ #13 - 03. Ноября 2009 :: 09:56
Печать  
slider26 писал(а) 03. Ноября 2009 :: 09:41:
alexdd писал(а) 03. Ноября 2009 :: 09:37:
так у вас проблема с блокировками или с тем что
slider26 писал(а) 03. Ноября 2009 :: 03:44:
при любом изменении элемента справочника УРБД тянет через себя всю его историю!

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

Вместе с документами? Не вариант.

ну документы можно и оставить, обновить им appcode в _1sjourn и пусть висят себеУлыбка там же у вас на каждый день по каждому элементу одна строка в _1sconst получается, т.е. н-р, 100 товаров с историей с 2008 года это около 70 тыс строк только одного _1sconst'a. Тягать такие пакеты тяжеловато наверно, так что историю имхо чистить надо Улыбка
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #14 - 03. Ноября 2009 :: 10:10
Печать  
alexdd писал(а) 03. Ноября 2009 :: 09:56:
Тягать такие пакеты тяжеловато наверно, так что историю имхо чистить надо Улыбка

Ага, вот именно потому и задался вопросом альтернативного механизма. Улыбка
А история используется... Например для аналитики - история себестоимости. Поэтому видимо придется писать глоб. процедуру - на одни даты тягать значения из периодики, на другие даты - из нового механизма. Преемственность, блин Печаль
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать