Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Прямой запрос к регистру. dbf. "лишние записи" (число прочтений - 4081 )
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Прямой запрос к регистру. dbf. "лишние записи"
20. Февраля 2014 :: 10:22
Печать  
Добрый день.
База dbf. Регистр.Выполнение заявок
Измерения: ЗаявкаКлиента (документ), ДоговорКонтрагента, Продукция, ДатаОтгрузки, Стадия (ПоСтадийное исполнение заявок)
Ресурсы: КВыполнению, Выполнено.

Получаю "лишние записи" при выполнении прямого запроса. И в остатках и в движениях. Лишние записи характеризуются пустым значением ДоговорКонтрагента и словно по группе просуммированными значениями ресурсов, при чем как-то коряво по группе - берет значения из разных стадий.
Вытаскиваю запросом остатки:
Код
Выбрать все
SELECT
		$ОстаткиПоЗаявкам.ЗаявкаКлиента AS ЗаявкаКлиента,
		$ОстаткиПоЗаявкам.Продукция AS Продукция,
		$ОстаткиПоЗаявкам.ДатаОтгрузки AS ДатаОтгрузки,
		$ОстаткиПоЗаявкам.Стадия AS Стадия,
		$ОстаткиПоЗаявкам.ДоговорКонтрагента AS ДоговорКонтрагента,
		$ОстаткиПоЗаявкам.КВыполнению AS КВыполнению,
		$ОстаткиПоЗаявкам.Выполнено AS Выполнено,
		ОстаткиПоЗаявкам.Period as ПериодОстатка
	FROM
		$РегистрИтоги.ВыполнениеЗаявок as ОстаткиПоЗаявкам
		WHERE
		(period = :НачПредМесяца~~) 



Вытаскиваю движения:
Код
Выбрать все
SELECT ВыполнениеЗаявокДвижения.iddocdef as Регистратор_вид, ВыполнениеЗаявокДвижения.iddoc as Регистратор,
	$ВыполнениеЗаявокДвижения.ЗаявкаКлиента AS ЗаявкаКлиента,
	$ВыполнениеЗаявокДвижения.Продукция AS Продукция,
	$ВыполнениеЗаявокДвижения.ДатаОтгрузки AS ДатаОтгрузки,
	$ВыполнениеЗаявокДвижения.Стадия AS Стадия,
	$ВыполнениеЗаявокДвижения.ДоговорКонтрагента AS ДоговорКонтрагента," +
	$ВыполнениеЗаявокДвижения.КВыполнению * (1 - ВыполнениеЗаявокДвижения.debkred) AS Приход_КВыполнению,
	$ВыполнениеЗаявокДвижения.Выполнено * (1 - ВыполнениеЗаявокДвижения.debkred) AS Приход_Выполнено,
	$ВыполнениеЗаявокДвижения.КВыполнению * (- ВыполнениеЗаявокДвижения.debkred) AS Расход_КВыполнению,
	$ВыполнениеЗаявокДвижения.Выполнено * (- ВыполнениеЗаявокДвижения.debkred) AS Расход_Выполнено,
	ВыполнениеЗаявокДвижения.Date as ПериодДвижения
  FROM
     $Регистр.ВыполнениеЗаявок AS ВыполнениеЗаявокДвижения
  INNER JOIN
     1sjourn jr ON ВыполнениеЗаявокДвижения.iddoc = jr.iddoc
	     AND (jr.date BETWEEN :НачалоПериода~~ AND :КонецПериода~~)
	     AND ($ФлагРегистра.ВыполнениеЗаявок = 1) 



Первоначально не было измерения Договор. Потом добавил его, поставил его первым измерением. Реструктуризация. Перепровел все документы. Думал может важна галка отбор итогов для поля Договор, ведь именно на ней косяк. По всей видимости нет. Сейчас Договор - второе измерение, первое - заявка. Ну, понимаю, что без пересчета могут остатки лишние вылазить при прямом запросе, но и там не только измерения значатся, там и по ресурсам значения висят. А в движениях так и вообще неоткуда таким записям взяться. Встроенными средствами 1С лишних движений не видно. Печаль

Куда копать?  Печаль

Всем желающим помочь заранее спасибо.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #1 - 20. Февраля 2014 :: 10:33
Печать  
Цитата:
словно по группе просуммированными значениями ресурсо

Че за группа ? И.. это как ?

Если есть строки с пустым договором.. Дык, ежели у тебя не было измерения Договор и ты его добавил, то хотя бы пишешь чего в регистр при проведении документов туда, не ?
Не пишешь видать туда ничего, вот и пустое измерение всегда.

  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #2 - 20. Февраля 2014 :: 10:51
Печать  
Не всегда пустые. Встроенными средствами видно движения с договорами, при чем только с договорами.
По поводу записей с пустым договором по группе - по заявке суммирует из разных стадий ресурсы. Пример.  Нерешительный Пока писал пример. Несколько раз перепровел документы за месяц. И... э. количество записей вытаскиваемых прямым запросом увеличилось. Сдается мне что я неправильно фильтрую флагрегистра... а?

Есть правильные записи. Конкретный пример. Движения. В одной прав. записи выполнено 5000, в другой -5152. В лишних записях есть -5152, -152, есть нули. С заполненным договором 13 записей, с пустым 23. При чем регистратор и пр. в этих лишних записях тоже заполнены. Стандартными средствами вижу 11 движений. Увидел, где неправильно садилось количество (лишняя единичка), убрал, и перепровел документы за месяц. Теперь количество с заполненным договором 18. С пустым 23.
  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #3 - 20. Февраля 2014 :: 10:52
Печать  
Галка "автоматическое удаление движений" в доках стоит.
Уже физически открыл табличку с движениями. Там всего 11 записей на мой пример. Никак я не могу оттуда больше вытащить...  Смущённый по идее.
Открыл таблицу остатков. Там 16 записей. 8 с заполненным договором, с заполненными ресурсами. 8 с пустым договором, ресурсы тоже пустые. Что же я делаю не так?  Печаль

ОБНОВЛЕНИЕ - ошибочка. У остатков (по крайней мере сейчас) там где договор пустой, там и ресурсы пустые. У движений ресурсы не пусты...
Не уточнил  -использую oledb.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #4 - 20. Февраля 2014 :: 11:09
Печать  
Воткни в текст запроса условие на конкретный документ.
В движениях , что запрос выдал - то и есть физически в табличке..

О какой "группе" идёт речь и что не правильно, я так и не понял...
  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #5 - 20. Февраля 2014 :: 11:19
Печать  
Ну так а как мне по-другому вытаскивать данные по примеру, который я привел?

Код
Выбрать все
SELECT ВыполнениеЗаявокДвижения.iddocdef as Регистратор_вид, ВыполнениеЗаявокДвижения.iddoc as Регистратор,
	ВыполнениеЗаявокДвижения.sp8996 AS ЗаявкаКлиента,
	ВыполнениеЗаявокДвижения.sp8997 AS Продукция,
	ВыполнениеЗаявокДвижения.sp9106 AS ДатаОтгрузки,
	ВыполнениеЗаявокДвижения.sp9107 AS Стадия,
	ВыполнениеЗаявокДвижения.sp9374 AS ДоговорКонтрагента,
	ВыполнениеЗаявокДвижения.sp8998 * (1 - ВыполнениеЗаявокДвижения.debkred) AS Приход_КВыполнению,
	ВыполнениеЗаявокДвижения.sp8999 * (1 - ВыполнениеЗаявокДвижения.debkred) AS Приход_Выполнено,
	ВыполнениеЗаявокДвижения.sp8998 * (- ВыполнениеЗаявокДвижения.debkred) AS Расход_КВыполнению,
	ВыполнениеЗаявокДвижения.sp8999 * (- ВыполнениеЗаявокДвижения.debkred) AS Расход_Выполнено,
	ВыполнениеЗаявокДвижения.Date as ПериодДвижения
  FROM
     ra8995 AS ВыполнениеЗаявокДвижения
  INNER JOIN
     1sjourn jr ON ВыполнениеЗаявокДвижения.iddoc = jr.iddoc
	     AND (jr.date BETWEEN {d '2014-01-01'} AND {d '2014-02-10'})
	     AND (rf8995 = 1) AND  (ВыполнениеЗаявокДвижения.sp8996 = '  2KEL   ') 


2КЕЛ - это одна из заявок. Неправильно то, что я вижу старые записи из регистра движений, которых не должно быть, и которых я не вижу в самом файле ra8995.dbf... В т.ч. до сих пор вижу то самое движение с единичкой, которое убрал перед последним перепроведением документов.
"Группа" - имелось ввиду "итоги", как в 8ке.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #6 - 20. Февраля 2014 :: 11:26
Печать  
бредятина какая..

Зачем ставить фильтр на измерение регистра ?
Поставь фильтр на сам документ движения.
Убедись, что то, что возвращает запрос соответствует тому, что сам документ записал в регистр.

Моя твоя непонимат что ты хочешь Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #7 - 20. Февраля 2014 :: 11:28
Печать  
На счет итогов, group by по всем измерениям + Sum по всем ресурсам + having на результат функции суммирования, чтоб <>0 был .. усё.
  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #8 - 20. Февраля 2014 :: 11:41
Печать  
Сделал с отбором по регистратору (тот же запрос, только еще и iddoc = '2kel'). Сама заявка себя регистрирует одной записью. В RA8995.dbf на нее одна запись, открыт внешней программой. Стандартные средства 1С через обращение к регистру показывают 1 запись. Прямой запрос показывает 3 записи: одна устар. с пустым договором и 1, вторая с заполненным договором и 1, третья последняя - и с договором и без единички. wtf? Второй день уже не могу понять откуда это берется...
По итогам понятно, спасибо, хотя с ними и сам додумался. Но что за ахинея с движениями?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #9 - 20. Февраля 2014 :: 11:55
Печать  
посмотри движения этого документа в любом журнале по ПКМ - движения документа - нужный регистр..
Че там ?
  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #10 - 20. Февраля 2014 :: 11:56
Печать  
Одна запись. Правильная. Полностью заполнена, без 1.

1С++ 3.2.3.1, FormEx 2.0.5.108, Turbomd 1.0.0.1 (28.08.2006 14:09)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #11 - 20. Февраля 2014 :: 12:00
Печать  
так, че кажет ?
Код
Выбрать все
 SELECT *
 FROM ra8995
 where iddoc = :ВыбДок

Запрос.УстановитьТекстовыйПараметр("ВыбДок",Док); 

  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #12 - 20. Февраля 2014 :: 12:02
Печать  
Также 3 записи  Плачущий . У меня конец рабочего дня. Дальше эксперименты буду проводить часов через 5. Начну с переиндексации и пересчета итогов. Отпишусь что получиться...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #13 - 20. Февраля 2014 :: 12:05
Печать  
Ну, значит и в предприятии тоже 3 записи покажет..

если нет, то реиндекс, для начала...
  
Наверх
 
IP записан
 
Necytij
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 12
Зарегистрирован: 15. Сентября 2008
Re: Прямой запрос к регистру. dbf. "лишние записи"
Ответ #14 - 20. Февраля 2014 :: 20:00
Печать  
Глюк. Глюк чего я не узнал. Провел полностью ТИИ, проблема исчезла - 1 запись. Восстановил бэкап (полностью папку), без тии - и глюка все равно уже нет Печаль
Ёпрст, спасибо. НО где могли храниться эти самые записи? Их не было в физической таблице ra. В индексе ведь могли быть данные записи? Думал там только порядок сортировки...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать