Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 02:48

Моя Конфигурация

Автор CosmicBoy, 10 фев 2013, 21:26

0 Пользователей и 1 гость просматривают эту тему.

CosmicBoy

Доброе время суток  <_<
К сожалению не обучался работе с БД, но жизнь вынудила заняться.
В общем по долгу службы создал своими силами БД в 1с.
Вся база представляет собой множество справочников которые перекликаются между собою, на большее меня не хватило.
В идеале многого мне в конфигурации не нужно, но чего сейчас имею явно мало.

Самое наболевшее, как при определенном значении поля "тип" заголовок поля "тип" приобретает определенный цвет.
Значение поля тип определяется справочником "Тип".

sadovod

Нужно писать код в обработчике события ПриИзменении() элемента формы "Тип".
Можно сделать так:
в редакторе формы (левая часть) на элементе "Тип" правой кнопкой мышки выберите в контекстном меню События > При изменении. В модуле формы будет создан обработчик события с именем ТипПриИзменении(Элемент). Вам нужно в тело этой процедуры вставить примерно такой код, разумеется заменив то, что я поместил в <> вашим значением. (Кстати его ещё нужно правильно получить из справочника)
&НаКлиенте
Процедура ТипПриИзменении(Элемент)
    Если Объект.Тип = <ЗаданноеВамиЗначение> Тогда
        Элементы.Тип.ЦветТекстаЗаголовка = WebЦвета.Синий;   //  ну или красный :)
    КонецЕсли;
КонецПроцедуры


CosmicBoy

Спасибо за быстрый и внятный ответ, однако не чего не получается, отладка без ошибок но при изменении на значение 000000004 объекта "тип" ничего не происходит, как был текст авто цвета так и остался :wacko:

sadovod

Ну, я примерно так и предполагал - "(Кстати его ещё нужно правильно получить из справочника)" :)
Вам чертовски много нужно прочитать, можно (и нужно) начать с книги М.Радченко (бюджетный вариант учёбы), или с видеокурсов Е.Гилёва (недёшево, но крайне результативно).
В чём суть вашей текущей ошибки. У вас в справочнике "Извещение" есть реквизит с типом "СправочникСсылка.Тип" (это так в 1С называется ссылка на другой справочник). Данные, хранящиеся в этом реквизите имеют такой ссылочный тип, поэтому сравнивать в условном выражении нужно именно с ссылкой из справочника "Тип", а это совсем не '000000004'. У вас же происходит сравнение с числом 4, и внутрь условия программа не заходит.
Как правильно получить нужное значение. Вот пример кода, основываясь на ваших скринах:

&НаКлиенте
Процедура ТипПриИзменении(Элемент)
    НужныйТип = ПолучитьНужныйТип();
    Если Объект.Тип = НужныйТип Тогда
        Элементы.Тип.ЦветТекстаЗаголовка = WebЦвета.Синий;   //  ну или красный :)   
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьНужныйТип()
    НайтиТип = Справочники.Тип.НайтиПоНаименованию("ЛИМ");
    // или вариант, можете попробовать его тоже
    // НайтиТип = Справочники.Тип.НайтиПоКоду("000000004");  //  в числе нулей я мог ошибиться :)
    Возврат НайтиТип;
КонецФункции


Вот как-то так, удачи :)

CosmicBoy

С пособием М.Радченко как раз и работаю, добился бы я без него такииих высот, вряд ли :bleh:
По существу тяжело с этой книгой работать, т.к. уклад у нее все равно бухгалтерский, многое темный лес, а так с разбегу очень тяжело все это понять. В любом случае изучение этой книги я не забросил, учу как могу. Видио курс этот тоже заточен под бухгалтерию или широко раскрывает потенциал по сути всего 1с?
За код спасибо огромное, но сразу он не за работал =)  эт уже особенность конфигурации, витиеватое название справочников, нужен был справочник типИзвещения, подправил, все заработало.
Вот по коду ликБез:
Функция ПолучитьНужныйТип() // получитьнужныйтип - это переменная которая будет найдена в коде описанном ниже?
НайтиТип = Справочники.Тип.НайтиПоНаименованию("ЛИМ") // найтиТип переменная равная значению записи в справочнике с наименованием "ЛИМ"? т.е. некое значение представленное ссылкой на данную строку в справочнике?
Возврат НайтиТип; - а зачем возврат? :nhsrm:
И да от противного, если наоборот нужно неравенство значению, то какую команду или символ использовать в коде?

Dethmontt

Думаю вариант с добавить в справочник реквизиты RGB и конструктором создавать при изменении реквизита новый Цвет будет лучше!
Ну или текстовый реквизит со списком имен цветов из коллекции WEBЦветов, т.е. определяешь сам список нужных тебе цветов и записываешь их в справочник.
(Т.к. у коллекции WEBЦвета в 1С нет возможности обойти коллекцию полностью - можно только задать вручную.)
2 примера:

//№1
&НаКлиенте
Процедура ПриИзмененииМойРеквизит(Элемент)

   //У справочника есть реквизит "ЦеветТекста" с типом строка где указан цвет "Желтый"
   Попытка
      Элемент.ЦветТекста = WEBЦвета[Объект.ЦеветТекста];
   Исключение
   КонецПопытки;

КонецПроцедуры

//№2
&НаКлиенте
Процедура ПриИзмененииМойРеквизит(Элемент)
   //У справочника есть реквизиты "R","G","B" с типом число длинна 3 точность 0
   // R=100, G=50, B=250
   Попытка
      Элемент.ЦветТекста = Новый Цвет(Объект.R,Объект.G,Объект.B);
   Исключение
   КонецПопытки;

КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

CosmicBoy

Dethmontt,
Спасибо за идею, внедрил, понравилось =)
Все же интересно как написать условие
Если Объект.Тип "не =" НужныйТип Тогда ?

Yura063

ЦитироватьЕсли Объект.Тип "не =" НужныйТип Тогда ?

Наверное
Если НЕ Объект.тип = НужныйТип Тогда
Помогли, отблагодари!

CosmicBoy

Yura063,
Оу, истина была так рядом :wacko:
Добавлено: 12 фев 2013, 19:34


А в случае если нужно при пустом значении Объект.тип...
вариант: Если объект.Тип = 0 тогда... не проходит, я так понимаю там не совсем нулевое значение если даже графа пустая?

sadovod

>> т.е. некое значение представленное ссылкой на данную строку в справочнике?
Именно так.

>> А в случае если нужно при пустом значении Объект.тип..
Если Объект.Тип = Справочники.типИзвещения.ПустаяСсылка() Тогда
Добавлено: 12 фев 2013, 20:49


>> получитьнужныйтип - это переменная которая будет найдена в коде описанном ниже? ... а зачем возврат?
Обязательно где-нибудь прочитайте, что такое процедуры и функции в языках программирования, для чего они нужны и чем отличаются друг от друга. Лучше будет почитать об этом не в пособиях по 1С, а по какому-нибудь простому алгоритмическому языку (Паскаль, например)...
Просто, боюсь, кратко я не смогу здесь это рассказать.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск