Имя: Пароль:
1C
1С v8
Не могу разобраться с получение остатков
0 never_be
 
16.06.14
17:46
Есть такой запрос

        Запрос = Новый Запрос();
        Запрос.Текст = "ВЫБРАТЬ
                       |    уатПартииТоваровНаСкладахОстатки.Номенклатура,
                       |    уатПартииТоваровНаСкладахОстатки.Склад,
                       |    уатПартииТоваровНаСкладахОстатки.Партия КАК Партия,
                       |    уатПартииТоваровНаСкладахОстатки.КоличествоОстаток,
                       |    уатПартииТоваровНаСкладахОстатки.СтоимостьОстаток
                       |ИЗ
                       |    РегистрНакопления.уатПартииТоваровНаСкладах.Остатки(&Период, Номенклатура = &Номенклатура) КАК уатПартииТоваровНаСкладахОстатки
                       |ГДЕ
                       |    уатПартииТоваровНаСкладахОстатки.Склад <> &Склад
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    Партия";
        Запрос.УстановитьПараметр("Период",Дата);
        Запрос.УстановитьПараметр("Номенклатура",тек.Номенклатура);
        Запрос.УстановитьПараметр("Склад",СкладПолучатель);

Например строю на сегодня по номенклатуре "Кукла", так вот по отчетам на сегодня у меня есть их 5 штук, но в гребаном запрос вылазит 3 документа
1. Количество остаток - 2
2. Количество остаток - 2 (это уже списано)
3. Количество остаток - 5 (это реальная цифра)

Что за первые 2 записи ? особенно та которая без указания партии, как получать только реальные остатки с указанием партии ?
1 never_be
 
16.06.14
17:47
сори вот так
1. Количество остаток   -2
2. Количество остаток  +2 (это уже списано)
3. Количество остаток  +5 (это реальная цифра)
2 pavelul73
 
16.06.14
17:53
Напиши СУММА(уатПартииТоваровНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
3 censored
 
16.06.14
17:59
(0) как же это ты решил что первые 2 записи закрываются в 0 если среди них есть "особенно та которая без указания партии"

Приведи результат запроса полностью (все выбираемые поля, а не только количество)

и еще... уатПартииТоваровНаСкладахОстатки.Склад <> &Склад нужно бы вынести в параметры виртуальной таблицы
4 never_be
 
16.06.14
18:04
Вот так ?

        Запрос.Текст = "ВЫБРАТЬ
                       |    уатПартииТоваровНаСкладахОстатки.Номенклатура,
                       |    уатПартииТоваровНаСкладахОстатки.Склад,
                       |    уатПартииТоваровНаСкладахОстатки.Партия КАК Партия,
                       |    СУММА(уатПартииТоваровНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток,
                       |    уатПартииТоваровНаСкладахОстатки.СтоимостьОстаток
                       |ИЗ
                       |    РегистрНакопления.уатПартииТоваровНаСкладах.Остатки(&Период, Номенклатура = &Номенклатура) КАК уатПартииТоваровНаСкладахОстатки
                       |ГДЕ
                       |    уатПартииТоваровНаСкладахОстатки.Склад <> &Склад
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    Партия";

получаю ошибку
{(2, 2)}: Поле не входит в группу "уатПартииТоваровНаСкладахОстатки.Номенклатура"
<<?>>уатПартииТоваровНаСкладахОстатки.Номенклатура,
5 Волшебник недоучка
 
16.06.14
18:06
(&Период, Номенклатура = &Номенклатура И Склад = &Склад) - тоже поправь, а условие ГДЕ убери.
6 never_be
 
16.06.14
18:08
(3) Выше запрос полностью, у меня остатки на сегодня 5 штук, но в запросе вылазит еще 2 которые были раньше списаны, если все сложить получится 5 но как мне такой результат парсить О_о
7 rendez-vous
 
16.06.14
18:08
(4) Не надо "сумма". Просто убери поле склад, если он тебе не нужен.
8 acsent
 
16.06.14
18:08
пересорт по партиям
9 DS
 
16.06.14
18:09
Это называется отсутствие контроля отрицательных остатков.
10 rendez-vous
 
16.06.14
18:10
(7) и поле партия
11 never_be
 
16.06.14
18:13
(7) Склад нужен
(10) Убрал
12 never_be
 
16.06.14
18:15
Запрос = Новый Запрос();
        Запрос.Текст = "ВЫБРАТЬ
                       |    уатПартииТоваровНаСкладахОстатки.Номенклатура,
                       |    уатПартииТоваровНаСкладахОстатки.Склад,
                       |    уатПартииТоваровНаСкладахОстатки.КоличествоОстаток,
                       |    уатПартииТоваровНаСкладахОстатки.СтоимостьОстаток
                       |ИЗ
                       |    РегистрНакопления.уатПартииТоваровНаСкладах.Остатки(&Период, Номенклатура = &Номенклатура И Склад <> &Склад) КАК уатПартииТоваровНаСкладахОстатки
                       |УПОРЯДОЧИТЬ ПО
                       |    Партия";
        Запрос.УстановитьПараметр("Период",Дата);
        Запрос.УстановитьПараметр("Номенклатура",тек.Номенклатура);
        Запрос.УстановитьПараметр("Склад",СкладПолучатель);

Тоже самое, в результате 3 записи, партия там где 2 давно уже списана.
-2
2
5
13 rendez-vous
 
16.06.14
18:15
(11) Теперь порядок?
14 never_be
 
16.06.14
18:15
(13) неа (12)
15 rendez-vous
 
16.06.14
18:16
(14) Это означает, что партия 2 шт. была принята на один склад, а списана с другого. Тебе все еще нужен склад?
16 never_be
 
16.06.14
18:17
Например до вчера у меня был 1 приход на 2 штуки, вчера вечером их списали, утром оприходовали 5 штук, вот я и хочу получить в итоге только партию на 5 штук, а мне вылазит - 2 +2 +5 в результате
17 Segate
 
16.06.14
18:17
(12) В консоли запросов, вкладка группировка, добавь СУММА(уатПартииТоваровНаСкладахОстатки.КоличествоОстаток)
18 never_be
 
16.06.14
18:19
(17) {(2, 2)}: Поле не входит в группу "уатПартииТоваровНаСкладахОстатки.Партия"
<<?>>уатПартииТоваровНаСкладахОстатки.Партия,
19 DS
 
16.06.14
18:19
>> вчера вечером их списали
Должны были их списать, а списали другое.
20 DS
 
16.06.14
18:20
Если партия не нужна - убери и сгруппируй.
21 rendez-vous
 
16.06.14
18:21
(18) У -2 и +2 склад один и тот же?
22 never_be
 
16.06.14
18:21
(21) да, а +5 другой
23 Segate
 
16.06.14
18:22
(18)Я думаю, что ты это делаешь не в конструкторе запросов, так ведь? ) А просто пытаешься вручную дописать.

Вот если бы ты сделал как тебе говорят, увидел бы, что все остальное автоматом бы попало в "Сгруппировать по"
24 never_be
 
16.06.14
18:22
(21) Я хочу получить остатки со всех складов и списать то что оприходовали раньше всего.
25 never_be
 
16.06.14
18:22
(23) ошибку выдает конструктор
26 rendez-vous
 
16.06.14
18:23
(22) Понятно. Разделение итогов, значит, поставили.
Тогда группируй. Для количества и стоимости пиши СУММА
Остальные поля включай в список группировок СГРУППИРОВАТЬ ПО.
27 DS
 
16.06.14
18:24
(24) "списать то что оприходовали раньше всего" подразумевает получение партии. При подобной системе учета сделать это не реально.
28 Segate
 
16.06.14
18:24
(25)ты прям руками нигде СУММА не прописываешь, а только жмешь на кнопочку">" и все равно ошибка? Не ВЕРЮ!(с)
29 never_be
 
16.06.14
18:26
(26) (28) вот - http://i.piccy.info/i9/682e02532bf7304d462bccc75bd93aab/1402928740/98320/585023/2014_06_16_05_25_34_pm.jpg поля партия нет, а оно меня шлет лесом
30 Enders
 
16.06.14
18:27
(0) судя из обсуждений в топике, фиг ты получишь актуальные партионные остатки(остатки с указанием партии) без правильного партионного учета.
А судя по -2,+2 он у тебя кривой.
31 Segate
 
16.06.14
18:28
(29) че ты нам рассказываешь, а упорядочиваешь ты по чему? Не по партии ли? )
32 rendez-vous
 
16.06.14
18:29
(29) Потому и шлет, что нет. Поле партия либо должно быть на той странице, что ты нам привел, либо его не должно быть нигде. И в УПОРЯДОЧИТЬ тоже.
33 Enders
 
16.06.14
18:30
+ к (30) Если уж пришли к тому, что партия не нужна, так может в сторону РН "ТоварыНаСкладах" посмотрите (или какая там у вас конфа)?
34 never_be
 
16.06.14
18:35
(31) ВСЕ ОЖИЛО ! Я просто удалил руками группировку, а в конструкторе она жила.
(26) Вот это помогло на 100%.
35 DS
 
16.06.14
18:43
(34) Интересно, чем это поможет, если стоит задача "списать то что оприходовали раньше всего".
36 Enders
 
16.06.14
18:49
(35) Это будет следующий вопрос/тема =)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший