|
Не могу получить ДанныеФормыСтруктура в обработке заполнения табличной части | ☑ | ||
---|---|---|---|---|
0
Admin_Net_1C
13.02.18
✎
14:50
|
Добрый день, народ.
Платформа: 8.3.11.2867 Конфигурация: УТ 11.4.2.132 Делаю обработку заполнения для документа ПоступлениеТоваров. При вызове открывается форма, в которой пользователь выбирает файл Excel из которого в форму обработки грузятся данные о номенклатуре, которые потом должны быть перенесены в табличную часть документа. Собственно проблема: создаю новый документ, записываю его. Нажимаю кнопку "Заполнить документ", открывается форма обработки и попадаю в процедуру ВыполнитьКоманду, в которой пишу код:
и в сообщении ожидаю увидеть номер документа из которого вызвана форма обработки, но в ответ получаю: --- ВыполнитьКоманду 1: Да --- т.е. ЭтотОбъект.ДокОбСсылка пустой! Подскажите в чем может быть проблема, уже всю голову сломал! |
|||
1
Admin_Net_1C
13.02.18
✎
14:53
|
к (0) ДокОбСсылка - это реквизит формы типа ДокументОбъект.ПоступлениеТоваров
|
|||
2
Admin_Net_1C
13.02.18
✎
14:55
|
Для наглядности привожу полностью код процедуры:
&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт Для каждого ОбъектНазначение из ОбъектыНазначения Цикл //---ДЛЯ ОТЛАДКИ Сообщить("--- ВыполнитьКоманду:" + СокрЛП(ОбъектНазначение)); // ПараметрыФормы = Новый Структура("Ключ", ОбъектНазначение); //это передали в форму заполнения ФормаОткрытогоДок = ПолучитьФорму("Документ.ПоступлениеТоваров.ФормаОбъекта",ПараметрыФормы); //окна не ищем, переполучаем уже открытое Рез = КопироватьДанныеФормы(ФормаОткрытогоДок.Объект, ЭтотОбъект.ДокОбСсылка); //---ДЛЯ ОТЛАДКИ Сообщить("--- ВыполнитьКоманду 1: " + СокрЛП(Рез) + " --- " + СокрЛП(ЭтотОбъект.ДокОбСсылка.Номер)); // ОткрытьФорму("ВнешняяОбработка.ВО_ЗагрузкаДанныхВТЧПоступленияТоваровИзФайлаExcel.Форма.Форма", ПолучитьПарамНаСервере(), ЭтаФорма, Истина, , , Новый ОписаниеОповещения("ФормаЗагрузкаЗавершение", ЭтаФорма, ПараметрыФормы), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); КонецЦикла; КонецПроцедуры |
|||
3
Admin_Net_1C
13.02.18
✎
15:00
|
Изменил строку получения формы открытого окна на:
ФормаОткрытогоДок = ПолучитьФорму("Документ.ПоступлениеТоваров.Форма.ФормаДокумента",ПараметрыФормы); толку нет ( |
|||
4
Alex87r
13.02.18
✎
15:01
|
КопироватьДанныеФормы (CopyFormData)
Синтаксис: КопироватьДанныеФормы(<Источник>, <Приемник>) Параметры: <Источник> (обязательный) Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура. Объект - источник. <Приемник> (обязательный) Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура. Объект приемник. Возвращаемое значение: Тип: Булево. Истина - копирование произведено. Ложь - структура объектов абсолютно несовместима. Описание: Копирует данные формы, обладающие совместимой структурой. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: Во внешнем соединении метод игнорируется. Все праильно. В рез "Истина". Форма успешно скопирована |
|||
5
Admin_Net_1C
13.02.18
✎
15:04
|
(4) тогда почему строка
Сообщить("--- ВыполнитьКоманду 1: " + СокрЛП(Рез) + " --- " + СокрЛП(ЭтотОбъект.ДокОбСсылка.Номер)); НЕ ВЫВОДИТ номер документа из которого вызвана обработка заполнения (а выводит только Истина, как результат, что форма успешно скопирована) ??? P.S. документ записан, номер у него уже существует |
|||
6
Alex87r
13.02.18
✎
15:04
|
Ну может после заполнения формы ее нужно записать в БД? (5)
|
|||
7
Admin_Net_1C
13.02.18
✎
15:06
|
(6) пля... данные формы успешно скопированы (на форме документа ЕСТЬ номер), в сообщении (т.е. ДокОбСсылка) нет...
Может я не понятно объясняю? |
|||
8
hhhh
13.02.18
✎
15:57
|
(7) какой тип у ЭтотОбъект.ДокОбСсылка ??
|
|||
9
SSSSS_AAAAA
13.02.18
✎
16:12
|
(0) "выбирает файл Excel из которого в форму обработки грузятся данные о номенклатуре, которые потом должны быть перенесены в табличную часть документа. "
Очередная попытка изобрести велосипед и вместо заполнения ДОКУМЕНТА заполнить ФОРМУ документа... |
|||
10
Buster007
13.02.18
✎
16:35
|
ПолучитьФорму("Документ.ПоступлениеТоваров.ФормаОбъекта",ПараметрыФормы);
уверен что это возвращает тебе открытую форму? |
|||
11
Alex87r
13.02.18
✎
20:28
|
(10) Чтобы заполнить форму, ее не обязательно открывать) (9) Ага. Документ уже записан, смысла нет заполнять форму.
|
|||
12
Admin_Net_1C
14.02.18
✎
06:06
|
(8) -> (1)
(9) мопед не мой, так хочет заказчик )) Расскажи правильно должна работать обработка заполнения НЕ через форму (на просторах инета именно этот способ и рекомендуют. В этом плане все сделано по ссылкам из открытых источников)? (10) код в (2): ..... //---ДЛЯ ОТЛАДКИ Сообщить("--- ВыполнитьКоманду:" + СокрЛП(ОбъектНазначение)); // ПараметрыФормы = Новый Структура("Ключ", ОбъектНазначение);//это передали в форму заполнения ФормаОткрытогоДок = ПолучитьФорму("Документ.ПоступлениеТоваров.ФормаОбъекта",ПараметрыФормы);//окна не ищем, переполучаем уже открытое ... СокрЛП(ОбъектНазначение) - выводит "Приобретение товаров и услуг №000-000005 от 13.02.2018 15:33:12" (именно этот документ и открыт) (11) см комент выше (про обработку заполнения и форму) |
|||
13
Admin_Net_1C
14.02.18
✎
06:11
|
(8) сори, вот так:
... //---ДЛЯ ОТЛАДКИ Сообщить("--- ВыполнитьКоманду:" + СокрЛП(ОбъектНазначение)); // ПараметрыФормы = Новый Структура("Ключ", ОбъектНазначение); //это передали в форму заполнения ФормаОткрытогоДок = ПолучитьФорму("Документ.ПоступлениеТоваров.Форма.ФормаДокумента",ПараметрыФормы); //окна не ищем, переполучаем уже открытое //КопироватьДанныеФормы(Форма.Объект, ЭтотОбъект.ОбъектДокументПоступлениеТоваров); //КопироватьДанныеФормы(Форма.Объект, Объект.ДокументОбъектПоступлениеТоваров); Рез = КопироватьДанныеФормы(ФормаОткрытогоДок.Объект, ЭтотОбъект.ДокОбСсылка); Сообщить("--- ВыполнитьКоманду 0:" + СокрлП(ТипЗнч(ЭтотОбъект.ДокОбСсылка))); //---ДЛЯ ОТЛАДКИ Сообщить("--- ВыполнитьКоманду 1: " + СокрЛП(Рез) + " --- " + СокрЛП(ЭтотОбъект.ДокОбСсылка.Номер)); // .. Результат: --- ВыполнитьКоманду:Приобретение товаров и услуг 0000-000005 от 13.02.2018 15:33:12 --- ВыполнитьКоманду 0:ДанныеФормыСтруктура --- ВыполнитьКоманду 1: Да --- |
|||
14
Admin_Net_1C
14.02.18
✎
06:57
|
всем спасибо, пошел по другому пути, вроде работает )
Если кому интересно: В модуле объекта: Функция СведенияОВнешнейОбработке() Экспорт ... ДобавитьКоманду(Команды, "Заполнить документ","ВыполнитьКоманду","ОткрытиеФормы",Ложь,) ; ... КонецФункции В модуле формы : &НаКлиенте Процедура ВыполнитьЗагрузкуВТЧДокумента(Команда) ТоварыТЧ = ВладелецФормы.Объект.Товары; ТоварыТЧ.Очистить(); Для каждого СтрокаТЧ из Объект.ДанныеДляЗагрузки цикл НовСтрока = ТоварыТЧ.Добавить(); ЗаполнитьЗначенияСвойств(НовСтрока, СтрокаТЧ); НовСтрока.КоличествоУпаковок = НовСтрока.Количество; НовСтрока.Цена = ?(НовСтрока.Количество<>0, НовСтрока.Сумма/НовСтрока.Количество, 0); КонецЦикла; ЭтаФорма.Закрыть(); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |