Реквизит справочника типа Хранилище значения #725307


#0 by 247tsm
Вопрос для знатоков 1С81 простой. Есть справочник с реквизитом ЦветТ типа хранилище значения. Я пытаюсь записать в него цвет текста но не получается. Я делаю так: Но в отладчике вижу что при открытии формы ЦветТ=Неопределено. Почему? Реквизиты типа Хранилище значения особые и работать с ними нужно по особому? Как мне изменить текст модуля чтобы всё работало?
#1 by wertyu
только через Новый
#2 by wertyu
ты можешь выбрать Красный, Зелёный, Синий, но там ещё есть вид цвета
#3 by wertyu
+ всё, что надо определять через Новый (конструктор), надо так и определять
#4 by 247tsm
Конечно, для хранения цвета можно использовать реквизит типа строка: а при открытии: Но, наверно, проще использовать реквизит типа Хранилище значения без всяких функций, преобразований?
#5 by 247tsm
Я не совсем понял. Что "только через Новый". Ведь для определения цвета я использую
#6 by 247tsm
А как это будет в коде?
#7 by wertyu
#8 by wertyu
#9 by wertyu
#10 by wertyu
это примерно тоже самое
#11 by 247tsm
Из примера я понял, что реквизиты справочника СтрокаТаблицаСтатейБюджетирования.Шрифт типа строка и СтрокаТаблицаСтатейБюджетирования.ЦветФона тоже типа строка. А у меня же типа Хранилище значения. Пример со строкой я уже и сам привёл. Меня интересует, можно ли делать проще, используя реквизит типа Хранилище значения и как обычный реквизит его сохранять, а затем считывать?
#12 by wertyu
ну т.е. и ГраницаСнизу надо присваивать значения только через конструктор, понятно?
#13 by wertyu
в Скд можно приваивать готовое, иначе только через конструктор
#14 by 247tsm
У меня не записывается значение в реквизит типа Хранилище значения, поэтому до присваивания далеко.
#15 by wertyu
и надо платформу поменять на 82 минимум
#16 by wertyu
я тебе пытался показать, что не надо хранить само значение, если не получается потом извлечь, а можно хранить его составляющие
#17 by Chameleon1980
а у хз есть метод получить вроде
#18 by 247tsm
+ У меня речь не идет ни про СКД, ни про конструктор. У меня 1С81, где есть реквизиты типа Хранилище значения. У меня просто форма справочника, на ней кнопка для выбора цвета текста и его записи в реквизит типа хранилище значения. Это не работает. Вот я и прошу подсказать, почему, где ошибка в приведённом мной коде? Но я знаю, как можно выкрутиться, используя реквизит типа строка и функцию ЗначениеВСтрокуВнутр. Но я хочу понять, почему нельзя напрямую пользоваться реквизитом типа Хранилище значения?
#19 by Chameleon1980
Синтаксис: Получить Возвращаемое значение: Тип: Произвольный. Значение, содержащееся в хранилище. Описание: Получает из хранилища сохраненное в нем значение. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: МояКартинка = ХранилищеКартинки.Получить;
#20 by Chameleon1980
ну и при сохранении чтото типа Хранилище=Новый ХранилищеЗначения(ЗначениеВСтрокуВнутр(ЗдесьВашиДАнные))
#21 by wertyu
да можно, только через конструктор, что тут непонятно?
#22 by wertyu
Новый - это конструктор
#23 by 247tsm
Если использовать функцию ЗначениеВСтрокуВнутр, то зачем использовать для цвета реквизит типа Хранилище значения? Проще использовать реквизит типа строка!
#24 by Chameleon1980
да по быстрому просто выдернул кусок из старого отчета у меня там просто тз сохранялась
#25 by Chameleon1980
так то просто уж точно что хочешь (практически) сохранишь
#26 by 247tsm
А можешь подправить текст процедур из , чтобы всё получилось?
#27 by Chameleon1980
может так?
#28 by Chameleon1980
даже вот так наверное
#29 by 247tsm
Нет, в отладчике вижу, что ЦветТ=Неопределено
#30 by 247tsm
На строку дает Значение не является значением объектного типа (Получить)
#31 by 247tsm
И всё же, зачем использовать функцию ЗначениеВСтрокуВнутр? В этом случае не нужен реквизит типа Хранилище значения!!! А просто нужен просто типа строка.
#32 by Chameleon1980
ЗначениеВСтрокуВнутр чтобы, например тз (таб. зн.) сохранять ЦветТ - реквизит справочника типа ХЗ (хран. зн.) ???
#33 by Chameleon1980
скажите мне тип значения ЦветТ
#34 by 247tsm
да, и по-моему, здесь функция ЗначениеВСтрокуВнутр не нужна, либо если использовать эту функцию, то не нужен тип реквизита Хранилище значения, а нужен тип строка. Но я хочу добиться работы с типом Хранилище значения.
#35 by 247tsm
ЦветТ = Диалог.Цвет
#36 by 247tsm
Уточняю: в справочнике есть реквизит ЦветТ с типом Хранилище значения. Я в него хочу записать Диалог.Цвет
#37 by Chameleon1980
а как тогда называется реквизит у которого тип хз (хр.зн.) ??? капеч. мы даже не там запнулись.
#38 by 247tsm
в описана задача ;)
#39 by 247tsm
??? У реквизита ЦветТ тип Хранилище значения. Я в него хочу записать Диалог.Цвет
#40 by Chameleon1980
а что угадывать буду просто скажите как у вас называется Реквизит справочника типа Хранилище значения имя его
#41 by 247tsm
ЦветТ
#42 by Chameleon1980
он бы не ругался как в 30 т.к. у Хран. зн. есть метод Получить который "Получает из хранилища сохраненное в нем значение" (C) СП
#43 by Chameleon1980
где-то вы врете уважаемый
#44 by 247tsm
Хорошо, смотрю в конфу ещё раз ;)
#45 by 247tsm
Реквизит ЦветТ, тип - ХранилищеЗначения. У меня процедура: При открытии формы ругается: {Справочник.Меню.Форма.ФормаЭлемента1}: Значение не является значением объектного типа (Получить)     _Цвет=ЦветТ.Получить;
#46 by 247tsm
Так что я не вру ;)
#47 by 247tsm
Более того, в отладчике я вижу, что после строки: значение ЦветТ.Получить - это значение выбранного цвета. Но ... это значение или "теряется" или я его не могу прочитать при открытии формы справочника.
#48 by Chameleon1980
объект чей реквизит сохраняется? ну и проверьте перед _Цвет=ЦветТ.Получить; типзначения(ЦветТ) что за конфа? большая? может кинете куданить? А то что-то надоело чуть в темноте ходить
#49 by 247tsm
в отладчике ЦветТ имеет значение цвета, выбранного в Диалог.Цвет А при открытии ЦветТ имеет значение Неопределено! Поэтому и получить значение не удается.
#50 by Chameleon1980
пилят как зовут реквизита справочника (какогото) в который мы хотим сохранить значение у которого тип хран.зн. ????????????????????????????
#51 by 247tsm
Справочник Меню. Реквизит ЦветТ, тип - Хранилище значения
#52 by 247tsm
Я в этот реквизит ЦветТ хочу сохранить цвет, а не "значение у которого тип хран.зн."
#53 by Chameleon1980
конфа большая. просто конфа - без данных. а то мы видать на ночь глядя ходим вокруг да около
#54 by Chameleon1980
большая???
#55 by 247tsm
Да, большая. Но, по-моему, в я всё описал достаточно ясно и максимально подробно, с текстом процедур. Вот последний вариант процедур: Но почему-то при открытии ЦветТ=Неопределено. Вот в этом и вопрос.
#56 by Chameleon1980
счас не ругается на получить?
#57 by Chameleon1980
а вот тут сам справочник сохранить?
#58 by 247tsm
Так до получить не доходит.
#59 by Chameleon1980
уьрать Если ЦветТ<>Неопределено Тогда и после
#60 by Chameleon1980
сохраните конфу в файл и выложьте куданить мне данные не нужны
#61 by Chameleon1980
или есть TeamViewer ? в почту номер с паролем если что Nickolay_Mulko собака Mail.ru
#62 by 247tsm
Отправил
#63 by Chameleon1980
под какую платформу?
#64 by Chameleon1980
все вижу
#65 by 247tsm
1С:Предприятие 8.1 (8.1.15.14)
#66 by Chameleon1980
пля странно. я походу сплю Тут видимо проблема в том что присваеваем значения реквизиту прямо в форме элемента. Но почему. Пипец
#67 by Chameleon1980
ну поправить то я поправил тока почему диалог выбора цвета возращает в аттрибут цвет всегда 0,0,0 не обращал внимания?
#68 by Chameleon1980
плин точно сплю все норм счас пришлю
#69 by Chameleon1980
ушло
#70 by 247tsm
получил, смотрю
#71 by Chameleon1980
я наверное спать - пяты час пошел
#72 by 247tsm
ОК
#73 by 247tsm
У нас только второй час пошел. ;)
#74 by 247tsm
Да, работает, буду разбираться и сравнивать с моей "стряпниной".
#75 by 247tsm
Очень странно. Я заменил твои реквизиты ЦветТекста, ЦветФона и Шрифт на аналогичные по типу свои ЦветТ, ФонТ и ШрифтТ. Подправил в процедурах и... работать перестало!? Заменил обратно и... заработало!? Все - и твои и мои реквизиты в справочнике присутствуют одновременно. Они отличаются только названиями (по крайней мере визуально). Наверно, какой-то глюк в конфе или...
#76 by 247tsm
Всё, тоже пошёл спать.
#77 by Chameleon1980
хз :) може какая казявка в свойствах закралась
#78 by 247tsm
В свойствах, вроде, визуально всё одинаковое, кроме имён реквизитов.
#79 by 247tsm
Что-то, наверняка, есть. Или, на самом деле, глюк конфы - почему-то для моих реквизитов в Хранилище значений поиск не находит значения.
#80 by 247tsm
У меня были реквизиты формы с такими же именами, что и мои реквизиты справочника: ЦветТ, ФонТ и ШрифтТ. Я их, очевидно, добавил во время своих "экспериментов". Убрал реквизиты формы и заработало и с моими реквизитами справочника.
#81 by Chameleon1980
:)
#82 by Chameleon1980
не понял где:?
#83 by 247tsm
В реквизитах формы. При редактировании формы у тебя есть вкладки: Диалог, Модуль и Реквизиты. Вот на вкладке Реквизиты у меня и были эти реквизиты формы, совпадающие по именам с реквизитами справочника.
#84 by 247tsm
А вообще, мне кажется, что такие значения, как цвет, шрифт гораздо проще хранить в реквизитах типа строка, используя функции ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр. Кода получается меньше.
#85 by Chameleon1980
а вообще, сейчас, сидя в ванной, я вспомнил что цвет вообще одним числом хранить нужно/можно/лучше
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С