ОБСУЖДЕНИЕ

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

6 ответов 5,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

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

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

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

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

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

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

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

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

КонецПроцедуры //ПриЗаписи
 
Всем спасибо!!! В итоге воспользовался вашим советом и повесил процедуру на колонку...
 
Кстати, по колонке тоже можно несколько раз пощелкать и дату испортить, если в процедуре не предусмотреть обработку этой ситуации
 
Hryv, ну, я не приводил текста процедуры - думаю сам догадается. А вообще, я бы поставил не проверку, но
ВыполнятьФормулуТолькоПриИзменении(...)