Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Подскажите как лучше обойти баг ВТ с периодом "Документ"? (число прочтений - 4333 )
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Подскажите как лучше обойти баг ВТ с периодом "Документ"?
08. Декабря 2010 :: 18:01
Печать  
Задача: нужно получать документы из ВТ РегистрОстаткиОбороты (СКЛ)
Например $РегистрОстаткиОбороты.ВзаиморасчетыПоставщиков

Вариант №1 (тупой)
Делаем запрос за период и объединяем его с таким же запросом с периодом "документ".
Из первого запроса берем остатки на начало/конец, из второго - движения.

Вариант №2
Делаем запрос за период и объединяем его с запросом по движению регистра

Вариант №3
Делаем запрос из 3-х частей, а-ля ДБФ (итоги на начало + движения + итоги на конец)

Подскажите как правильно составить запрос!!!
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #1 - 08. Декабря 2010 :: 19:33
Печать  
Вариант №4
Использовать метод дополнения "Движения".

Вариант №5
Использовать класс ПрямойЗапрос.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #2 - 09. Декабря 2010 :: 12:54
Печать  
berezdetsky
Цитата:
Вариант №4
Использовать метод дополнения "Движения".

1С++ v2.5.0.7
Код
Выбрать все
		|SELECT
		|	Рег.Фирма AS [Фирма $Справочник.Фирмы]
		|	,Рег.Контрагент AS [Контрагенты $Справочник.Контрагенты]
		|	,Рег.Договор AS [Договоры $Документ]
		|	,Рег.СтавкаНДС AS [СтавкаНДС $Справочник.ШкалаСтавок]
		|	,Рег.КредДокумент AS [КредитовыеДокументы $Документ]
		|	,Рег.Валюта AS [Валюты $Справочник.Валюты]
		|	,RIGHT(Рег.ПозицияДокумента ,9) AS [Документы $Документ]
		|	,Рег.ВидДокумента AS Документы_вид
		|	,Рег.ДолгОснНачальныйОстаток as ДолгНач
		|	,Рег.ДолгОснПриход AS ДолгПриход
		|	,Рег.ДолгОснРасход AS ДолгРасход
		|	,Рег.ДолгОснКонечныйОстаток AS ДолгКон
		|
		|	FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:НачДата, :КонДата~, Документ, Движения, , Фирма=:услФирма AND %услКонтрагенты, ,) AS Рег
 


выдает только движения и остатки по ним, а остатки задолженности без движения не попадают
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #3 - 09. Декабря 2010 :: 13:16
Печать  
Ага. А №5?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #4 - 09. Декабря 2010 :: 13:29
Печать  
вот этот баг http://www.1cpp.ru/bugs/show_bug.cgi?id=4261

а вот что написано в Класс "ПрямойЗапрос". Часть № 2http://www.1cpp.ru/forum/YaBB.pl?num=1285352210

Код
Выбрать все
История версий:
1.7.21 от 25.11.10 г.
- Исправлена ошибка подготовки ВТ ОстаткиОбороты с дополнением при указании начального периода. 



так что боюсь, там тоже есть еще подводные камни
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #5 - 09. Декабря 2010 :: 14:34
Печать  
Так ведь исправлена же.  Подмигивание
А если что-то и вылезет - IMHO, исправлено оно будет гораздо быстрее, чем ты добьёшься исправления в 1C++.

Ну или пиши запросы без ВТ, как ты и собирался вначале. Круглые глаза
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #6 - 09. Декабря 2010 :: 14:59
Печать  
да я думал уже есть готовые решения, чтобы велосипед не изобретать Озадачен
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #7 - 09. Декабря 2010 :: 15:23
Печать  
mc писал(а) 09. Декабря 2010 :: 14:59:
да я думал уже есть готовые решения, чтобы велосипед не изобретать Озадачен

гыы  Смех А ПрямойЗапрос это не решение, не готовое или не есть? Проверить не сложно же.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #8 - 13. Декабря 2010 :: 16:24
Печать  
сейчас напишу результаты иследований
1cv7.70.027, SQL2000 SP4 v8.00.2039

1с++ 2.5.0.7
Код
Выбрать все
|SELECT
|	Рег.Фирма AS [Фирма $Справочник.Фирмы]
|	,Рег.Контрагент AS [Контрагенты $Справочник.Контрагенты]
|	,Рег.Договор AS [Договора $Документ]
|	,Рег.СтавкаНДС AS [СтавкиНДС $Справочник.ШкалаСтавок]
|	,Рег.КредДокумент AS [КредитовыеДокументы $Документ]
|	,Рег.Валюта AS [Валюты $Справочник.Валюты]
|	,RIGHT(Рег.ПозицияДокумента ,9) AS [Документы $Документ]
|	,Рег.ВидДокумента AS Документы_вид
|	,Рег.ДолгОснНачальныйОстаток as НачДолг
|	,Рег.ДолгОснПриход as Приход
|	,Рег.ДолгОснРасход as Расход
|	,Рег.ДолгОснКонечныйОстаток as КонДолг
|
|	FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:НачДата, :КонДата~, Документ, , , Фирма=:услФирма AND %услКонтрагенты, ,) AS Рег 


результат развернутый в файле Test1_razv.xls
после свертывания получаем неправильные нач. и кон. итоги
НачДолг      Приход            Расход            КонДолг
5470.58            0            1599.01            3871.57

1с++ 3.2.2.0
Код
Выбрать все
тот же 


результат аналогичный

1с++ 3.2.2.0 + КОП "ПрямойЗапрос"
Код
Выбрать все
тот же 


результат аналогичный

рабочий вариант постараюсь выложить завтра
  

Test1_razv.xls ( 15 KB | Загрузки )
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #9 - 13. Декабря 2010 :: 18:02
Печать  
mc писал(а) 13. Декабря 2010 :: 16:24:
после свертывания получаем неправильные нач. и кон. итоги

Было бы странно, если бы было иначе.  Улыбка За полуаддитивными агрегатными функциями нужно ходить к MS Analysis Services. Или считать итоги на каждом уровне агрегации в рукопашную.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #10 - 13. Декабря 2010 :: 19:05
Печать  
Только хотел сказать, что неудивительно что так получилось. Где ошибка в классе не увидел. А по сему удаляюсь.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #11 - 14. Декабря 2010 :: 10:19
Печать  
vandalsvq
никаких притензий к классу я не имею, просто мне сказал ув. berezdetsky попробовать его. вот я и написал, что не помогает использование класса
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #12 - 14. Декабря 2010 :: 10:33
Печать  
mc писал(а) 14. Декабря 2010 :: 10:19:
не помогает использование класса

То, о чём ты пишешь, багом не является. А единственный, известный мне, баг 1С++ с периодичностью Документ (и который, как я думал, ты подразумевал в #0) в классе ПрямойЗапрос, IMHO, отсутствует.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #13 - 14. Декабря 2010 :: 10:49
Печать  
1с++ 3.2.2.0 и 1с++ 2.5.0.7

Код
Выбрать все
|SELECT
|	Рег.Фирма AS [Фирма $Справочник.Фирмы]
|	,Рег.Контрагент AS [Контрагенты $Справочник.Контрагенты]
|	,Рег.Договор AS [Договора $Документ]
|	,Рег.СтавкаНДС AS [СтавкиНДС $Справочник.ШкалаСтавок]
|	,Рег.КредДокумент AS [КредитовыеДокументы $Документ]
|	,Рег.Валюта AS [Валюты $Справочник.Валюты]
|	,RIGHT(Рег.ПозицияДокумента ,9) AS [Документы $Документ]
|	,Рег.ВидДокумента AS Документы_вид

//|	,Рег.ДолгОснНачальныйОстаток as НачДолг
|	,CASE WHEN Рег.ВидДокумента = 0 THEN Рег.ДолгОснНачальныйОстаток ELSE 0 END AS НачДолг
|	,Рег.ДолгОснПриход as Приход
|	,Рег.ДолгОснРасход as Расход
//|	,Рег.ДолгОснКонечныйОстаток as КонДолг
|	,CASE WHEN Рег.ВидДокумента = 0 THEN Рег.ДолгОснКонечныйОстаток ELSE (Рег.ДолгОснПриход - Рег.ДолгОснРасход) END AS КонДолг
|
|	FROM $РегистрОстаткиОбороты.ВзаиморасчетыПокупателей(:НачДата, :КонДата~, Документ, , , Фирма=:услФирма AND %услКонтрагенты, ,) AS Рег
 



результат развернутый в файле Test2_razv.xls
свернутый результат получил правильный
НачДолг      Приход            Расход            КонДолг
3236.57            0            1599.01            1637.56

только вот остаток на документ будет не корректный, так как им нужно понижать кон.остаток по строке остатков

если у кого-то есть еще идеи как по-другому реализовать, буду признателен

vandalsvq если подойдет такое решение для вашего класса, можете включить его туда
  

Test2_razv.xls ( 15 KB | Загрузки )
Наверх
 
IP записан
 
mc
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 59
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите как лучше обойти баг ВТ с периодом "Документ"?
Ответ #14 - 14. Декабря 2010 :: 10:52
Печать  
berezdetsky
разве здесь http://www.1cpp.ru/forum/YaBB.pl?num=1253518527/0#0 не о том же?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать