Имя: Пароль:
1C
1С v8
Проблема с флажком
,
0 Baumgartlinger
 
18.02.19
16:02
Добрый день!

У меня есть процедура, когда по условию я присваиваю флажку истина - то в отладке его я уже изменить не могу, хотя эта возможность мне нужна
по типу "пометка = не пометка"
никак не получается

Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
//ОформлениеСтроки.Ячейки.БУ.ОтображатьФлажок = Истина;
ОформлениеСтроки.Ячейки.вЫГРУЗИТЬ.ОтображатьФлажок = Истина;

Если ДанныеСтроки.ВыгруженоВПрофит = Ложь Тогда
    оформлениестроки.ячейки.Выгрузить.Флажок= Истина;

    //оформлениестроки.ячейки.Выгрузить.Значение = Истина;
Иначе
    оформлениестроки.ячейки.Выгрузить.Флажок= Ложь;
    //оформлениестроки.ячейки.Выгрузить.ЗначениеФлажка = ложь;

    КонецЕсли;
КонецПроцедуры
1 butterbean
 
18.02.19
16:04
флажки нужно менять при изменении данных, а не при обновлении отображения строк
2 Baumgartlinger
 
18.02.19
16:12
(1) видите в чем дело, там, где у меня ложь, нет флажка, там я могу его показывать/скрывать, кликав на него
3 Baumgartlinger
 
18.02.19
16:12
без запятой после первого "там"
4 RomanYS
 
18.02.19
16:13
(2) ПриВыводеСтроки происходит без "кликав на него"
5 Baumgartlinger
 
18.02.19
16:18
(4) к этой колонке с флажком привязано событие "ПриИзменении", но оно тоже не то
6 butterbean
 
18.02.19
16:22
(5) есть событие табличного поля ПриИзмененииФлажка, юзай его
7 RomanYS
 
18.02.19
16:23
(5) может сначала найти "то" событие?
8 Baumgartlinger
 
18.02.19
16:25
(6) в точку,спасибо
9 Baumgartlinger
 
18.02.19
16:26
(7) нашли
10 Baumgartlinger
 
18.02.19
16:40
у меня этот реквизит "Выгрузить" висит на форме, и через колонка обращаться не могу:/

Процедура ДокументСписокПриИзмененииФлажка(Элемент, Колонка)
    Если Элемент.Колонки.Выгрузить.ЭлементУправления.Значение = Истина Тогда
        Элемент.Колонки.Выгрузить.ЭлементУправления.Значение = Ложь
    КонецЕсли;
    Если Элемент.Колонки.Выгрузить.ЭлементУправления.Значение = Ложь Тогда
        Элемент.Колонки.Выгрузить.ЭлементУправления.Значение = Истина
    КонецЕсли;
КонецПроцедуры

так ничего не меняет:(
в самих данных флажка, данных колонки выгрузить висит "" (пустая строка)
11 RomanYS
 
18.02.19
16:43
(10) Флажок должен меняться сам. В ПриИзмененииФлажка ты можешь дополнительные действия засунуть?

(9) Похоже пока нет)
12 RomanYS
 
18.02.19
16:44
*(11) в первой строке "?" лишний
13 Baumgartlinger
 
18.02.19
16:49
(11) да-да, и я думаю что меняться то должен, но если галочка проставлена, изменить уже не могу, не проставлена - кручу-верчу сколько захочу
14 RomanYS
 
18.02.19
16:53
(13) Начни с того где этот флажок должен храниться, это реквизит документа?
15 Baumgartlinger
 
18.02.19
16:54
(14) реквизит формы
16 Ёпрст
 
18.02.19
16:55
(15) поставщик табличного поля что хоть у тебя ? Таблица значений/табличная часть дока ?
17 RomanYS
 
18.02.19
16:56
(16) судя по названию ДокументСписок - это не ТЗ и не ТЧ
18 RomanYS
 
18.02.19
16:58
(15) Т.е. просто колонка добавлена у ТП.
Хранить в базе ты её не планируешь?
19 Baumgartlinger
 
18.02.19
17:00
(18) не планировал, думал что так получится
20 Ёпрст
 
18.02.19
17:01
(17) ага,
ну тогда тупо задаешь Соответствие в пРиОткрытии, в котором хранишь ССылку и состояние флага.
Само соответсвие заполняешь по мере надобности в ПриПолученииДанных. усё.
21 Baumgartlinger
 
18.02.19
17:01
(16) стандартный ДокументСписок, тз вроде
22 Baumgartlinger
 
18.02.19
17:01
(20) момент..
23 RomanYS
 
18.02.19
17:02
(19) Смысл флажка озвучь
24 Ёпрст
 
18.02.19
17:04
(23) пометить необходимые доки для чего либо в форме списка документов вестимо
25 Baumgartlinger
 
18.02.19
17:04
(23) Если ДанныеСтроки.ВыгруженоВПрофит = Ложь Тогда
    оформлениестроки.ячейки.Выгрузить.Флажок= Истина;
26 Baumgartlinger
 
18.02.19
17:06
(23) Если в документе основании выгруженовпрофит = ложь, тогда я проставляю галочки в "выгрузить", значит эти документы надо будет выгрузить еще, НО, галочку при надобности я должен иметь возможность менять
27 RomanYS
 
18.02.19
17:08
(26) Эти галочки живут только в форме до выполнения какого-то обработчика в этой же форме?
28 Baumgartlinger
 
18.02.19
17:09
(27) да
29 RomanYS
 
18.02.19
17:11
(28) тогда что-то подобное (20): отмеченные документы хранить в какой-либо коллекции, ПриВыводе - читать их оттуда. А вот изменять - надо посмотреть по какому событию, возможно "выбор"
30 Baumgartlinger
 
18.02.19
17:19
(29) не подскажете как я могу обратиться к ссылке в ПриОткрытии()?
31 Ёпрст
 
18.02.19
17:20
(30)
тебе оно не надо
32 RomanYS
 
18.02.19
17:22
(30) к какой ссылке?
33 Ёпрст
 
18.02.19
17:28
тебе надо всего лишь типа того:

Перем СоответствиеДоков;

....
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        СтрПоиска = СоответствиеДоков.Получить(ОформлениеСтроки.ДанныеСтроки.ССылка);
    Если СтрПоиска<>Неопределено  Тогда
           СоответствиеДоков.Вставить(ОформлениеСтроки.ДанныеСтроки.ССылка,"Ложь");
           СтрПоиска = ложь;
        КонецЕсли;
        ОформлениеСтроки.Ячейки.ТвояКолонкаСФлажком.ОтображатьФлажок = Истина;
        ОформлениеСтроки.Ячейки.ТвояКолонкаСФлажком.ЗначениеФлажка = СтрПоиска;
   КонецЦикла;
КонецПроцедуры
......

СоответствиеДоков = Новый Соответствие;
34 Baumgartlinger
 
18.02.19
17:28
(20) ссылка на значение
35 Ёпрст
 
18.02.19
17:30
ну и событие выбор еще повесить:


Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Если ЭтаФорма.РежимВыбора Тогда
        Возврат;
    КонецЕсли;
    Если Колонка.Имя="ИмяТвоейКолонкиСФлажком" Тогда
        СтрПоиска = СоответствиеДоков.Получить(ВыбраннаяСтрока.ССылка);
        Если СтрПоиска<>Неопределено  Тогда
                 СоответствиеДоков.Вставить(ВыбраннаяСтрока.ССылка, НЕ СтрПоиска);
        КонецЕсли;
        СтандартнаяОбработка=Ложь;
    КонецЕсли;
КонецПроцедуры
36 RomanYS
 
18.02.19
17:43
(33)(35) А зачем писать в коллекцию не отмеченные документы? И почему в (33) Ложь в кавычках?

А так да, то что нужно ТСу
37 Baumgartlinger
 
18.02.19
18:05
(35) спасибо большое за такое упорство
38 Baumgartlinger
 
18.02.19
18:07
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        СтрПоиска = СоответствиеДоков.Получить(ОформлениеСтроки.ДанныеСтроки.ВыгруженоВПрофит);
        Если СтрПоиска<>Неопределено  Тогда
            СоответствиеДоков.Вставить(ОформлениеСтроки.ДанныеСтроки.ВыгруженоВПрофит,"Ложь");
            СтрПоиска = ложь;
        КонецЕсли;
        ОформлениеСтроки.Ячейки.Выгрузить.ОтображатьФлажок = Истина;
        ОформлениеСтроки.Ячейки.Выгрузить.ЗначениеФлажка = СтрПоиска;
    КонецЦикла;    
КонецПроцедуры

Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
    Если ЭтаФорма.РежимВыбора Тогда
        Возврат;
    КонецЕсли;
    Если Колонка.Имя="Выгрузить" Тогда
        СтрПоиска = СоответствиеДоков.Получить(ВыбраннаяСтрока.ВыгруженоВПрофит);
        Если СтрПоиска<>Неопределено  Тогда
            СоответствиеДоков.Вставить(ВыбраннаяСтрока.ВыгруженоВПрофит, НЕ СтрПоиска);
        КонецЕсли;
        СтандартнаяОбработка=Ложь;
    КонецЕсли;
КонецПроцедуры

на выходе получается вот так: https://prnt.sc/mmqgm2
А должно быть: https://prnt.sc/mmqgpy
39 hhhh
 
18.02.19
18:11
(38) "Ложь" - что за бред? О булевых переменных не слышал что ли?
40 Ёпрст
 
18.02.19
18:24
(36) %)

дык копипасте же.. на коленке же код написан
41 Ёпрст
 
18.02.19
18:25
(38) поправь

СоответствиеДоков.Вставить(ОформлениеСтроки.ДанныеСтроки.ВыгруженоВПрофит,Ложь);
42 Baumgartlinger
 
18.02.19
18:26
(41) я поправлял в ходе копирования, оно результата не дало, поэтому все и оставил
43 RomanYS
 
18.02.19
18:28
(40) Понятно) , а зачем вообще ложь в коллекцию писать? Флажок сняли - удалил из коллекции, я бы так делал.
44 RomanYS
 
18.02.19
18:30
(38) Данный код даёт возможность галочки ставить. Для начальной расстановки можно коллекцию заполнить, например, при открытии.
45 Baumgartlinger
 
18.02.19
18:31
(44) теперь понял, спасибо
46 RomanYS
 
18.02.19
18:34
(45) Учти ещё один момент: в коллекции может быть больше элементов чем видно в списке. Возможно при обработке стоит проверять, что строка попадает в отбор, период и т.д.
47 Baumgartlinger
 
18.02.19
19:00
ПОдскажите, а это нормально что при отладке, когда изменяю значение флажка процедура ДокументСписокВыбор не срабатывает?
срабатывает лишь когда кликаю мимо флажка (в этой же колонке), и оно летит открывать документОснование
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший