Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема По структуре регистров... (число прочтений - 2137 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
По структуре регистров...
19. Января 2009 :: 14:45
Печать  
В результате изучения структуры регистров пришел к таким размышлениям:
1. как известно, регистр состоит из двух частей: движения и итоги
2. если сделать "Тестирование и исправление БД" - пункт "Пересчет итогов", то таблицы итогов регистров будут перерассчитаны???
так ли это? или я заблуждаюсь?

Дело в том, что только что выяснил, что мне не хватает одного измерения в паре регистров Улыбка
Перепроводить доки очень не хочется, вот и возникла мысля - добавить измерение, прямым запросом проставить значения в таблице движений регистров и сделать ТИИ - тогда таблицу итогов трогать не надо
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: По структуре регистров...
Ответ #1 - 19. Января 2009 :: 15:39
Печать  
А не проще прямым и таблицу итогов ?
У меня пересчет (при загрузке/выгрузке) - достаточно долог
Вроде бы нужно только в Индексированную таблицу движений регистра добавить  колонку Даты периода,
свернуть по измерениям - и нарастающим итогом получим искомую таблицу итогов.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: По структуре регистров...
Ответ #2 - 19. Января 2009 :: 15:48
Печать  
Можно попробовать, просто начитался по поводу того, что прямыми запросами надо очень аккуратно базу корежить вот и решил обойтись минимумом "нештатных" операций Улыбка
Кстати, нашел подтверждение реализуемости моей задумки в статье "Эффективное использование MSSQL в 1С при помощи ВК 1С++", там даже пример приведен практически того, что мне нужно:
Цитата:
Глава 10:  Операции UPDATE и DELETE

Пример: В регистр остатки добавили измерение «фирма». Необходимо заполнить это поле по общему реквизиту документа (возможно, только если по реквизиту установлен отбор. Хотя конечно воможно и без установки отбора, но запрос получается гораздо больше и сложнее).
ТекстЗапроса = "
|UPDATE
|  $Регистр.Остатки
|SET
|  $Регистр.Остатки.Фирма = Жур.$ОбщийРеквизит.Фирма
|FROM
|  $Регистр.Остатки Рег
|INNER JOIN
|  _1SJourn Жур ON Жур.IDDoc = Рег.IDDoc";

Обратите внимание на предложение FROM. Только так можно указывать алиасы в предложении UPDATE.

После выполнения запроса, необходимо пересчитать регистр. Это можно сделать с помощью ТиИ.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: По структуре регистров...
Ответ #3 - 20. Января 2009 :: 03:39
Печать  
CaBaT писал(а) 19. Января 2009 :: 15:48:
Можно попробовать, просто начитался по поводу того, что прямыми запросами надо очень аккуратно базу корежить вот и решил обойтись минимумом "нештатных" операций Улыбка


Регистры представляют собой "автономную" подсистему - в отличии от документов, которые затрагивают много таблиц.

При расчете итоговой таблицы есть тонкость - нужно учесть редкий случай - если не было движения по регистру в каком то периоде.
P.S.
Также есть теоретическая возможность включения измерений или реквизитов регистра в графу отбора
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: По структуре регистров...
Ответ #4 - 20. Января 2009 :: 06:38
Печать  
(0)
Делал такое.
Изменить можно только таблицу движений.
Пересчитать итоги можно и штатно (ТИИ), но долго. Или с помощью обработки "Установка ТА" (лежит тут http://dev.citykirov.ru/) пересчитать толко нужный регистр.
  

1&&2&&3
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: По структуре регистров...
Ответ #5 - 20. Января 2009 :: 09:17
Печать  
У меня ДБФ...
В силу нашей специфики, базы не очень большие, 200-500 метров, так что ТИИ сделать не очень большая проблема, заодно и нулевые строки из таблицы итогов уберутся.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: По структуре регистров...
Ответ #6 - 20. Января 2009 :: 11:49
Печать  
блин, второй день бьюсь, ничего не выходит!
1. есть регистр, у него измерение "Поставка" тип "Документ.ОтгрузкаПокупателям"
2. есть документ "ОтгрузкаПокупателям", у которого в ТЧ есть реквизит "Поставка" типа "Документ"
3. хочу в регистре заполнить измерение "Поставка" из соответствующего поля ТЧ документа, делаю:

Код
Выбрать все
UPDATE
  $Регистр.РеализацияПокупателям
SET
  $Регистр.РеализацияПокупателям.Поставка = substr($ТЧ.Поставка,5)
FROM
  $Регистр.РеализацияПокупателям as Рег
LEFT JOIN
  $ДокументСтроки.РеализацияПокупателям as ТЧ
ON
  ТЧ.iddoc = Рег.iddoc and ТЧ.lineno = Рег.lineno 



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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: По структуре регистров...
Ответ #7 - 20. Января 2009 :: 11:57
Печать  
переделал запрос на такой:
Код
Выбрать все
UPDATE Рег from $Регистр.РеализацияПокупателям as Рег
LEFT JOIN
  $ДокументСтроки.РеализацияПокупателям as ТЧ
ON
  ТЧ.iddoc = Рег.iddoc and ТЧ.lineno = Рег.lineno
SET
  $Рег.Поставка = substr($ТЧ.Поставка,5) 


и все взлетело! Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать