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


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Получаю неверные остатки запросом
06. Сентября 2006 :: 06:26
Печать  
Вот такой запрос:
Код
Выбрать все
Функция _ПолучитьОстаткиПоТоварам(док, ЮрЛицо, Склад) Экспорт
	ТекстЗапроса = "
	|SELECT
	|	рег.Номенклатура AS [Номенклатура $Справочник.Номенклатура],
	|	рег.КоличествоОстаток AS Количество,
	|	рег.СебестоимостьОстаток AS Себестоимость
	|FROM
	|	$РегистрОстатки.Товары(:ВыбДата~,, ЮрЛицо = :ЮрЛицо AND Склад = :Склад, Номенклатура, (Количество, Себестоимость)) AS рег
	|
	|";
	RS.УстановитьТекстовыйПараметр("ЮрЛицо", ЮрЛицо);
	RS.УстановитьТекстовыйПараметр("Склад", Склад);
	RS.УстановитьТекстовыйПараметр("ВыбДата", СформироватьПозициюДокумента(док, -1));
	тз = RS.ВыполнитьИнструкцию(ТекстЗапроса);
	Возврат тз;
КонецФункции
 



Эта функция успешно работает уже несколько месяцев.
Буквально на днях обнаружил странную вещь, причем только по некоторым позициям товаров.
Если делать запрос стандартным 1Совским способом, то я получаю остаток:
   Количество: -0.438
   Сумма: 0
Если я делаю запрос вышеприведенным способом, то я получаю остаток:
    Количество: -0.438
    Сумма: 5764704214.93018

Релиз 1cpp.1816fb03, та же фигня и на других более поздних релизах.
В чем может быть дело?
  
Наверх
 
IP записан
 
InterMax
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 1
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #1 - 06. Сентября 2006 :: 06:41
Печать  
Текст запроса SQL в студию!
  
Наверх
 
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #2 - 06. Сентября 2006 :: 06:52
Печать  
Код
Выбрать все
SELECT
	рег.Номенклатура AS [Номенклатура $Справочник.Номенклатура],
	рег.КоличествоОстаток AS Количество,
	рег.СебестоимостьОстаток AS Себестоимость
FROM
	(
select
rr36674_vt.sp36667 as Номенклатура,
sum(rr36674_vt.sp36670) as КоличествоОстаток,
sum(rr36674_vt.sp36671) as СебестоимостьОстаток
from (
select
rg36674_vt.sp36667,
rg36674_vt.sp36670,
rg36674_vt.sp36671
from rg36674 as rg36674_vt (nolock)
where rg36674_vt.period={d '2006-08-01'}
and (rg36674_vt.sp36668 = '    36C00' AND rg36674_vt.sp36666 = '    13C00')
union all
select
ra36674_vt.sp36667,
case ra36674_vt.debkred when 1 then ra36674_vt.sp36670 else -ra36674_vt.sp36670 end,
case ra36674_vt.debkred when 1 then ra36674_vt.sp36671 else -ra36674_vt.sp36671 end
from ra36674 as ra36674_vt (nolock)
where ra36674_vt.date_time_iddoc >= '20060816D3JB40  AYEXC0 ' and ra36674_vt.date_time_iddoc < '20060831Z'
and (ra36674_vt.sp36668 = '    36C00' AND ra36674_vt.sp36666 = '    13C00')
) as rr36674_vt
group by
rr36674_vt.sp36667
having
sum(rr36674_vt.sp36670) <> 0 or
sum(rr36674_vt.sp36671) <> 0
) as рег
 

  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #3 - 06. Сентября 2006 :: 07:43
Печать  
покажи стандратный 1С-вский способ
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #4 - 06. Сентября 2006 :: 08:03
Печать  
Вот так, например:

Код
Выбрать все
	реги = СоздатьОбъект("Регистры");
	рег = реги.Товары;
	рег.УстановитьЗначениеФильтра("ЮрЛицо", ЮрЛицо, 1);
	рег.УстановитьЗначениеФильтра("Склад", Склад, 1);
	Если ИтогиАктуальны() = 0 Тогда
		рег.ВременныйРасчет();
		реги.Актуальность(1);
		реги.РассчитатьРегистрыНа(ТекущийДокумент());
	КонецЕсли;
	тз = СоздатьОбъект("ТаблицаЗначений");
	рег.ВыгрузитьИтоги(тз, 1, 1);
 

  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #5 - 06. Сентября 2006 :: 09:12
Печать  
воде никаких различий нет, а релиз 1С у тя часом не 18-й?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #6 - 06. Сентября 2006 :: 09:14
Печать  
Релиз 25й.
Все крутится на серваке 2003м.
Базу я выгружал, прибивал и загружал по-новой - без толку.
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #7 - 06. Сентября 2006 :: 09:18
Печать  
а нука поведай свою структуру регистра...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #8 - 06. Сентября 2006 :: 09:58
Печать  
Все примитивно до безобразия

Регистр Товары.
Измерения - ЮрЛицо, Склад, Номенклатура, Фирма (справочники)
Ресурсы - Количество, Себестоимость, НДС, Сумма
Реквизиты - ВидОперации (перечисление)

Регистр остатков, быстрая обработка движений.
Отборов по измерениям нет.
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #9 - 06. Сентября 2006 :: 10:40
Печать  
и ты хочешь сказать что штатно:
тз.Итог("Себестоимость")=0
тз.Итог("Количество")=-0.438
а не:
тз.Итог("Себестоимость")=5764704214.93018
тз.Итог("Количество")=-0.438

не верю...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #10 - 06. Сентября 2006 :: 11:11
Печать  
Ну как "не верю"...
Злой
Врать-то мне зачем???
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #11 - 06. Сентября 2006 :: 11:13
Печать  
уверен что:
тз.Итог("Себестоимость")
а не:
тз.Итог("Сумма")
???
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получаю неверные остатки запросом
Ответ #12 - 06. Сентября 2006 :: 11:27
Печать  
Zima писал(а) 06. Сентября 2006 :: 11:11:
Ну как "не верю"...
Злой
Врать-то мне зачем???


Попробуй dbcc checkdb с опцией REPAIR_ALLOW_DATA_LOSS
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #13 - 06. Сентября 2006 :: 11:45
Печать  
Цитата:
Попробуй dbcc checkdb с опцией REPAIR_ALLOW_DATA_LOSS

он же уже базу выгружал-загружал и не помогло. А чекать свежую базу имхо нет смысла.
  

1&&2&&3
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #14 - 06. Сентября 2006 :: 11:46
Печать  
Твой SQL-запрос считает (для данного документа) от конца периода, а стандартный 1С-запрос - всегда от начала. При переполнении ресурса его значение искажается (устанавливается в 9 во всех разрядах). Т.о. результаты запросов 1С и 1С++ на документ во второй половине периода могут не совпадать. При чём документ, переполняющий ресурс, может быть позже расчётного.

Найди и обезвредь документ, переполняющий ресурс "Себестоимость" (если это ещё не сделано), после чего пересчитай итоги.
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #15 - 06. Сентября 2006 :: 12:10
Печать  
berezdetsky писал(а) 06. Сентября 2006 :: 11:46:
Твой SQL-запрос считает (для данного документа) от конца периода, а стандартный 1С-запрос - всегда от начала. При переполнении ресурса его значение искажается (устанавливается в 9 во всех разрядах). Т.о. результаты запросов 1С и 1С++ на документ во второй половине периода могут не совпадать. При чём документ, переполняющий ресурс, может быть позже расчётного.

Найди и обезвредь документ, переполняющий ресурс "Себестоимость" (если это ещё не сделано), после чего пересчитай итоги.

можно легко проверить твое предположение изменив текст прямого запрос на:
Код
Выбрать все
Функция _ПолучитьОстаткиПоТоварам(док, ЮрЛицо, Склад) Экспорт
ТекстЗапроса = "
|SELECT
|рег.Номенклатура AS [Номенклатура $Справочник.Номенклатура],
|рег.КоличествоОстаток AS Количество,
|рег.СебестоимостьОстаток AS Себестоимость
|FROM
|$РегистрОстатки.Товары(:ВыбДата,, ЮрЛицо = :ЮрЛицо AND Склад = :Склад, Номенклатура, (Количество, Себестоимость)) AS рег
|
|";
RS.УстановитьТекстовыйПараметр("ЮрЛицо", ЮрЛицо);
RS.УстановитьТекстовыйПараметр("Склад", Склад);
RS.УстановитьТекстовыйПараметр("ВыбДата", СформироватьПозициюДокумента(док));
тз = RS.ВыполнитьИнструкцию(ТекстЗапроса);
Возврат тз;
КонецФункции 


но мне почему то кажется что дело не в этом, хотя именно позициядока-1 меня и смущала с самого начала, но подумав решил что это все равно одно и тоже... хотя могу и ошибаться...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #16 - 06. Сентября 2006 :: 12:41
Печать  
berezdetsky писал(а) 06. Сентября 2006 :: 11:46:
Твой SQL-запрос считает (для данного документа) от конца периода, а стандартный 1С-запрос - всегда от начала. При переполнении ресурса его значение искажается (устанавливается в 9 во всех разрядах). Т.о. результаты запросов 1С и 1С++ на документ во второй половине периода могут не совпадать. При чём документ, переполняющий ресурс, может быть позже расчётного.

Найди и обезвредь документ, переполняющий ресурс "Себестоимость" (если это ещё не сделано), после чего пересчитай итоги.


А можно поподробнее про "переполняющий ресурс". Что это такое? Как он может что-то переполнять?
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #17 - 06. Сентября 2006 :: 12:43
Печать  
Zima писал(а) 06. Сентября 2006 :: 12:41:
А можно поподробнее про "переполняющий ресурс". Что это такое? Как он может что-то переполнять?

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

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #18 - 06. Сентября 2006 :: 12:58
Печать  
Цитата:
Zima писал(а) 06. Сентября 2006 :: 12:41:
А можно поподробнее про "переполняющий ресурс". Что это такое? Как он может что-то переполнять?

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


А он на этот код вот так ругается
тз = RS.ВыполнитьИнструкцию(ТекстЗапроса);
{Глобальный модуль(8299)}: State 22007, native 241, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #19 - 06. Сентября 2006 :: 13:02
Печать  
Zima писал(а) 06. Сентября 2006 :: 12:41:
А можно поподробнее про "переполняющий ресурс". Что это такое? Как он может что-то переполнять?


Посмотри текст любой процедуры _1sp_RGxxx_Change. Все движения регистра учитываются (суммируются) в таблице остатков в разрезе периодов. Если сумма движений и остатков не помещается в установленную (в конфигураторе) разрядность, результат сложения замещается на число, содержащее 9 во всех разрядах.
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #20 - 06. Сентября 2006 :: 13:17
Печать  
Zima писал(а) 06. Сентября 2006 :: 12:58:
А он на этот код вот так ругается
тз = RS.ВыполнитьИнструкцию(ТекстЗапроса);
{Глобальный модуль(8299)}: State 22007, native 241, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.

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

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #21 - 06. Сентября 2006 :: 13:17
Печать  
berezdetsky писал(а) 06. Сентября 2006 :: 13:02:
Посмотри текст любой процедуры _1sp_RGxxx_Change. Все движения регистра учитываются (суммируются) в таблице остатков в разрезе периодов. Если сумма движений и остатков не помещается в установленную (в конфигураторе) разрядность, результат сложения замещается на число, содержащее 9 во всех разрядах.


