Имя: Пароль:
1C
1С v8
Списание
0 sovsemnovichek
 
01.08.13
11:24
Почему не списывается со складов? Где ошибка? Списывает из воздуха

ВЫБРАТЬ
                   |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
                   |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
                   |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
                   |ПОМЕСТИТЬ Товар
                   |ИЗ
                   |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
                   |ГДЕ
                   |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ОстаткиНоменклатурыОстатки.Склад КАК Склад,
                   |    Товар.Номенклатура КАК Номенклатура,
                   |    Товар.Количество КАК Количество,
                   |    Товар.Сумма КАК Сумма,
                   |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                   |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СебестоимостьОстаток, 0) КАК СебестоимостьОстаток
                   |ИЗ
                   |    Товар КАК Товар
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(, ) КАК ОстаткиНоменклатурыОстатки
                   |        ПО Товар.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиНоменклатурыОстатки.Склад.Приоритет
                   |ИТОГИ
                   |    МАКСИМУМ(Количество),
                   |    МАКСИМУМ(Сумма),
                   |    СУММА(КоличествоОстаток),
                   |    СУММА(СебестоимостьОстаток)
                   |ПО
                   |    Номенклатура";
          Запрос.УстановитьПараметр("Ссылка",Ссылка);
        //  Запрос.УстановитьПараметр("Склад",Склад);
          
        Выборка = Запрос.Выполнить().Выбрать();
         Выборка.Следующий();
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
            N = Выборка.Количество - Выборка.КоличествоОстаток;
               Сообщить("Не хватает"+" "+N+" "+"товара" );
            Отказ = Истина;
        КонецЕсли;
        РасчетСебестоимости = (Выборка.СебестоимостьОстаток + Выборка.Сумма) / Выборка.КоличествоОстаток * Выборка.Количество;    
            
        Движение = Движения.ОстаткиНоменклатуры.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = Выборка.Номенклатура;
        Движение.Склад = Выборка.Склад;
        Движение.Количество = Выборка.Количество;
        Движение.Себестоимость = РасчетСебестоимости;
1 Лефмихалыч
 
модератор
01.08.13
11:28
потому, что в выборке в поле склад пусто. Сморти в регистр, откуда у тебя остатки без склада
2 Как страшно жить
 
01.08.13
11:28
наверное потому что измерение в регистре не заполнено
3 sovsemnovichek
 
01.08.13
11:31
идея в том, что списание идет по складам, склады упорядочены по приоритету, и я подумал, что раз я упорядочил их и списание пойдет по складу, у которого приоритет меньший, то зачем указывать склад в документе
4 Как страшно жить
 
01.08.13
11:32
(3) смотри регистр!
5 sovsemnovichek
 
01.08.13
13:36
сделал так
ВЫБРАТЬ
                   |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
                   |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
                   |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
                   |ПОМЕСТИТЬ Товар
                   |ИЗ
                   |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
                   |ГДЕ
                   |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ОстаткиНоменклатурыОстатки.Склад КАК Склад,
                   |    Товар.Номенклатура КАК Номенклатура,
                   |    Товар.Количество КАК Количество,
                   |    Товар.Сумма КАК Сумма,
                   |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                   |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СебестоимостьОстаток, 0) КАК СебестоимостьОстаток
                   |ИЗ
                   |    Товар КАК Товар
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(, ) КАК ОстаткиНоменклатурыОстатки
                   |        ПО Товар.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиНоменклатурыОстатки.Склад.Приоритет
                   |ИТОГИ
                   |    МАКСИМУМ(Количество),
                   |    МАКСИМУМ(Сумма),
                   |    СУММА(КоличествоОстаток),
                   |    СУММА(СебестоимостьОстаток)
                   |ПО
                   |    Номенклатура";
          Запрос.УстановитьПараметр("Ссылка",Ссылка);
          Запрос.УстановитьПараметр("Склад",Ссылка.Склад);
          
        Выборка = Запрос.Выполнить().Выбрать();
         Пока Выборка.Следующий()И Выборка.Количество <> 0 Цикл
        Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
            N = Выборка.Количество - Выборка.КоличествоОстаток;
               Сообщить("Не хватает"+" "+N+" "+"товара" );
            Отказ = Истина;
        КонецЕсли;
        РасчетСебестоимости = (Выборка.СебестоимостьОстаток + Выборка.Сумма) / Выборка.КоличествоОстаток * Выборка.Количество;    
            
        Движение = Движения.ОстаткиНоменклатуры.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = Выборка.Номенклатура;
        Движение.Склад = Склад;//Выборка.Склад;
        Движение.Количество = Выборка.Количество;
        Движение.Себестоимость = РасчетСебестоимости;
        КонецЦикла;

Он проверяет сразу два склада, но не списывает...
Я не понимаю, что нужно сделать
6 Как страшно жить
 
01.08.13
13:38
(5) см (4)
7 sovsemnovichek
 
01.08.13
13:40
блин...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой