Вход | Регистрация



Разное выполнение запросов

Разное выполнение запросов
Я
   falselight
 
15.09.16 - 10:16
Первый запрос выполняется при проведении документа.
Второй я имитирую обработкой туже ситуацию.
Первый возвращает количество -1. Второй не возвращает ничего.
Почему так?

||
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
    ТоварыНаСкладахОстатки.КоличествоОстаток - ТоварыНаСкладахОстатки.ор_РезервОстаток КАК Количество
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(
            ,
            (Номенклатура, Характеристика, Склад) В
                (ВЫБРАТЬ
                    Таблица.Номенклатура,
                    Таблица.Характеристика,
                    Таблица.Склад
                ИЗ
                    ДвиженияТоварыНаСкладахИзменение КАК Таблица)) КАК ТоварыНаСкладахОстатки
ГДЕ
    ТоварыНаСкладахОстатки.КоличествоОстаток - ТоварыНаСкладахОстатки.ор_РезервОстаток < 0
||
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,    
    ТоварыНаСкладахОстатки.КоличествоОстаток - ТоварыНаСкладахОстатки.ор_РезервОстаток КАК Количество
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(
            ,
            Номенклатура = &Номенклатура
                И Склад = &Склад
                И Характеристика = &Характеристика) КАК ТоварыНаСкладахОстатки
ГДЕ
    ТоварыНаСкладахОстатки.КоличествоОстаток - ТоварыНаСкладахОстатки.ор_РезервОстаток < 0
 
 
   Ёпрст
 
1 - 15.09.16 - 10:22
Запрос в обработке учитывает движения документа, тот что в модуле проведения - нет.
   falselight
 
2 - 15.09.16 - 10:24
(1) подскажите пожалуйста как тут быть?
не соберусь никак с мыслями.
если запрос возвращает -1 в документе.
то как тот же результат получить в обработке?
   Лефмихалыч
 
3 - 15.09.16 - 10:26
(2) в документе получай движение на момент времени документа ив  обработке тоже. Тогда будет одинаково
   falselight
 
4 - 15.09.16 - 10:26
(1) похоже в модуле проведения тоже так же учитывает
так как такой номенклатуры в регистре вообще нет
а при проведении возвращает -1
получается наоборот
запрос в модуле проведения учитывает движения документа и не дает проводить
а в обработке движения не учитывает и ничего не возвращает
   falselight
 
5 - 15.09.16 - 10:27
(3) в докумнете не имею возможности править что либо
конфигурация на поддержке
могу править только в обработке
   Ёпрст
 
6 - 15.09.16 - 10:32
(4) каша у тебя в голове
   falselight
 
7 - 15.09.16 - 10:38
(6) решение родилось:

в запросе что в обработке минусовать количество из докумнета

(6) то есть работает наоборот того что вы сказали в (1), правильно?
   Лефмихалыч
 
8 - 15.09.16 - 10:40
(7) нажористая каша.

Ты скажи лучше, зачем ты это все затеял и чего ты добиться хочешь
   falselight
 
9 - 15.09.16 - 10:41
(8) нужно контролировать что минусовой остаток по номенклатуре и создавать тз по этой номенклатуре
   falselight
 
10 - 15.09.16 - 10:42
(8) получается в докумнете он есть, а в обработке нет, вот минусую количество документа в обработке ещё
 
 Рекламное место пустует
   Лефмихалыч
 
11 - 15.09.16 - 10:43
(9) тебе на момент проведения надо проконтролировать что ли?
   falselight
 
12 - 15.09.16 - 10:52
(11) ну получается да
я документ записываю программно
и нужно как то это проконтролировать в запросе
минус количество как я хотел в (7) ошибку дает только
   Лефмихалыч
 
13 - 15.09.16 - 11:11
(12) снимай с поддержки тогда.
Иначе тебе в обработке придется делать запрос в цикле, чтобы получить остатки на момент каждого документа. В одной секунде может быть олимпиард документов, по этому, даже,е сли ты вычтешь количество самого документа, ты ни как не сможешь полагаться на результат.
   falselight
 
14 - 15.09.16 - 11:19
(13) имеется ввиду поддержка другой фирмы, не конфигурации, нельзя менять
   Лефмихалыч
 
15 - 15.09.16 - 11:31
(14) ну, значит в другую эту фирму отправь запрос на изменение, чтобы исправили свой говнокод. Ты с обработкой своей ни чего не добьешься, а только вспотеешь и время потеряешь
   falselight
 
16 - 15.09.16 - 14:03
(15) а если они утверждают что одна номенклатура с одной характеристикой может оприходоваться и списаться только раз?
   falselight
 
17 - 15.09.16 - 14:15
(16+) то есть вроде как у них в коде не может быть ошибок
и период в этом случае не актуален?
   AceVi
 
18 - 15.09.16 - 14:25
(0) надо смотреть весь код - ибо в какой именно момент выполняется запрос в документе? а может до запроса уже есть программно Регистр.Записать().
И в какой момент ты будешь проверять отрицательные остатки? сделаешь подписку на события? так она в той же транзакции что и само проведение. Давай весь план по решению задачи.
Обычно контроль производиться так - есть уже подготовленная таблица для движения пол регистру - она загоняеться в запрос - в запросе получаются все движения на МоментВремени документа+данные из таблицы. вот наиболее корректный способ.
   falselight
 
19 - 15.09.16 - 14:33
(18) ну там в одном запросе таблица и передается в параметры, и контролируются отрицательные остатки. А их же не должно быть в базе? Значит документ уже проведет по регистру и поместил их туда.
   AceVi
 
20 - 15.09.16 - 16:55
(19) Из твоего объяснения ничего не понял.
Если тебе еще нужна помощь, давай как ребенок - по шагам все с примерами кода. Типа
Вот у меня таблица для движения по регистру - вот она в запрос попала вот контроль.
А вот что я хочу сделать.
   aleks_default
 
21 - 15.09.16 - 17:00
А я вот не понял, что хотите контролировать? Какая задача стоит?
Контроль отрицательных остатков? Так он итак отработает при программном проведении документов в их обработке проведения. Зачем его делать внешним?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует