Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Хранение цвета в реквизите справочника          
bizisoft Подменю пользователя
сообщение 01.03.17, 12:58
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Здравствуйте.
1С:Предприятие 8.2 (8.2.19.130) "Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)

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

Создал справочник в котором есть реквизит, пользователь, склад, цвет.
Цвет пока просто строка и не используется.
Как можно к реквизиту цвет прикрепить кнопку для выбора цвета из палитры и как можно хранить выбор в реквизите?

Благодарю.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

podcast Подменю пользователя
сообщение 01.03.17, 14:07
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 306
Спасибо сказали: 74 раз
Рейтинг: 0

bizisoft @ Сегодня, 12:58 * ,
Выберите тип Цвет.

Flexy Подменю пользователя
сообщение 01.03.17, 14:28
Сообщение #3

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(bizisoft @ 01.03.17, 12:58) *
Как можно к реквизиту цвет прикрепить кнопку для выбора цвета из палитры

ДиалогВыбораЦвета (ColorChooseDialog)

Цитата(bizisoft @ 01.03.17, 12:58) *
как можно хранить выбор в реквизите?

Реквизит для цвета с типом ХранилищеЗначения

Спасибо сказали: bizisoft,

bizisoft Подменю пользователя
сообщение 01.03.17, 15:36
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

podcast @ Сегодня, 15:07 * ,
Это я сделал первым делом, но к сожалению не нашел такой тип.

Цитата(Flexy @ 01.03.17, 15:28) *
ДиалогВыбораЦвета (ColorChooseDialog)

Благодарю с этим получилось.
Цитата(Flexy @ 01.03.17, 15:28) *
Реквизит для цвета с типом ХранилищеЗначения

Выбор в типе ХранилищеЗначения будет достаточно или потребуются дополнительные операции по созданию метаданных?


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Flexy Подменю пользователя
сообщение 01.03.17, 15:53
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(bizisoft @ 01.03.17, 15:36) *
Выбор в типе ХранилищеЗначения будет достаточно или потребуются дополнительные операции по созданию метаданных?

Пишем в реквизит выбранный цвет:
ВыборЦвета = Новый ДиалогВыбораЦвета;
  Если ВыборЦвета.Выбрать() Тогда
        ВыбранныйЦвет = ВыборЦвета.Цвет;
  Спр.ЦветПользователя = Новый ХранилищеЗначения(ВыбранныйЦвет);
  Спр.Записать();
  КонецЕсли;


Читаем и устанавливаем для строки ТЧ:
Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ОформлениеСтроки.ЦветФона = ДанныеСтроки.Ссылка.ЦветПользователя.Получить();
КонецПроцедуры

Как-то так.




bizisoft Подменю пользователя
сообщение 02.03.17, 11:54
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Flexy @ Вчера, 16:53 * ,
Я правильно понимаю данный реквизит должен быть типа ХранилищеЗначенй?

Установка цвета строки производится ПриПолученииДанных

Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СкладКомпании.Код = СкладКод Тогда                
    ОформлениеСтроки.ЦветФона = ЦветСтрок; //делал так WebЦвета.БледноБирюзовый;                                     
КонецЕсли;


Считываю данные по пользователю в процедуре ПриОткрытии
Выборка = Результат.Выбрать();  
Пока Выборка.Следующий() Цикл
    СкладКод = Выборка.КодСклада;
    ЦветСтрок.ЦветФона = Выборка.Цвет.Получить(); // Так правильно будет получать значение из ХЗ?
КонецЦикла;



Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Flexy Подменю пользователя
сообщение 02.03.17, 12:04
Сообщение #7

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(bizisoft @ 02.03.17, 11:54) *
Я правильно понимаю данный реквизит должен быть типа ХранилищеЗначенй?

Правильно.

Спасибо сказали: bizisoft,

bizisoft Подменю пользователя
сообщение 02.03.17, 20:46
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Все получилось как и хотел.
Добавил следующий код в форму списка документа РеализацияТоваров

Перем СкладКод, ЦветСтрок;          
...
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        ...
        Попытка
            Если ОформлениеСтроки.ДанныеСтроки.Ссылка.СкладКомпании.Код = СкладКод Тогда                
                ОформлениеСтроки.ЦветФона = ЦветСтрок;
            КонецЕсли;
        Исключение
        КонецПопытки;
    КонецЦикла;        
КонецПроцедуры //СписокПриПолученииДанных()

...
Процедура ПриОткрытии()
    ...
    ТекПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
    СпрТекПольз = Справочники.Пользователи.НайтиПоКоду(ТекПользователь.Имя);       
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    НастройкиПользователей.Пользователь,
        |    НастройкиПользователей.Назначение,
        |    НастройкиПользователей.Склад,
        |    НастройкиПользователей.Цвет,
        |    НастройкиПользователей.Склад.Код КАК КодСклада
        |ИЗ
        |    Справочник.НастройкиПользователей КАК НастройкиПользователей
        |ГДЕ
        |    НастройкиПользователей.Пользователь = &Пользователь";    
    Запрос.УстановитьПараметр("Пользователь", СпрТекПольз);  
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();  
    Пока Выборка.Следующий() Цикл
        СкладКод = Выборка.КодСклада;
        ЦветСтрок = Выборка.Цвет.Получить();
    КонецЦикла;
КонецПроцедуры // ПриОткрытии()


В справочнике настроек форма элемента так

Процедура кнВыбратьЦветНажатие(Элемент)
    Диалог = Новый ДиалогВыбораЦвета;
    Если Диалог.Выбрать() Тогда
        ВыбранныйЦвет = Диалог.Цвет;
        Цвет = Новый ХранилищеЗначения(ВыбранныйЦвет);
        ЭлементыФормы.ПримерЦвета.ЦветФонаПоля = ВыбранныйЦвет; //подсвечиваем чтобы пользователь мог видеть как выглядит
    КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()    
    ЭлементыФормы.ПримерЦвета.Значение = "Это пример отображения";
    Попытка
        ЭлементыФормы.ПримерЦвета.ЦветФонаПоля = Цвет.Получить(); // чтобы было видно какой цвет установлен
    Исключение
    КонецПопытки;
КонецПроцедуры


Спасибо, что помогли разобраться.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Спасибо сказали: avel1976,

logist Подменю пользователя
сообщение 03.03.17, 9:35
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bizisoft @ 02.03.17, 21:46) *
   Пока Выборка.Следующий() Цикл

Правильней вместо Пока - Если

Цитата(bizisoft @ 02.03.17, 21:46) *
    ТекПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
    СпрТекПольз = Справочники.Пользователи.НайтиПоКоду(ТекПользователь.Имя);       

Сто пудова должна быть функция которая сразу вернет нужный элемент справочника.

и зачем используете попытки? если ПриОткрытии переменные не заполняются, то перенесите код в ПередОткрытием


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: bizisoft,

bizisoft Подменю пользователя
сообщение 07.03.17, 9:06
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

logist @ 03.03.17, 10:35 * ,
По Пока-Если понял свою ошибку и учел.

А "Попытка" использую как страховку от вылета ошибки, если вдруг реквизит Цвет (ХранилищеЗначений) будет не заполнен, а то пользователи шибко пугливые на ошибки 433.gif .


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

logist Подменю пользователя
сообщение 07.03.17, 9:28
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bizisoft @ 07.03.17, 10:06) *
А "Попытка" использую как страховку от вылета ошибки, если вдруг реквизит Цвет (ХранилищеЗначений) будет не заполнен, а то пользователи шибко пугливые на ошибки

В таком случае надо проверять реквизит на заполненность, дело в том, что если реквизит не будет заполнен то попытка не вызовет исключение а вернет Неопределено.
Цвет = Цвет.Получить();
Если Не Цвет = Неопределено Тогда
ЭлементыФормы.ПримерЦвета.ЦветФонаПоля = Цвет;
КонецЕсли


Так же и при оформлении строки, обыграйте условие так, что бы не использовать попытку, при большом списке это будет очень нагружать систему.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: bizisoft,

bizisoft Подменю пользователя
сообщение 25.05.17, 14:41
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

При работе с данным методом хранения цвета, иногда, у некоторых пользователей возникает такая ситуация, перестает "подкрашивать" строки в списках, хотя в справочнике, где хранятся настройки все на месте.
Помогает только чистка кэша у пользователя.

Подскажите пожалуйста, как такую неприятность можно исправить, или это никак поправить нельзя?


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

logist Подменю пользователя
сообщение 28.05.17, 14:31
Сообщение #13

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Учитывая что платформа 8.2, списал бы это на неё, потому, что она хранит пользовательские настройки в файлах, и возможно окрашивание не происходит потому что по какой-то причине не прочитался файл. Плюс - это Рарус, а там могут быть какие-то свои приколы, например при открытии формы выполняется какая-то внешняя компонента, которая, при каких-то условиях, чхала на вашу раскраску smile.gif


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Bernet Подменю пользователя
сообщение 29.05.17, 8:39
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

- это Рарус
как же часто я слышал объяснение багов этой фразой =))


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.03.24, 13:18
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!