7.7 Форма Документа, кнопки и #Запись?

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

  1. TopicStarter Overlay
    fLY7er
    Offline

    fLY7er

    Регистрация:
    27 окт 2009
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте

    Начинающий программировать в 1С.
    Версия 1С v7.
    Столкнулся с проблемкой, хотелось бы как то ее решить.
    На Форме Документа есть множество полей ввода. Но в одно поле ввода, назовем его «Перем», значение в него добавляются только программным способом (Перем = Перем +1) после нажатия определенной кнопки на форме, например «Печать» .
    Все хорошо сохраняется, если затем закрыть эту форму документа через кнопку «OK» с сохранением изменений на ней (#Записать Закрыть).
    Но если пользователь закрывает через кнопку формы «Закрыть» (#Закрыть) и на вопрос «Сохранить изменение» ответит «Нет», то значения поля «Перем» не сохраняется.
    Есть ли возможность сохранить значение в поле «Перем» непосредственно после нажатия кнопки «Печать» на этой форме, а не после нажатия кнопки «Оk»?
    Я понимаю, что на кнопку «Печать» также можно повесить в поле Дополнительно «Печать() #Записать». Но «#Записать» записывает все изменения на Форме Документа, а мне надо записать только значения поля ввода «Перем» и это значение сохранялось бы, если пользователь нажал кнопку «Закрыть» форму без сохранения изменений на ней.
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Так как ты хочешь - напрямую не получится. Метод записать действует на все реквизиты документа.
    Единственный выход - хранить его (реквизит) отдельно. Например в справочнике.

    Создай справочник - Пусть будет ДокПерем. Реквизиты: Докум (документ, отбор по реквизиту поставь), Перем (число).

    1) В процедуре ПриОткрытии (в документе) - находим запись справочника и инициализируем ПЕРЕМ (здесь нужно учесть что документ м.б. новым и даже еще не сохранен ни разу)
    2) В том месте где присваивается перем:

    Код:
    Если Выбран()=0 Тогда
    Предупреждение("Перед печатью запишите документ!");
    Возврат;
    КонцЕсли;
    Перем=Перем+1;
    СпрПерем.Перем=Перем;
    СпрПерем.Записать(); //СпрПерем - общая переменная создана в процедуре ПриОткрытии
    
    

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