|
глВсеРеквизитыДокументаЗаполнены | ☑ | ||
---|---|---|---|---|
0
Sj
24.10.08
✎
13:25
|
привет!
Кто-нить может сюда кинуть сабжевую функцию? А то я оригинал не совсем понимаю и уже начинаю сомневаться, что это оригинал. |
1 3 |
||
1
ДенисЧ
24.10.08
✎
13:26
|
У меня так...
Функция глВсеРеквизитыДокументаЗаполнены(Конт,СписокРеквизитов) Экспорт Если Константа.РазрешитьПроводитьБудущейДатой = 0 Тогда Если Конт.ДатаДок>РабочаяДата() Тогда глНеПроводить(Конт,"Нельзя проводить документ будущей датой!"); Возврат (0); КонецЕсли; КонецЕсли; Пока СтрДлина(СписокРеквизитов)>0 Цикл ПозЗапятой = Найти (СписокРеквизитов,","); Если ПозЗапятой = 0 Тогда ИдентРеквизита = СписокРеквизитов; СписокРеквизитов = ""; Иначе ИдентРеквизита = Сред(СписокРеквизитов,1,ПозЗапятой-1); СписокРеквизитов = Сред(СписокРеквизитов,ПозЗапятой+1); КонецЕсли; Если ПустоеЗначение(Конт.ПолучитьАтрибут(ИдентРеквизита))=1 Тогда ВидДок = Конт.Вид(); Если Метаданные.Документ(ВидДок).РеквизитШапки(ИдентРеквизита).Выбран()=1 Тогда Объект = Метаданные.Документ(ВидДок).РеквизитШапки(ИдентРеквизита); ИначеЕсли Метаданные.ОбщийРеквизитДокумента(ИдентРеквизита).Выбран()=1 Тогда Объект = Метаданные.ОбщийРеквизитДокумента(ИдентРеквизита); ИначеЕсли Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(ИдентРеквизита).Выбран()=1 Тогда Объект = Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(ИдентРеквизита); Иначе глНеПроводить(Конт,"ВсеРеквизитыДокументаЗаполнены(): Неверный реквизит:"+ИдентРеквизита); Возврат (0); КонецЕсли; ПредставлениеРеквизита = ?(ПустоеЗначение(Объект.Синоним)=0,Объект.Синоним,Объект.Идентификатор); глНеПроводить(Конт,"Не заполнен реквизит """+ПредставлениеРеквизита+""""); Возврат (0); КонецЕсли; КонецЦикла; Возврат (1); КонецФункции // глВсеРеквизитыДокументаЗаполнены() |
1 |
||
2
Sj
24.10.08
✎
13:29
|
Да. Оно. Тогда не понятно, что сначала анализируется
Если ПустоеЗначение(Конт.ПолучитьАтрибут(ИдентРеквизита))=1 Тогда и только потом, если оно не заполнено анализируется наличие данного атрибута в документе... хотя, имхо, логичнее было бы наоборот. Так как - я попробовал - при атрибуте, которого нет в доке, вываливается ошибка. |
5 |
||
3
Sj
24.10.08
✎
13:31
|
то бишь до вот этой вот ветки мы просто никогда не сможем дойти:
" Иначе глНеПроводить(Конт,"ВсеРеквизитыДокументаЗаполнены(): Неверный реквизит:"+ИдентРеквизита); Возврат (0); " |
6 8 |
||
5
Serjant
24.10.08
✎
13:34
|
(2) Через метаданные делается "красивая строка" для сообщения, т.к. идентификатор реквизита пользователю может быть непонятен.
|
|||
6
Ёпрст
24.10.08
✎
13:36
|
(3) гы-гы... если еще подумать, придёт озарение...
|
9 |
||
7
Sj
24.10.08
✎
13:36
|
Но ветка "Иначе
глНеПроводить(..." все же нужна, правильно ? |
|||
8
Serjant
24.10.08
✎
13:36
|
(3) Передавай в эту функцию строку с идентификаторами фактически имеющихся в доке реквизитов.
|
9 |
||
9
Sj
24.10.08
✎
13:39
|
10 12 |
|||
10
Ёпрст
24.10.08
✎
13:41
|
(9) передал реквизит формы, а не документа, например.
|
11 |
||
11
Sj
24.10.08
✎
13:43
|
(10) Конт.ПолучитьАтрибут(ИдентРеквизита) - ПолучитьАтрибут это метод документа, а не формы... Ну то бишь я туда и реквизит формы передал и такую же ошибку получил.
|
14 |
||
12
Serjant
24.10.08
✎
13:44
|
(9) Потому как проверять реквизиты табличной части не всегда получится, строка может невыбрана.
|
15 |
||
14
Ёпрст
24.10.08
✎
13:48
|
(11) Открой СП и почитай... ПолучитьАтрибут есть не только у документа, если что.
|
17 |
||
15
Sj
24.10.08
✎
13:51
|
(12) для проверки реквизитов ТЧ нужно выбратьстроки(), но по любому, табчасть отработается веткой ИначеЕсли Метаданные.Документ(ВидДок).РеквизитТабличнойЧасти(ИдентРеквизита).Выбран()=1 Тогда
|
|||
16
Serjant
24.10.08
✎
13:53
|
Открой в отладчике и посмотри Конт.ТекущаяСтрока(). Выборка в модуле документа не меняет текущую строку на форме документа.
|
|||
17
Sj
24.10.08
✎
13:54
|
(14) а. точно. сорри. но ошибка вываливается, если я реквизит формы туда передаю.
|
18 |
||
18
Ёпрст
24.10.08
✎
13:56
|
(17) Забей, просто делали универсальную процу, которую можно вызывать не из Модуля документа, а из модуля формы, передав контекст/ссылку на сам документ... например, в ПриЗаписи()...
|
19 |
||
19
Sj
24.10.08
✎
13:58
|
(18) а. тогда понятно. а то у меня только при проведении вызывается, вот я и гружусь.
Спасибо! Так наверняка и есть, как ты сказал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |