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

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

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

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

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

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

Irsis

Здравствуйте, всем!

Мучаюсь с функцией - не хочет работать. Что-то она у меня даже текущий документ в журнале не находит, хотя документов полно :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!!!!!
 
P

puh14

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


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

Irsis

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

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

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

puh14

Статус это элемент справочника, строка или число или неопределено?

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

Irsis

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

puh14

тип реквизита какой? справочник, строка, документ, число или неопределенный?
 
P

puh14

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

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

Irsis

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

Наименование :(

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

vbs

Попробуй
Если ПустоеЗначение(ТекущийДокумент()) =0 Тогда
 
I

Irsis

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

puh14

А нафиг тебе вообще это ПустоеЗначение? Документы которых нет в журнал всё равно не попадут.

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


Если СокрЛП(Строка(ТекущийДокумент.Статус.Наименование))="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

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

puh14

Одна из букв нерусская - копирни статус из наименования в конфигураторе.

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

Irsis

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

puh14

А блин - понял. В форме списка журнала могуть быть пустые строки - затем и пустой нужен, потому наверно и ругается. Давай так

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

Если (Число(ТекущийДокумент.Выбран())>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

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

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

Irsis

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

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

puh14

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

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

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


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

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

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