Версия для печати темы (https://pro1c.org.ua/index.php?s=eb4a6c6d5cbe9bb9994c6fa99d633601&showtopic=39994)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Передача значения реквизита с обработки на форму нового документа

Автор: Yevhenii 05.09.17, 11:50

1С Предприятие 8.2 обычное приложение, обычная форма
Конфигурация "Управление торговым предприятием для Украины", редакция 1.2.

День добрый!

Открываю ФормуНовогоДокумента по клику кнопки на обработке, на обработке есть заполненый реквизит ФизЛицо, в документе такой же. Хочу что б при создании он подтягивался
http://pro1c.org.ua/index.php?showtopic=4042
но я "не вижу" реквизитов обработки с обработчика документа "ПередОткрытием"

есть идея записать в какую то константу или глобальную переменную, но правильно ли это? или же все таки есть более простой и лёгкий способ передачи значения реквизита обработки в реквизит нового документа?


Автор: Bernet 05.09.17, 11:54

Yevhenii @ Сегодня, 12:50 * ,

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

P.S> Привет с Хмеля)

Автор: Yevhenii 05.09.17, 12:56

Bernet @ Сегодня, 12:54 * ,


Да и сам понимаю что разводить зоопарк нет смысла

но если тупо скопипастить то вылазять ошибочки

{Документ.ВыдачаАванса.Форма.ФормаДокумента.Форма(25,9)}: Переменная не определена (Объект)
Форма = <<?>>Объект.ПолучитьФорму("ФормаДокумента",ВладелецФормы, КлючУникальности); (Проверка: Толстый клиент (обычное приложение))
{Документ.ВыдачаАванса.Форма.ФормаДокумента.Форма(26,19)}: Переменная не определена (ЗначениеПараметра)
Форма.ЭкспоСотр = <<?>>ЗначениеПараметра; (Проверка: Толстый клиент (обычное приложение))


что в принципе то и логично....

P.S> Привет с Хмеля) Взаимно rulez.gif



Плотно пообедав за счёт предприятия crazy.gif на свежую голову и сытый желудок задача была решена следующим образом:

в модуле основной формы открываемого документа была объявлена переменная:
Перем ЭкспортСотр Экспорт;

далее в обработчике нажатия на кнопку из обработки пишем следующее:
Форма = Документы.ВыдачаАванса.ПолучитьФормуНовогоДокумента();
    Форма.ЭкспортСотр = Сотрудник;
    Форма.ОткрытьМодально();

И последний шаг: в обработчике документа ПриОткрытии() заполняем нужные реквизиты
Если ЭтоНовый() Тогда    
        Сотрудник = ЭкспортСотр;
        Дата = ТекущаяДата();    
    Иначе
    КонецЕсли;


Элементарно не правда ли?) 19000000.gif

Автор: podcast 05.09.17, 13:07

Yevhenii @ Сегодня, 13:56 * ,
Почему нельзя с обработки заполнить значение?

Форма = Документы.ВыдачаАванса.ПолучитьФормуНовогоДокумента();
    Форма.ЭкспортСотр.Значение = Сотрудник;
    Форма.ОткрытьМодально();

Автор: Bernet 05.09.17, 13:16

Yevhenii @ Сегодня, 13:56 * ,
Чувак, у Вас ошибка вылазила как раз из-за того что на Вашей форме не было реквизита "ЭкспортСотр", Вы пытались тут сделать так:

Цитата
Форма.ЭкспортСотр = Сотрудник;

"ЭкспортСотр" - должен быть реквизитом формы если так обращаетесь к нему.
А дальше Вы делаешь так:
Цитата
Если ЭтоНовый() Тогда
Сотрудник = ЭкспортСотр;
Дата = ТекущаяДата();
Иначе
КонецЕсли;

т.е. Ваш реквизит называется "Сотрудник", по идее если бы написали в первом варианте Форма.Сотрудник = ЭкспортСотр то все бы получилось скорее всего)

Если не секрет какая контора?)


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 1
 

Автор: Yevhenii 05.09.17, 13:37

podcast @ Сегодня, 14:07 *
да изначально так надо было и делать, просто мусора в голове было много вот и полез в дебри))
только у меня реквизит что на обработке, что в документе "сотрудник", а ЭкспортСотр это экспортная переменная
тогда б вышло всё это в три строчки кода:

Форма = Документы.ВыдачаАванса.ПолучитьФормуНовогоДокумента();
    Форма.Сотрудник.Значение = Сотрудник;
    Форма.ОткрытьМодально();


Bernet @ Сегодня, 14:16 * ,
да, Вы правы, только вариант получается запутаннее чем заполнить реквизит прям из обработки, ИМХО)

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua