| 
    
        
     
     | 
    
    
  | 
Остатки товаров - ВЫБОР ЕСТЬNULL | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        EvgeniuXP    
     21.10.13 
            ✎
    17:43 
 | 
         
        Есть код программы:
 
        ВЫБОР КОГДА ЕСТЬNULL(КоличествоОстаток, 0) = 0 Тогда 0 ИНАЧЕ ВЫБОР КОГДА Количество = ЕСТЬNULL(КоличествоОстаток, 0) ТОГДА СтоимостьОстаток ИНАЧЕ Количество / КоличествоОстаток * СтоимостьОстаток КОНЕЦ КОНЕЦ а можно ли записать это вот так, по-моему это идентично: ВЫБОР КОГДА ЕСТЬNULL(КоличествоОстаток, 0) = 0 Тогда 0 ИНАЧЕ ВЫБОР КОГДА Количество = КоличествоОстаток ТОГДА СтоимостьОстаток ИНАЧЕ Количество / КоличествоОстаток * СтоимостьОстаток КОНЕЦ КОНЕЦ т.к. первое условие отфильтрует NULL, а во втором ВЫБОР-е проверять на NULL уже не обязательно. более того, в первом варианте, второе КОГДА еще и не правильное, ЕСТЬNULL(КоличествоОстаток, 0) вернет 0, а вот СтоимостьОстаток вернет NULL, но т.к. сработает первое условие КОГДА, то не вернет NULL, вернет 0.  | 
|||
| 
    1
    
        Джинн    
     21.10.13 
            ✎
    17:45 
 | 
         
        КОГДА ЕСТЬNULL(КоличествоОстаток, 0) = 0 Тогда 0 
 
        Бред какой-то :(  | 
|||
| 
    2
    
        Maxus43    
     21.10.13 
            ✎
    17:45 
 | 
         
        можно написать  ЕСТЬNULL(Количество,0)/ЕСТЬNULL(КоличествоОстаток,1)*СтоимостьОстаток     
         | 
|||
| 
    3
    
        Maxus43    
     21.10.13 
            ✎
    17:46 
 | 
         
        (2) + ну или как то так, сам погляди логику     
         | 
|||
| 
    4
    
        EvgeniuXP    
     21.10.13 
            ✎
    17:55 
 | 
         
        и второй вопрос:
 
        почему при оперативном проведении чистят регистр "СтоимостьТоваров", а при не оперативном не чистят? да, в расчетах ошибки нет, но если смотреть количество и документ проведенный и мы его перепроводим другим числом (было 25.01.2012, проводим 27.01.2012), то движения текущего документа возьмутся, т.к. движения не очистили и не записали. т.е. такой код в модуле документа РасходТовара: Движения.СтоимостьТоваров.Очистить(); Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда Движения.СтоимостьТоваров.Записать(); Иначе МоментИтогов = МоментВремени(); КонецЕсли; желательно поменять на такой: Движения.СтоимостьТоваров.Очистить(); Движения.СтоимостьТоваров.Записать(); и момент времени можно передать уже хоть с учетом границы, хоть без...  | 
|||
| 
    5
    
        fisher    
     21.10.13 
            ✎
    17:55 
 | 
         
        (2) А если КоличествоОстаток = 0?     
         | 
|||
| 
    6
    
        Maxus43    
     21.10.13 
            ✎
    17:57 
 | 
         
        (5) уел :)     
         | 
|||
| 
    7
    
        EvgeniuXP    
     21.10.13 
            ✎
    17:59 
 | 
         
        (4) т.е. при оперативном явно избавляются от движений, а в неоперативном - нет - хотя движения возьмутся (поменять дату с 25, на 27), но ниже пишут:
 
        МоментИтогов = МоментВремени(); - якобы без учета движений текущего документа...  | 
|||
| 
    8
    
        EvgeniuXP    
     21.10.13 
            ✎
    18:01 
 | 
         
        признаюсь, это код(ы) GROOVY - его магию я не понимаю...     
         | 
|||
| 
    9
    
        DexterMorgan    
     21.10.13 
            ✎
    18:03 
 | 
         
        (8) Кароче, я тебе по секрету скажу на экзамене по спец., режим проведения вообще не важен.     
         | 
|||
| 
    10
    
        EvgeniuXP    
     21.10.13 
            ✎
    18:06 
 | 
         
        (9) дак я и вижу, что при любом раскладе нужно чистить и записывать регистры :)     
         | 
|||
| 
    11
    
        fisher    
     21.10.13 
            ✎
    18:09 
 | 
         
        (0) Короче, да. Второй вариант идентичен первому по результату. Оба рабочие. Первый слегка избыточен (похоже на случайную механическую копи-пасту).     
         | 
|||
| 
    12
    
        Timon1405    
     21.10.13 
            ✎
    18:21 
 | 
         
        Я так это понимаю:
 
        купили 3 шт на 10р., списываем по одной какая будет стоимость последней штуки? не 3.33333..., а ВЕСЬ остаток стоимости полностью. именно об этом и говорится в запросе  | 
|||
| 
    13
    
        GROOVY    
     21.10.13 
            ✎
    18:32 
 | 
         
        (8) Гонишь, я того что в (0) не писал - это бред.     
         | 
|||
| 
    14
    
        EvgeniuXP    
     21.10.13 
            ✎
    20:27 
 | 
         
        (13) как не писал, если это в первой задаче по специалисту (первый поток: mg.spec8.ru). Ё-маё, еще и по шапке получил... вот так всегда...     
         | 
|||
| 
    15
    
        EvgeniuXP    
     21.10.13 
            ✎
    20:32 
 | 
         
        (13) на второй ответ нашел GROOVY 12.04.2012 в 14:26 в мг - спасибо.     
         | 
|||
| 
    16
    
        GROOVY    
     21.10.13 
            ✎
    20:44 
 | 
         
        Курим вот туда: http://1c.chistov.pro/2013/07/blog-post_25.html     
         | 
|||
| 
    17
    
        EvgeniuXP    
     21.10.13 
            ✎
    21:52 
 | 
         
        (16) почитал, и видео смотрел - вот я и говорю, если в //7 смотреть результат запроса при перепроведении документа и сменить дату с 25.01.12 на 27.01.12 остатки будут включены прошлым проведением,т.е. остатки получим меньше, чем должно быть - на расчет себестоимости это не сказывается, что можно и пренебречь и более понятно, наверное, всё таки чистить и записывать пустой набор перед чтением - так более логично.     
         | 
|||
| 
    18
    
        EvgeniuXP    
     21.10.13 
            ✎
    21:54 
 | 
         
        (+17) чистить и зиписывать не только при оперативном, но и при неоперативном проведении - но это, можете сказать, что лишняя нагрузка на БД - но остатки же не верные в запросе.     
         | 
|||
| 
    19
    
        EvgeniuXP    
     21.10.13 
            ✎
    21:57 
 | 
         
        (+18) в расчете себестоимости не верное КоличествоОстаток. В первом запросе, где остатки считываем - там всё правильно.     
         | 
|||
| 
    20
    
        EvgeniuXP    
     21.10.13 
            ✎
    22:02 
 | 
         
        а если еще смешать теорию с практикой, т.е. не только сдавать экзамен на спеца, но еще и в жизни работать на этой базе - то для последовательности это очень плохой пример, т.к. запись пустого набора будет влиять на границу последовательности - а документ пользователь просто перепровел не изменяя ни дату, ни количество, ни товары - привыкли нажимать ОК как закрыть :(     
         | 
|||
| 
    21
    
        GROOVY    
     21.10.13 
            ✎
    22:09 
 | 
         
        Если мы границу припишем, то вообще другой пример получится. 
 
        Для себестоимости можно включать и рассчитывать старые движения, либо исключать их (независимо от даты) однозначно. Что в последовательностях... Ну фигово все будет, зато правильно.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |