![]() |
![]() |
![]() |
|
Текстовая колонка в форме журнала документа | ☑ | ||
---|---|---|---|---|
0
IAm
03.08.04
✎
20:27
|
Милый вопрос задал мне сейчас по аське знакомый начинающий программист 1С. Кратко формулируется так:
В форму списка журнала документов добавлена текстовая колонка. Как по двойному щелчку мыши менять её значение с 2 на 1 и с 1 на 2? |
|||
1
gg
03.08.04
✎
20:29
|
Ну так и ответь ему по аьске.
|
|||
2
SnarkHunter
03.08.04
✎
20:30
|
Его не Бублик ака Тор зовут?
|
|||
3
IAm
03.08.04
✎
20:31
|
1) С удовольствием скопирую Ваш вариант ответа.
|
|||
4
IAm
03.08.04
✎
20:32
|
Ни разу не слышал чтобы его кто-то куда-то звал, посему ответить не могу.
|
|||
5
SnarkHunter
03.08.04
✎
20:32
|
А вообще предложение забавно начинается... "Милый вопрос задал мне сейчас по аське..." :-)
(0)Ничего личного... |
|||
6
IAm
03.08.04
✎
20:32
|
Я ответа не знаю, вариант один есть, но его надо пробовать, 100-процентно в нем не уверен, поэтому обращаюсь к спецам.
|
|||
7
Crew
03.08.04
✎
20:32
|
Похоже зовут его Работа с журналом
|
|||
8
IAm
03.08.04
✎
20:33
|
5 Смешно
|
|||
9
Рупор абсурда
03.08.04
✎
20:34
|
Это нужно на всех доках, любого вида?
Если да, то проблематично будет сделать именно двойным кликом ... |
|||
10
IAm
03.08.04
✎
20:34
|
7 Непохоже, изменяемое значение колонки в реквизитах документа отсутствует.
|
|||
11
IAm
03.08.04
✎
20:36
|
9 Йес
|
|||
12
IAm
03.08.04
✎
20:37
|
9 В принципе упростим задачу, пусть по нажатию кнопки меняется значение текущей строки.
|
|||
13
SnarkHunter
03.08.04
✎
20:40
|
Общий реквизит спасет...
|
|||
14
Рупор абсурда
03.08.04
✎
20:41
|
(12) Какой кнопки?
Ващще, нужно будет менять док ... Можно сделать общий реквизит, только под это дело, и манипулировать им ... |
|||
15
IAm
03.08.04
✎
20:41
|
13 Несомненно. Ещё 8-ка спасет или база на Access-e.
|
|||
16
SnarkHunter
03.08.04
✎
20:42
|
(14) :-)
|
|||
17
IAm
03.08.04
✎
20:46
|
13, 14
А если на другом компьютере кто-то будет работать с этим документом? Тогда уж лучше ТЗ создать, в которое при открытии и смене интервала впихивать документы, вторая колонка Флаг. Функция ПолучитьПометку() Поз = 0; ТЗ.НайтиЗначение(ТекущийДокумент(), Поз, "Документ"); Возврат ТЗ.ПолучитьЗначение(Поз, "Пометка"); КонецФункции ================== Правда тормозить будет при открытии |
|||
18
Fеникс
03.08.04
✎
20:46
|
Ну, вроде как можно в форме списка держать список значений, при щелчке по колонке добавлять/удалять из этого списка текущий документ, а в формуле этой колонки вызывать функцию, которая и вернёт результат в зависимости от (не)вхождения документа в этот список значений?
|
|||
19
IAm
03.08.04
✎
20:48
|
18 Отлично. Для кнопки сойдет. Теперь как щелчок отработать?
|
|||
20
Рупор абсурда
03.08.04
✎
20:50
|
(17) Имхо, лучше просто сказать в этом случае "Заблокирован ... и не городить огород ...
|
|||
21
Fеникс
03.08.04
✎
20:54
|
(19)
Процедура ПриВыбореСтроки() Если Форма.АктивныйЭлемент()="ТекстоваяКолонка" Тогда //добавить/убрать из списка Иначе ОткрытьФорму(ТекущийДокумент); КонецЕсли; КонецПроцедуры Процедура ПриОткрытии() Форма.ОбработкаВыбораСтроки(1); КонецПроцедуры |
|||
22
Рупор абсурда
03.08.04
✎
20:54
|
(19) приВыбореСтроки()
|
|||
23
Рупор абсурда
03.08.04
✎
20:55
|
(21) ПриВыбореСтроки() - предопределённая процедура
|
|||
24
Fеникс
03.08.04
✎
20:56
|
+21 Ну и конечно для выбора документа придётся создать отдельную форму и назначить её формой для выбора-по-умолчанию.
|
|||
25
IAm
03.08.04
✎
20:56
|
Вот и всё, а вы говорите ОбщийреквизитДокумента
Пять звездочек Фениксу. |
|||
26
Рупор абсурда
03.08.04
✎
21:02
|
(25) С общим реквизитом гораздо проще получится ...
Не понимаю, почему ты его боишься? ... А со списком, на этом всё не кончится ... Заполнять его всеми доками очень долго, а не всеми - придётся следить за интервалом журнала (и может отборами) ... При смене интервала (отбора) опять перезаполнять список ... |
|||
27
IAm
03.08.04
✎
21:03
|
24 Не надо, подойдут Режимвыбора() и ВыполнитьВыбор(ТекущийДокумент)
Одну звездочку снимаем :)) |
|||
28
IAm
03.08.04
✎
21:03
|
26 Не надо ничего заполнять, если есть документ в списке - значит есть пометка, если нет - нету пометки.
|
|||
29
IAm
03.08.04
✎
21:09
|
Полный код:
Перем СписокПомеченных; Процедура привыбореСтроки() Если Форма.АктивныйЭлемент() = "Пометка" Тогда Поз = СписокПомеченных.НайтиЗначение(ТекущийДокумент.ТекущийДокумент()); Если Поз > 0 Тогда СписокПомеченных.УдалитьЗначение(Поз); Иначе СписокПомеченных.ДобавитьЗначение(ТекущийДокумент.ТекущийДокумент()); КонецЕсли; ИначеЕсли РежимВыбора() = 1 Тогда ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент()); Иначе ОткрытьФорму(ТекущийДокумент); КонецЕсли; КонецПроцедуры Процедура приоткрытии() Списокпомеченных = СоздатьОбъект("СписокЗначений"); Форма.ОбработкаВыбораСтроки(1); Конецпроцедуры Функция ПолучитьПометку() Возврат Списокпомеченных.Принадлежит(ТекущийДокумент.ТекущийДокумент()) + 1; КонецФункции |
|||
30
Fеникс
03.08.04
✎
21:13
|
(27) Хм... Попробовал...
In batch Start nested Error. + "1cv7s.exe вызвало ошибку и будет закрыто...." |
|||
31
IAm
03.08.04
✎
21:13
|
30 Щас попробую
|
|||
32
IAm
03.08.04
✎
21:19
|
В обычном режиме все нормально, в режиме выбора сейчас попробую
|
|||
33
IAm
03.08.04
✎
21:21
|
Выбор тоже работает без ошибок.
В 29 конечно же не ИначеЕсли РежимВыбора() = 1 Тогда ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент()); а ИначеЕсли Форма.РежимВыбора() = 1 Тогда Форма.ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент()); |
|||
34
Fеникс
03.08.04
✎
21:22
|
(33) Релиз?
|
|||
35
IAm
03.08.04
✎
21:23
|
19й локально
В каком режиме вылетело? |
|||
36
Fеникс
03.08.04
✎
21:29
|
(35) О! Вот где был баг...
Сперва делал Процедура ПриВыбореСтроки() Если Форма.РежимВыбора()=1 Тогда Форма.ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент()); КонецЕсли; Если Форма.АктивныйЭлемент()="Пометка" Тогда ... - и вылетало. А если через ИначеЕсли или Возврат добавить после Форма.ВыполнитьВыбор... - всё нормально. :) |
|||
37
IAm
03.08.04
✎
21:37
|
То есть Форма.ВыполнитьВыбор должен идти последним исполняемым
|
|||
38
Fеникс
03.08.04
✎
21:41
|
(37) Ага.
Хорошее решение с ВыполнитьВыбор() - мне нравится. И как я его раньше не заметил? :) |
|||
39
Press
03.08.04
✎
21:44
|
Классно, только для чего ТекущийДокумент.ТекущийДокумент(), а не просто ТекущийДокумент ?
|
|||
40
IAm
03.08.04
✎
21:47
|
Я к своему стыду не знаю, что есть ТекущийДокумент и возвращает ли он именно объект а не ссылку на место в памяти.
|
|||
41
IAm
03.08.04
✎
21:49
|
Завтра узнаю нафига ему это надо было
|
|||
42
Fеникс
03.08.04
✎
21:50
|
(39) Да как угодно можно
|
|||
43
spock
03.08.04
✎
21:55
|
2(0)А точно есть смысл менять ее значение документа с 2 на 1 и с 1 на 2????
Про список была правильная идея - если документ в списке есть (значит 2, нет 1). Короче, Форма.ОбработкаВыбораСтроки(1); вам поможет. Напоминаю, если сделать ЭТО, то если в журнале ткнуть по документу, то вызывается предопределенная процедура "ПриВыбореСтроки()". Есть вопросы - я сплю (тока начиная с 10-30 по МСК) |
|||
44
IAm
03.08.04
✎
21:58
|
43 В 1980 году в Москве состоялась Олимпиада.
|
|||
45
Press
03.08.04
✎
22:05
|
(42)Да понятно, что как угодно можно, просто интересно было для чего, мож фишка какая ;). Кстати, ТекущийДокумент возвращает ссылку.
|
|||
46
Press
03.08.04
✎
22:06
|
(43) :)
|
|||
47
NS
04.08.04
✎
00:10
|
И тут тоже.
|
|||
48
Fеникс
04.08.04
✎
17:19
|
Что-то мы вчера стормозили...
ПриВыбореСтроки()+Форма.ВыполнитьВыбор() - тавтология. Достаточно будет: Процедура ПриВыбореСтроки() Если Форма.РежимВыбора()=1 Тогда Возврат; КонецЕсли; Если Форма.АктивныйЭлемент()="Пометка" Тогда ... т.е. выбор в режиме выбора выполняется и сам, главное - не мешать ему :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |