7.7 Установка управляемого флажка на форме списка справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Vlastelin I, 1 фев 2010.

  1. TopicStarter Overlay
    Vlastelin I
    Offline

    Vlastelin I

    Регистрация:
    1 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Ситуация такова. Есть справочник "Телефоны" с реквизитами Код, Факс и Категория. Факс реквизит, который необходимо отобразить на форме списка в виде управляемого флажка (принимает значение 0 и 1). Сделать это на форме элемента не составляет труда, а вот с формой списка сложнее. Я вышел из ситуации следующим образом: вставил новое текстовое поле (столбец) и назвал его ПсевдоФакс. В идеале должно было быть так: реквизит Факс скрыт, на ПсевдоФакс выведены пиктограммы. При двойном нажатии на ПсевдоФакс пиктограмма меняеться, реквизит Факс меняет свое значение. Удалось подключить пиктограммы, причем в соответсвии со значениями реквизита Факс. Вот тут то и начались проблемы. Что я ни делал, реквизит Факс не меняет свое значение. Думаю, это потому, что данный реквизит не являеться текущим. Я пробовал делать его видимым на форме, использовал методы текущаяколонка и активныйэлемент, не помогло - они лишь возвращают, но не устанавливают значение. Экспеременитровал с методами активизировать и активизироватьобъект, но нужного эффекта не получил. Информацию в интернете и на вашем форуме искал. Были похожие вещи, но ответа именно на мой вопрос не нашел.
    Функция ВозвратЧисла устанавливает пиктограммы в соответсвии со значением реквизита Факс (навешана на ПсевдоФакс)
    Процедура по-идее должна была изменять значение реквизита факс в текущем элементе справочника Телефоны. Но к сожалению этого не происходит. Что любопытно, согласно проверкам, Факс все же меняеться.
    Код:
    Функция ВозвратЧисла()
    ТипПикт=0;    
    Если Факс=0 Тогда
    ТипПикт = 1;
    ИначеЕсли Факс=1 Тогда
    ТипПикт = 2;
    КонецЕсли;
    Возврат ТипПикт;
    КонецФункции
    
    Процедура  ПриНачалеРедактированияСтроки()
    Если Форма.ТекущаяКолонка()="ПсевдоФакс" Тогда
    Сообщить("Это то,что надо!");
    Сообщить("Активныйэлемент="+Форма.АктивныйЭлемент());
    Если Факс=0 Тогда
    Сообщить("Факс был="+Факс);
    Факс = 1;
    Сообщить("Факс стал="+Факс);
    ИначеЕсли Факс=1 Тогда
    Сообщить("Факс был="+Факс);
    Факс = 0;
    Сообщить("Факс стал="+Факс);
    КонецЕсли;
    КонецЕсли;	
    КонецПроцедуры
    
    
    Прикрепляю изображение в виде файла (не понял как вставить его в само сообщение)
    Прошу помочь мне в разъяснении данной проблемы.

    Вложения:

  2. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Записать()??
  3. TopicStarter Overlay
    Vlastelin I
    Offline

    Vlastelin I

    Регистрация:
    1 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Уважаемый Фобец, а можно по-подробнее? Куда именно вставлять данную комманду? Насколько я знаю, эта комманда для создания нового элемента справочника, а не редактирования уже существующего элемента. На всякий случай пробовал вставлять псоле присвоения Факсу значения "Факс =0; Записать();" Не помогло. При попытке использовать конструкцию в том же месте "Справочник.Телефоны.Записать()" выдает ошибку "неизвестная пременная Справочник".
    Я лишь недавно начал осваивать 1С, может чего недопонимаю?
  4. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Ну, логично было бы в процедуру со сменой флага..)
    Сейчас попробую сам))
  5. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    в общем, забавная ситуация, действительно не работает, пришлось выкручиваться

    Код:
    Процедура  ПриНачалеРедактированияСтроки()
    Если Форма.ТекущаяКолонка()="ПсевдоФакс " Тогда
    oRef = CreateObject("Справочник.Тест");
    oRef.FindItem(CurrentItem());
    oRef.Факс= ?(oRef.Факс= 1,0,1);   
    oRef.Write();
    КонецЕсли; 
    КонецПроцедуры
    
    
    а функция ВозвратЧисла() тоже лишняя, в формуле вместо нее пишите "?(Факс=1,1,2);"
  6. TopicStarter Overlay
    Vlastelin I
    Offline

    Vlastelin I

    Регистрация:
    1 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Благодарю! Я 3 дня себе мозг выношу этими флажками, решишь одну проблему сразу вторая вылазит. Сейчас переведу на русский и попробую.
    PS: oRef - это просто имя переменной, не важно, какая она будет?

    Все получилось! Еще раз благодарю! Не ожидал, что все окажеться так просто и быстро.
  7. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    да соррь за транслит, так быстрее соображается.. Название переменной для справочника любое, конечно ;)

Поделиться этой страницей