|
Остатки товаров - ВЫБОР ЕСТЬ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
|
Если мы границу припишем, то вообще другой пример получится.
Для себестоимости можно включать и рассчитывать старые движения, либо исключать их (независимо от даты) однозначно. Что в последовательностях... Ну фигово все будет, зато правильно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |