[РЕШЕНО] Добавить программно элемент на форму

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

  1. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Доброго дня форумчане. Пытаюсь программно добавить несколько элементов на форму, точнее - вставить новые элементы между существующими, предварительно увеличив высоту формы. Т.е. я удлиняю форму, затем сдвигаю вниз существующие элементы, которые должны располагаться под моими новыми элементами, затем добавляю новые элементы и задаю им привязку. Все бы ничего, но только вот проблема: высоту формы я увеличил, но не могу задать верхнюю границу самому нижнему элементу - командной панели документа. 1С будто продолжает думать, что высота формы прежняя и не позволяет опустить элемент ниже. Если я добавляю тот же код изменением высоты командной панели в каком-нибудь обработчике (какой-нибудь кнопки), то верхняя граница успешно меняется, а вот в процедуре ПриОткрытии - хоть убей, меняться не хочет, хотя высота формы меняется. Получается, что в ПриОткрытии я не могу сдвинуть элемент ниже, а уже после открытия - могу; будто ПриОткрытии хоть и позволяет изменять размер формы, но не позволяет размещать элементы на новом пространстве формы.
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Управляемые формы ???
  3. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Нет, толстый клиент
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Курите:
    И не изобретайте велосипед.
  5. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Мне нужно разместить элементы на обычной форме и в конкретном месте.
  6. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    толстый есть и там и там
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    А с привязками что будете делать ? тоже программно ?
  8. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    У меня обычное приложение.
    --- Объединение сообщений, 8 апр 2014 ---
    Да, привязки тоже программно, я даже знаю, как это делать.
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Чтоб не мучиться - разворачивайте форму на весь экран. То что вы делаете - мартышкин труд.
  10. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    То, что я делаю - это минимизация работы при обновлениях в виде добавления одной строчки в модуль формы, ссылающейся на общий модуль с передачей формы и объекта. Как бы там ни было, мне нужно решить этот вопрос именно так - программно разместить новые элементы.
  11. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Получилось растянуть форму? Мне тоже, по-хорошему, это предстоит. :)
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у формы вроде как можно задать высоту и ширину. Так ее можно растянуть, разве нет?
    --- Объединение сообщений, 9 апр 2014 ---
    а вот перемещать по форме уже существующие элементы - это жестоко
  13. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Наверное можно, но не получается у ТС сделать то, что он хочет.
  14. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.400
    Симпатии:
    40
    Баллы:
    54
    ОбновлениеОтображения вызывали?
  15. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    487
    Симпатии:
    3
    Баллы:
    29
    Уж подзабыл про тему на форуме. В общем, разобрался. Принудительно растягивать форму не нужно было. Нужно было было разместить необходимые элементы так, как будто форма растянута (она растягивается автоматом), затем задать меньший размер элементу Панель и табличной части на этой панели, т.к. их размер автоматически увеличился. В моем случае это был документ ПлатежноеПоручениеВходящее из УПП, соответственно нужно было принудительно задать размер элементам ПанельПлатежи и РасшифровкаПлатежа. Кроме того, нужно принудительно задать положение командной панели, расположенной в нижней части формы (в моем случае - ОсновныеДействияФормы).
    Код примерно такой:
    Код:
    //Создаем новый элемент формы
    НовыйЭлемент             = Форма.ЭлементыФормы.Добавить(Тип("ПолеВвода"),"МоеПолеВвода",Истина);
    НовыйЭлемент.Данные         = "ЭлементыФормы.РасшифровкаПлатежа.ТекущиеДанные.ДанныеДляМоегоПоляВвода";
    НовыйЭлемент.ТолькоПросмотр = Ложь;
       
    НовыйЭлемент.Верх        = 360;
    НовыйЭлемент.Лево           = 96;
    НовыйЭлемент.Ширина         = 220;
    НовыйЭлемент.Высота         = 19;
    
    ЭлементПривязкиПанельПлатежи = Форма.ЭлементыФормы.ПанельПлатежи;
    НовыйЭлемент.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементПривязкиПанельПлатежи, ГраницаЭлементаУправления.Лево, ЭлементПривязкиПанельПлатежи, ГраницаЭлементаУправления.Право);
    НовыйЭлемент.УстановитьПривязку(ГраницаЭлементаУправления.Верх,    ЭлементПривязкиПанельПлатежи,    ГраницаЭлементаУправления.Низ,,);
    НовыйЭлемент.УстановитьПривязку(ГраницаЭлементаУправления.Низ,    НовыйЭлемент, ГраницаЭлементаУправления.Верх,,);
    
    //Сдвигаем вниз НазначениеПлатежа, Подразделение, Ответственный и Комментарий
    Форма.ЭлементыФормы.НадписьНазначениеПлатежа.Верх = 388;
    Форма.ЭлементыФормы.НазначениеПлатежа.Верх = 388;
    Форма.ЭлементыФормы.НадписьПодразделение.Верх = 413;
    Форма.ЭлементыФормы.Подразделение.Верх = 413;
    Форма.ЭлементыФормы.НадписьОтветственный.Верх = 413;
    Форма.ЭлементыФормы.Ответственный.Верх = 413;
    Форма.ЭлементыФормы.НадписьКомментарий.Верх = 437;
    Форма.ЭлементыФормы.Комментарий.Верх = 437;
    
       
    Форма.ЭлементыФормы.ПанельПлатежи.Высота = 170;
    Форма.ЭлементыФормы.РасшифровкаПлатежа.Высота = 144;
    Форма.ЭлементыФормы.ОсновныеДействияФормы.Верх = 431;
    Последнее редактирование модератором: 14 апр 2014
  16. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    всех озадачили и забыли... не забывайте тегами пользоваться
  17. web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    918
    Симпатии:
    4
    Баллы:
    29
    Добавлю от себя :) . Легче всего сделать так: Размещаешь на форме элемент, смотришь его его размеры, смотришь привязку - те которые автоматом создались, копипастишь их в свой код и вуаля :). Естественно не сохраняя на форме элемент.

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