Вход | Регистрация


1С:Предприятие ::

Метки:формы

Текстовая колонка в форме журнала документа

Я
   IAm
 
03.08.04 - 20:27
Милый вопрос задал мне сейчас по аське знакомый начинающий программист 1С. Кратко формулируется так:
В форму списка журнала документов добавлена текстовая колонка.
Как по двойному щелчку мыши менять её значение с 2 на 1 и с 1 на 2?
 
 
   Fеникс
 
18 - 03.08.04 - 20:46
Ну, вроде как можно в форме списка держать список значений, при щелчке по колонке добавлять/удалять из этого списка текущий документ, а в формуле этой колонки вызывать функцию, которая и вернёт результат в зависимости от (не)вхождения документа в этот список значений?
   Fеникс
 
21 - 03.08.04 - 20:54
(19)
Процедура ПриВыбореСтроки()
    Если Форма.АктивныйЭлемент()="ТекстоваяКолонка" Тогда
       //добавить/убрать из списка

    Иначе
        ОткрытьФорму(ТекущийДокумент);
    КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
    Форма.ОбработкаВыбораСтроки(1);
КонецПроцедуры
   Fеникс
 
24 - 03.08.04 - 20:56
+21 Ну и конечно для выбора документа придётся создать отдельную форму и назначить её формой для выбора-по-умолчанию.
   Рупор абсурда
26 - 03.08.04 - 21:02
(25) С общим реквизитом гораздо проще получится ...
Не понимаю, почему ты его боишься? ...
А со списком, на этом всё не кончится ...
Заполнять его всеми доками очень долго, а не всеми - придётся следить за интервалом журнала (и может отборами) ...
При смене интервала (отбора) опять перезаполнять список ...
   IAm
 
27 - 03.08.04 - 21:03
24 Не надо, подойдут Режимвыбора() и ВыполнитьВыбор(ТекущийДокумент)
Одну звездочку снимаем :))
   IAm
 
28 - 03.08.04 - 21:03
26 Не надо ничего заполнять, если есть документ в списке - значит есть пометка, если нет - нету пометки.
   IAm
 
29 - 03.08.04 - 21:09
Полный код:

Перем СписокПомеченных;

Процедура привыбореСтроки()
Если Форма.АктивныйЭлемент() = "Пометка" Тогда
Поз = СписокПомеченных.НайтиЗначение(ТекущийДокумент.ТекущийДокумент());
Если Поз > 0 Тогда
СписокПомеченных.УдалитьЗначение(Поз);
Иначе
СписокПомеченных.ДобавитьЗначение(ТекущийДокумент.ТекущийДокумент());
КонецЕсли;
ИначеЕсли РежимВыбора() = 1 Тогда
ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент());
Иначе
ОткрытьФорму(ТекущийДокумент);
КонецЕсли;
КонецПроцедуры

Процедура приоткрытии()
Списокпомеченных = СоздатьОбъект("СписокЗначений");
Форма.ОбработкаВыбораСтроки(1);
Конецпроцедуры

Функция ПолучитьПометку()
Возврат Списокпомеченных.Принадлежит(ТекущийДокумент.ТекущийДокумент()) + 1;
КонецФункции
   IAm
 
33 - 03.08.04 - 21:21
Выбор тоже работает без ошибок.
В 29 конечно же не
ИначеЕсли РежимВыбора() = 1 Тогда
ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент());
а
ИначеЕсли Форма.РежимВыбора() = 1 Тогда 
Форма.ВыполнитьВыбор(ТекущийДокумент.ТекущийДокумент());
 
  Рекламное место пустует
   IAm
 
37 - 03.08.04 - 21:37
То есть Форма.ВыполнитьВыбор должен идти последним исполняемым
   Fеникс
 
48 - 04.08.04 - 17:19
Что-то мы вчера стормозили...
ПриВыбореСтроки()+Форма.ВыполнитьВыбор() - тавтология.
Достаточно будет:
Процедура ПриВыбореСтроки()
  Если Форма.РежимВыбора()=1 Тогда
    Возврат;
  КонецЕсли;
  Если Форма.АктивныйЭлемент()="Пометка" Тогда
   ...
т.е. выбор в режиме выбора выполняется и сам, главное - не мешать ему :)



Список тем форума
Рекламное место пустует   Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует