Имя: Пароль:
1C
1С v8
Условное редактирование документа в БП 2.0
0 YF
 
19.05.14
12:49
Бухгалтерия предприятия 2.0 (клиент-серверный вариант работы)

При записи СписаниеСРасчетногоСчета штатно изменяется платежное поручение (ПП) (в нем ставится "признак" оплаченности)

Хочу при наличии такого признака в ПП запретить записывать ПП любым способом, кроме редактирования списания с расчетного счета.

Как сделать? Хочется какое-нибудь красивое решение.
Конфигурацию можно править.
1 vicof
 
19.05.14
12:56
Передавай в объект допсвойство и анализируй его перед записью, делов-то.
2 YF
 
19.05.14
12:57
(1) Как в ПередЗаписью передать параметр?
3 pervakovanton
 
19.05.14
13:00
ЭтотОбъект.ДополнительныеСвойства.Вставить("ИзСписания",Истина)
4 YF
 
19.05.14
13:52
(3) Прекрасно, а каким образом мы поймем, что это доп. свойство установлено именно при проведении ПП, а не кем-то вручную. И что помешает пользователю самому создать такое свойство руками?
5 YF
 
19.05.14
13:56
+ Доп свойства будут доступны для конкретного экземпляра объекта в процедуре.

При проведении Списания у объекта их установим, в процедуре ПередЗаписью() у ПП они будут доступны?
6 pervakovanton
 
19.05.14
14:06
должно быть при проведении списания получается ПП(объект) и записывается. Если ему установить допсвойство то оно будет доступно все время существования объекта(и перед записью тоже)

Проверить наличие своййства можно так
Если ДополнительныеСвойства("ИзСписания",ИзСписания) И ИзСписания = Истина Тогда
7 YF
 
19.05.14
14:13
(6) Время существования какого объекта? Объекта встроеного языка или объекта БД?
8 pervakovanton
 
19.05.14
14:23
Объекта встроеного языка
9 YF
 
19.05.14
14:26
(8) Каким образом объект встроенного языка перенесется из процедуры СписанияСРасчетногоСчета в процедуру ПП?
10 pervakovanton
 
19.05.14
14:40
ЭтотОбъект.Записать()
11 YF
 
19.05.14
14:45
(10)



После "объектПП_.Записать();" в списании управление передается в ПередЗаписью ПП.
грубая прикидка ниже.


*** Списание. МодульОбъекта

При проведении:

ссылка_ = ЭтотОбъект.ПлатежноеПоручение;
объектПП_ = ссылка_.ПолучитьОбъект();

//объектПП_  - это тот самый объект встроенного языка.

объектПП_.ДополнительныеСвойства.Вставить("ИзСписания",Истина)
объектПП_.Записать();



*** ПП. МодульОбъекта

ПередЗаписью

ДополнительныеСвойства("ИзСписания",ИзСписания) - ?

//Здесь будут видны доп. свойства????
12 pervakovanton
 
19.05.14
14:52
да, будет видно и в модуле объекта и в подписках
13 pervakovanton
 
19.05.14
14:53
(6) тут ошибочка
правильно
ДополнительныеСвойства.Свойство("ИзСписания",ИзСписания)

т.е. дополнительные свойства это структура которая прилеплена к объекту
14 YF
 
19.05.14
16:36
pervakovanton

Спасибо, что открыл глаза на дополнительные свойства.
Раньше их не использовал.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.