7.7 Передача параметра в форму для выбора

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем demowood, 25 мар 2013.

  1. TopicStarter Overlay
    demowood
    Offline

    demowood

    Регистрация:
    12 июл 2012
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Всем доброго дня!
    Столкнулся с проблемой: Имеется 1С 7.7 самописная конфигурация и внешняя обработка из которой нужно открыть у определённого справочника форму для выбора. В модуле формы, перед открытием, проверяется передан ли в форму параметр определённого типа (если не передан, то форма не открывается). Пытаюсь открыть её методом выбрать (справочникХ.Выбрать), естественно ничего не получается. Подскажите, пожалуйста, как можно передать параметр в такую форму из внешней обработки. (Конфикурацию править нельзя!)
    В 1С8.* я бы воспользовался ПолучитьФормуДляВыбора, а тут не знаю как можно это сделать...
  2. Vlan
    Offline

    Vlan Гость Гость

    ОткрытьФорму(<?>,)
    Синтаксис:
    ОткрытьФорму(<ОписательОбъекта>,<КонтекстФормы>)
    Назначение:
    Открывает визуальную форму списка справочника.
    Возвращает: 1 - если действие выполнено, 0 - иначе.
    Параметры:
    <ОписательОбъекта> - строковое выражение. ''Справочник.ХХХХХ.YYYYY'', где ХХХХХ - вид справочника, YYYYY - имя выбранной формы списка справочника;
    <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен).
    Замечание:
    Пока форма открыта, тип значения параметра <КонтекстФормы> равен 100, когда закрыта - 0.
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Добавлю что обратиться к параметру в форме модно так:
    Код:
    Процедура ПриОткрытии()
    МояПеременная=Форма.Параметр;
    КонецПроцендуры
  4. TopicStarter Overlay
    demowood
    Offline

    demowood

    Регистрация:
    12 июл 2012
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Обращение к параметру уже описано.
    Новый вопрос: как ожидать выбора значения и как его получить после выполнения ОткрытьФорму? Пока приходит на ум только проверка типа КонтекстФормы (в цикле) и как только он станет равен 0 ВыбранноеЗначение = ТекущийЭлемент. Но не подвесит ли это всю систему? И вообще сработает ли? (проверить пока не могу)
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно открыть форму модально
  6. TopicStarter Overlay
    demowood
    Offline

    demowood

    Регистрация:
    12 июл 2012
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Так ничего и не решилось. Если использовать ОткрытьФормуМодально, форма открывается, параметр передаётся... Но это обычная форма списка (каковой она является в конфигурации), а мне нужна для выбора. В модуле формы не описано никаких механизмов выбора.
    Выходы вижу только такие: 1) Справочник.Выбрать(), но как в этом случае передать параметр в открываемую форму.
    2) Использовать ОткрытьПодбор(), это вообще не понятно как работает... как ожидать выбора и куда возвращается выбранное значение?
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А если так?
    Код:
    Процедура ПриВыбореСтроки()
    Форма.Параметр=ТекущийЭлемент();
    Форма.Закрыть();
    КонецПроцедуры
    
    Процедура ПриОткрытии()
    Парам=Форма.Параметр;
    Если ПустоеЗначение(Парам)=0 Тогда
    Форма.ОбработкаВыбораСтроки(1);
    КонецЕсли;
    КонецПроцедуры
    
  8. Vlan
    Offline

    Vlan Гость Гость

    Все же описано в Синтаксис-помощнике:
  9. TopicStarter Overlay
    demowood
    Offline

    demowood

    Регистрация:
    12 июл 2012
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Если бы была возможность переписывать модуль формы, то проблемы бы не было... Но как я и говорил конфигурацию трогать нельзя

    И что же там написано?
    Может быть то, почему метод отрабатывает и не дожидаясь выбора, передаёт управление следующему оператору?
  10. Vlan
    Offline

    Vlan Гость Гость

    Это уже другой вопрос. Изначально вопрос был - куда возвращается выбранное значение.
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В принципе изменения ничтожны. Но нельзя так нельзя.......

    Хотя вы говорите
    и при этом в первом посте


    Как интересно добавить проверку в модуль не меняя его при этом....


    Тогда только так.... В вашей обработке
    Код:
    Если Справочник.Выбрать()=1 Тогда
    Сообщить("Мы выбрали элемент "+Справочник.ТекущийЭлемент());
    КонецЕсли;
    
  12. Vlan
    Offline

    Vlan Гость Гость

    Я так понял, что в форме справочника уже на входе проверяется некий параметр, который и нужно передать.
  13. TopicStarter Overlay
    demowood
    Offline

    demowood

    Регистрация:
    12 июл 2012
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Всё верно. Имеется конфа и внешняя обработка. Требуется допилить внешнюю обработку, чтобы она заработала. Но при этом конфигурацию трогать нельзя. В конфе уже есть проверка параметра при открытии формы справочника. Из-за этого и приходится обработку пилить. Для типовых конфигураций в обработке справочник.выбрать().
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если форма справочника вообще его возвращает........ Если в форме справочника не определена процедура ПриВыбореСроки() - ничего и не вернет.

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