есть форма документа "Тест" с табличной частью "ТЧ", реквизиты "ТЧ" - "Номер", "Количество", Номенклатура".
еще есть обработка с формой "Форма" и табличной частью "ЧТО" с реквизитом "Номер".
Обработка открывается из формы документа по кнопке.
Что я хочу сделать - в форме документа есть, к примеру, три заполненных строки, кроме реквизита "Номер". Я открываю форму обработки, создаю там три строки, заполняю реквизит "Номер" и по нажатию кнопки "Перенести" хочу перенести значения в строки документа. Т.е. из каждой строки № "n" обработки значения реквизита "Номер" должно переноситься в каждую строку № "n" документа.
Так вот, сейчас у меня получается делать это только для одной выбранной строки. А хочу, чтобы для всех .
На кнопку на форме док-та код:
&НаКлиенте Процедура Обработка(Команда)
Параметр = Новый Структура; ОткрытьФорму("Обработка.ДляПередачи.Форма.Форма",,ЭтаФорма,,,,Новый ОписаниеОповещения("ПолучитьДанныеИзФормы",ЭтаФорма,Параметр),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Для каждого Стр из Объект.ЧТО Цикл Номер=Стр.Номер; КонецЦикла;
СтруктураВозврата = Новый Структура("Номер",Номер);
Закрыть(СтруктураВозврата);
КонецПроцедуры
как мне это грамотно поправить? есть ощущение, что где-то нужно задействовать цикл при передаче структуры возврата и номера строк, но не понимаю, как это организовать.(
Заранее спасибо!
1С:Предприятие 8.3 (8.3.7.1860) 1С:ERP Управление предприятием 2 (2.1.3.82)
И форматируйте как-то по людски код, а то глаз вынуть можно, когда читаешь код, который вы выкладываете.
Как конкретно мне форматировать, чтобы Вы не вынимали свои глаза?(
Цитата(Vofka @ 26.10.16, 11:48)
Совершенно верно. Если быть точнее, то туда поочередно передаются все строки, но каждая последующая строка затирает все предыдущие значения.
а если выгружать массивом, правильно будет?
&НаКлиенте Процедура Перенос(Команда) МассивНомеров=Новый Массив; Для каждого Стр из Объект.ЧТО Цикл Номер=Стр.Номер; МассивНомеров.Добавить(Номер); СтруктураОповещения = Новый Структура; СтруктураОповещения.Вставить("Номер",МассивНомеров); Оповестить("ПередачаНомеров",СтруктураОповещения,"ОбработкаЗаполнения"); КонецЦикла; Закрыть(); КонецПроцедуры
с вышеуказанным кодом в модуле формы обработки и этим в модуле формы документа:
&НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если Источник = "ОбработкаЗаполнения" Тогда Если ИмяСобытия = "ПередачаНомеров" Тогда Для каждого Стр из Объект.ТЧ Цикл Стр.Номер = Параметр.Номер; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры
заполняет мне значение для всех строк словом "Массив".)))
{Обработка.ДляПередачи.Форма.Форма.Форма(6)}: Метод объекта не обнаружен (ВыгрузитьКолонку) Оповестить("ПередачаНомеров",Объект.ЧТО.ВыгрузитьКолонку("Номер"),"ОбработкаЗаполнения");
{Обработка.ДляПередачи.Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Выгрузить) Оповестить("ПередачаНомеров",Объект.ЧТО.Выгрузить().ВыгрузитьКолонку("Номер"),"ОбработкаЗаполнения"); по причине: Метод недоступен на клиенте
то уже на этапе обновления конфигурации базы данных дает:
{Обработка.ДляПередачи.Форма.Форма.Форма(14,2)}: Процедура или функция с указанным именем не определена (Оповестить) <<?>>Оповестить("ПередачаНомеров",Объект.ЧТО.Выгрузить().ВыгрузитьКолонку("Номер"),"ОбработкаЗаполнения"); (Проверка: Сервер)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!