1с переменная не определена цвета стиля
Для тех, кто не может скачивать, публикую тут самое основное:
Функция ПреобразоватьЦвет ( рИсходныйЦвет , рВидИтоговогоЦвета , тЦветов = "" ) Экспорт
Попытка
Если ТипЗнч ( рИсходныйЦвет )= Тип ( "Цвет" ) Тогда
Если рИсходныйЦвет . Вид = ВидЦвета . ЭлементСтиля Тогда
стрЦвет = ПолучитьЦветИзСтиляПлатформы ( рИсходныйЦвет ); // вернёт hex, т.е. 16-ричный
Если не ПустаяСтрока ( стрЦвет ) Тогда
Если рВидИтоговогоЦвета = 1 Тогда // нужен web-цвет
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов ();
КонецЕсли;
строц = тЦветов . Найти ( стрЦвет , "Шестнадцатиричный" );
Если строц <>Неопределено Тогда
Возврат строц . Название ;
КонецЕсли;
ИначеЕсли рВидИтоговогоЦвета = 2 Тогда // нужен RGB
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов ();
КонецЕсли;
строц = тЦветов . Найти ( стрЦвет , "Шестнадцатиричный" );
Если строц <>Неопределено Тогда
Возврат Новый Структура ( "Красный,Синий,Зеленый" , строц . Красный , строц . Синий , строц . Зеленый );
КонецЕсли;
ИначеЕсли рВидИтоговогоЦвета = 3 Тогда // нужен 16-ричный
Возврат стрЦвет ; // это он и есть
КонецЕсли;
КонецЕсли;
ИначеЕсли рИсходныйЦвет . Вид = ВидЦвета . WebЦвет Тогда
// вытащим из скобок англоязычное написание цвета
стрЦвет = СокрЛП ( Строка ( рИсходныйЦвет ));
пози1 = Найти ( стрЦвет , "(" );
Если пози1 <> 0 Тогда
стрЦвет = НРег ( СтрЗаменить ( Сред ( стрЦвет , пози1 + 1 ), ")" , "" ));
Если рВидИтоговогоЦвета = 1 Тогда // нужен web-цвет
Возврат стрЦвет ; // это он и есть
ИначеЕсли рВидИтоговогоЦвета = 2 Тогда // нужен RGB
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов (Истина);
КонецЕсли;
строц = тЦветов . Найти ( стрЦвет , "Название" );
Если строц <>Неопределено Тогда
Возврат Новый Структура ( "Красный,Синий,Зеленый" , строц . Красный , строц . Синий , строц . Зеленый );
КонецЕсли;
ИначеЕсли рВидИтоговогоЦвета = 3 Тогда // нужен 16-ричный
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов (Истина);
КонецЕсли;
строц = тЦветов . Найти ( стрЦвет , "Название" );
Если строц <>Неопределено Тогда
Возврат строц . Шестнадцатиричный ;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли рИсходныйЦвет . Вид = ВидЦвета . Абсолютный Тогда
Если рВидИтоговогоЦвета = 1 Тогда // нужен web-цвет
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов ();
КонецЕсли;
отб =Новый Структура ( "Красный,Синий,Зеленый" , рИсходныйЦвет . Красный , рИсходныйЦвет . Синий , рИсходныйЦвет . Зеленый );
мстроц = тЦветов . НайтиСтроки ( отб );
Если мстроц . Количество ()<> 0 Тогда
Возврат мстроц[0] . Название ;
КонецЕсли;
ИначеЕсли рВидИтоговогоЦвета = 2 Тогда // нужен RGB
// фактически, он и есть
Возврат Новый Структура ( "Красный,Синий,Зеленый" , рИсходныйЦвет . Красный , рИсходныйЦвет . Синий , рИсходныйЦвет . Зеленый );
ИначеЕсли рВидИтоговогоЦвета = 3 Тогда // нужен 16-ричный
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов ();
КонецЕсли;
отб =Новый Структура ( "Красный,Синий,Зеленый" , рИсходныйЦвет . Красный , рИсходныйЦвет . Синий , рИсходныйЦвет . Зеленый );
мстроц = тЦветов . НайтиСтроки ( отб );
Если мстроц . Количество ()<> 0 Тогда
Возврат мстроц[0] . Шестнадцатиричный ;
КонецЕсли;
КонецЕсли;
КонецЕсли; // по вариантам видов цвета как типа Цвет
ИначеЕсли ТипЗнч ( рИсходныйЦвет )= Тип ( "Строка" ) Тогда
// ищем во всех колонках таблицы, т.к. заведомо не знаем, какой это цвет
Если ТипЗнч ( тЦветов )<> Тип ( "ТаблицаЗначений" ) Тогда
тЦветов = ПрочитатьТаблицуЦветов ();
КонецЕсли;
строц = тЦветов . Найти ( СокрЛП ( рИсходныйЦвет ));
Если строц <>Неопределено Тогда
Если рВидИтоговогоЦвета = 1 Тогда // нужен web-цвет
Возврат строц . Название ;
ИначеЕсли рВидИтоговогоЦвета = 2 Тогда // нужен RGB
Возврат Новый Структура ( "Красный,Синий,Зеленый" , строц . Красный , строц . Синий , строц . Зеленый );
ИначеЕсли рВидИтоговогоЦвета = 3 Тогда // нужен 16-ричный
Возврат строц . Шестнадцатиричный ;
КонецЕсли;
КонецЕсли;
Всё крайне кондово, но может пригодиться. Единственно, учитывайте, что лучше 1 раз прочитать таблицу соответствий и далее по ней искать. Ну и проиндексируйте по нужной колонке, исходя из ситуации.
Протестировано на пустой БД с версией платформы 1С 8.3.17.1549.
Предназначено для использования в любой базе данных 1С.
Возможности:
Преобразование цвета любого вида в цвет любого другого вида при помощи следующих методов:
- ОпределитьАбсолютныйЦвет(Цвет) - преобразует переданный цвет любого вида в абсолютный цвет;
- НайтиWebЦвет(Цвет) - ищет переданный цвет любого вида среди набора WebЦвета;
- НайтиЦветСтиля(Цвет) - ищет переданный цвет любого вида среди набора ЦветаСтиля;
- НайтиWindowsЦвет(Цвет) - ищет переданный цвет любого вида среди набора WindowsЦвета.
Получение массива Web-цветов, Цветов стиля или Windows-цветов без использования макетов или заранее предопределённых списков соответствующими методами:
- ПолучитьWebЦвета()
- ПолучитьЦветаСтиля()
- ПолучитьWindowsЦвета()
Описание:
Основной принцип преобразования цветов из одного вида в другой в данной обработке заключается в использовании методов ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр().
Так, например, внутренние значения цветов WebЦвета.Белый и WebЦвета.Черный соответственно выглядят следующим образом:
Как видно, в структуре полученных данных содержится внутренний индекс цвета: 143 - для белого цвета, и 8 - для чёрного цвета. Опытным путём было обнаружено, что для каждой коллекции существует свой диапазон внутренних индексов:
- WebЦвета: от 1 до 146
- ЦветаСтиля: от -1 до -47 (значения цветов для некоторых индексов оказались пустыми)
- WindowsЦвета: от -2 до 28 (кроме 25)
Таким образом, зная внутренний индекс цвета, можно получить цвет из любого набора путем подстановки этого индекса во внутреннюю строку.
Например, внутренний индекс жёлтого цвета для набора WebЦвета равен 145, следовательно внутренняя строка имеет вид:
Теперь, чтобы получить цвет набора WebЦвета необходимо воспользоваться методом ЗначениеИзСтрокиВнутр():
В результате в переменной "ЖелтыйЦвет" будет содержаться значение WebЦвета.Желтый. Аналогичным образом получаются цвета для других наборов (ЦветаСтиля и WindowsЦвета).
Здравствуйте, коллеги! Сегодня поговорим о проблеме неопределенных переменных в 1С. Рядовой пользователь с данной ошибкой сталкиваться не должен, но если уж и произошло подобное при работе в типовой конфигурации 1С, которая никак не модифицировалась, возможно, у нас наклевывается проблема самого релиза, которая иссякнет при обновлении. В таком случае стоит связаться со специалистом, чтобы найти выход из ситуации.
Если же Вы сами занимаетесь разработкой и столкнулись с ошибкой, «Переменная не определена в 1С», то следует обратится к конфигуратору, найти, что за переменная и в какой именно момент не определена. Есть несколько вариантов решения, но нужно подбирать их с умом, ибо вполне возможно, что после неправильного исправления в одном месте, Вы получите кучу ошибок в других местах.
1. Проверка на определения 1С 8.3
Можно прописать перед ошибкой следующий код:
Если Не НашаПеременная = Неопределено Тогда
Соответственно, закрыв «Если» после, но тут как уже писалось нужно действовать аккуратно, возможно данная конструкция напрочь сломает весь последующий код. Гораздо лучше найти, где объявляется переменная и устранить ошибку.
2. Поиск объявления переменной 1С 8.3
Вполне возможен вариант, что ее просто забыли включить в передаваемые параметры функции или она не доступна в данном виде клиента. Такое случается, когда, например, обращаются из тонкого клиента к метаданным. В этом случае стоит переписать функцию или, возможно, объявить новую, но уже на сервере, которая вернет необходимые тонкому клиенту данные.
3. Обычная опечатка в программе 1С 8.3 Предприятие
Чтобы быстро в программе 1С 8.3 Предприятие проверить опечатка ли спровоцировала ошибку, просто скопируем переменную из объявления и вставим ее имя в то место, где случается ошибка. Можно сделать следующим образом, чтобы избежать таких ошибок в будущем:
Теперь, когда курсор останавливается на идентификаторе, все другие его упоминания будут выделены, как на следующем изображении:
Специалист компании ООО «Кодерлайн»
Дягилев Дмитрий Вадимович
Вас могут заинтересовать следующие статьи:
Здравствуйте, коллеги! Сегодня поговорим о проблеме неопределенных переменных в 1С. Рядовой пользователь с данной ошибкой сталкиваться не должен, но если уж и произошло подобное при работе в типовой конфигурации 1С, которая никак не модифицировалась, возможно, у нас наклевывается проблема самого релиза, которая иссякнет при обновлении. В таком случае стоит связаться со специалистом, чтобы найти выход из ситуации.
Если же Вы сами занимаетесь разработкой и столкнулись с ошибкой, «Переменная не определена в 1С», то следует обратится к конфигуратору, найти, что за переменная и в какой именно момент не определена. Есть несколько вариантов решения, но нужно подбирать их с умом, ибо вполне возможно, что после неправильного исправления в одном месте, Вы получите кучу ошибок в других местах.
1. Проверка на определения 1С 8.3
Можно прописать перед ошибкой следующий код:
Если Не НашаПеременная = Неопределено Тогда
Соответственно, закрыв «Если» после, но тут как уже писалось нужно действовать аккуратно, возможно данная конструкция напрочь сломает весь последующий код. Гораздо лучше найти, где объявляется переменная и устранить ошибку.
2. Поиск объявления переменной 1С 8.3
Вполне возможен вариант, что ее просто забыли включить в передаваемые параметры функции или она не доступна в данном виде клиента. Такое случается, когда, например, обращаются из тонкого клиента к метаданным. В этом случае стоит переписать функцию или, возможно, объявить новую, но уже на сервере, которая вернет необходимые тонкому клиенту данные.
3. Обычная опечатка в программе 1С 8.3 Предприятие
Чтобы быстро в программе 1С 8.3 Предприятие проверить опечатка ли спровоцировала ошибку, просто скопируем переменную из объявления и вставим ее имя в то место, где случается ошибка. Можно сделать следующим образом, чтобы избежать таких ошибок в будущем:
Теперь, когда курсор останавливается на идентификаторе, все другие его упоминания будут выделены, как на следующем изображении:
Специалист компании ООО «Кодерлайн»
Дягилев Дмитрий Вадимович
Вас могут заинтересовать следующие статьи:
Программа 1С позволяет пользователям настраивать рабочие места под свои потребности: менять расположение разделов, журналов, скрывать / добавлять важную информацию и многое другое. Одной из таких настроек является условное оформление в 1С и в этой статье мы рассмотрим, как раскрасить объекты 1С на примере конфигурации 1С ERP 8.3
1. Условное оформление в списке документов и в справочниках 1С
Условное оформление в списке документов и справочниках 1С выполняется с помощью настройки «Редактирование элемента условного оформления 1С», открываемого из настроек списка 1С.
· На вкладке «Оформление» устанавливается желаемое оформление полей: цвет фона, цвет текста и т.д.
· На вкладке «Условие» заполняются условия, при выполнении которых оформление будет применяться к полям.
· На вкладке «Оформляемые поля» выбираются поля из списка доступных полей, к которым будет применяться оформление, если условия выполнены.
Рассмотрим на примерах.
Сделаем так, чтобы в журнале «Заказы поставщикам» цвет строк зависел от статуса документа:
· Не согласован - зеленый
· К поступлению - розовый
В меню «Еще» переходим в настройки списка 1С и в открывшемся окне открываем вкладку «Условное оформление 1С».
Задаем первое правило – если значение статуса «Не согласован» цвет фона строки должен быть зеленым.
Нажимаем кнопку «Добавить», при этом в 1С ERP 8.3 откроется окно редактирования элемента условного оформления 1С.
На вкладке «Оформление» выбираем каким образом мы хотим выделить нужные нам документы – в нашем примере это вариант «Цвет фона». Ставим галочку в первой строке и в колонке «Значение» выбираем цвет.
На вкладке «Условие» из списка доступных полей перетаскиваем поле, значение которого должно определять в 1С цвет документа в списке – поле «Статус». Указываем значение статуса – «Не согласован».
На третьей вкладке указывается для каких колонок должно действовать условное оформление. Если должна быть выделена вся строка, то ничего дополнительно заполнять не нужно - вкладка «Оформляемые поля» остается пустой.
Нажимаем «ОК» и видим списке новую строку с заполненными правилами условного оформления.
Аналогичным образом добавляем новые строки и заполняем условия для каждого статуса. В итоге должна получиться вот такая настройка
Нажимаем кнопку «Завершить редактирование» и проверяем результат.
Для примера опять возьмем журнал «Заказы поставщикам» в 1С ERP 8.3 и выделим в нем сумму заказа на сумму выше 5 000 000 жирным красным шрифтом
Для этого, как и в примере выше открываем настройки списка 1С и добавляем новую настройку условного оформления. В окне редактирования элемента задаем цвет текста и шрифт.
На закладке «Условие» проставляем следующие условия: сумма документа больше 5 000 000
На вкладке «Оформляемые поля» указываем только одно поле «Сумма документа»
Сохраняем настройку - нажимаем «Ок». Завершаем редактирование настройки списка 1С и проверяем результат.
2. Условное оформление в отчетах 1С
Оформление в отчетах 1С выполняется в настройках отчета при установке расширенного вида настроек. При этом доступна вкладка «Оформление», где задаются «Элементы условного оформления отчетов 1С».
· На вкладке «Оформление» вводится произвольный «Заголовок» элемента оформления. С помощью флажков можно включать или выключать различные параметры оформления. Параметры оформления можно менять с помощью соответствующих инструментов.
· На вкладке «Условие» задаются отборы, при которых данные условия оформление будет применяться.
· На вкладке «Оформляемые поля» выбираются поля, для которых будет применяться условное оформление.
Если вам надоели типовые формы отчета, вы можете настроить формат их отображения на свое усмотрение – изменить цвет, шрифт и т.п.
Рассмотрим на примере, как в стандартном отчете сделать настройку как на рисунке ниже.
Под каждое правило для условного оформления необходимо создавать новый элемент («Настройка» (вид «Расширенный») → вкладка «Оформление» → «Добавить») и указывать название, поясняющее суть настройки.
Шаг 1. Настраиваем шапку отчета 1С.
Заполняем название элемента, например, «Шапка отчета 1С». На вкладке «Оформление» настраиваем цвет фона, цвет текста и шрифт.
Вкладки «Условие» и «Оформляемые поля» не заполняем. На вкладке «Дополнительно» отмечаем пункт «В заголовке полей».
Для сохранения правила нажимаем клавишу «Ок».
Шаг 2. Настраиваем шрифт отчета.
На вкладке «Оформление» настраиваем шрифт, а на вкладке «Дополнительно» выбираем пункт «В группировке».
Шаг 3. Настраиваем выделение строки Организация и Клиент
Заполняем настройку для выделения строки организации - выбираем цвет фона, в качестве оформляемого поля выбираем «Организация» и на вкладке «Дополнительно» отмечаем «В группировке».
Для выделения строки с клиентом делаем аналогичные настройки, только с другим цветом фона и оформляемое поле устанавливаем «Клиент».
Шаг 4. Настраиваем выделение фона ячейки с отрицательным значением в колонке «Сальдо долга».
Задаем цвет фона. Настраиваем условие: сальдо долга меньше 0. Выбираем «Сальдо долго» в качестве оформляемого поля и вариант отображения – «В группировке».
Завершаем редактирование и проверяем результат.
Не забудьте сохранить настроенный вариант отчета.
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Читайте также: