8.х В обработке проведения, сохранить документ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Student15, 22 апр 2011.

  1. TopicStarter Overlay
    Student15
    Offline

    Student15 Опытный в 1С

    Регистрация:
    10 апр 2011
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    Добрый День!
    Подскажите, как в обработке заполнения, сохранять документ?
    Чтобы при заполнении документа, можно было следующий документ на основании этого же заполнять!
    А то приходиться заполненный документ записывать, и только после водить на основании!

    Код:
    Процедура ОбработкаЗаполнения(Основание)
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |	ЦеныНоменклатурыСрезПоследних.Цена,
    |	ВложенныйЗапрос.Номенклатура,
    |	ВложенныйЗапрос.Количество
    |ИЗ
    |	(ВЫБРАТЬ
    |		ЗаказПокупателя1Товары.Номенклатура КАК Номенклатура,
    |		СУММА(ЗаказПокупателя1Товары.Количество) КАК Количество,
    |		ЗаказПокупателя1Товары.Ссылка КАК Ссылка
    |	ИЗ
    |		Документ.ЗаказПокупателя1.Товары КАК ЗаказПокупателя1Товары
    |	ГДЕ
    |		ЗаказПокупателя1Товары.Ссылка = &Ссылка
    |	
    |	СГРУППИРОВАТЬ ПО
    |		ЗаказПокупателя1Товары.Номенклатура,
    |		ЗаказПокупателя1Товары.Ссылка) КАК ВложенныйЗапрос
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    |				&ДатаДокумента,
    |				Номенклатура В
    |					(ВЫБРАТЬ
    |						ЗаказПокупателя1Товары.Номенклатура
    |					ИЗ
    |						Документ.ЗаказПокупателя1.Товары КАК ЗаказПокупателя1Товары
    |					ГДЕ
    |						ЗаказПокупателя1Товары.Ссылка = &Ссылка)) КАК ЦеныНоменклатурыСрезПоследних
    |		ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    |	ЦеныНоменклатурыСрезПоследних.Цена,
    |	ВложенныйЗапрос.Номенклатура,
    |	ВложенныйЗапрос.Количество,
    |	ВложенныйЗапрос.Ссылка";
    Запрос.УстановитьПараметр("ДатаДокумента",Дата);			 
    Запрос.УстановитьПараметр("Ссылка",Основание);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    
    Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказПокупателя1") Тогда
    // Заполнение шапки
    Контрагент = Основание.Контрагент;
    НоваяСтрока = ПоступившийТовар.Добавить();
    НоваяСтрока.Количество = Выборка.Количество;
    НоваяСтрока.Номенклатура = Выборка.Номенклатура;
    НоваяСтрока.Цена=Выборка.Цена;
    НоваяСтрока.Сумма=Выборка.Количество*Выборка.Цена;
    КонецЕсли;
    КонецЦикла;
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |	ЗаказПокупателя1Услуги.Наименование,
    |	ЦеныНоменклатурыСрезПоследних.Цена
    |ИЗ
    |	Документ.ЗаказПокупателя1.Услуги КАК ЗаказПокупателя1Услуги
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаДокумента, ) КАК ЦеныНоменклатурыСрезПоследних
    |		ПО ЗаказПокупателя1Услуги.Наименование = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |ГДЕ
    |	ЗаказПокупателя1Услуги.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |	ЗаказПокупателя1Услуги.Наименование,
    |	ЦеныНоменклатурыСрезПоследних.Цена";
    Запрос.УстановитьПараметр("ДатаДокумента",Дата);			 
    Запрос.УстановитьПараметр("Ссылка",Основание);
    Выборка=Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    
    //Для Каждого ТекСтрокаУслуги Из Основание.Услуги Цикл
    
    Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказПокупателя1") Тогда
    НоваяСтрока = Услуги1.Добавить();
    НоваяСтрока.Наименование = Выборка.Наименование;
    НоваяСтрока.Цена=Выборка.Цена;
    НоваяСтрока.Сумма=Выборка.Цена;
    
    КонецЕсли;
    КонецЦикла;
    
    
    КонецПроцедуры      
    
    
  2. afinogen
    Offline

    afinogen Опытный в 1С

    Регистрация:
    28 фев 2011
    Сообщения:
    160
    Симпатии:
    0
    Баллы:
    26
    на мой взгляд лучше всего сделать обработку которая про формировала и проводила документы на основании одного основания, либо как вариант:
    после того когда создали 1-й документ писать что то типа:
    Код:
    
    НовыйДокумент = Документы.[Имя документа].СоздатьДокумент();
    
    //и далее уже заполняйте все нужные вам реквизиты и т.д.
    
    НовыйДокумент.Записать()
    
    
    
  3. TopicStarter Overlay
    Student15
    Offline

    Student15 Опытный в 1С

    Регистрация:
    10 апр 2011
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    Идея интерессная, но разве можно в одной функции скажем ОбработкаПроведения(Отказ, Режим) воткнуть еще и ОбработкуЗаполнения(Основание)?
    И как сослаться на НовыйДокумент = Документы.[Имя документа].СоздатьДокумент(); - именно на тот документ, которой заполняется (Выборка.Ссылка - что то не помог)!

Поделиться этой страницей