Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Периодические реквизиты плюс УРБД (число прочтений - 4680 )
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 записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #15 - 03. Ноября 2009 :: 10:15
Печать  
alexdd писал(а) 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. Тягать такие пакеты тяжеловато наверно, так что историю имхо чистить надо Улыбка

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

То что предложил я используется более трех лет. Полет нормальный.

Хотелось бы услышать есть ли какие еще решения subj.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

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

Ага, вот именно потому и задался вопросом альтернативного механизма. Улыбка
А история используется... Например для аналитики - история себестоимости. Поэтому видимо придется писать глоб. процедуру - на одни даты тягать значения из периодики, на другие даты - из нового механизма. Преемственность, блин Печаль

ну фик знает, если история используется для аналитики, яп ее переносил в другую таблицу, оставляя только необходимую для оперативной работы. А для аналитики вынимать из другой таблицы(или из двух таблиц-архивная+актуальный _1sconst) данные не проблема
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Периодические реквизиты плюс УРБД
Ответ #17 - 03. Ноября 2009 :: 10:22
Печать  
alexdd писал(а) 03. Ноября 2009 :: 10:19:
А для аналитики вынимать из другой таблицы(или из двух таблиц-архивная+актуальный _1sconst) данные не проблема

Тогда проблема упрется в УРБД...
Таблица тоже должна мигрировать корректно.
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

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

Хотелось бы услышать есть ли какие еще решения subj.

Вариант интересный, спору нет Улыбка
Думаю, что проблемы с блокировкой все-таки не будет - Внутренний ИД ведь уже есть. Вобщем, надо проверять.
А можно ли реализовать в нем следующую схему (по индексам):
Товар/Тип цен/Дата?

Хочется сравнить все возможные варианты решения и выбрать лучший Улыбка
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Периодические реквизиты плюс УРБД
Ответ #19 - 03. Ноября 2009 :: 10:45
Печать  
Z1 писал(а) 03. Ноября 2009 :: 10:15:
То что предложил я используется более трех лет. Полет нормальный.

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Периодические реквизиты плюс УРБД
Ответ #20 - 03. Ноября 2009 :: 10:49
Печать  
slider26 писал(а) 03. Ноября 2009 :: 10:32:
Z1 писал(а) 03. Ноября 2009 :: 10:15:
То что предложил я используется более трех лет. Полет нормальный.

Хотелось бы услышать есть ли какие еще решения subj.

Вариант интересный, спору нет Улыбка
Думаю, что проблемы с блокировкой все-таки не будет - Внутренний ИД ведь уже есть. Вобщем, надо проверять.
А можно ли реализовать в нем следующую схему (по индексам):
Товар/Тип цен/Дата?

Хочется сравнить все возможные варианты решения и выбрать лучший Улыбка

Легко у одного элемента справочника может быть много элементов подчиненных ему.
Также если это нужно то подчиненный справочник может быть многоуровневым.

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