Имя: Пароль:
1C
1C 7.7
v7: Раскраска ячеек FormEx'ом
0 BLP
 
16.06.19
14:44
Приветствую!
Столкнулся с раскрасками таблиц через FormEx.
Пораскрашивал, где и что надо, по условиям строки и даже отдельные ячейки. Работает прекрасно.
Но вот столкнулся с одной проблемой, не получается.
Есть многострочный документ, в котором есть колонка условно "Товар". Бывает что данный "товар" дублируется в справочнике и периодически требуется помечать на удаление, чтобы оставить только один. И бывает что данный "товар“ забит в разных документам (то один , то дубликат), и помеченный нельзя удалить, пока он не в каком-то доке. Через функцию помеченных на удаление мне показывает в каком доке он находится, иду и меняю его на основной. Не проблем.
Но хотелось быть , чтобы при открытии документа в табличной части ячейка (не строка) с помеченным на удаление была визуально видна и цветная (красная, напр). Делаю все по аналогии с функциями в справочникам, а вот в доке не получается.
Мой код:  

Function FormEx_Check()
    DeleteGood = CreateObject("Reference.Good");  
    If DeleteGood.FindByCode(Good.Code,0)=1 Then
            If DeleteGood.DeleteMark()=1 Then    
            Return "BRUSH["+GetColour(255,0,0)+"]COUNT[1]INDENT[3]"
        EndIf;                              
        EndIf;
EndFunction
1 ДенисЧ
 
16.06.19
14:54
Анафейхоа искать в справочнике ссылку на ссылку?

А по сути - условие срабатывает?
2 BLP
 
16.06.19
15:06
По сути, это как?

В форме справочника ЭТО работает

ElsIf (Left(CurrentItem().Colour.Code,3)<>CurrentItem().Breed.Code) Then
Return "BRUSH["+GetColour(255,0,0)+"]COUNT[1]INDENT[5]";

Это выглядит так.
Если в форме елемента 3 первые буквы значения Color не такие же как Код значения Breed, то в списке справочника значение ячейки колонки Color будет красной. Работает. ))
3 BLP
 
16.06.19
15:08
Я хочу, чтобы в документе ячейка с наименованием товара тоже была красной, если этот товар в справочнике помечен на удаление .
По другому объяснить не могу. ((
4 ДенисЧ
 
16.06.19
15:11
"условие срабатывает?"
(с) я, ненаглядный
5 HawkEye
 
16.06.19
15:29
(0) что мешает у помеченных на удаление Елементов написать: "Не использовать!!"?
6 BLP
 
16.06.19
15:29
наверное, да ))
т.к. если для проверки я ставлю перед раскрашиванием команду "Сообщить“, Сообщение выводится у помеченного на удаление
7 BLP
 
16.06.19
15:34
(5) Естественно, никто помеченные на удаление элементы не использует и не вводит в док.

Спустя какое-то время появляется дубликат элемента в справочнике, видя 2 или даже 3 , я оставляю только один, а остальные помечаю на удаление. Потом начинаю искать где они, и заменять на реальный.

Вопросы типа "анафейхоа", а зачем - не по теме, значит, надо. Я прошу помочь по существу с реализацией функции или подсказать почему не работает.
8 Sserj
 
16.06.19
18:48
(7) Ну вообще в порядке эксперемента попбробуй после Return "BRUSH["+GetColour(255,0,0)+"]COUNT[1]INDENT[3]" поставить semicolon выражаясь твоим языком :)
9 Djelf
 
16.06.19
18:50
Вот это вот зачем?
DeleteGood = CreateObject("Reference.Good");  
    If DeleteGood.FindByCode(Good.Code,0)=1 Then
            If DeleteGood.DeleteMark()=1 Then    
У тебя же товар присутствует в табличной части, вот этого "If Good.DeleteMark()=1 Then" почему недостаточно?
10 Sserj
 
16.06.19
18:59
(9) Ну а как же по другому! А вдруг кто пометит товар после того как документ открыли, нужны всегда актуальные данные :)
Кстати все хотел на 1cpp спросить, новую sqlite планируется выкладывать, а то там вроде много ошибок в оконных функциях пофиксили.
11 HawkEye
 
16.06.19
19:30
(7) как написал, так и работает....  кто тебя знает что ты там наваял....
12 mikecool
 
16.06.19
22:14
(9) это до кучи к англоязычному коду ))
13 big
 
17.06.19
07:11
А в каком месте прописана функция FormEx_Check() ?  В какой колонке?
14 Djelf
 
17.06.19
11:08
(9) Я почти сразу же после релизов собираю, только афишировать лень ;)
https://cloud.mail.ru/public/9znr/ZJ6ULE9aR
15 BLP
 
17.06.19
12:29
(12) И только, у меня он весь на англо… А проблема в чем? Незнанепонима?
16 BLP
 
17.06.19
12:32
(9) Ну, как бы в описании написано что DeleteMark() работает только для объектов созданных функцией СоздатьОбъект(). Вот и подумал, что так надо ))
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан