• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы bremlin
  • Дата начала
B

bremlin

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

Дайнеко

Все дело в команде СохранениеПериодическихРеквизитов()
 
V

vbs

При сохранении элемента организуй диалог с получением нужной даты,
а в конце процедуры ПриЗаписи() поставь оператор :
ИспользоватьДату(НужнаяДата)
 
B

bremlin

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

vbs

Я стесняюсь спросить,но у меня в принципе процедура ПриЗаписи() пустая была. Это нормально или там что-то должно быть?
А что стесняться - не знал, вот и спросил ;)
Если надо - ее следует описать в модуле. Если нет - ее может и не быть.
Обычно в ней, например, проверяется, заполнены ли основные реквизиты
 
B

bremlin

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

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

также с (5) пробовал(
 
V

vbs

Вот 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
 
Д

Дайнеко

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

vbs

СохранениеПериодическихРеквизитов(1, "*"); надо вызвать 1 раз при открытии формы. У меня она стоит в самом конце модуля. Можно в ПриОткрытии().
Смысл в том, что бы программа знала как себя вести к моменту записи.
Проверил свой кусок кода
1. СохранениеПериодическихРеквизитов можно вставить явно, можно и на вставлять - диалог все равно появляется
с предложением сохранить на Текущую дату
2. Вне зависимости от п.1 ИспользоватьДату(УстановленнаяДата) отрабатывает как надо, периодические значения устанавливаются
на нужную дату. Неаккуратненько выглядит, ... но работает
 
B

bremlin

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

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

Процедура ПриЗаписи() 
СтатусВозврата(глБухЗаписьПериодическихРеквизитов(Контекст))
КонецПроцедуры // ПриЗаписи()

Правда теперь выдаёт обе формы сохранения реквизитом, сперва спрашивает какие реквизиты будем сохранять, а потом уже другая форма где и дату поменять можно(хотя она уже указывается кнопкой).

Спасибо вам большое.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!