[РЕШЕНО] Как узнать открывается форма для редактирования или для создания

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Leprecus, 29 апр 2016.

  1. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    1С:Предприятие 8.3 (8.3.6.2152) режим управляемых форм.
    Создал справочник. При создании или изменении элемента справочника открывается форма элемента. Подскажите пожалуйста как грамотно программно узнать с какой целью открывается форма?
    Я изначально сделал через проверку заполнения одного из обязательных полей, но уверен, что это не совсем верное решение.
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    ПриОткрытии проверку на ЭтоНовый
    Leprecus нравится это.
  3. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Это будет работать только в режиме управляемых форм?
  4. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
    //Объект уже был записан в базу, т.е это редактирование
    Иначе
    //Создание нового объекта
    КонецЕсли;
    Leprecus нравится это.
  5. TopicStarter Overlay
    Leprecus
    Offline

    Leprecus Опытный в 1С

    Регистрация:
    12 окт 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Оба варианта возьму на заметку.
  6. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Машинально написал. Мой для обычного, Dem0lisher для управляемого написал.
  7. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    На самом деле ЗначениеЗаполнено() работает в любом режиме, но нужно проверять в упр.форме Объект.Ссылка, а в обычной Ссылка.
    А ЭтоНовый() тоже работает в упр.режиме, но нужно проверять от объекта, а получать объект целиком в упр.форме не всегда приемлемо, нужен серверный вызов, поэтому
    во всех типовых конфах на упр.формах в формах документа проверяется через ЗначениеЗаполнено()
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    можно проверить вид формы:

    Код:
    Если ТипЗнч(ЭтаФорма) =  Тип("УправляемаяФорма") Тогда
               Если НЕ ЗначениеЗаполнено(Ключ) Тогда
                      ЭтоСозданиеОбъекта = Истина;
               Иначе
                      ЭтоРедактированиеОбъекта = Истина;
               КонецЕсли;
    Иначе
               Если ЭтоНовый() Тогда
                      ЭтоСозданиеОбъекта = Истина;
               Иначе
                     ЭтоРедактированиеОбъекта = Истина;
               КонецЕсли;
    КонецЕсли;
    
  9. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Неужели ты сам не можешь проверить вид формы в которой пишешь свой код?! =) :)
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    ну как бы х.з. чего там ТС нужно, мож он форму собирается открывать через

    ФормаОбъекта = ПолучитьФорму("ПолноеИмяФормыОбъекта")
    Форма.Открыть();

    :)
  11. Dem0lisher
    Offline

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

    Регистрация:
    4 авг 2009
    Сообщения:
    1.023
    Симпатии:
    51
    Баллы:
    54
    Если он ее так будет открывать без параметров - ему точно проверки не нужны будут -Bookworm-
    В момент такого открытия можно понять - новый или не новый! =)

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