Имя: Пароль:
1C
1С v8
В данной транзакции уже происходили ошибки! При попытке записи документа списания.
0 AlekseiYunni Podavvan
 
07.01.20
13:54
Здравствуйте. Добавляю в модуль документа Перемещение товаров процедуру которая запускается при проведении документа. Процедура создает на основании перемещения списание но при записи вылетает в ошибку:

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ВнешняяОбработка.RSS_СпецРежим.МодульОбъекта(327)}: Ошибка при вызове метода контекста (Получить)

по причине:
В данной транзакции уже происходили ошибки!

Подскажите пож в чем мой затуп?
1 AlekseiYunni Podavvan
 
07.01.20
13:54
Процедура СоздатьДокументСписанияПоНормамУбыли()
    
    Объект = ЭтотОбъект;
    
    Запрос = Новый Запрос("Выбрать
    |    Номенклатура,
    |    Процент
    |ИЗ РегистрСведений.НормыЕстественнойУбыли.СрезПоследних(&Дата1, Номенклатура В (&Номен))");
    Запрос.УстановитьПараметр("Дата1", КонецДня(Объект.Дата));
    Запрос.УстановитьПараметр("Номен", Объект.Товары.Выгрузить(,"Номенклатура"));
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Количество() Тогда
        Если Объект.СписаниеПоНормамУбыли.Пустая() Тогда
            
            ОДок = Документы.СписаниеТоваров.СоздатьДокумент();
            
            ДЗ = Ложь;
            
            ОДок.Организация =  Объект.Организация;
            ОДок.Склад =        Объект.СкладПолучатель;
            ОДок.Дата =         Объект.Дата+1;
            ОДок.ОтражатьВУправленческомУчете = Истина;
            ОДок.ОтражатьВБухгалтерскомУчете = Истина;
            ОДок.ОтражатьВНалоговомУчете = Истина;
            ОДок.Комментарий = "Списание по нормам естественной убыли на основании " + Строка(Объект);
            ОДок.НДСвСтоимостиТоваров = Перечисления.ДействиеНДСВСтоимостиТоваров.НеИзменять;
            ОДок.Ответственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный");
            ОДок.Подразделение = Объект.Подразделение;
            
            Пока Выборка.Следующий() Цикл
                Стр = Объект.Товары.Найти(Выборка.Номенклатура, "Номенклатура");
                
                НСтр = ОДок.Товары.Добавить();
                НСтр.Номенклатура = Выборка.Номенклатура;
                
                ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(НСтр, ОДок);

                НСтр.Количество = Стр.Количество * Выборка.Процент / 100;
                
                НСтр.ЕдиницаИзмерения = НСтр.Номенклатура.ЕдиницаХраненияОстатков;
                НСтр.Коэффициент = НСтр.ЕдиницаИзмерения.Коэффициент;
                
                НСтр.Цена = УправлениеРозничнойТорговлей.ПолучитьРозничнуюЦену(НСтр.Номенклатура,
                                                            НСтр.ХарактеристикаНоменклатуры,
                                                            ОДок.Склад, глЗначениеПеременной("ВалютаРегламентированногоУчета"),
                                                            ОДок.Дата, НСтр.ЕдиницаИзмерения);
                // Рассчитать реквизиты табличной части.
                ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НСтр, ОДок);
                
                НСтр.Качество = Справочники.Качество.Новый;
                
            КонецЦикла;
            
            Попытка
                ОДок.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                Сообщить(Строка(ОДок) + " проведен");
                
                ДЗ = Истина;
                
            Исключение
                Попытка
                    ОДок.Записать(РежимЗаписиДокумента.Запись);
                    Сообщить(Строка(ОДок) + " записан, но не проведен", СтатусСообщения.Важное);
                    
                    ДЗ = Истина;
                    
                Исключение
                    Сообщить("Документ списания не записан!", СтатусСообщения.Важное);
                КонецПопытки;
            КонецПопытки;
            
            Если ДЗ = Истина Тогда
                Объект.СписаниеПоНормамУбыли = ОДок.Ссылка;
                Объект.Записать(РежимЗаписиДокумента.Запись);
            КонецЕсли;
        Иначе
            Сообщить("Уже создан документ " + Строка(Объект.СписаниеПоНормамУбыли));
        КонецЕсли;    
    Иначе
        Сообщить("По данной номенклатуре нет норм убыли, документ списания не сформирован!");
    КонецЕсли;

    
КонецПроцедуры
2 TormozIT
 
гуру
07.01.20
16:21
3 vi0
 
07.01.20
17:48
(0) покажи этот код: {ВнешняяОбработка.RSS_СпецРежим.МодульОбъекта(327)}: Ошибка при вызове метода контекста (Получить)
Независимо от того, куда вы едете — это в гору и против ветра!