[РЕШЕНО] Изменение реквизита документа ПриОткрытии() формы

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

  1. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    Всем привет.
    Подскажите, как правильно при открытии формы документа изменять реквизит документа

    Имею такой код:
    Код:
    &НаКлиенте
    Процедура ПриОткрытии()
        ПользовательСкладСервер();
    КонецПроцедуры
    
    &НаСервере
    Процедура ПользовательСкладСервер()
       
        Заказ = Объект.Ссылка.ПолучитьОбъект();
           
        Если РольДоступна("КладовщикШтучн") Тогда
            Если НЕ Заказ.ДокументОткрывалсяШтучн Тогда
                Заказ.ДокументОткрывалсяШтучн=Истина;
                Заказ.СтатусШтучн=Перечисления.СтатусШтучн.ВРаботе;
            КонецЕсли;
            ПользовательСклад = Перечисления.Склад.СкладСоленойПродукции;
        КонецЕсли;
       
        Если Заказ.ДокументОткрывалсяШтучн
           Тогда
            Заказ.СтатусОбщий=Перечисления.СтатусОбщий.ВРаботе
        КонецЕсли;
       
        Заказ.Записать(РежимЗаписиДокумента.Проведение);
       
    КонецПроцедуры
    
    Отрабатывает нормально, но только в случае, если пользователь просто откроет и закроет документ. Если он решит при первом открытии сразу изменять документ, то естественно 1С ругнется, что "данные были изменены или удалены другим пользователем".

    Нужно отловить именно факт открытия (ну или закрытия) документа
  2. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ПередОткрытием вроде как есть еще
  3. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    может у меня версия предприятия стара?
    Снимок.JPG
  4. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    походу в УФ ее изъяли...
    --- Объединение сообщений, 24 фев 2015 ---
    хорошо, было свойство Модифицированность. Поробуйте его в ложь после записи установить..
  5. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    в форме?

    Код:
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
        ПользовательСкладСервер();
        ЭтаФорма.Модифицированность = Ложь;
    КонецПроцедуры
    
    оно и так стоит Ложь после выполнения ПользовательСкладСервер()
  6. Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Что Вы хотите сделать?
    Если пользователь открыл документ и прост закрыл - реквизит должен измениться?
    Или чтоб реквизит изменился, пользователь должен записать документ?
    --- Объединение сообщений, 24 фев 2015 ---
    Опишите подробней, из Вашего кода не совсем понятно реквизит какого документа Вы хотите поменять.
  7. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    Да, пользователь открыл-закрыл документ - ставим в этом документе
    Код:
    Заказ.ДокументОткрывался=Истина;
    Если он захочет при первом же открытии что-то поменять в документе, то разрешить ему это сделать
  8. Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    --- Объединение сообщений, 24 фев 2015 ---
    Попробуйте применить этот метод после манипуляций с реквизитом и записи документа.
  9. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    не помогло, даже изменения почему-то не отображаются...
  10. Svb
    Offline

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

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Хм. У меня такой код работает
    Код:
            ЭтаФорма.ОбновитьОтображениеДанных();
  11. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    на отдельную кнопку еще пробовал вешать, всё равно на форме ничего не меняется-Sorry-
  12. TerANik
    Offline

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

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    А чем не устраивает ПриСозданииНаСервере()?
    Но тут опять же всё сводится к задаче:
    Я так понял если документ не открывался , то его можно открыть и отредактировать. Как только его отредактировали он получает признак ДокументОткрывался и после этого его редактировать нельзя... Соотвествено зачем это делать перед открытием, если это можно делать перед записью? Если отработала модифицированность, то ставим признак и продолжаем записывать, если не отработало то пускай открывают еще раз.
  13. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    не совсем так
    как только документ открылся, то нужно изменить один из реквизитов.
    а дальше два варианта: либо форму просто посмотрели и сразу закрыли, либо начали редактировать.
    во втором случае выдает ошибку "данные изменены или удалены др пользователем" потому что пользователю показывается "старая" форма, еще не измененная.
    при нажатии стандартной "перечитать", всё ок, но не каждый же раз так жать(
  14. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    За подобное разработчика по рукам бить надо.
    Не должны в документе реквизиты меняться от того, что его просто открыли.
  15. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Угу, разработчики РАРУС очень этим грешат :)
  16. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    задача так стоит, что должны. не думал, что так сложно окажется
  17. TerANik
    Offline

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

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    давайте отойдем от кода и не будем опираться на объекты.. какой цели вы хотите достичь и в связи с чем возникла данная задача?
  18. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    по тз это небольшая конфигурация, которая забирает из УТ документ Заказ по сом-соединению. с этой конфиг работает кладовщик, при просмотре документа меняется статус документа с "Не просмотрен" на "Просмотрен". Не всегда удобно кладовщику, держа в руках десяток килограмм того и сего, зачем-то менять статусы руками, если (по идее) это может программка
    не самое бредовое требование, что я слышал)
    поясните, пожалуйста, чем это плохо. мне же надо как-то оправдаться)
  19. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Заведите регистр сведений, в котором будет хранится либо история статусов документов, либо текущее состояние и не надо лохматить бабушку :)

    При открытии пишем в регистр состояние, при записи так же обновляем состояние.
  20. TopicStarter Overlay
    roofless
    Offline

    roofless Опытный в 1С

    Регистрация:
    27 июн 2014
    Сообщения:
    260
    Симпатии:
    7
    Баллы:
    29
    подскажите, а как на форму документа вывести состояние из регистра?

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