Имя: Пароль:
1C
1C 7.7
v7: 7.7 Пиктограммы в документах
0 Молодой 1Снег
 
13.10.11
19:03
Пытаюсь сделать галочки в табличной части документа.

Вставил в табличную часть элемент диалога “Текст”, в свойствах “Текста”, на закладке “Дополнительно” указал “Показывать пиктограммы”, в свойствах Многострочной части на закладке “Картинка” указал нужный мне набор пиктограмм. В “Формуле” прописал вызов функции, которая должна возвращать число, соответствующее номеру пиктограммы.

А вот что писать в этой функции? Надо что бы по двойному клику по пиктограмме галочка ставилась если ее не было и снималась если была.
1 Молодой 1Снег
 
13.10.11
19:03
Вот так не получается :(

Функция Галочка(Пометка)
   Если Метка = 1 тогда
       Возврат 2;
   ИначеЕсли Метка = 2 тогда
       Возврат 1;
   КонецЕсли;
КонецФункции
2 Сияющий Асинхраль
 
13.10.11
19:06
Передаешь переменную Пометка - Галочка(Пометка), а работаешь в коде с переменной Метка :-)
Вообще много кода, проще Метка = ?(Метка = 1,2,1); вот и вся функция...
3 vmv
 
13.10.11
19:06
0, 1 - картинка это индексированная коллекция, даже если она одна.

динозавр 77)
4 Молодой 1Снег
 
13.10.11
19:09
(2) Ошибка:
Попытка присвоить значение недоступной для записи переменной (Метка)
5 Молодой 1Снег
 
13.10.11
19:10
Перенесите тему в v7, пожалуйста.
6 Молодой 1Снег
 
13.10.11
19:16
Так как надо правильно возвращать число, соответствующее номеру пиктограммы?
7 Молодой 1Снег
 
13.10.11
19:31
Нашел пример как сделать в случае если пиктограмма это реквизит табличной части документа:

http://alllexe.com/2010/11/1s-7-7-kak-dobavit-piktogrammu-znachok-v-tablichnuyu-chast/

А если мне не надо хранить пиктограммы в табличной части, и они являются только реквизитами формы, подскажите как быть в этом случае?
8 Молодой 1Снег
 
13.10.11
19:39
Всем спасибо! Код вот такой:


Функция Галочка()
   Возврат Флажок;
КонецФункции

Процедура ПриНачалеРедактированияСтроки()
   Если СокрЛП(Форма.ТекущаяКолонка())="Метка" Тогда  
       Если Флажок=1 Тогда
           Флажок=2;
       ИначеЕсли Флажок=2 Тогда
           Флажок=1;
       КонецЕсли;            
   КонецЕсли;
КонецПроцедуры
9 Молодой 1Снег
 
13.10.11
19:45
(8) Хотя не совсем верно. Этот код снимает или устанавливает галочки сразу во всех строках.

Как определить текущую строку?
10 G-Re
 
13.10.11
19:51
АктивныйЭлемент()
НомерСтроки
Если Формекс, то еще можно ПриДвойномНажатииМышки() и тп
11 Молодой 1Снег
 
13.10.11
19:59
(10) Формекса нет.

А как изменить галочку только в текущей строке?
12 filh
 
13.10.11
20:08
было недавно для Табл, даже прииер крутой от Ёпрст3
в поиск в общем.
13 G-Re
 
13.10.11
23:16
(11) относительно (7). Пиктограммки в ТЧ хранить не нужно, НО ведь наличие пиктограммки на форме в ТЧ свидетельствует о каком-то статусе записи, например 0,1.
Этот статус желательно хранить в структуре строки документа, чтобы при последующем открытии документа строки были соотв. образом помечены пиктограммками.
Я делал через Формекс (он мне все-равно был нужен для раскраски и пр.)

Примерно так:
Статус - Число - реквизит ТЧ.
тСтатус - текст на ТЧ формы для пиктограммки.

Процедура ПриДвойномНажатииЛевойКнопки(Сост,Х,У,ФСО)
   АЭ=Форма.АктивныйЭлемент();
   Если АЭ="тСтатус" Тогда
   Правый=Макс(0,1-Правый);
14 G-Re
 
13.10.11
23:20
(13)+
Процедура ПриДвойномНажатииЛевойКнопки(Сост,Х,У,ФСО)
   АЭ=Форма.АктивныйЭлемент();
   Если АЭ="тСтатус" Тогда
     Статус=?(Статус=1,2,1);
   КонецЕсли;
КонецПроцедуры

где-то так, пишу по памяти, могут быть неточности.
15 Молодой 1Снег
 
13.10.11
23:29
(13) Чтобы не было домыслов, могу пояснить для чего мне нужны эти галочки в табличной части. Делаю документ который по сути является актом выполненных работ. В табличную часть заносится перечень работ. Но фишка в том, что разные работы из этого списка могут делать разные люди (т.е. в табличной части есть реквизит Справочник.Работники).
Так вот, что бы оператор не заполнял в каждой отдельной строке работника я пытаюсь немного автоматизировать этот процесс. На форме создал поле поле ввода Справочник.Работники, оператор выбирает там нужного работника, отмечает галочками строки тех работ которые выполнил этот работник и нажимает кнопочку Заполнить. Реквизиты табличной части соответственно заполняются.

Возможно ли это без Формекса?
16 Молодой 1Снег
 
13.10.11
23:32
+(15) Т.е. при последующем открытии документа, совершенно не важно каким образом будут помечены строки. Лучше чтобы галочки нигде не стояли.
17 Ёпрст
 
14.10.11
00:59
18 filh
 
14.10.11
08:14
(17) крута)
Флаг<<?>>+1
Неопознанный оператор
19 Ёпрст
 
14.10.11
09:46
(18) Ну и в каком месте эта ошибка у тебя ?
20 Молодой 1Снег
 
14.10.11
11:15
(17) Пример конечно хороший. Но опять же флаги хранятся в реквизите табличной части. Можно ли их не хранить, а использовать только реквизиты формы?
21 Ёпрст
 
14.10.11
11:16
(20)Не храни, разрешаю.
22 Молодой 1Снег
 
14.10.11
11:17
(21) Тогда не работает
23 filh
 
14.10.11
11:18
(19) а когда новую строку заводишь инсертов и сразу выбираешь первую строчку мышкой.
24 filh
 
14.10.11
11:18
инсертов= инсертом
25 Ёпрст
 
14.10.11
11:21
(22) врешь
26 filh
 
14.10.11
11:22
Создаешь новый документ "Пример". Нажимаешь Ins (или добавляешь по иконке). И теперь ткни мышкой в табличное поле в любое место, кроме созданой строки.
27 Ёпрст
 
14.10.11
11:23
(23) нет такой ошибки
28 Молодой 1Снег
 
14.10.11
11:24
(25) Мамой клянусь!
29 Ёпрст
 
14.10.11
11:26
(26) надо просто местами поменять в формуле = 1+флаг
а так, примеру лет 10 и писался он для таких, как (0).
30 Ёпрст
 
14.10.11
11:26
(28) ну что тут можно сказать ? rtfm
+нам отсюда не видно, чё ты там делаешь и как.
31 filh
 
14.10.11
11:27
32 filh
 
14.10.11
11:28
(29) хороший пример.
33 Молодой 1Снег
 
14.10.11
11:30
(30) Я же подробно расписал в (15) что хочу сделать.

Примеров когда флаг хранится в табличной части много, а вот когда флаг нужен только на форме не понятно как делать.
34 filh
 
14.10.11
11:32
(33) так может тебе нужно просто использовать "Флажек"?
35 filh
 
14.10.11
11:32
"Флажок"
36 Ёпрст
 
14.10.11
11:32
(33) детсад..
храни значения галок в ТЗ/СЗ созданной при открытии документа.
Удаляй\добавляй\изменяй эту ТЗ\СЗ при редактировании\удалении\добавлении строк документа.
Ну и, rtfm
37 viktor_vv
 
14.10.11
11:32
(33) Так сделай СписокЗначений для хранения флагов по строкам. Есть номер строки в списке - есть флаг, нету - нет флага. Немного усложнится (8).
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший