8.х Изменение реквизита при создании

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

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

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

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Всем доброго дня. Подскажите пожалуйста, имеется следующая ситуация - необходимо, чтобы при создании документа реквизиту "ФИО" присваивалось имя пользователя информационной базы, который этот документ создал. То есть получается, что тут стандартные события не подходят, потому что, например ПриОткрытии() будет каждый раз при открытии присваивать реквизиту "ФИО" данные того пользователя, который ее открыл в текущий момент. Надеюсь, понятно изъяснился. То есть мне необходимо, чтобы один раз, при создании реквизит принимал определенное значение. Что можете посоветовать? Мне в голову пришла только мысль завести еще один реквизит булева типа, своеборазный флаг, по умолчанию принимающий значение ложь, и при первом же открытии принимающий значение "истина", и чтобы когда флаг = "истина", значение реквизита уже не менялось. Но мне кажется это какой-то костыль, наверняка же есть способ лучше и правильнее.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    в ПриОткрытии() необходимо проверять на ЭтоНовый() и в зависимости от этого присваивать значение реквизита.
  3. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Для чего флаг создавать? Добавьте проверку:
    Код:
    Если ЭтоНовый() Тогда // проверить объект на то, что он еще не внесен в ИБ
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

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

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

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    У меня как раз управляемые формы. Подскажите код пожалуйста. Не совсем понятно, синтаксис-помошник говорит, что ЭтоНовый() работает с ДокументОбъект.<Имя документа>. Но ведь если мы создаем документ, то объекта же еще нет, он ведь еще не записан?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Создайте реквизит формы "ЭтоНовый" с типом Булево.

    В "ПриСозданииНаСервере"/"ПриОткрытии" пишем:

    ЭтоНовый = НЕ ЗначениеЗаполнено(Объект.Ссылка);
  7. TopicStarter Overlay
    Семен Сосницкий
    Offline

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

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    Да, я так и думал в начале сделать. Сейчас погуглил, все проще оказывается. В управляемых формах вот такая конструкция работает:
    Код:
    Если Параметры.Ключ.Пустая() = Истина Тогда
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    А в серверном контексте данная конструкция работает?
  9. TopicStarter Overlay
    Семен Сосницкий
    Offline

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

    Регистрация:
    21 июл 2014
    Сообщения:
    163
    Симпатии:
    0
    Баллы:
    26
    А вот не знаю, делаю в процедуре ПриОткрытии() на клиенте в модуле формы :)
  10. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Делать нужно в процедуре "ПриСозданииНаСервере". Конструкция работает.
    nomad_irk нравится это.

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