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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Свертка базы
Ответ #15 - 12. Апреля 2007 :: 07:25
Печать  
dnp писал(а) 12. Апреля 2007 :: 07:17:
Quan писал(а) 12. Апреля 2007 :: 06:21:
работоспособно, но ИМХО некрасиво

Вообще-то согласен.

Просто, после пары раз судорожных переделок структурированных доков ввода остатков, решил забить на красоту.

А про безразмерную строку - честно, просто пожалел 1SCONST.DBF забивать парой сотен килобайт данных, нужных один раз.

Выраженного желания хранения текстовых исходников данных, конечно, не было. Ибо там такие исходники, что человек их все равно не прочитает, все агрегатные объекты в виде ЗначениеВстрокуВнутр(...).

В ДБФ-ной базе безразмерная строка на сколько ёмкая? Не глюканет?


А разве длинные строки тоже в 1SCONST хранятся?
  
Наверх
ICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Свертка базы
Ответ #16 - 12. Апреля 2007 :: 07:56
Печать  
Nick писал(а) 12. Апреля 2007 :: 07:25:
А разве длинные строки тоже в 1SCONST хранятся?

ОЙ!  Смущённый
Действительно.
Это слегка меняет дело.
В пользу хранения в БД.
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Свертка базы
Ответ #17 - 12. Апреля 2007 :: 08:12
Печать  
Nick писал(а) 12. Апреля 2007 :: 07:25:
А разве длинные строки тоже в 1SCONST хранятся?


Была когда-то такая хрень, но в v.7.7 ликвидирована как класс
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Свертка базы
Ответ #18 - 13. Апреля 2007 :: 07:44
Печать  
Вопрос: как в модуле проведение сделать движение по регистру используя его идентификатор?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Свертка базы
Ответ #19 - 13. Апреля 2007 :: 10:15
Печать  
Вопрос:
1. Как получить имя таблицы которая содержит движения по регистру?
2. Можно программно пересчитать оперативные итоги?
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Свертка базы
Ответ #20 - 13. Апреля 2007 :: 11:34
Печать  
Nick писал(а) 13. Апреля 2007 :: 07:44:
Вопрос: как в модуле проведение сделать движение по регистру используя его идентификатор?


Если ИмяРегистра="..." Тогда
хххххххххх
ИначеЕсли ИмяРегистра="..." Тогда
ууууууууу
.......................


Nick писал(а) 13. Апреля 2007 :: 10:15:
Вопрос:
1. Как получить имя таблицы которая содержит движения по регистру?
2. Можно программно пересчитать оперативные итоги?


1. select sum ($Регистр.ОгрызкиЯблок.КоличествоКосточек) from $Регистр.ОгрызкиЯблок
2. Можно, где-то даже выкладывалась соотв. обработка. Я предпочитаю штатные средства 1С. Их, кстати, можно вызывать "программно", запуская конфигуратор с нужными ключиками.
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Свертка базы
Ответ #21 - 14. Апреля 2007 :: 21:33
Печать  
Регистр.ПолучитьАтрибут("Идентификатор")

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Свертка базы
Ответ #22 - 16. Апреля 2007 :: 02:22
Печать  
Nick писал(а) 13. Апреля 2007 :: 10:15:
Вопрос:
1. Как получить имя таблицы которая содержит движения по регистру?

             Рег=СокрЛП(ИмяРегистра);
            МДВ = СоздатьОбъект("MetaDataWork");
        Сообщить(МДВ.ИмяТаблицыДвижений(Рег));
        Сообщить(МДВ.ИмяТаблицыИтогов(Рег));
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Свертка базы
Ответ #23 - 16. Апреля 2007 :: 04:43
Печать  
Вопрос:
На сколько реально увеличится производительность 1С под SQL если обрезать все пред идущие года
в базе?
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Свертка базы
Ответ #24 - 16. Апреля 2007 :: 06:47
Печать  
Quan писал(а) 11. Апреля 2007 :: 09:05:
delete from _1sconst where date < cast('20070101' as datetime)

Только поаккуратнее нужно с этим...

Полностью согласен, так как в этой таблице хранятся и значения констант, с датой "< cast('20070101' as datetime)", которые будут удалены этой командой. Поэтому при удаленни надо проверять поле date, но СКЛ-базы под рукой нет, поэтому точное значение сказать не могу. Типа такого:
delete from _1sconst where date < cast('20070101' as datetime) and date > cast('19000101' as datetime)

Цитата:
Вопрос: как в модуле проведение сделать движение по регистру используя его идентификатор?

Если ИмяРегистра="..." Тогда
хххххххххх
ИначеЕсли ИмяРегистра="..." Тогда
ууууууууу

Нашел такую реализацию:
Код
Выбрать все
	Для N=1 По Метаданные.Регистр() Цикл
		ПромРегистр=Метаданные.Регистр(N);
		Если ПромРегистр.ТипРегистра="Обороты" Тогда
			Продолжить;
		КонецЕсли;
		ПромРегистр="Регистр."+СокрЛП(ПромРегистр.Идентификатор);
		Рег=СоздатьОбъект(ПромРегистр);
		Если ДатаКонцаПериода<ПолучитьДатуТА() Тогда
			Рег.ВременныйРасчет();
			РассчитатьРегистрыПо(ДатаКонцаПериода);
		КонецЕсли;
		ЗаполнитьТаблицу(Докум,Рег);<-- Тут создание дока "ПереносОстатков" по этому регистру
		Рег=0;
	КонецЦикла; 

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Свертка базы
Ответ #25 - 16. Апреля 2007 :: 06:52
Печать  
Quan писал(а) 11. Апреля 2007 :: 09:05:
delete from _1sconst where date < cast('20070101' as datetime)

Только поаккуратнее нужно с этим: на самом деле сначала нужно перенести на первую сохраняемую дату последние ранее назначенные значения реквизитов. Скрипт с ходу не нашёл, а заново писать лениво.


Пожалуй вот так будет правильнее всего Улыбка :
delete from _1sconst where (date < cast('20070101' )) and (OBJID <> '     0   ')
  
Наверх
ICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Свертка базы
Ответ #26 - 18. Апреля 2007 :: 12:14
Печать  
Nick писал(а) 16. Апреля 2007 :: 04:43:
Вопрос:
На сколько реально увеличится производительность 1С под SQL если обрезать все пред идущие года
в базе?

Незначительно.
Если, конечно, нет привычки постоянно перепроводить документы 10-летней давности
  

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