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

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

  1. bremlin

    bremlin Гость

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

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

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

    vbs Well-Known Member

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

    bremlin Гость

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

    vbs Well-Known Member

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

    bremlin Гость

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

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

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

    vbs Well-Known Member

    Регистрация:
    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

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

    vbs Well-Known Member

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

    bremlin Гость

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

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

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

    Спасибо вам большое.
     
Загрузка...
Похожие Темы - Установить значение реквизита
  1. paxac
    Ответов:
    6
    Просмотров:
    69
  2. paxac
    Ответов:
    0
    Просмотров:
    51
  3. Unfuckable
    Ответов:
    1
    Просмотров:
    66
  4. d7uk4r3v
    Ответов:
    16
    Просмотров:
    466
  5. NaVi_vl
    Ответов:
    15
    Просмотров:
    291

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