Заполнение табличной части одного документа - данными из табличных частей документов выбранных из ФормыВыбора. (управляемые формы)
В документе сделал кнопку - по ней открываю форму выбора с отбором . Задача в том чтобы пользователь выбрал в этом списке несколько нужных ему документов (через ctrl) и с этих документов заполнить табличную часть документа основного с которого делали выбор. Практичней - Приходную накладную заполнить данными из заказов поставщиков. Форму выбора открываю , что делать дальше без понятия.
Может я не то что то делаю - скажите как заполнить табличную часть Приходной накладной из Поступлений поставщиков?
Может я не то что то делаю - скажите как заполнить табличную часть Приходной накладной из Поступлений поставщиков?
Найденные решения
(18) Процедура пытается изменить передаваемое ей значение...
Попробуй так
Попробуй так
&НаКлиенте
Процедура ПолучитьМассивЗначенийВыбора(ВыбранныеЗначения, Парам2) Экспорт
ВыделенныеСтроки = ВыбранныеЗначения.ВыделенныеСтроки;
ЗаполнитьПоЗаказамПоставщикаНаСервере(ВыделенныеСтроки);
КонецПроцедуры
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
можно еще в форме выбора, через владельца формы заполнить.
Типа например такого
можно, перед закрытием
вызвать в форме обработку оповещения и там обработать.
типа такого
в форме которую вызываем по кнопке выбор, типа такого
Типа например такого
&НаКлиенте
Процедура Выбрать(Команда)
ЭтаФорма.ВладелецФормы.ТекущийЭлемент.ТекущиеДанные[ЭтаФорма.Параметры.ИмяПоля] = Элементы.ОстаткиВЯчейках.ТекущиеДанные.Ячейка;
Закрыть();
КонецПроцедуры
можно, перед закрытием
вызвать в форме обработку оповещения и там обработать.
типа такого
&НаКлиенте
Процедура ЗаполнитьУпаковку(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("МассивУпаковок", МассивУпаковок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ОткрытьФорму("Документ.СборкаЗапасов.Форма.ФормаВыбораУпаковки", ПараметрыФормы);
КонецПроцедуры
// Процедура - обработчик события ОбработкаОповещения формы.
//
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ВыбранаУпаковкаВПроизводство" Тогда
Если Параметр.Документ = Объект.Ссылка тогда
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСборкаЗапасов.Сборка") Тогда
// Если Объект.ЯчейкиВСтрокахЗапасов = Ложь И ЗначениеЗаполнено(Строка.Ячейка) И НЕ Объект.ЯчейкаЗапасов = Строка.Ячейка Тогда
Объект.ЯчейкиВСтрокахЗапасов = Истина;
Для Каждого СтрокаЗапасы из Объект.Запасы Цикл
СтрокаЗапасы.Ячейка = Объект.ЯчейкаЗапасов;
КонецЦикла;
ВидимостьЯчеекЗапасов();
// КонецЕсли;
...и так далее
Показатьв форме которую вызываем по кнопке выбор, типа такого
&НаКлиенте
Процедура Выбрать(Команда)
Оповестить("ВыбранаУпаковкаВПроизводство",Новый Структура("Документ, ВыходнойМассив",Документ, ВыходнойМассив));
Закрыть();
КонецПроцедуры
всё вроде бы нормально но ошибка , не понимаю немного почему, помогите :
ВыбранныеЗначения.ВыделенныеСтроки - это массив
Передаю на сервер чтобы заполнить таб часть документа значениями этого массива
Ругается - Поле объекта недоступно для записи (ВыделенныеСтроки) ,почему ? что не так?
&НаКлиенте
Процедура ПолучитьМассивЗначенийВыбора(ВыбранныеЗначения) Экспорт
ЗаполнитьПоЗаказамПоставщикаНаСервере(ВыбранныеЗначения.ВыделенныеСтроки);
КонецПроцедуры
ВыбранныеЗначения.ВыделенныеСтроки - это массив
Передаю на сервер чтобы заполнить таб часть документа значениями этого массива
&НаСервере
Процедура ЗаполнитьПоЗаказамПоставщикаНаСервере(МассивЗначений)
НовыйОбъект =объект.Ссылка.ПолучитьОбъект();
НовыйОбъект.Запасы.Очистить();
Для каждого ЭлементМассива из МассивЗначений Цикл
Для каждого СтрокаТабличнойЧасти из ЭлементМассива.Запасы Цикл
ЗаполнитьЗначенияСвойств(НовыйОбъект.Запасы.Добавить(),СтрокаТабличнойЧасти);
КонецЦикла;
КонецЦикла;
НовыйОбъект.Записать();
КонецПроцедуры
ПоказатьРугается - Поле объекта недоступно для записи (ВыделенныеСтроки) ,почему ? что не так?
(11) ну, для начала - если документ новый, у него ссылки еще нет.
И даже если это уже записанный в базу документ, то получение по ссылке и запись, будет равноценно тому, что другой пользователь отредактировал документ когда у вас он открыт. Оно не прокатит.
Не нужно ничего такого.
На сервере просто, Объект.Запасы.Очистить()
и т.д., никаких получений объекта не требуется.
А для того чтобы ссылку получить, и к примеру вызвать функции модуля объекта, то применять РеквизитФормыВЗначение
И даже если это уже записанный в базу документ, то получение по ссылке и запись, будет равноценно тому, что другой пользователь отредактировал документ когда у вас он открыт. Оно не прокатит.
Не нужно ничего такого.
На сервере просто, Объект.Запасы.Очистить()
и т.д., никаких получений объекта не требуется.
А для того чтобы ссылку получить, и к примеру вызвать функции модуля объекта, то применять РеквизитФормыВЗначение
стёр всю свою ересь по объекту, всё равно ругается на ВыбранныеСтроки. Может дело в том что я их получаю из формы выбора , но не меняю ж ничего
ФормаВыбора = ОткрытьФорму("Документ.ЗаказПоставщику.ФормаВыбора",Параметр, ЭтаФорма, ЭтаФорма, , , Новый ОписаниеОповещения("ПолучитьМассивЗначенийВыбора", ЭтаФорма));
ФормаВыбора = ОткрытьФорму("Документ.ЗаказПоставщику.ФормаВыбора",Параметр, ЭтаФорма, ЭтаФорма, , , Новый ОписаниеОповещения("ПолучитьМассивЗначенийВыбора", ЭтаФорма));
да точно! включил остановка по ошибке, заполняет табличную часть документа возвращается опять в
и ошибка. Остановка по ошибке тоже там и ругается на ВыделенныеСтроки
&НаКлиенте
Процедура ПолучитьМассивЗначенийВыбора(ВыбранныеЗначения, Парам2) Экспорт
ЗаполнитьПоЗаказамПоставщикаНаСервере(ВыбранныеЗначения.ВыделенныеСтроки);
КонецПроцедуры
и ошибка. Остановка по ошибке тоже там и ругается на ВыделенныеСтроки
(18) Процедура пытается изменить передаваемое ей значение...
Попробуй так
Попробуй так
&НаКлиенте
Процедура ПолучитьМассивЗначенийВыбора(ВыбранныеЗначения, Парам2) Экспорт
ВыделенныеСтроки = ВыбранныеЗначения.ВыделенныеСтроки;
ЗаполнитьПоЗаказамПоставщикаНаСервере(ВыделенныеСтроки);
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот