|
Как получить остатки без учета движений проводимого документа? | ☑ | ||
---|---|---|---|---|
0
Помогите
31.08.13
✎
09:28
|
Перепровожу расходную, а она видит свои движения. Как исправить?
Процедура ОбработкаПроведения(Отказ, Режим) Для Каждого ТекСтрокаТЧасть Из ТЧасть Цикл ТабОстатков = РегистрыНакопления.Партии.Остатки(Новый МоментВремени(Дата, Ссылка), Новый Структура("Товар", ТекСтрокаТЧасть.Товар), , ); КонецЦикла; КонецПроцедуры |
|||
1
DarKySiK
31.08.13
✎
09:29
|
Очистить Движения перед сбором. Или поставить удалять движения автоматически.
|
|||
2
Помогите
31.08.13
✎
09:30
|
Удалять автоматически при отмене проведения
Уже стоит |
|||
3
ILM
гуру
31.08.13
✎
09:41
|
Видит - Отмена проведения - Не видит - Проведение - Видит
Как нужно то? |
|||
4
Feunoir
31.08.13
✎
09:42
|
Отмена проведения и перепроведение - разные понятия.
|
|||
5
Помогите
31.08.13
✎
09:43
|
Сейчас покопался, оказалось что видит еще и движения более поздних документов. А мне нужно получить остатки на момент проведения. Где у меня ошибка?
|
|||
6
DarKySiK
31.08.13
✎
09:43
|
(2) смотри список вариантов удаления движений внимательно.
|
|||
7
Помогите
31.08.13
✎
09:44
|
(6) Спасибо!" ! !
В окошко не вся надпись влезла, хотя на форум я всю целиком скопировал, но сам не прочитал. |
|||
8
Помогите
31.08.13
✎
09:46
|
(5) Это я опять ошибся. При перепроведении документ вставал на текущую дату, и становился позже всех, так что все правильно
|
|||
9
Dmitry1c
31.08.13
✎
10:23
|
Движения.Остатки.Записать();
Движения.Остатки.Записывать = Истина; Удачи на спеце. |
|||
10
DEVIce
31.08.13
✎
10:34
|
За то, что написано в (0) надо отрывать руки. Выбери остатки по табличной части одним запросом. В качестве момента времени укажи границу на документ с параметром "Исключая".
|
|||
11
Помогите
31.08.13
✎
10:59
|
(10) >>В качестве момента времени укажи границу на документ с параметром "Исключая".
Как это сделать? Там есть параметр Период, Исключая не нашел |
|||
12
Помогите
31.08.13
✎
11:06
|
Запрос.Текст =
"ВЫБРАТЬ | ПартииОстатки.Номенклатура, | ПартииОстатки.Партия, | ПартииОстатки.КоличествоОстаток, | ПартииОстатки.СуммаОстаток |ИЗ | РегистрНакопления.Партии.Остатки(&Граница, Номенклатура В (&СписокТоваров)) КАК ПартииОстатки"; Запрос.УстановитьПараметр("Граница", Новый Граница(Ссылка, ВидГраницы.Исключая ) ); Так? |
|||
13
DarKySiK
31.08.13
✎
11:38
|
Летс гугл! етить... ать.. http://help1c.com/faq/view/503.html
|
|||
14
DEVIce
31.08.13
✎
12:24
|
(12) Приблизительно так. Только можно на список товаров передавать, в делать соединение с табличной частью документа или в одном запросе сначала получить табличную часть во временную таблицу и указать как список товаров в параметрах. Так будет значительно быстрее работать.
|
|||
15
DEVIce
31.08.13
✎
12:25
|
Кстати. Если мне память не изменяет, то в запросе с виртуальной таблицей остатков по умолчанию исключается граница.
|
|||
16
Помогите
31.08.13
✎
12:52
|
Вот так:
ВЫБРАТЬ ПартииОстатки.Партия КАК Партия, ЕСТЬNULL(ПартииОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ПартииОстатки.СуммаОстаток КАК СуммаОстаток, РасходнаяНакладнаяТЧасть.Количество КАК Количество, РасходнаяНакладнаяТЧасть.Сумма КАК Сумма, РасходнаяНакладнаяТЧасть.Номенклатура КАК Номенклатура ИЗ Документ.РасходнаяНакладная.ТЧасть КАК РасходнаяНакладнаяТЧасть ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Партии.Остатки(&Граница, ) КАК ПартииОстатки ПО РасходнаяНакладнаяТЧасть.Номенклатура.Ссылка = ПартииОстатки.Номенклатура.Ссылка ГДЕ (ПартииОстатки.КоличествоОстаток > 0 ИЛИ ПартииОстатки.КоличествоОстаток ЕСТЬ NULL ) И РасходнаяНакладнаяТЧасть.Ссылка = &Ссылка ИТОГИ СУММА(КоличествоОстаток), СУММА(СуммаОстаток), СУММА(Количество), СУММА(Сумма) ПО Номенклатура, Партия |
|||
17
DEVIce
31.08.13
✎
13:17
|
(16) Вот так вот не надо писать: РасходнаяНакладнаяТЧасть.Номенклатура.Ссылка = ПартииОстатки.Номенклатура.Ссылка
Достаточно сделать: РасходнаяНакладнаяТЧасть.Номенклатура = ПартииОстатки.Номенклатура Поле Номеклатура это уже ссылка. Если после точки еще указать Ссылка, то на каждую такую хрень будет соединение, что конечно не в лучшую сторону скажется на производительности. |
|||
18
DEVIce
31.08.13
✎
13:20
|
И еще. Лучше все-таки список номенклатуры передавать в качестве параметра в виртуальную таблицу. Т.е. в запросе должно быть две выборки. Одна получает список номенклатуры из табличной части документа и запихивает его в таблицу, а вторая выборка получает остатки, где таблица со списком номенклатуры передается в качестве параметра. При этом, если надо и некие параметры из табличной части, то соединение тоже оставляем. Опять же в секции ГДЕ написана фигня. Щас дам тебе запрос.
|
|||
19
DEVIce
31.08.13
✎
13:26
|
Вот так должно быть:
ВЫБРАТЬ РасходнаяНакладнаяТЧасть.Номенклатура КАК Номенклатура ПОМЕСТИТЬ СписокНоменклатуры ИЗ Документ.РасходнаяНакладная.ТЧасть КАК РасходнаяНакладнаяТЧасть ГДЕ РасходнаяНакладнаяТЧасть.Ссылка = &Ссылка; ВЫБРАТЬ ПартииОстатки.Партия КАК Партия, СУММА(ЕСТЬNULL(ПартииОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток, СУММА(ПартииОстатки.СуммаОстаток) КАК СуммаОстаток, СУММА(РасходнаяНакладнаяТЧасть.Количество) КАК Количество, СУММА(РасходнаяНакладнаяТЧасть.Сумма) КАК Сумма, РасходнаяНакладнаяТЧасть.Номенклатура КАК Номенклатура ИЗ Документ.РасходнаяНакладная.ТЧасть КАК РасходнаяНакладнаяТЧасть ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Партии.Остатки(&Граница, Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ СписокНоменклатуры)) КАК ПартииОстатки ПО РасходнаяНакладнаяТЧасть.Номенклатура = ПартииОстатки.Номенклатура ГДЕ ЕСТЬNULL(ПартииОстатки.КоличествоОстаток, 0) > 0 И РасходнаяНакладнаяТЧасть.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ПартииОстатки.Партия, РасходнаяНакладнаяТЧасть.Номенклатура |
|||
20
DEVIce
31.08.13
✎
13:27
|
Только вместо: СУММА(ПартииОстатки.СуммаОстаток) КАК СуммаОстаток
Надо: СУММА(ЕСТЬNULL(ПартииОстатки.СуммаОстаток, 0)) КАК СуммаОстаток Ошибся трохи. |
|||
21
Помогите
31.08.13
✎
16:48
|
(20) Я специально так сделал, потому что когда ПартииОстатки.КоличествоОстаток не NULL, тогда и ПартииОстатки.СуммаОстаток тоже не NULL. А условие ЕСТЬNULL(ПартииОстатки.КоличествоОстаток, 0) > 0 отсекает все ПартииОстатки.КоличествоОстаток и ПартииОстатки.СуммаОстатоксо значением NULL
Или я ошибся? |
|||
22
Помогите
31.08.13
✎
16:52
|
(17) Спасибо! !! Это я прохлопал.
|
|||
23
Помогите
31.08.13
✎
16:57
|
(18) Вообще спасибо! ! !1 Это не слишком для теста на спеца?
Куда деньги слать? |
|||
24
DEVIce
31.08.13
✎
16:57
|
(21) У тебя нет "не NULL", у тебя как раз на NULL проверка. По сути, в данном случае, если при соединении с партиями есть NULL, это тоже самое что 0. У тебя же получается ерунда. Типа берем все положительные остатки и всю ту номенклатуру у которой остаток не просто нулевой, а в принципе никогда его не было (нет записей в регистре). Чем отсутствие записей в регистре отличается от нулевого количества, лично мне не понятно. Может у тебя какая-то другая логика?
|
|||
25
DEVIce
31.08.13
✎
16:59
|
(23) Да какие деньги? Тебе от чистого сердца помогли, для чего форумы и нужны. Но если денег много и не жалко, то можешь заслать на номер +79134523412. :)
|
|||
26
GROOVY
31.08.13
✎
17:14
|
(15) За исключением оперативного проведения.
|
|||
27
Помогите
31.08.13
✎
18:38
|
(24) Забыл. У меня дальше в коде есть проверка на КоличествоОстаток > 0.
|
|||
28
Помогите
31.08.13
✎
18:39
|
(25) Денег не много, но как иначе отблагодарить не знаю.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |