• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Табличная часть документа

  • Автор темы Guest
  • Дата начала
G

Guest

Конф-ция: 1С Бухгалтерия 7.7
Имеется табличная часть в документе... Имеется реквизит Состояние, которые привязан к одноименному перечислению.. Может принимать 2 положения: Выкуплен, НеВыкуплен (по умолч)
Также имеется реквизит ДАтаВыкупа (по умол. пустое), надо сделать следующее:

После редактирования всех полей табличной части, пользовательно проставляет Состояние где надо в Выкуплен... При записи документа, необходимо пройтись по записям и в строках где появилось Выкуплен установить ДАтаВыкупа = ТекущаяДата();
 
H

Hryv

В модуле формы

Код:
//*----*----*----*----*----*----*----*----*----*----*----*----*----*----*
Процедура ПриЗаписи()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Состояние = Перечисление.Состояние.Выкуплен Тогда
ДАтаВыкупа = ТекущаяДата(); 
КонецЕсли;
КонецЦикла;

КонецПроцедуры //ПриЗаписи

Если ПриЗаписи() там уже есть, то просто в нее добавить фрагмент кода
 
V

vitfil

Зачем это делать при записи документа, можете пояснить?
Что будет при повторной записи документа?
Не проще ли повесить процедуру на колонку с состоянием? Не только проще, но и грамотней.
 
H

Hryv

Не проще ли повесить процедуру на колонку с состоянием? Не только проще, но и грамотней.
;)

Что будет при повторной записи документа?
Если надо чтобы даты не менялись, то можно подправить

Код:
//*----*----*----*----*----*----*----*----*----*----*----*----*----*----*
Процедура ПриЗаписи()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если (Состояние = Перечисление.Состояние.Выкуплен) и (ПустоеЗначение(ДАтаВыкупа)=1) Тогда
ДАтаВыкупа = ТекущаяДата(); 
КонецЕсли;
КонецЦикла;

КонецПроцедуры //ПриЗаписи
 
G

Guest

Всем спасибо!!! В итоге воспользовался вашим советом и повесил процедуру на колонку...
 
H

Hryv

Кстати, по колонке тоже можно несколько раз пощелкать и дату испортить, если в процедуре не предусмотреть обработку этой ситуации
 
V

vitfil

Hryv, ну, я не приводил текста процедуры - думаю сам догадается. А вообще, я бы поставил не проверку, но
ВыполнятьФормулуТолькоПриИзменении(...)
 
Мы в соцсетях:

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