Здравствуйте, есть документы расходная и приходная накладные, у них есть 2 статуса "введен" и "проверен бухгалтером". Есть обработка которая автоматически ставит статус "проверен бухгалтером" и проводит их. Некоторые документы проводит а некоторые нет, но вручную нормально ставится статус и проводится. С чем может быть связано что некоторые документы не хочет проводить? Так же почему то на некоторых документах при открытии ставится статус модифицированности хотя изменения не вносятся, возможно из за этого? Отладчиком ругается на код:
Пишет "Значение не является значением объектного типа (Пустая).
Бухгалтерия 8.3 (8.3.6.2299)
Если (ДокументБух.Пустая()) или (ДокументБух.Дата=Дата(1,1,1,0,0,0)) тогда
НовыйДок = Документы.ПеремещениеТоваров.СоздатьДокумент();
Иначе
НовыйДок = ДокументБух.ПолучитьОбъект();
Если НовыйДок.ПометкаУдаления тогда
НовыйДок.УстановитьПометкуУдаления(Ложь);
НовыйДок.Записать();
КонецЕсли;
НовыйДок.Товары.Очистить();
КонецЕсли;
ПоказатьПишет "Значение не является значением объектного типа (Пустая).
Бухгалтерия 8.3 (8.3.6.2299)
По теме из базы знаний
- Сравнение проводок по документам за период (SQL)
- Как откорректировать остатки отпусков и как изменить количество дней отпуска в год с определенной даты
- Перенос данных из УПП 1.3 / КА 1.1 в БП 3. Переносятся документы, справочники и начальные остатки
- Загрузка данных интернет банкинга БелВЭБ
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Найденные решения
еще чуть-чуть и закончится всякое желание помогать...
ВХК_МодульДляПриходнойНакладной.СоздатьПеремещение1(ДокументБух... - это конечно здорово, но...
покажите мне строчку кода где у вас присваивается значение переменной ДокументБух
т.е. ДокументБух=... или ДокументБух.Получить... или откуда у вас ваще берется эта переменная?
ВХК_МодульДляПриходнойНакладной.СоздатьПеремещение1(ДокументБух... - это конечно здорово, но...
покажите мне строчку кода где у вас присваивается значение переменной ДокументБух
т.е. ДокументБух=... или ДокументБух.Получить... или откуда у вас ваще берется эта переменная?
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ну так значит в переменной "ДокументБух" явно не документ, надо проверять что там прежде чем обращаться к нему как к документу
(m-serg74) У него создается дочерний документ перемещение товаров. Если проводить вручную, то он показывает что создает документ перемещение товаров. Еще заметил, что он не проводит по одному только контрагенту. По остальным все отлично. Кажется нашел косяк, в контрагентах заведено 2 одинаковых магазина, и в документ заносится скорее всего не правильный магазин. Сейчас проверю.
господи, да покажите вы как и где у вас заполняется ДокументБух... сразу отпадет большинство вопросов и предположений
ДокументБух получается он не определяет переменную. Может быть из за того, что ставится статус модифицированности документа?
Процедура СоздатьПеремещение1(ДокументБух,Дата,Номер,Товары,Организация,Клиент,ВидТоваров) Экспорт //процедура только для создания перемещений Булочная
Если (ДокументБух.Пустая()) или (ДокументБух.Дата=Дата(1,1,1,0,0,0)) тогда
НовыйДок = Документы.ПеремещениеТоваров.СоздатьДокумент();
Иначе
НовыйДок = ДокументБух.ПолучитьОбъект();
Если НовыйДок.ПометкаУдаления тогда
НовыйДок.УстановитьПометкуУдаления(Ложь);
НовыйДок.Записать();
КонецЕсли;
НовыйДок.Товары.Очистить();
КонецЕсли;
Если организация.Пустая() тогда
НовыйДок.Организация = КОнстанты.ЕКС_ОсновнаяОрганизация.Получить();
Иначе
НовыйДок.Организация = Организация;
КонецЕсли;
НовыйДок.Номер = "Э"+СокрЛП(Номер);
НовыйДок.Дата = Дата;
НовыйДок.СкладПолучатель=Справочники.Склады.НайтиПоКоду("00015");
НовыйДок.СкладОтправитель=Справочники.Склады.НайтиПоКоду("00-000004");
//НовыйДок.Ответственный=
Для Каждого Строка из Товары Цикл
Если (Строка.Количество=0) или (Строка.Сумма=0) тогда Продолжить; КонецЕсли;
НоваяСтрока = НовыйДок.Товары.Добавить();
Если Строка.Товар.НоменклатураБух.Пустая() ТОгда
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Строка.Товар.Артикул);
Если Номенклатура.Пустая() тогда
Сообщить("Не нашел номенклатуру для товара "+СокрЛП(Строка.Товар));
Иначе
Об_Товар = Строка.Товар.ПолучитьОбъект();
Об_Товар.НоменклатураБух = Номенклатура;
Об_Товар.Записать();
КонецЕсли;
Иначе
Номенклатура =Строка.Товар.НоменклатураБух;
КонецЕсли;
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.ЕдиницаИзмерения = Номенклатура.ЕдиницаИзмерения;
НоваяСтрока.Количество = Строка.Количество * Строка.ЕдиницаИзмерения.Коэффициент * Строка.Товар.ЕКС_Вес;
НоваяСтрока.Коэффициент = 1;
НоваяСтрока.Цена = ?(НоваяСтрока.Количество=0,0,Строка.Сумма/(НоваяСтрока.Количество));
Если СокрЛП(Организация.Код) = "2" тогда //Хлебофф без НДС
НоваяСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
НоваяСтрока.НовыйСчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
Иначе
НоваяСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
НоваяСтрока.НовыйСчетУчета = ПланыСчетов.Хозрасчетный.ГотоваяПродукция;
КонецЕсли;
КонецЦикла;
ПровелДок = Истина;
Попытка
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Исключение
ПровелДок = Ложь;
КонецПопытки;
Если НЕ ПровелДок тогда
ПровелДок = Истина;
Попытка
НовыйДок.Записать(РежимЗаписиДокумента.Запись);
Исключение
ПровелДок = Ложь;
КонецПопытки;
КонецЕсли;
ДокРеализацияТиУ = НовыйДок.Ссылка;
КонецПроцедуры
Показать
где тут смайлик бьющийся головой об стену?
вы в процедуру передаете откуда-то ДокументБух... ОТКУДА??? и я так понимаю по скрину, что вы пытаетесь передавать не сам документ, а ссылку на него?
вы в процедуру передаете откуда-то ДокументБух... ОТКУДА??? и я так понимаю по скрину, что вы пытаетесь передавать не сам документ, а ссылку на него?
Процедура ОсновныеДействияФормыВторсырье(Кнопка)
Док = Документы.ЕКС_ПриходнаяНакладная.Выбрать(НачалоДня(ДатаНач),КонецДня(ДатаКон));
Пока док.Следующий() цикл
Если Док.СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером Тогда Продолжить; КонецЕсли;
Если Док.Проведен = ЛОЖЬ Тогда Продолжить; КонецЕсли;
Если Док.СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.Введен = Ложь Тогда Продолжить; КонецЕсли;
ОбДок = Док.ПолучитьОбъект();
ОбДок.СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером;
ОбДок.ЕКС_Редактор = СокрЛП(ПользователиКлиентСервер.ТекущийПользователь())+" " + ТекущаяДата();
Попытка
ОбДок.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(строка(док)+" "+строка(ОписаниеОшибки()));
возврат;
КонецПопытки;
Сообщить(Обдок);
КонецЦикла;
КонецПроцедуры
ПоказатьПередается с обработки
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог("Сумма");
РежимЗаписиДокумента.Проведение)И (СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером) и (СокрЛП(Организация.Код) = "1" или СокрЛП(Организация.Код) = "2") тогда//(СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером) и (Организация = Константы.ЕКС_ОсновнаяОрганизация.Получить()) тогда
Если Клиент<>Справочники.Контрагенты.НайтиПоКоду("00-000255") и ((СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером) и (СокрЛП(Организация.Код) = "1" или СокрЛП(Организация.Код) = "2")) тогда//(СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером) и (Организация = Константы.ЕКС_ОсновнаяОрганизация.Получить()) тогда
ТЗ_Товары = Товары.Выгрузить();
ВХК_МодульДляПриходнойНакладной.СоздатьДокументПостулпенияТиУ(ДокументБух,Дата,Номер,ТЗ_Товары,Организация,Клиент,ВидТоваров,ЕстьНДС);
КонецЕсли;
Если Клиент=Справочники.Контрагенты.НайтиПоКоду("00-000255") и ((СтатусДокумента = Перечисления.ЕКС_СтатусДокумента.ПроверенБухгалтером) и (СокрЛП(Организация.Код) = "1" или СокрЛП(Организация.Код) = "2")) тогда
ТЗ_Товары = Товары.Выгрузить();
ВХК_МодульДляПриходнойНакладной.СоздатьПеремещение1(ДокументБух,Дата,Номер,ТЗ_Товары,Организация,Клиент,ВидТоваров);
КонеЦЕсли;
Если (РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения) тогда
Если НЕ ДокументБух = Неопределено Тогда
Если НЕ ДокументБух = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка() тогда //или (ДокументБух.Дата=Дата(1,1,1,0,0,0))) тогда
ВХК_МодульДляПриходнойНакладной.УдалитьБухДокумент(ДокументБух);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьОтсюда идет вызов
еще чуть-чуть и закончится всякое желание помогать...
ВХК_МодульДляПриходнойНакладной.СоздатьПеремещение1(ДокументБух... - это конечно здорово, но...
покажите мне строчку кода где у вас присваивается значение переменной ДокументБух
т.е. ДокументБух=... или ДокументБух.Получить... или откуда у вас ваще берется эта переменная?
ВХК_МодульДляПриходнойНакладной.СоздатьПеремещение1(ДокументБух... - это конечно здорово, но...
покажите мне строчку кода где у вас присваивается значение переменной ДокументБух
т.е. ДокументБух=... или ДокументБух.Получить... или откуда у вас ваще берется эта переменная?
(20)Видать только тут..
А именно в процедуре по созданию перемещения.. там и я не вижу
(19)При чем тут откуда идет вызов? Вы же просите помощи не по процедуре обработки проведения?
Или в одной процедуре создана переменная, значит в остальных можно её не создавать, а просто брать из предыдущих процедур?
Насколько я понимаю, после слов: КонецПроцедуры программа не обязана помнить переменные оттуда. Это проведение документа.
Если (РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения) тогда
Если НЕ ДокументБух = Неопределено Тогда
Если НЕ ДокументБух = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка() тогда //или (ДокументБух.Дата=Дата(1,1,1,0,0,0))) тогда
ВХК_МодульДляПриходнойНакладной.УдалитьБухДокумент(ДокументБух);
КонецЕсли;
КонецЕсли;
КонецЕсли;
А именно в процедуре по созданию перемещения.. там и я не вижу
(19)При чем тут откуда идет вызов? Вы же просите помощи не по процедуре обработки проведения?
Или в одной процедуре создана переменная, значит в остальных можно её не создавать, а просто брать из предыдущих процедур?
Насколько я понимаю, после слов: КонецПроцедуры программа не обязана помнить переменные оттуда. Это проведение документа.
(Sokar) Получается что в него никакие значения не присваиваются. В другом коде где создается ПоступлениеТиУ и переменной ДокументБух присваивается как раз значение поступления акта. А в этом документе он ничего не присваивает этой переменной. Спасибо за помощь, разобрался))
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот