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

Ошибка при выполнении обработчика - 'ОбработкаПроведения'

Автор DK502, 25 авг 2014, 12:23

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

DK502

Всем привет! При попытке проведения документа "Движение топлива" вылезает ошибка
Ошибка при выполнении обработчика - 'ОбработкаПроведения' {Документ.СписаниеНефтепродуктов1(49)}: Значение не является значением объектного типа (Пустая)
            Если НЕ Стр.ДокументОприходования.Пустая() И (Стр.Количество > 0) Тогда

Текст процедуры выглядит так:

ПроверитьЗаполнение(Отказ);
   
   Остаток = РассчитатьОстаток();
   
   Таблица = Новый ТаблицаЗначений;
   Таблица.Колонки.Добавить("Контрагент");
   Таблица.Колонки.Добавить("ВидТоплива");
   Таблица.Колонки.Добавить("Количество");
   Таблица.Колонки.Добавить("ДокументОприходования");
   Таблица.Колонки.Добавить("Дата");
   
      
   Остатки = РегистрыНакопления.Партии;
   Фильтр = Новый Структура;
   Фильтр.Вставить("ВидТоплива",ВидТоплива);
   Фильтр.Вставить("Контрагент", Контрагент);
   ТабОстатков = Остатки.Остатки(Дата,Фильтр);
   ТабОстатков.Колонки.Добавить("Дата");
   Если ТабОстатков.Количество() <> 0 Тогда
      Для Каждого Стр Из ТабОстатков Цикл
         Если НЕ Стр.ДокументОприходования.Пустая() И Стр.Количество > 0 Тогда
            Стр.Дата = Стр.ДокументОприходования.Дата;
            НоваяСтрока = Таблица.Добавить();
            НоваяСтрока.Контрагент = Контрагент;
            НоваяСтрока.ВидТоплива = ВидТоплива;
            НоваяСтрока.Количество = Стр.Количество;
            НоваяСтрока.Дата = Стр.Дата;
            НоваяСтрока.ДокументОприходования = Стр.ДокументОприходования;
         КонецЕсли;
      КонецЦикла;
   КонецЕсли;
   Таблица.Сортировать("Дата");

Когда ставлю точку останова, то в строке
Если НЕ Стр.ДокументОприходования.Пустая() И (Стр.Количество > 0) Тогда

Стр.ДокументОприходования.Пустая() = Ложь
Стр.Количество = 0.

Значит, дело всё же в Стр.Количество? Т.к. условие 0>0 не выполняется, поэтому он не хочет выполняться? Или в чём дело? Подскажите, пожалуйста.

morph1991

Цитата: DK502 от 25 авг 2014, 12:23
Всем привет! При попытке проведения документа "Движение топлива" вылезает ошибка
Ошибка при выполнении обработчика - 'ОбработкаПроведения' {Документ.СписаниеНефтепродуктов1(49)}: Значение не является значением объектного типа (Пустая)
            Если НЕ Стр.ДокументОприходования.Пустая() И (Стр.Количество > 0) Тогда

Текст процедуры выглядит так:

ПроверитьЗаполнение(Отказ);
   
   Остаток = РассчитатьОстаток();
   
   Таблица = Новый ТаблицаЗначений;
   Таблица.Колонки.Добавить("Контрагент");
   Таблица.Колонки.Добавить("ВидТоплива");
   Таблица.Колонки.Добавить("Количество");
   Таблица.Колонки.Добавить("ДокументОприходования");
   Таблица.Колонки.Добавить("Дата");
   
      
   Остатки = РегистрыНакопления.Партии;
   Фильтр = Новый Структура;
   Фильтр.Вставить("ВидТоплива",ВидТоплива);
   Фильтр.Вставить("Контрагент", Контрагент);
   ТабОстатков = Остатки.Остатки(Дата,Фильтр);
   ТабОстатков.Колонки.Добавить("Дата");
   Если ТабОстатков.Количество() <> 0 Тогда
      Для Каждого Стр Из ТабОстатков Цикл
         Если НЕ Стр.ДокументОприходования.Пустая() И Стр.Количество > 0 Тогда
            Стр.Дата = Стр.ДокументОприходования.Дата;
            НоваяСтрока = Таблица.Добавить();
            НоваяСтрока.Контрагент = Контрагент;
            НоваяСтрока.ВидТоплива = ВидТоплива;
            НоваяСтрока.Количество = Стр.Количество;
            НоваяСтрока.Дата = Стр.Дата;
            НоваяСтрока.ДокументОприходования = Стр.ДокументОприходования;
         КонецЕсли;
      КонецЦикла;
   КонецЕсли;
   Таблица.Сортировать("Дата");

Когда ставлю точку останова, то в строке
Если НЕ Стр.ДокументОприходования.Пустая() И (Стр.Количество > 0) Тогда

Стр.ДокументОприходования.Пустая() = Ложь
Стр.Количество = 0.

Значит, дело всё же в Стр.Количество? Т.к. условие 0>0 не выполняется, поэтому он не хочет выполняться? Или в чём дело? Подскажите, пожалуйста.

Попробуй заменить Стр.ДокументОприходования.Пустая() на ПустаяСтрока(Стр.ДокументОприходования)

TreeDogNight

Попробуй так
Если ЗначениеЗаполнено(Стр.ДокументОприходования)

LexaK

ну-ну
Стр.ДокументОприходования - скорее всего имеет составной тип данных, и может быть не заполнен в регисте, соответственно иметь значение = Неопределено.
Функция ЗначениеЗаполнено() будет ругаться в этом случае.
Поэтому проверку условия надо начинать с этого
...
Если Стр.ДокументОприходования <> Неопределено и ЗначениеЗаполнено(Стр.ДокументОприходования) ...
...
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск