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

Создание заказаов на производство на основании заказа на производство.

Автор Елена1986, 08 сен 2015, 10:00

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

Елена1986

УПП 8.3 Здравствуйте!Не подскажете как дописать код, что бы при нажатии "сформировать" заказ на производство, формировалось сразу несколько(в моём случае два) заказа на производство?
Код
Процедура СформироватьВыполнитьНажатие(Сформировать)
   СоздатьДокументЗаказНаПроизводство(Основание);
   
КонецПроцедуры

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

Luzer1C

Немного неясно: что должно попадать в первый заказ на производство и что во второй?
Халамбалам.

Елена1986

Цитата: Luzer1C от 08 сен 2015, 10:18
Немного неясно: что должно попадать в первый заказ на производство и что во второй?
[/quot
Существует заказ на производство, на основании него создаются заказы на производство, из первого заказа выбираются материалы с видом воспроизводства (производство)  и вносятся во второй, из второго выбираются материалы с видом воспроизводства (производство) и помещаются в третий.
Как то так, здесь надо применят рекурсию.

Luzer1C

Не проще ли сделать так?
НовыйДокумент = Документы.ЗаказНаПроизводство.СоздатьДокумент();
// код по заполнению документа
НовыйДокумент.Записать();

НовыйДокумент1 = НовыйДокумент.Скопировать();
НовыйДокумент1.Записать();
// и так далее
Халамбалам.

Елена1986

Цитата: Luzer1C от 08 сен 2015, 10:58
Не проще ли сделать так?
НовыйДокумент = Документы.ЗаказНаПроизводство.СоздатьДокумент();
// код по заполнению документа
НовыйДокумент.Записать();

НовыйДокумент1 = НовыйДокумент.Скопировать();
НовыйДокумент1.Записать();
// и так далее


Не получается, создается один документ и выскакивает ошибка:
{Форма.Форма.Форма(15)}: Ошибка при вызове метода контекста (Записать)
НовыйДокумент1.Записать();
по причине:
Значение поля "Дата" не может быть пустой датой


Добавлено: 08 сен 2015, 11:09


Цитата: Luzer1C от 08 сен 2015, 10:58
Не проще ли сделать так?
НовыйДокумент = Документы.ЗаказНаПроизводство.СоздатьДокумент();
// код по заполнению документа
НовыйДокумент.Записать();

НовыйДокумент1 = НовыйДокумент.Скопировать();
НовыйДокумент1.Записать();
// и так далее

Извините не правильно записала, ошибки нет.
Создаёт два заказа, но они одинаковые, на основании первого заказа.

Luzer1C

ЦитироватьНемного неясно: что должно попадать в первый заказ на производство и что во второй?
[/quot
Существует заказ на производство, на основании него создаются заказы на производство, из первого заказа выбираются материалы с видом воспроизводства (производство)  и вносятся во второй, из второго выбираются материалы с видом воспроизводства (производство) и помещаются в третий.
Как то так, здесь надо применят рекурсию.
Как-то здесь надо написать чего хочу или чего нужно, а потом делать.
Халамбалам.

Елена1986

Цитата: Luzer1C от 08 сен 2015, 11:12
ЦитироватьНемного неясно: что должно попадать в первый заказ на производство и что во второй?
[/quot
Существует заказ на производство, на основании него создаются заказы на производство, из первого заказа выбираются материалы с видом воспроизводства (производство)  и вносятся во второй, из второго выбираются материалы с видом воспроизводства (производство) и помещаются в третий.
Как то так, здесь надо применят рекурсию.
Как-то здесь надо написать чего хочу или чего нужно, а потом делать.
Так Я же написала, что нужно создать заказы на производство на основании заказа на производство. Из существующего заказа на производство выбираются материалы с видом воспроизводства(производство) и помещаются в первый заказ на производство. Из первого заказа на производства выбираются материалы с видом воспроизводства(производство) и помещаются во второй заказ на производство.

Luzer1C

В цикл заключите создание НовыйДокумент1 и в цикле пропишите количество создаваемых документов.
Понятно?
Халамбалам.

Елена1986

Цитата: Luzer1C от 08 сен 2015, 11:40
В цикл заключите создание НовыйДокумент1 и в цикле пропишите количество создаваемых документов.
Понятно?
Для каждого Строка ИЗ НовыйДокумент1 Цикл
   
   Если Результат = Перечисления.ВидВоспроизводства.Производство Тогда
      Основание = НовыйДокумент.Ссылка;         
   КонецЕсли;
   Если Результат = Перечисления.ВидыВоспроизводстваНоменклатуры.Закупка Тогда
      Прервать;
   КонецЕсли;
КонецЦикла;   
Так?

Luzer1C

Для Сч = 1 По 10 Цикл
    НовыйДокумент1 = НовыйДокумент.Скопировать();
    НовыйДокумент1.Записать();
КонецЦикла;


Где 10 - количество скопированных документов
Халамбалам.

Теги:

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

Рейтинг@Mail.ru

Поиск