Задать вопрос
@Xris

Как передать выделенные строки в другой документ при создании на основании?

Как при создании на основании передать в документ только выделенные строки?61f36259eaeb7167171911.png
  • Вопрос задан
  • 2365 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
fosihas
@fosihas
Автоматизации учета на 1С.
Пишется отдельная команда. Через типовой "ввод на основании" не получится.
В команде ловите данные формы и отправиляте на создание документа.
ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка);
ОткрытьФорму("Документ.ПриходТовара.ФормаОбъекта", ПараметрыФормы);


При этом отработает процедура ОбработкаЗаполнения в модуле объекта и, соответственно, те алгоритмы заполнения, которые в ней описаны.

Либо кодом описываете создание Документа, без ввода на основнии.

Если "Выбрать" идет как реквизит объекта т.е. сохранятся в документе. То на уровне ОбработкаЗаполнения описывате обработку.
Ответ написан
Комментировать
nki
@nki
bezkart.ru готовая система лояльности
Выделенные строки это массив. Вот его и передавайте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Dementor
программист, архитектор, аналитик
Начнем с того, что задача решаема, но постановка странная. Ввод на основании - это стандартный механизм платформы, который можно вызвать или с формы документа, или с формы списка документов, или вообще программно из кода. И каждый раз используется один и тот же обработчик модуля объекта - ОбработкаЗаполнения. Только во втором и третьем случае не будет выделенных строк.

Почему появилась такая странная задача? Почему пользователь хочет переносить в новый документ случайные строки и не фиксировать в системе этот факт? Может ли быть, что из 10 строк пользователь выделял 7, но на одной строке ошибся и кликнул дважды, в результате чего в работу ушли всего 6 строк, а он и не заметил пока не стало слишком поздно..?

1) Грамотным решением было бы в документе при его записи в табличной части сразу сохранять отметки выбранных строк, а потом при вводе на основании уже работаем с этими отметками.

2) Если есть сценарий, что с документом работает некий начальник, который создает задания по частям для своих подчиненных, то использование стандартного ввода на основании не является корректным - нужно просто создать команду на форме, которая будет использовать выделенные строки и при создании нового документа может даже использовать его программное заполнение из стандартного ввода на основании.

3) Если я чего-то не понимаю и нужно делать именно так как написано, а так же есть храбрость ломать БСП, то тоже все очень просто. В модуле ПодключаемыйКомандыКлиент в процедуре ПродолжитьВыполнениеКоманды в параметре Контекст есть открытая форма, в которой у элемента формы доступно выделение строк. Тут нужно вставить свой код, что если попался нужный тип документа и передана форма объекта с выделенными строками, то формируем структуру, куда передаем ссылку на документ и массив номеров строк. Далее в обработчике ОбработкаЗаполнения заполняемого документа проверяем тип входящего параметра основания и если там наша структура, то далее заполняем стандартно по ссылке из реквизита структуры, а в табличную часть переносим только указанные в массиве строки.
Ответ написан
Комментировать
@RainDrops1996
Спустя несколько лет ...
1.Я думаю стоит отказаться от стандартного ввода на основании. Тогда данная задача будет сильно проще:

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

На сервере
Процедура СоздатьНаОснованииНаСервере(массивСтрок )
ДокументОперации = Документы.Операции.СоздатьДокумент();
НоваяСтрокаТабЧасти = ДокументОперации.ТЧ. Добавить();
Далее заполняем строку по Массиву строк
ДокументОперации .Записать();

КонецПроцедуры
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы