|
v7: Сохранение в справочнике значения неопределенного типа | ☑ | ||
---|---|---|---|---|
0
Евгений Береза
13.11.11
✎
06:58
|
Здравствуйте, уважаемые коллеги!
ПОдскажите, как хранить в элементе справочника СписокЗначений? Реквизиту справочника назначен тип Неопределенный. В этом реквизите хочу хранить Списокзначений |
|||
1
almar
13.11.11
✎
07:20
|
Список значений надо преобразовать в строку, а строку уже можно сохранять
|
|||
2
Евгений Береза
13.11.11
✎
07:34
|
просто преобразование? А при считывании - обратное преобразование?
|
|||
3
vcv
13.11.11
✎
07:39
|
(1) Не сохранится в реквизите неопределенного типа. Под такой реквизит выделено 22 байта. На хранение ссылок на любые объекты БД хватает, числа/даты тоже можно сохранять, а вот строки режет. Нужно делать строку очень большой или неограниченной длины, и сохранять в ней ЗначениеВСтрокуВнутр(Значение).
|
|||
4
Евгений Береза
13.11.11
✎
07:46
|
понятно! А обратное преобразование - значениеизстрокивнутр?
|
|||
5
Rie
13.11.11
✎
07:53
|
(4) Что в списке значений будет? Если ссылки - то рискуешь ссылочной целостностью.
Может, имеет смысл создать подчинённый справочник? |
|||
6
Евгений Береза
13.11.11
✎
07:58
|
Там хранятся ссылки на фирмы. задачу не буду рассказывать полностью, долго... ПОдчиненный - думаю, не имеет смысла, слишком "жирно" для такой задачки :) А вот как обратно получить этот список значений - пока не получается
|
|||
7
Евгений Береза
13.11.11
✎
08:00
|
строказапись = значениевстрокувнутр(доступфирмы);
фирмы=строказапись; записать(); ДоступФирмы - это экранный элемент фирмы - реквизит справочника Вот так правильно? А обратная загрузка - вот так? дф = значениеизстрокивнутр(фирмы); |
|||
8
vcv
13.11.11
✎
08:04
|
(7) Правильно обратно. Только проверь значение реквизита "фирмы". Не обрезается ли он. Если оставил реквизит справочника "неопределенный" - тогда обрезается 22 символа. Нужен реквизит "строка неопределенной длины".
|
|||
9
Евгений Береза
13.11.11
✎
08:09
|
не-не, я реквизит изменил на "строка неопределенной длины".
ВОт только как теперь загрузить из строки в экранный элемент? ПОлучается что тип переменной "дф" неопределен... |
|||
10
Rie
13.11.11
✎
08:11
|
(6) Ну, если на ссылочную целостность начхать, то...
(9) "Экранный элемент" - это кто? Поле списка? |
|||
11
vcv
13.11.11
✎
08:13
|
Если "дф" - это на форме элемент "Поле списка" или "Поле со списком", тогда грузить нужно так:
ЗначениеИзСтрокиВнутр(фирмы).Выгрузить(дф) |
|||
12
Евгений Береза
13.11.11
✎
08:13
|
Да, поле списка! Може, оно у меня криво записывается... сообщить(ТипЗначенияСтр(дф)) после ситывания возвращает неопределенный тип...
|
|||
13
Мимохожий Однако
13.11.11
✎
08:16
|
Покажи код полностью. Не стесняйся.
|
|||
14
Евгений Береза
13.11.11
✎
08:47
|
код из под 1с-ки кривым шрифтом блин переносится.. не могу код показать....
|
|||
15
Rie
13.11.11
✎
08:49
|
(14) А переключиться в Конфигураторе на русский перед тем, как код копировать?
|
|||
16
Евгений Береза
13.11.11
✎
08:53
|
ф = создатьобъект("Справочник.ФИрмы");
ф.выбрать("","ФормаСписка"); доступфирмы.добавитьзначение(ф.текущийэлемент()); строказапись = значениевстрокувнутр(доступфирмы); фирмы=строказапись; записать(); |
|||
17
Евгений Береза
13.11.11
✎
08:54
|
да... устал я видать :)
|
|||
18
Евгений Береза
13.11.11
✎
08:54
|
вот этот код - работа при добавлении в списокзначений
|
|||
19
Rie
13.11.11
✎
08:58
|
(16) Всё ж таки подумай над подчинённым справочником. Не знаю, что там вокруг, но подчинённому справочнику тут - самое место. IMHO.
доступфирмы - это кто? Поле списка или (я надеюсь на это) переменная со значением типа СписокЗначений? Ну и код, который выполняет обратное преобразование - тоже хотелось бы видеть. |
|||
20
Евгений Береза
13.11.11
✎
09:02
|
да, доступфирмы - это поле списка на форме
вот считывающий код дф = значениеизстрокивнутр(фирмы); если ТипЗначенияСтр(дф) <> "" тогда для i=1 по дф.размерсписка() цикл пром=""; дф.получитьзначение(i,пром); //сообщить(пром.наименование); сообщить(пром); доступфирмы.добавитьзначение(пром); конеццикла конецесли; |
|||
21
Евгений Береза
13.11.11
✎
09:03
|
фирмы - это реквизит справочника
|
|||
22
Rie
13.11.11
✎
09:13
|
(20) Ещё раз - попробуй подчинённые справочники! :-)
Но если хочешь извращаться, то // Туда: перемСписок = СоздатьОбъект("СписокЗначений"); доступфирмы.Выгрузить(перемСписок); фирмы = ЗначениеВСтроку(перемСписок); // Оттуда: перемСписок = ЗначениеИзСтроки(фирмы); Если ТипЗначенияСтр(перемСписок)<>"СписокЗначений" Тогда Сообщить("Ой!"); Иначе перемСписок.Выгрузить(доступфирмы); КонецЕсли; |
|||
23
Rie
13.11.11
✎
09:17
|
+(22) Кстати, на форму можно бросить не просто поле списка, а поле списка с пометками. Если справочник Фирмы небольшой - то красивее будет.
|
|||
24
Евгений Береза
13.11.11
✎
09:21
|
я уже думал о пометках - красоту потом буду наводить! :)
|
|||
25
Евгений Береза
13.11.11
✎
09:32
|
Ура! Получилось! Я все забываю про использование полезных процедур "выгрузить", скорей всего из-за этого были загоны...
Спасибо, коллеги! |
|||
26
temsa
13.11.11
✎
10:18
|
(0) сдается мне вы пытаетесь изобрести велосипед через ктоые все прошли лет 10-11 назад. Не лучше ли юзать 1с82. Или изучить возожности 1с77
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |