Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Куда пропала обработка Перенос ТА? (число прочтений - 19554 )
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Куда пропала обработка Перенос ТА?
15. Января 2008 :: 11:59
Печать  
Была такая классная обработка, которая умела переносить точку актуальности в немонопольном режиме, а сейчас не могу найти  Плачущий В той версии которая у меня есть глюк неприятный, может она обновилась?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #1 - 15. Января 2008 :: 12:04
Печать  
  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #2 - 16. Января 2008 :: 11:47
Печать  
Спасибо. Увы она та же самая что была несколько годов назад... При переносе точки актуальности этой обработкой не переносятся итоги  регистров "книга покупок" и "книга продаж" в стандартной торговле. (предполагаю что виной тому первое измерение документ неопределенного вида) После открытия периода получается что начальный остаток 10, приход допустим 1000, а конечный остаток 0, лечится стандартными средствами.
Плачущий
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #3 - 16. Января 2008 :: 14:57
Печать  
Пытаюсь разобраться с обработкой Установка ТА от DMITRO

Вот код, который переносит итоги с 16.01.08 на 21.01.08

[code]
if exists (select * from tempdb..sysobjects where id = object_id('tempdb..#rgtmp') and sysstat & 0xf = 3 )
  drop table #rgtmp;

select
  $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
  $Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП
into #rgtmp
from $РегистрИтоги.КнигаПокупок rg
where period={d '2008-01-11'};

delete
from $РегистрИтоги.КнигаПокупок
where period>={d '2008-01-11'}

insert $РегистрИтоги.КнигаПокупок
  select
    {d '2008-01-11'},
    $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
    sum($Регистр.КнигаПокупок.СуммаРуб),
    sum($Регистр.КнигаПокупок.СуммаНДС),
    sum($Регистр.КнигаПокупок.СуммаНП)
  from (
    select
     $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
     $Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП
    from #rgtmp
    union all
    select
     $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
     case debkred when 0 then $ra.СуммаРуб else -$ra.СуммаРуб end,
     case debkred when 0 then $ra.СуммаНДС else -$ra.СуммаНДС end,
     case debkred when 0 then $ra.СуммаНП else -$ra.СуммаНП end
    from $Регистр.КнигаПокупок ra
     inner join _1sjourn journ on ra.iddoc=journ.iddoc
    where date_time_iddoc>'20080116     0     0   ' and date_time_iddoc<='20080121     0     0   '
    ) as tmp
  group by $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга
  having
    sum($Регистр.КнигаПокупок.СуммаРуб) <> 0 or
    sum($Регистр.КнигаПокупок.СуммаНДС) <> 0 or
    sum($Регистр.КнигаПокупок.СуммаНП) <> 0

insert $РегистрИтоги.КнигаПокупок
  select
    {d '2008-01-21'},
    $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
    sum($Регистр.КнигаПокупок.СуммаРуб),
    sum($Регистр.КнигаПокупок.СуммаНДС),
    sum($Регистр.КнигаПокупок.СуммаНП)
  from (
    select
     $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
     $Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП
    from $РегистрИтоги.КнигаПокупок rg
    where period={d '2008-01-11'}
    union all
    select
     $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
     case debkred when 0 then $ra.СуммаРуб else -$ra.СуммаРуб end,
     case debkred when 0 then $ra.СуммаНДС else -$ra.СуммаНДС end,
     case debkred when 0 then $ra.СуммаНП else -$ra.СуммаНП end
    from $Регистр.КнигаПокупок ra
     inner join _1sjourn journ on ra.iddoc=journ.iddoc
    where date_time_iddoc>'20080121     0     0   ' and date_time_iddoc<='20080121     0     0   '
    ) as tmp
  group by $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга
  having
    sum($Регистр.КнигаПокупок.СуммаРуб) <> 0 or
    sum($Регистр.КнигаПокупок.СуммаНДС) <> 0 or
    sum($Регистр.КнигаПокупок.СуммаНП) <> 0

[/code]


Сначала мы записываем во временную таблицу все итоги, у которых Period=d '2008-01-11', то есть это итог на старую точку актуальности, прибавляем к нему приход-расход с 16 по 20 (вдруг есть движения после ТА) и записываем в таблицу итогов с полем Period 2008-01-11,это будут итоги, они же остатки на конец 20.01.08. Потом то же самое записываем на period d '2008-01-21' - здесь у нас будут лежать итоги на новую точку актуальности.

Я ведь все правильно понял?
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #4 - 17. Января 2008 :: 09:47
Печать  
Нашел таки ошибочку.

Если в регистре есть поле date_time_iddoc, то запрос

Код
Выбрать все
insert $РегистрИтоги.КнигаПокупок
  select
    {d '2008-01-11'},
    $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
    sum($Регистр.КнигаПокупок.СуммаРуб),
    sum($Регистр.КнигаПокупок.СуммаНДС),
    sum($Регистр.КнигаПокупок.СуммаНП)
  from (
    select
	$Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
	$Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП
    from #rgtmp
    union all
    select
	$Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга,
	case debkred when 0 then $ra.СуммаРуб else -$ra.СуммаРуб end,
	case debkred when 0 then $ra.СуммаНДС else -$ra.СуммаНДС end,
	case debkred when 0 then $ra.СуммаНП else -$ra.СуммаНП end
    from $Регистр.КнигаПокупок ra
	inner join _1sjourn journ on ra.iddoc=journ.iddoc
    where date_time_iddoc>'20080116     0     0   ' and date_time_iddoc<='20080121     0     0   '
    ) as tmp
  group by $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга
  having
    sum($Регистр.КнигаПокупок.СуммаРуб) <> 0 or
    sum($Регистр.КнигаПокупок.СуммаНДС) <> 0 or
    sum($Регистр.КнигаПокупок.СуммаНП) <> 0

 



не выполняется, так как автор написал просто date_time_iddoc, вместо  journ.date_time_iddoc, и злой сервер ругался на Ambiguous column name.
Уважаемый автор (DMITRO, если я не ошибаюсь), исправь пожалуйста, вдруг не я один ей пользуюсь  Улыбка
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #5 - 17. Января 2008 :: 11:04
Печать  
В этой обработке судя по всем не совсем правильно определяется необходимость джойнить таблицу _1sjourn. По ее логике эта таблица цепляется если

Код
Выбрать все
Функция ЦеплятьЖурн(МДРегистр)
	Для Тек=1 По МДРегистр.Измерение() Цикл
		Если МДРегистр.Измерение(Тек).ОтборДвижений=1 Тогда
			Возврат 0;
		КонецЕсли;
	КонецЦикла;
	Если МДРегистр.БыстраяОбработкаДвижений=1 Тогда
		Возврат 0;
	Иначе
		Возврат 1;
	КонецЕсли;
КонецФункции

 



то есть если хоть у одного измерения строит "отбор" или стоит быстрая обработка движений, то считаем что в регистре есть поле date_time_iddoc и джойнить _1sjourn не надо, а в противном случае такого поля нет и джойнить его надо. Но вот у меня например есть регистры в который не стоит быстрой отбор движений и нет отбора ни по одному измерению, а это поле date_time_iddoc все равно есть из за этого запрос не выполняется, а так как обработки ошибок нет, то я и не знал что запрос не выполянется, и итоги не переносятся.

Всем спасибо за терпение, вопрос закрыт  Подмигивание
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #6 - 17. Января 2008 :: 11:27
Печать  
Вряд ли ДмитрО будет что-то поправлять уже Улыбка
  
Наверх
 
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #7 - 17. Января 2008 :: 11:36
Печать  
Ну тогда я буду один такой, с исправленной ошибкой  Смех
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #8 - 18. Января 2008 :: 02:20
Печать  
yudin писал(а) 17. Января 2008 :: 11:36:
Ну тогда я буду один такой, с исправленной ошибкой  Смех

Ну так выложи свой вариант сюда
  
Наверх
ICQ  
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #9 - 18. Января 2008 :: 07:03
Печать  
Установка ТА. Отличия от оригинала:
1. Если в таблице движений регистра есть поле DATE_TIME_IDDOC, но при этом не стоит галочка Быстрая обработка движений, и не стоит "Отбор" ни по одному из измерений (оказывается такое бывает), итоги не переносились. См. выше.
2. Добавлена обработка ошибок (вывод в окно сообщений текста ошибки) при выполнении запроса.
3. Если отменены штатные блокировки 1С, то таблицы не блокировались, теперь блокируются.

Исправлено. Переделана функция, которая проверяет необходимость цепляния _1sjourn, теперь она проверяет не только измерения на галочку "отбор движений" но и реквизиты, так как поле DATE_TIME_IDDOC в таблице движений регистра создается и в этом случае.
« Последняя редакция: 18. Января 2008 :: 08:17 - yudin »  

__004.zip ( 18 KB | Загрузки )

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #10 - 18. Января 2008 :: 07:25
Печать  
yudin писал(а) 18. Января 2008 :: 07:03:
1. Если в таблице движений регистра есть поле DATE_TIME_IDDOC, но при этом не стоит галочка Быстрая обработка движений, и не стоит "Отбор" ни по одному из измерений (оказывается такое бывает),...
удалось выяснить в каких случаях такое бывает?
  

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


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #11 - 18. Января 2008 :: 07:40
Печать  
Нет, но есть такая база. Могу грохнуть из нее данные и выложить, если интересно.
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
yudin
Full Member
***
Отсутствует


Краткость - с.т.

Сообщений: 131
Местоположение: Ростов - на - Дону
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #12 - 18. Января 2008 :: 07:44
Печать  
Как вариант - стоит галочка "отбор движений" у реквизита, а в обработке проверяется необходимость цепляния журнала только если отбор движений у измерения или стоит галочка быстрая обработка движений ко всему регистру.
  

С уваженьем, дата, подпись
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #13 - 18. Января 2008 :: 09:02
Печать  
yudin писал(а) 18. Января 2008 :: 07:44:
Как вариант - стоит галочка "отбор движений" у реквизита, а в обработке проверяется необходимость цепляния журнала только если отбор движений у измерения или стоит галочка быстрая обработка движений ко всему регистру.

ясно, спасибо
  

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



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Куда пропала обработка Перенос ТА?
Ответ #14 - 11. Марта 2008 :: 09:55
Печать  
Вот есть вариант, когда то доделал транзакцию и для неопределенных реквизитов. Теперь вот по подсказке "yudin" сделал еще и проверку на сортировку в реквизите регистра. Скачать можно здесь:
http://metaprog.co.ua/secrprog/files/setTA.zip
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать