8.х Программное открытие формы кнопкой

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Семен Сосницкий, 27 окт 2014.

  1. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Добрый день, господа. Возникла необходимость - в документе есть кнопка, при ее нажатии вызывается форма отчета. Почитал синтаксис-помошник и вообще запутался. Получается следующее: Пишу в модуле формы команду для кнопки, в команде необходимо вызвать форму отчета. Если вызывать форму отчета из модуля формы моего документа, то нельзя - т.к. обращаться к элементам конфигурации можно только на сервере. Ок, создаю в общем модуле серверную функцию, в котором пытаюсь получить форму отчета и вернуть ее в мой модуль формы документа.
    Код:
    Функция ВозвратФормы() Экспорт
        Форма = Отчеты.Отчет1.ПолучитьФорму("ФормаОтчета");
        Возврат Форма;
    КонецФункции
    
    Но тогда появляется ошибка - интерактивные операции недоступны. Ок, раз и так нельзя, и так нельзя - как правильно получить и открыть нужную мне форму? Вообще не понял этого вопроса ни из книги Радченко, ни из синтаксис-помошника. -Banghead-
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.574
    Симпатии:
    717
    Баллы:
    204
    ээээ....

    &НаКлиенте
    Процедура КнопкаНажатие(Элемент)
    Форма = ОткрытьФорму("ПолноеПутьИНазваниеФормы");
    КонецПроцедуры

    не работает?
  3. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Да, работает, спасибо. Подскажите пожалуйста, совсем не могу разобраться, для чего тогда нужна ПолучитьФорму()? В чем разница между
    Код:
    Форма = Отчеты.Отчет1.ПолучитьФорму("ФормаОтчета");
    Форма.Открыть();
    и
    Код:
    ОткрытьФорму("Отчет.Отчет1.Форма.ФормаОтчета");
    И в чем разница между
    Код:
    Документы.Документ1.ПолучитьФорму("ФормаДокумента");
    
    
    и
    Код:
    Документы.Документ1.ПолучитьФормуНовогоДокумента();
    Вообще не могу уловить разницы и разобраться в этом нагромождении похожих методов. -Banghead-
    --- Объединение сообщений, 27 окт 2014 ---
    Да, не смотрите, что у меня под аватаркой написано "опытный в 1с", не знаю откуда это взялось, я новичок еще совсем.
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.574
    Симпатии:
    717
    Баллы:
    204
    Первый вариант - для обычного приложения, просто получает форму для дальнейшей работы с ней.
    Второй вариант - для управляемого, открывает указанную форму и возвращает ее в качестве объекта для дальнейшей работы с ней.

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

    Каждый метод используется в своем контексте выполнения.
  5. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    nomad_irk, спасибо, теперь более-менее понятно. А можно еще совета попросить? Смотрите - у меня есть документ, в котором указан контрагент в виде ссылки на справочник. Мне необходимо, чтобы в форме документа отражалась кредиторская задолженность по данному контрагенту. В базе есть отчет, которые формирует эту кредиторскую задолженность, но он делает это по всем контрагентам. Как бы мне реализовать в моем документе вывод задолженности по указанному контрагенту, можно ли как-то подтянуть эти данные из отчета?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.574
    Симпатии:
    717
    Баллы:
    204
    из отчета можно, но будет гораздо сложнее, чем написать самому запрос для этого дела в модуле формы документа и выводить результат запроса при изменении контрагента на форме.
  7. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Спасибо, буду пробовать!
  8. TopicStarter Overlay
    Семен Сосницкий
    Offline

    Семен Сосницкий Опытный в 1С

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Черт, только заметил, что у нужного отчета есть форма настройки, в которую можно ввести нужного контрагента.
    [​IMG]
    Тогда по идее мне проще как-то из моей формы документа передать имя контрагента в форму настройки, затем программно нажать на ней кнопку "ОК" для построения отчета? Если да, то как это реализуется, подскажите пожалуйста? В конфигураторе форма настройки выглядит следующим образом:
    [​IMG]
  9. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.574
    Симпатии:
    717
    Баллы:
    204
    Скажу так: пытаться сформировать отчет через форму ни к чему не приведет.
    Формировать отчет необходимо через его модуль и про существование каких-либо форм у отчета вообще лучше забыть, т.к. форма - это для того, чтобы пользователю было удобно работать с отчетом.

Поделиться этой страницей