Имя: Пароль:
1C
1С v8
Проверка есть ли товар на складе
0 Nikitatita
 
29.07.17
13:46
Помогите решить проблему

Процедура ОбработкаПроведения(Отказ, Режим)
    Запрос = Новый Запрос;
    Запрос.Текст ="ВЫБРАТЬ
                  |    СведенияТовараОстатки.Наименование,
                  |    СведенияТовараОстатки.Склад,
                  |    СведенияТовараОстатки.КоличествоОстаток
                  |ИЗ
                  |    РегистрНакопления.СведенияТовара.Остатки(&Период, Склад=&Склад И Наименование В(&Наименование) КАК СведенияТовараОстатки";
                  Запрос.УстановитьПараметр("Склад", СкладОтправитель);
                  Запрос.УстановитьПараметр("Период", МоментВремени());
                  СПЗ=Новый СписокЗначений;
                  Для Каждого стр Из Номенклатура Цикл
                      СПЗ.Добавить(стр.Наименование);
                  КонецЦикла;
                  Запрос.УстановитьПараметр("Наименование", СПЗ);
                  Результат=Запрос.Выполнить();
                  ВыборкаДетальныйЗапрос=Результат.Выбрать();
                  Для Каждого стр Из Номенклатура Цикл
                      СтруктураПоиска = Новый Структура("Наименование", стр.Наименование);
                      Найден =Выборка.НайтиСледующий(СтруктураПоиска);
                      Если Найден Тогда
                          Если стр.Количество > ВыбораДетальныеЗаписи.КоличествоОстаток
                              Тогда
                              Сообщить("Недостаточно товаров");
                              Отказ = Истина;
                          КонецЕсли;
                          Иначе
                              Сообщить("Ничего не найдено");
                              Отказ = Истина;
                          КонецЕсли;
                      КонецЦикла;
                      Если Не Отказ Тогда
    // регистр СведенияТовара Расход
    Движения.СведенияТовара.Записывать = Истина;
    Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл
        Движение = Движения.СведенияТовара.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Наименование = ТекСтрокаНоменклатура.Наименование;
        Движение.Склад = СкладОтправитель;
        Движение.Количество = ТекСтрокаНоменклатура.Количество;
        Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
    КонецЦикла;  
    // регистр СведенияТовара Приход
    Движения.СведенияТовара.Записывать = Истина;
    Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл
        Движение = Движения.СведенияТовара.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.Период = Дата;
        Движение.Наименование = ТекСтрокаНоменклатура.Наименование;
        Движение.Склад = СкладПолучатель;
        Движение.Количество = ТекСтрокаНоменклатура.Количество;
        Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
    КонецЦикла;
    КонецЕсли;
КонецПроцедуры


{Документ.ПеремещениеТоваров.МодульОбъекта(20,16)}: Переменная не определена (Выборка)
                      Найден =<<?>>Выборка.НайтиСледующий(СтруктураПоиска); (Проверка: Сервер)
{Документ.ПеремещениеТоваров.МодульОбъекта(22,31)}: Переменная не определена (ВыбораДетальныеЗаписи)
                          Если стр.Количество > <<?>>ВыбораДетальныеЗаписи.КоличествоОстаток  (Проверка: Сервер)
1 МихаилМ
 
29.07.17
13:52
модераторы , исправьте секцию на v8
2 Работающий имитатор
 
29.07.17
14:01
У тебя нигде не определена переменная Выборка. Наверно ты где-то ошибся. Скорее всего, под давлением внешних отвлекающих факторов, скопировал фрагмент кода не оттуда. Попробуй посмотреть внимательно, что ты делаешь с результатом запроса?
Независимо от того, куда вы едете — это в гору и против ветра!