Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
30 сен 2024, 14:32

Процедура ПОдобратьПартии

Автор Chuchi, 18 апр 2011, 11:30

0 Пользователей и 3 гостей просматривают эту тему.

Chuchi

Переделала код

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ
               | ОстаткиМатериаловОстатки.Номенклатура,
               | ОстаткиМатериаловОстатки.Организация,
               | ОстаткиМатериаловОстатки.КоличествоОстаток КАК ОбщееКоличество,
               | ВЫБОР
               | КОГДА ОстаткиМатериаловОстатки.Организация = &Организация1
               | ТОГДА ОстаткиМатериаловОстатки.КоличествоОстаток
               | ИНАЧЕ 0
               | КОНЕЦ КАК ОстаткиПервые,
               | ВЫБОР
               | КОГДА ОстаткиМатериаловОстатки.Организация = &Организация2
               | ТОГДА ОстаткиМатериаловОстатки.КоличествоОстаток
               | ИНАЧЕ 0
               | КОНЕЦ КАК ОстаткиВторые
               |ИЗ
               | РегистрНакопления.ОстаткиМатериалов.Остатки КАК ОстаткиМатериаловОстатки
               |ГДЕ
               | ОстаткиМатериаловОстатки.Номенклатура = &Номенклатура";
  Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("организация1", организация1);
     Запрос.УстановитьПараметр("организация2", организация2);
  Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

   //  Запрос.УстановитьПараметр("Номенклатура",Номенклатура.ВыгрузитьКолонку("Номенклатура"));

ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
                 
    ВыборкаРезультатаЗапроса.Следующий();
    Остаток1 = ?(ВыборкаРезультатаЗапроса.ОбщееКоличество = NULL , 0,
ВыборкаРезультатаЗапроса.ОстаткиПервые);
Если ВыборкаРезультатаЗапроса.Количество > Остаток1 Тогда;
Разница= (ВыборкаРезультатаЗапроса.Количество - Остаток1);
ВыборкаРезультатаЗапроса.Следующий();
    Остаток2 = ?(ВыборкаРезультатаЗапроса.ОбщееКоличество = NULL , 0,
ВыборкаРезультатаЗапроса.ОстаткиВторые);
           
Если  Остаток2 >= Разница Тогда
Сообщить ("Списано с первого склада " + Остаток1 + " со второго склада " + Разница);
Иначе
Сообщить ("Не хватает товара! Остаток на складе1 " + Остаток1 + " Остаток на складе втором " + Остаток2);
КонецЕсли;
//КонецЕсли;
  Иначе
      Сообщить ("Списано с первого склада " + ВыборкаРезультатаЗапроса.Количество);
КонецЕсли
//КонецЦикла;



Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ОстаткиМатериаловОстатки.Номенклатура <<?>>= &Номенклатура

Chuchi

а если написать
Запрос.УстановитьПараметр("СписокНоменклатрыДокумента",Товары.ВыгрузитьКолонку("Номенклатура"));
Товары - так называется табличное Поле
то он говорит что такой не существует переменной

Klyacksa

Во-первых, потерялись параметры таблицы Остатков.
Во-вторых, Номенклатура у нас не одна (как я догадываюсь), значит, нужно не
|    ОстаткиМатериаловОстатки.Номенклатура = &Номенклатура";,
а
|    ОстаткиМатериаловОстатки.Номенклатура В(&Номенклатура)";
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

Цитироватьа если написать
Запрос.УстановитьПараметр("СписокНоменклатрыДокумента",Товары.ВыгрузитьКолонку("Номенклатура"));
Попробуйте тогда написать:
Запрос.УстановитьПараметр("СписокНоменклатрыДокумента",ЭлементыФормы.Товары.Значение.ВыгрузитьКолонку("Номенклатура"));

Напомните, это все мы сейчас делаем в форме или в модуле обработки?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Chuchi


Klyacksa

Тогда пробуйте так.
Еще проверьте, что написано в "данных" у табличного поля "товары"
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Chuchi

Вот так запрос проходит
Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ
               | ОстаткиМатериаловОстатки.Номенклатура,
               | ОстаткиМатериаловОстатки.Организация,
               | ОстаткиМатериаловОстатки.КоличествоОстаток КАК ОбщееКоличество,
               | ВЫБОР
               | КОГДА ОстаткиМатериаловОстатки.Организация = &Организация1
               | ТОГДА ОстаткиМатериаловОстатки.КоличествоОстаток
               | ИНАЧЕ 0
               | КОНЕЦ КАК ОстаткиПервые,
               | ВЫБОР
               | КОГДА ОстаткиМатериаловОстатки.Организация = &Организация2
               | ТОГДА ОстаткиМатериаловОстатки.КоличествоОстаток
               | ИНАЧЕ 0
               | КОНЕЦ КАК ОстаткиВторые
               |ИЗ
               |   РегистрНакопления.ОстаткиМатериалов.Остатки(&ТекущаяДата, ) КАК ОстаткиМатериаловОстатки
   |       
               |ГДЕ
               | ОстаткиМатериаловОстатки.Номенклатура В(&Номенклатура)";
 

  Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());
Запрос.УстановитьПараметр("организация1", организация1);
     Запрос.УстановитьПараметр("организация2", организация2);

    Запрос.УстановитьПараметр("Номенклатура",ЭлементыФормы.Товары.Значение.ВыгрузитьКолонку("Номенклатура"));




ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
                 
    ВыборкаРезультатаЗапроса.Следующий();
    Остаток1 = ?(ВыборкаРезультатаЗапроса.ОбщееКоличество = NULL , 0,
ВыборкаРезультатаЗапроса.ОстаткиПервые);
Если ЭлементыФормы.Товары.Значение.Количество > Остаток1 Тогда;
Разница= (ВыборкаРезультатаЗапроса.Количество - Остаток1);
ВыборкаРезультатаЗапроса.Следующий();
    Остаток2 = ?(ВыборкаРезультатаЗапроса.ОбщееКоличество = NULL , 0,
ВыборкаРезультатаЗапроса.ОстаткиВторые);
           
Если  Остаток2 >= Разница Тогда
Сообщить ("Списано с первого склада " + Остаток1 + " со второго склада " + Разница);
Иначе
Сообщить ("Не хватает товара! Остаток на складе1 " + Остаток1 + " Остаток на складе втором " + Остаток2);
КонецЕсли;
//КонецЕсли;
  Иначе
      Сообщить ("Списано с первого склада " + ВыборкаРезультатаЗапроса.Количество);
КонецЕсли
//КонецЦикла;



Теперь только ПОЛЕ ОБЪЕКТА НЕ ОБНАРУЖЕНО
{Обработка.РеализацияЧерезДругуюФирму.Форма.Форма.Форма(48)}: Поле объекта не обнаружено (Количество)
             Если ЭлементыФормы.Товары.Значение.Количество > Остаток1 Тогда;


Klyacksa

Вот здесь:
РегистрНакопления.ОстаткиМатериалов.Остатки(&ТекущаяДата, ) КАК ОстаткиМатериаловОстатки

Поставьте отбор по организации.

А где же цикл? Не правильно скопировали код или его там нет?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Chuchi


Chuchi

ВыборкаРезультатаЗапроса.Следующий();

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск