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

Создание на основании нескольких документов. УФ ЕРП

Автор Natain14, 30 мая 2018, 09:39

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

Natain14

Здравствуйте, подскажите, пожалуйста, можно как-то реализовать команду Ввести на основании так, чтобы на основании нескольких документов создавалось несколько документов. Например на основании 5 заказов 5 реализаций (т.е. не пять раз нажать создать на основании, а один)

alex0402

ну одного сделать так:
НоваяРеализация = Документы.Реализация.СоздатьДокумент();
НоваяРеализация.Заполнить(ДокументЗаказ);

но из каких соображений выбирать основания (что бы сделать 5 документов) - это зависит от задачи.
Спасибо за Сказать спасибо

Natain14

Цитата: alex0402 от 30 мая 2018, 10:12НоваяРеализация = Документы.Реализация.СоздатьДокумент();
НоваяРеализация.Заполнить(ДокументЗаказ);

но из каких соображений выбирать основания (что бы сделать 5 документов) - это зависит от задачи.

Суть задачи в том, чтобы вместо того, чтобы нажимать кнопку заполнить на основании 5 раз, выделить нужные документы основания, и нажать заполнить на основании один раз, а открылось сразу пять документов. Вопрос стоит в том, как это сделать на упр формах. Так не работает:
1) Метод заполнить не применим,
2) Скорее всего не даст открыть несколько форм не записанных документов одного типа
Можно как-то побороть эти два момента?


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   
   Для каждого Элемент из ПараметрКоманды Цикл

        //Получая форму объекта создаваемого документа, мы уже создаем этот объект
        ФормаДок = ПолучитьФорму("Документ.ОтборРазмещениеТоваров.ФормаОбъекта");

        //Далее мы получаем объект только, что созданной формы и помещаем её в переменную
        //В объекте содержатся все реквизиты (элементы) формы
        ДанныеФормы = ФормаДок.Объект;

        //Мы помещаем объект формы в переменную,
        //так как должны передать её в процедуру на сервере,
        //где нельзя изменять объект формы, зато можно править переменную содержащую его
        СоздатьНовыйДокумент(Элемент, ДанныеФормы);

        //После выполнения процедуры на сервере мы получаем изменную переменную ДанныеФормы,
        //которую необходимо передать в уже созданную нами форму
        КопироватьДанныеФормы(ДанныеФормы, ФормаДок.Объект);

        //Открываем результат выполнения обработки
        ФормаДок.Открыть();
    КонецЦикла;
   
КонецПроцедуры

&НаСервере
Процедура СоздатьНовыйДокумент(Элемент, НовыйОбъект)

    НовыйОбъект.Заполнить(Элемент);
   
КонецПроцедуры

alex0402

Цитата: Natain14 от 30 мая 2018, 10:311) Метод заполнить не применим,

Цитата: Natain14 от 30 мая 2018, 10:311) Метод заполнить не применим,
2) Скорее всего не даст открыть несколько форм не записанных документов одного типа

тогда нужно использовать

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначениеЗаполнения",ДанныеЗаполнения);
ОткрытьФорму(ИмяФормы,ПараметрыФормы);
Спасибо за Сказать спасибо

Natain14

Цитата: alex0402 от 30 мая 2018, 11:13
Цитата: Natain14 от 30 мая 2018, 10:311) Метод заполнить не применим,

Цитата: Natain14 от 30 мая 2018, 10:311) Метод заполнить не применим,
2) Скорее всего не даст открыть несколько форм не записанных документов одного типа

тогда нужно использовать

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗначениеЗаполнения",ДанныеЗаполнения);
ОткрытьФорму(ИмяФормы,ПараметрыФормы);


Это же не решает ни один из перечисленных вопросов. Или я не понимаю.
Форма открывается одна вместо пяти и притом пустая. Ну пустая это ладно, пропишу заполнение формы (хотя хотелось использовать стандартную обработку заполнения), но что делать с тем, что открывается один документ? Можно это как-то реализовать без записи документа?

alex0402

Цитата: Natain14 от 04 июн 2018, 13:54Это же не решает ни один из перечисленных вопросов. Или я не понимаю.
Форма открывается одна вместо пяти и притом пустая

что бы открывалось 5, нужно 5 раз вызвать ОткрытьФорму(); (в цикле или просто 5 раз подряд - не важно)
что бы открывалась не пустая, то ДанныеЗаполнения - тоже должны быть не пустые, структура , ссылка на что нибудь или еще что-то.

В новом объекте будет вызван обработчик ОбработкаЗаполнения(ДанныеЗаполнения).
естественно данные можно обработать и заполнить новый объект....
Спасибо за Сказать спасибо

Natain14

Цитата: alex0402 от 04 июн 2018, 14:11
Цитата: Natain14 от 04 июн 2018, 13:54Это же не решает ни один из перечисленных вопросов. Или я не понимаю.
Форма открывается одна вместо пяти и притом пустая

что бы открывалось 5, нужно 5 раз вызвать ОткрытьФорму(); (в цикле или просто 5 раз подряд - не важно)
что бы открывалась не пустая, то ДанныеЗаполнения - тоже должны быть не пустые, структура , ссылка на что нибудь или еще что-то.

В новом объекте будет вызван обработчик ОбработкаЗаполнения(ДанныеЗаполнения).
естественно данные можно обработать и заполнить новый объект....

А сами вы пробовали? У меня открывается одна незаполненная форма, хотя ПараметрКоманды - это массив из пяти ссылок

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   
   Для каждого Элемент из ПараметрКоманды Цикл
      
      ПараметрыФормы = Новый Структура;
      ПараметрыФормы.Вставить("ЗначениеЗаполнения",Элемент);
      ОткрытьФорму("Документ.ОтборРазмещениеТоваров.ФормаОбъекта",ПараметрыФормы);
        КонецЦикла;
   
КонецПроцедуры

KOI8-R

Цитата: Natain14 от 05 июн 2018, 12:10
...хотя ПараметрКоманды - это массив из пяти ссылок
Проверьте в отладчике на всякий случай. Мне кажется вы ошибаетесь.
Из того что я видел в последних ERP (2.4.3...) там очень много созданий из списка происходит только через открытие формы, и только одного документа. Все остальные система просто суммирует по табличным частям, т.е. документ один, а сумма общая.

alex0402

Цитата: Natain14 от 05 июн 2018, 12:10А сами вы пробовали? У меня открывается одна незаполненная форма, хотя ПараметрКоманды - это массив из пяти ссылок

итак по порядку:
1) У меня открывается одна
ЦитироватьОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)

есть параметр:
Цитировать<Уникальность> (необязательный)

Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск.
Значение по умолчанию: Ложь.

2) ПустаяФорма:
Цитата: Natain14 от 05 июн 2018, 12:10ПараметрыФормы = Новый Структура;
      ПараметрыФормы.Вставить("ЗначениеЗаполнения",Элемент);
собственно я не понимаю двух вещей:
1) что можно в документе заполнить из переменной элемент.
2) как можно получить пять разных документов , передавая один и тот же параметр для заполнения.

Добавлено: 05 июн 2018, 13:29


Цитата: Natain14 от 05 июн 2018, 12:10А сами вы пробовали?

я не могу все пробовать, к меня нет столько времени.
Спасибо за Сказать спасибо

Natain14

Цитата: alex0402 от 05 июн 2018, 13:28обственно я не понимаю двух вещей:
1) что можно в документе заполнить из переменной элемент.

Элемент - это не пустая ссылка на документ. Но почему-то когда заходит в обработку заполнения, то параметр ДанныеЗаполнения = неопределено.

Спасибо! С количеством форм помогли


Теги:

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

Рейтинг@Mail.ru

Поиск