Установить значение реквизита

Тема в разделе "1C и всё что с ней связано", создана пользователем bremlin, 14 сен 2011.

  1. bremlin

    bremlin Гость

    Репутация:
    0
    Здравствуйте. Скорее неприятность чем беда.
    Есть один самописный справочник для которого понадобилось написать одну приблуду с периодическими реквизитами. Всё работает, всё чудно, но при изменении этого реквизита 1С предлагает сохранить изменения только на текущую дату. А мне очень надо(бухгалтерия смотрит глазами кота из шрека) что бы при сохранении/закрытии элемента реквизиты сохранялись также как в справочнике Номенклатура например. Т.е. спрашивала бы на какую дату какие реквизиты сохранить.
    И ещё, в текущем варианте при закрытии 1С выдаёт окошко "Изменение периодических реквизитов", а в той же Номенклатуре "Запись периодических реквизитов".
    1С 7.7. Помогите пожалуйста, не могу что-то понять на что смотреть, куда копать.
     
  2. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Все дело в команде СохранениеПериодическихРеквизитов()
     
  3. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    При сохранении элемента организуй диалог с получением нужной даты,
    а в конце процедуры ПриЗаписи() поставь оператор :
    ИспользоватьДату(НужнаяДата)
     
  4. bremlin

    bremlin Гость

    Репутация:
    0
    Попробовал СохранениеПериодическихРеквизитов(1, "*"); воткнуть в процедуры ПриЗакрытии() ПриЗаписи() и вешал на кнопку отдельную.
    В итоге глухо - никакой реакции. При закрытии также вызывается окно с изменением на текущую дату.
    Добавил на форму поле с датой, при сохранении также старое окно.
    Я стесняюсь спросить,но у меня в принципе процедура ПриЗаписи() пустая была. Это нормально или там что-то должно быть? ;)
     
  5. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А что стесняться - не знал, вот и спросил ;)
    Если надо - ее следует описать в модуле. Если нет - ее может и не быть.
    Обычно в ней, например, проверяется, заполнены ли основные реквизиты
     
  6. bremlin

    bremlin Гость

    Репутация:
    0
    Ну а вдруг бы после вопроса словил с десяток *facepalm*-ов :)
    Её в принципе не было. сделал, добавил оба варианта по очереди и увы безрезультатно.

    Процедура ПриЗаписи()
    СохранениеПериодическихРеквизитов(1, "*");
    КонецПроцедуры

    также с (5) пробовал(
     
  7. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Вот 100% работающий кусок из реальной конфигурации :
    (Одно отличие - ДатаДействия - реквизит справочника, Процент - периодический реквизит).
    Procedure OnWrite()
    if EmptyValue(Сотрудник) = 1 then
    DoMessageBox("Не указан сотрудник!", 60);
    Activate("Сотрудник");
    ReturnStatus(0);
    Return
    endif;
    if EmptyValue(ТипБонуса) = 1 then
    DoMessageBox("Не указан Тип бонуса!", 60);
    Activate("ТипБонуса");
    ReturnStatus(0);
    Return
    endif;
    if EmptyValue(Процент) = 1 then
    DoMessageBox("Не указан процент!", 60);
    Activate("Процент");
    ReturnStatus(0);
    Return
    endif;
    UseDate(ДатаДействия);
    EndProcedure
     
  8. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    СохранениеПериодическихРеквизитов(1, "*"); надо вызвать 1 раз при открытии формы. У меня она стоит в самом конце модуля. Можно в ПриОткрытии().
    Смысл в том, что бы программа знала как себя вести к моменту записи.
     
  9. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Проверил свой кусок кода
    1. СохранениеПериодическихРеквизитов можно вставить явно, можно и на вставлять - диалог все равно появляется
    с предложением сохранить на Текущую дату
    2. Вне зависимости от п.1 ИспользоватьДату(УстановленнаяДата) отрабатывает как надо, периодические значения устанавливаются
    на нужную дату. Неаккуратненько выглядит, ... но работает
     
  10. bremlin

    bremlin Гость

    Репутация:
    0
    Здравствуйте!
    Временно перекидывали на другие задачи, поэтому не получалось попробовать описанные варианты!
    Сделал, всё получилось. Решил что было бы неправильно не закончить тему)

    Помогло вот что:
    Ставим кнопочку даты:
    Код (Text):
    Процедура ВыборДаты()
    глВвестиДатуПериодическихРеквизитов(Контекст,1);
    КонецПроцедуры // ВыборДаты()

    Процедура ПриЗаписи()
    СтатусВозврата(глБухЗаписьПериодическихРеквизитов(Контекст))
    КонецПроцедуры // ПриЗаписи()
    Правда теперь выдаёт обе формы сохранения реквизитом, сперва спрашивает какие реквизиты будем сохранять, а потом уже другая форма где и дату поменять можно(хотя она уже указывается кнопкой).

    Спасибо вам большое.
     
Загрузка...

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