Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> создание нового документа в процедуре ОбработкаПроведения()          
onsamuy Подменю пользователя
сообщение 02.07.12, 16:49
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 265
Спасибо сказали: 71 раз
Рейтинг: 0

Конфигурация УТ 2.3.3.4
Может я и повторюсь, но не выходит сделать следующее: в процедуре ОбработкаПроведения() документа реализация товаров и услуг, сваял процедуру, которая создает документ Оприходование товаров, если есть нехватка на складе.
код что то типо такой
Процедура ОбработкаПроведения(Отказ, РежимПроведения)

   //... стандартный код процедуры

   СоздатьПоступление();

КонецПроцедуры // ОбработкаПроведения()

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


как бы все красиво работает, открывается форма оприходования, заполняется недостающим товаром, но... при проведении ругается

{ОбщийМодуль.РаботаСДиалогами(1164)}: Ошибка при вызове метода контекста (ЭтоНовый): Документ не выбран
Если ДокументОбъект.ЭтоНовый() Тогда
по причине:
Документ не выбран

И не только при проведении... вобщем в отладчике в форме документа (например при изменении склада) смотрю ЭтотОбъект - значение пустое... хотя ЭтотОбъект - тип документобъект, хранит все реквизиты документа, все вроде есть...
есть подозрение на транзакции, возможно не стоит создавать док в процедуре ОбработкаПроведения()



Сообщение отредактировал logist - 02.07.12, 21:02

logist Подменю пользователя
сообщение 02.07.12, 21:12
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

1. А нафига создавать документ, открывать форму а потом заполнять его. Не логичней ли сначала заполнить док, потом (допустим если запись будет удачной, ну или все равно потом) открыть форму.
2. Вот так не надо делать:
   Если Запрос.Выполнить().Пустой()Тогда
        Возврат;
    КонецЕсли;
    
ВыборкаЗапроса = Запрос.Выполнить().Выбрать();

надо так:
Результат = Запрос.Выполнить();
   Если Результат.Пустой()Тогда
        Возврат;
    КонецЕсли;
    
ВыборкаЗапроса = Результат.Выбрать();


А по поводу ошибки, из приведенного кода и текста ошибки не понятно где возникает ошибка (в каком из документов), соответственно ответить на вопрос никак...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: onsamuy,

Zaval Подменю пользователя
сообщение 03.07.12, 9:11
Сообщение #3

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(onsamuy @ 02.07.12, 17:49) *
возможно не стоит создавать док в процедуре ОбработкаПроведения()


Это старая методическая ошибка. Ладно, в семерке деваться особо было некууда(
Щас-то почему ПодпискуНаСобытие не использовать?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 22:57
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!