Так а не проще ли тогда просто увеличить разрядность ресурсов в регистре для решения проблемы?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #22 - 06. Сентября 2006 :: 13:28
Печать  
Zima писал(а) 06. Сентября 2006 :: 13:17:
Так а не проще ли тогда просто увеличить разрядность ресурсов в регистре для решения проблемы?

Не обязательно проблема в недостаточной разрядности. Это может быть ошибка расчёта. Но это уже частности.
  

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


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #23 - 07. Сентября 2006 :: 03:59
Печать  
Заметил интересную вещь - если установить ТА на 31.08, то для всех документов начиная с 16.08 я получаю верные остатки.

Я не совсем понял как можно получать остатки от конца периода. Точнее зачем это вообще нужно.
Не разобрался как сделать запрос, который позволит считать отстатки от начала периода и как сделать запрос, который будет давать остатки на документ а не по документ.
Может подскажете как? В хелпе все очень неоднозначно описано.
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #24 - 07. Сентября 2006 :: 07:00
Печать  
в хелпе все достаочно однозначно написано... ведь ты для чего то к ГраницеРасчета прилепил ~
вот если сделаешь без этого значка, будет тебе на документ, а с ним, у тебя по документ...
да, я вот сейчас почитал доку, таки нельзя указывать ФлагСмещения=0, что я тебе и посоветовал, но потом я же тебе посоветовал исправить так чтобы работало, а согласно доке тебе нужно воспользоваться:
СформироватьПозициюДокумента(<Дата>,<Час>,<Мин>,<Сек>,<ФлагКонцаСекунды>)
Назначение:
Формирует и возвращает позицию документа согласно переданным параметрам.
Параметры:
<Дата> - дата, на которую формируется позиция документа,
<Час> - час, на который формируется позиция документа,
<Мин> - минута, на которую формируется позиция документа,
<Сек> - секунда, на которую формируется позиция документа.
<ФлагКонцаСекунды> - необязательный параметр. Число: 1 - позиция будет браться от следующей секунды. 0 - позиция от указан-ной секунды. Значение по умолчанию - 0.
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #25 - 07. Сентября 2006 :: 07:07
Печать  
Цитата:
вот если сделаешь без этого значка, будет тебе на документ
нет, не угадал
  

1&&2&&3
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #26 - 07. Сентября 2006 :: 07:24
Печать  
что значит не угадал? я не гадал, я доку читал. поясни что я не так вычитал?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #27 - 07. Сентября 2006 :: 07:38
Печать  
Цитата:
что значит не угадал? я не гадал, я доку читал. поясни что я не так вычитал?

параметр запроса типа строка без модификатора никакого отношения к позиции документа не имеет
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #28 - 07. Сентября 2006 :: 07:42
Печать  
+
чтобы получать в запросе позиции на/по документ нужно всегда использовать первый модификатор ~
а вот при установке параметра уже вызывать СформироватьПозициюДокумента с соответствующими параметрами
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #29 - 07. Сентября 2006 :: 07:43
Печать  
Цитата:
что значит не угадал? я не гадал, я доку читал.
в доке этого нет. значит прочитать не мог. значит выдумал сам. суть - гадал
  

1&&2&&3
Наверх
 
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #30 - 07. Сентября 2006 :: 07:47
Печать  
Цитата:
в хелпе все достаочно однозначно написано... ведь ты для чего то к ГраницеРасчета прилепил ~
вот если сделаешь без этого значка, будет тебе на документ, а с ним, у тебя по документ...
да, я вот сейчас почитал доку, таки нельзя указывать ФлагСмещения=0, что я тебе и посоветовал, но потом я же тебе посоветовал исправить так чтобы работало, а согласно доке тебе нужно воспользоваться:
СформироватьПозициюДокумента(<Дата>,<Час>,<Мин>,<Сек>,<ФлагКонцаСекунды>)
Назначение:
Формирует и возвращает позицию документа согласно переданным параметрам.
Параметры:
<Дата> - дата, на которую формируется позиция документа,
<Час> - час, на который формируется позиция документа,
<Мин> - минута, на которую формируется позиция документа,
<Сек> - секунда, на которую формируется позиция документа.
<ФлагКонцаСекунды> - необязательный параметр. Число: 1 - позиция будет браться от следующей секунды. 0 - позиция от указан-ной секунды. Значение по умолчанию - 0.


В базе тьма документов реализации с одинаковой датой и одинаковым временем, например 16.08.06 22:00:00
Как в таком случае сформировать позицию именно на начало того документа который мне нужен?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #31 - 07. Сентября 2006 :: 07:50
Печать  
Zima писал(а) 07. Сентября 2006 :: 03:59:
Заметил интересную вещь - если установить ТА на 31.08, то для всех документов начиная с 16.08 я получаю верные остатки.

А если включить ОбратныйРасчетОтТА()?

Проверь, верны ли движения документов, полученных таким запросом:
Код
Выбрать все
SELECT DISTINCT Товары.IDDOC [Документ $Документ]
	, Товары.IDDOCDEF Документ_вид
FROM $Регистр.Товары AS Товары
WHERE (Товары.DATE_TIME_IDDOC > '20060801')
	AND (Товары.DATE_TIME_IDDOC < '20060831Z')
	AND (($Товары.Себестоимость > 100000000) OR ($Товары.Себестоимость < -100000000)) 


Если верны или их нет - увеличивай разрядность.
  

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


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #32 - 07. Сентября 2006 :: 07:54
Печать  
Да и еще, ребят, очень прошу, кто-нибудь может мне однозначно сказать, как избавиться от появления этих 99999999.999? Я вообще не понимаю, каким образом получается эта цифра, зачем рассчитывать остатки от конца периода, если это вообще неверно. Извините, страшно болит голова, мышление отключено.  Печаль

"при получении остатков на или по дату, близкую к концу текущего периода - сохранения остатков, используются остатки на конец текущего периода "

Зачем? Если я перепровожу документ задним числом, логично предположить, что остатки на конец периода неверны.
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #33 - 07. Сентября 2006 :: 07:57
Печать  
кажется понял, ему нужно в УтановитьТекстовыйПараметр в качестве параметра передавать документ, а не позицию документа? я просто не совсем понимаю то, что написано в документации, думаю не я один такой...
а когда он передает момент времени с модификатором или позицию дока, то это получается "по"...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #34 - 07. Сентября 2006 :: 08:00
Печать  
Zima писал(а) 07. Сентября 2006 :: 07:54:
Да и еще, ребят, очень прошу, кто-нибудь может мне однозначно сказать, как избавиться от появления этих 99999999.999? Я вообще не понимаю, каким образом получается эта цифра, зачем рассчитывать остатки от конца периода, если это вообще неверно. Извините, страшно болит голова, мышление отключено.  Печаль

Как избавиться - см. выше.
Расчитывать остатки от конца периода - верно. Разница лишь в том, что во встроенных в 1С методах расчёта ты наступишь на грабли на месяц (на расчётный период) позже.

Выздоравливай. Улыбка
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #35 - 07. Сентября 2006 :: 08:01
Печать  
Zima писал(а) 07. Сентября 2006 :: 07:47:
В базе тьма документов реализации с одинаковой датой и одинаковым временем, например 16.08.06 22:00:00
Как в таком случае сформировать позицию именно на начало того документа который мне нужен?

судя по высказываниям  trad-а и более вдумчивом прочтении доки, думаю:
Код
Выбрать все
УстановитьТекстовыйПараметр("ПозицияДока",док.ТекущийДокумент()) 


  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
U_zer
Экс-Участник


Re: Получаю неверные остатки запросом
Ответ #36 - 07. Сентября 2006 :: 08:07
Печать  
Цитата:
а когда он передает момент времени с модификатором или позицию дока, то это получается "по"...


При передаче позиции, модификатор нужен, тебе же объяснили уже.

А вообще лучше использовать MW.ПолучитьДатуВремяИДДок().
  
Наверх
 
IP записан
 
Zima
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 06. Сентября 2006
Re: Получаю неверные остатки запросом
Ответ #37 - 07. Сентября 2006 :: 08:21
Печать  
berezdetsky писал(а) 07. Сентября 2006 :: 08:00:
Zima писал(а) 07. Сентября 2006 :: 07:54:
Да и еще, ребят, очень прошу, кто-нибудь может мне однозначно сказать, как избавиться от появления этих 99999999.999? Я вообще не понимаю, каким образом получается эта цифра, зачем рассчитывать остатки от конца периода, если это вообще неверно. Извините, страшно болит голова, мышление отключено.  Печаль

Как избавиться - см. выше.
Расчитывать остатки от конца периода - верно. Разница лишь в том, что во встроенных в 1С методах расчёта ты наступишь на грабли на месяц (на расчётный период) позже.

Выздоравливай. Улыбка


А можно ткнуть меня носом, где это "выше"?

Почему верно, у меня ТА стоит на месяц вперед, все работают задним числом. По-любому остаток на конец периода неверный. Если формировать отчет по готовому и сведенному периоду - да, оптимизация разумна и уместна, но если пепероводятся документы задним числом?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #38 - 07. Сентября 2006 :: 08:34
Печать  
Zima писал(а) 07. Сентября 2006 :: 08:21:
Почему верно, у меня ТА стоит на месяц вперед, все работают задним числом. По-любому остаток на конец периода неверный.

Из первого предложения второе не следует. Когда ты разберёшься, что хранится в таблицах RGxxx и как расчитываются остатки на момент времени, ты поймёшь: расчёт от начала или от конца периода - это всего лишь вопрос оптимизации. А не верные данные в RGxxx - это не проблема метода расчёта остатков.
  

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



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #39 - 07. Сентября 2006 :: 08:40
Печать  
да он уже вроде разобрался, у него проблема из за того что в ВТ идет обратный отсчет на даты, близкие к концу периода...
вижу 2 выхода:
1. даать возможность в ВТ параметром выбирать метод оптимизации
2. получать остатки без ВТ, т.е. самому написать запрос. котороый будет делать расчет с начала периода, если граница расчета не попадает в границы периодов...
думаю что вариант 1 реализовываться не будет
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Получаю неверные остатки запросом
Ответ #40 - 21. Мая 2010 :: 12:14
Печать  
Цитата:
Цитата:
а когда он передает момент времени с модификатором или позицию дока, то это получается "по"...


При передаче позиции, модификатор нужен, тебе же объяснили уже.

А вообще лучше использовать MW.ПолучитьДатуВремяИДДок().

Кстати таки не лучше .....
Я тоже наступил на грабли, на которые народ 4 года назад наступал ...... "первопроходимец" блин!  Улыбка
И вот что выяснил ..... может кому таки интересно еще
Код
Выбрать все
.........
	|  $РегистрОстатки.ОстаткиТоваров(:НаДату~,
............
	Запрос.УстановитьТекстовыйПараметр("НаДату", ВыбДок.ПолучитьПозицию());
 


выдает правильные остатки т.е. на начало позиции документа ВыбДок. При этом в обработанном запросе получаем следующее условие
Код
Выбрать все
where j14820_vt.date_time_iddoc >= '2009122816VF9S  NHF8KRC' and j14820_vt.date_time_iddoc < '20091231Z'
 


И тут-же делаем
Код
Выбрать все
Сообщить(МД.ПолучитьДатуВремяИдДок(ВыбДок.ПолучитьПозицию()));
 


и получаем
2009122816VF9S
т.е. позиция начала секунды а не документа как я понимаю Печаль В результате неправильные остатки, т.к. у меня в этой секунде есть еще 2 документа впереди
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать