| 
    
            
         
         | 
    
    
  | 
Как получить остатки без учета движений проводимого документа? | ☑ | ||
|---|---|---|---|---|
| 
    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) Денег не много, но как иначе отблагодарить не знаю.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |