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

Ошибка при проведении расходного документа

Автор Olegyaro, 02 сен 2015, 20:42

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

Olegyaro


<code>
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
   
         
       Движения.ОстаткиТоваров.Записывать = Истина;
      Движения.ОстаткиПоСкладам.Записывать = Истина;
        Запрос = Новый Запрос;
      Запрос.Текст =
      "Выбрать
      |   Номенклатура,
      |   Сумма(Количество) Как Количество,
      |   Минимум(НомерСтроки) Как НомерСтроки
      |   ПОМЕСТИТЬ ДокТч
      |   Из
      |   Документ.Расходная.Товары
      |Где
      |   Ссылка = &Ссылка И НЕ Номенклатура.Услуга
      |Сгруппировать По Номенклатура
      |;
      |Выбрать
      |   ДокТч.НомерСтроки,
      |   ДокТч.Номенклатура,
      |   ДокТч.Количество,
      |   ЕстьNULL(Остатки.КоличествоОстаток,0) Как КоличествоОстаток,
      |   ЕстьNULL(Остатки.СтоимостьОстаток,0) Как СтоимостьОстаток,
      |   ЕстьNULL(ОстаткиСКЛ.КоличествоОстаток,0)Как ОстатокНаСкладе
      |ИЗ
      |   ДокТч Как ДокТч
      |   
      |   ЛЕВОЕ СОЕДИНЕНИЕ
      |   РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, Номенклатура В (Выбрать Номенклатура Из ДокТЧ КАК ДокТч)) КАК Остатки
      |   По ДокТч.Номенклатура = Остатки.Номенклатура
      |   
      |   ЛЕВОЕ СОЕДИНЕНИЕ
      |   РегистрНакопления.ОстаткиПоСкладам.Остатки(&МоментВремени, Склад = &Склад
      |   И Номенклатура В (Выбрать Номенклатура Из ДокТч КАК ДокТч)) КАК ОстаткиСКЛ
      |   По ДокТч.Номенклатура = ОстаткиСКЛ.Номенклатура";
      
       Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
       Запрос.УстановитьПараметр("Ссылка", Ссылка);
       Запрос.УстановитьПараметр("Склад", Склад);
      
       Результат = Запрос.Выполнить();
      
       Выборка = Результат.Выбрать();
      
       Пока Выборка.Следующий() Цикл
         
          Если Выборка.Количество > Выборка.КоличествоОстаток Тогда
             Сообщение = Новый СообщениеПользователю;
             Сообщение.Текст = "Не хватает товара""" + Выборка.Номенклатура
                + """, из необходимых" +
               Выборка.Количество + "в наличии осталось только" +
               Выборка.КоличествоОствток;
            Сообщение.Поле = "Товары[" + (Выборка.НомерСтроки-1) + "].Количество";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            
            Отказ = Истина;
            Движения.ОстаткиТоваров.Записывать = Ложь;
            Движения.ОстаткиПоСкладам.Записывать = Ложь;
         КонецЕсли;
         
         Если Отказ Тогда
            Продолжить;
         КонецЕсли;
         
      
      Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
      Движение.Период = Дата;
      Движение.Номенклатура = Выборка.Номенклатура;
      Движение.Количество = Выборка.Количество;
      Движение.Стоимость = Выборка.Количество/Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;
      
   
      
      Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
      Движение.Период = Дата;
      Движение.Номенклатура = Выборка.Номенклатура;
      Движение.Количество = Выборка.Количество;
      Движение.Склад = Склад;

   КонецЦикла;

КонецПроцедуры
</code>
При попытке проведения документа выдает ошибку
<code>Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.Расходная.МодульОбъекта(81)}: Поле объекта не обнаружено (Склад)
      Движение.Склад = Склад;</code>
Пожалуйста ткните носом новичка, а то голову сломалui;;t;

Kironten

Проверьте есть ли в регистре накопления ОстаткиТоваров измерение склад.
Возможно оно зовется по другому.

А вообще не понятно, почему у вас дважды формируются движения по одному регистру:

Цитата: Olegyaro от 02 сен 2015, 20:42

Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Количество = Выборка.Количество;
Движение.Стоимость = Выборка.Количество/Выборка.КоличествоОстаток * Выборка.СтоимостьОстаток;

Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Количество = Выборка.Количество;
Движение.Склад = Склад;


Теги:

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

Рейтинг@Mail.ru

Поиск