Не могу найти ошибку :(

  • Автор темы Irsis
  • Дата начала
I

Irsis

Гость
#1
Здравствуйте, всем!

Мучаюсь с функцией - не хочет работать. Что-то она у меня даже текущий документ в журнале не находит, хотя документов полно :rolleyes:


Функция ПроверитьСтатус()

Если ПустоеЗначение(ТекущийДокумент) =0 Тогда
Если СокрЛП(ТекДок.Статус)="PIETEIKTS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,153,204) + "]";
Иначе
Если СокрЛП(ТекущийДокумент.Статус)="PASјT¬TS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,255,153) + "]";
Иначе
Если СокрЛП(ТекущийДокумент.Статус)="IZPILD¬TS" Тогда
Возврат "FONT[" + ПолучитьЦвет(128,128,128) + "]";
Иначе
Если СокрЛП(ТекущийДокумент.Статус)="DA±¦JI IZPILD¬TS" Тогда
Возврат "FONT[" + ПолучитьЦвет(128,128,128) + "]"+ "BRUSH[" + ПолучитьЦвет(255,255,153) + "]";
Иначе
Если СокрЛП(ТекущийДокумент.Статус)="CENU PIEDЎVЎJUMS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,153,204) + "]";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат "";

КонецФункции



HELP!!!!!
 

puh14

Well-Known Member
11.07.2008
1 412
0
#2
А что это у тебя везде текущийдокумент, а в начале ТекДок?
и не проще ли взамен горы Иначе использовать ИначеЕсли?
Статус - это элемент справочника или строка? если справочника тогда лучше СокрЛП(Строка(ТекущийДокумент.Статус))


и что за ПолучитьЦвет? из formex?
 
I

Irsis

Гость
#3
А что это у тебя везде текущийдокумент, а в начале ТекДок?
Ups! Это я пробовала сама с проблемой разобраться и забыла своё художество полностью исправить :( Должно быть:

Если СокрЛП(ТекущийДокумент.Статус)="PIETEIKTS" Тогда

Это действительно из formex для установки шрифта и цвета ячейки в таблице при печати. Но как-то ненадёжно работает. Вроде всё было ОК, но при очередных изменениях (менялись обсолютно другие вещи) перестало работать. За : Если ПустоеЗначение(ТекущийДокумент) =0 Тогда вставила: Сообщить ("а"); заработало всё :( Ерунда какая-то. Скорее всего что-то криво написано, вот только что?
 

puh14

Well-Known Member
11.07.2008
1 412
0
#4
Статус это элемент справочника, строка или число или неопределено?

другие условия поиска выполняются?
 
I

Irsis

Гость
#5
Статус - это реквизит шапки документа. В зависимости от статуса документа в журнале документов меняются цвета - было очень удобно, пока не накрылось :(
 

puh14

Well-Known Member
11.07.2008
1 412
0
#6
тип реквизита какой? справочник, строка, документ, число или неопределенный?
 

puh14

Well-Known Member
11.07.2008
1 412
0
#8
ТОгда лучше так СокрЛП(Строка(ТекущийДокумент.Статус)) или так СокрЛП(Строка(ТекущийДокумент.Статус.Наименование)) - а то получается что ты от справочника, не переведя его в строку пытаешся пробелы убрать.

А то по чему ты отсеиваешь это наименование в справочнике или дополнительный реквизит?
 
I

Irsis

Гость
#9
А то по чему ты отсеиваешь это наименование в справочнике или дополнительный реквизит?
Наименование :(

У меня как-то всё совсем запущено :( На сколько я понимаю, не работает уже Если ПустоеЗначение(ТекущийДокумент) =0 Тогда
То есть выражение ПустоеЗначение(ТекущийДокумент) у меня равно 1 - документов типа нет
 

vbs

Well-Known Member
18.02.2007
1 708
3
#10
Попробуй
Если ПустоеЗначение(ТекущийДокумент()) =0 Тогда
 
I

Irsis

Гость
#11
:( Не помогает. Пишет {Журнал.Счета.Форма.ФормаСписка.Модуль(54)}: Функция не обнаружена (ТекущийДокумент)
 

puh14

Well-Known Member
11.07.2008
1 412
0
#12
А нафиг тебе вообще это ПустоеЗначение? Документы которых нет в журнал всё равно не попадут.

Функция ПроверитьСтатус()


Если СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="PIETEIKTS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,153,204) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="PASјT¬TS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,255,153) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="IZPILD¬TS" Тогда
Возврат "FONT[" + ПолучитьЦвет(128,128,128) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="DA±¦JI IZPILD¬TS" Тогда
Возврат "FONT[" + ПолучитьЦвет(128,128,128) + "]"+ "BRUSH[" + ПолучитьЦвет(255,255,153) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="CENU PIEDЎVЎJUMS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,153,204) + "]";
Иначе
Возврат "";
КонецЕсли;



КонецФункции
так попробуй
 
I

Irsis

Гость
#13
Ну теперь он мне пишет: поле агрегатного объекта не обнаружено (Статус).
Интересно почему? В документе такой реквизит есть, в журнале документов такая графа имеется :)
 

puh14

Well-Known Member
11.07.2008
1 412
0
#14
Одна из букв нерусская - копирни статус из наименования в конфигураторе.

А на каком документе стопится? Наименование его выводит?
Типа сообщить(текущийДокумент);
 
I

Irsis

Гость
#15
Одна из букв нерусская - копирни статус из наименования в конфигураторе.
Буквы вроде проверяла (это было первое, что в голову пришло, когда функция работать отказалась). Пройдусь ещё раз для надёжности.
 

puh14

Well-Known Member
11.07.2008
1 412
0
#16
А блин - понял. В форме списка журнала могуть быть пустые строки - затем и пустой нужен, потому наверно и ругается. Давай так

Функция ПроверитьСтатус()

Если (Число(ТекущийДокумент.Выбран())>0) И (ТекущийДокумент.Вид()="Счет") тогда
Если СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="PIETEIKTS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,153,204) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="PASјT¬TS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,255,153) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="IZPILD¬TS" Тогда
Возврат "FONT[" + ПолучитьЦвет(128,128,128) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="DA±¦JI IZPILD¬TS" Тогда
Возврат "FONT[" + ПолучитьЦвет(128,128,128) + "]"+ "BRUSH[" + ПолучитьЦвет(255,255,153) + "]";
ИначеЕсли СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="CENU PIEDЎVЎJUMS" Тогда
Возврат "BRUSH[" + ПолучитьЦвет(255,153,204) + "]";
Иначе
Возврат "";
КонецЕсли;
КонецЕсли;



КонецФункции

кстати - такая конструкция нужна скорее для подсветки в форме списка журнала, а не для печати. При печати проще выбирать документы через СоздатьОбъект. Может я таки что-то плохо понимаю?
 
I

Irsis

Гость
#17
Больше не ругается, но и не раскрашивает :)
кстати - такая конструкция нужна скорее для подсветки в форме списка журнала, а не для печати.
Тут я тебе не правильно ответила :P Извини, тут пишу по-русски, думаю по-латышски :) Действительно, раскрашиваю я форму списка журнала ;)

Не... у меня точно что-то с текущим документом :) Если после
Код:
Если (Число(ТекущийДокумент.Выбран())>0) И (ТекущийДокумент.Вид()="Счет") тогда
вставить Сообщить ("Да"); Нечего мне никто не сообщает. То есть нет в журнале ни одного выбранного документа Счет, хотя их там толпа
 
I

Irsis

Гость
#19
Что-то мы одинаково мыслим :) Ещё до того, как предидущее сообщение писать попробовала с и без условия на Счёт

А с самим выражение ТекущийДокумент могло что-то случиться? У нас тут ставка НДС с нового года поменялась, а я в отпуске была. И после того, как в моей конфигурации "попрограмировали" вся эта ерунда и случилась. Конечно не смертельно и можно спокойно жить без цветного журнала, но народ привык и теперь просит. Да и самой хочется понять в чём дело.
 

puh14

Well-Known Member
11.07.2008
1 412
0
#20
Без условия на счет не ругается?
А условие Число(ТекущийДокумент.Выбран())>0 выполняет?
Если не ругается - значит кажись проходит условие.

С ТекущийДокумент ничего случится не может. А НДС--ээээ - а тебе конфу не обновили случаем? тогда прощай formex - его запросто могли затереть( в смысле загрузку).
Тогда вообще раскрашиваться не будет. Или версию dll махнули.

ПРоверил кстати на своих журналах - пофигу Число(ТекущийДокумент.Выбран())>0 - и без него работает.


ещё идейка - а ты уверена что имеешь дело именно с формой списка, а не ТЗ, подогнаной под неё? По моему представлению это как раз тот случай когда текущийдокумент не работает.

ещё вариант - добавлена переменная ТекущийДокумент - если так, убивать её нещадно.