Вход | Регистрация


1С:Предприятие ::

Метки:

Как восстановитьТаблицуЗначений сохраненную ЗначениеВСтроку()?

Я
   i\'m
10.08.04 - 12:15
При восстановлении ТаблицыЗначений из строки ничего не происходит (хотя хотелось бы иначе).
Пробовал:
Таб = ЗначениеИзСтроки(СтрокаП);
Таб.Загрузить(ЗначениеИзСтроки(СтрокаП));
 
 
   Shadal
 
1 - 10.08.04 - 12:17
ИзСтрокиСРазделителями()
ВСтрокуСРазделителями() попробуй использовать
И не для таблицы а для СпискаЗначений...
   IAm
 
2 - 10.08.04 - 12:17
СтрокаП - это что и как сформировалось её значение?
   VaS
 
3 - 10.08.04 - 12:19
Ты не понял напрвление..
ТЗ=ЗначениеИзСтроки(СтрокаП);
ТЗ.Загрузить(Таб);
   VaS
 
4 - 10.08.04 - 12:21
Что.Загрузить(Куда);
   Shadal
 
5 - 10.08.04 - 12:21
(3) и что у тебя получиться???
   Shadal
 
6 - 10.08.04 - 12:21
(4) А может Выгрузить()???
   GrayT
 
7 - 10.08.04 - 12:22
(4)Наоборот
   Shadal
 
8 - 10.08.04 - 12:23
(7) Согласен... а как насчёт (1)??
   i\'m
9 - 10.08.04 - 12:26
Я выгружаю Таблицу значений в строку при закрытии формы справочника СтрокаП - Строка неограниченной длины получена методом ЗначениеВСтроку()(в описании его можно применять для ТЗ).При открытии восстановливаю ЗначениеИзСтроки() - вот тут-то и проблема
   VaS
 
10 - 10.08.04 - 12:28
Извиняюсь, перепутал. Все же попробуй использовать промежуточную переменную.
 
  Рекламное место пустует
   VaS
 
11 - 10.08.04 - 12:29
А где ты хранишь эту строку между закрытием и открытием?
   Shadal
 
12 - 10.08.04 - 12:30
А СтрокаП у тебя где хранится??
   i\'m
13 - 10.08.04 - 12:31
СтрокаП - Реквизит элемента справочника
   Shadal
 
14 - 10.08.04 - 12:31
Надо чтоб у справочника был элемент СтрокаП и перед закрытием надо
Спр.СтрокаП=СтрокаП;
Спр.Записать();
   Guk
 
15 - 10.08.04 - 12:32
(13) Используй СокрЛП(СтрокаП)...
   Michael99
 
16 - 10.08.04 - 12:33
(0)
Если ТЗ это не элемент диалога достаточно
ТЗ=ЗначениеИзСтроки(СтрокаП);
Если Элемент диалога надо использовать пром. переменную
ТЗ1=ЗначениеИзСтроки(СтрокаП);
ТЗ1.Выгрузить(ТЗ);
Проверь значение СтрокаП в отладчике.
   i\'m
17 - 10.08.04 - 12:35
Все это хозяйство работает в модуле формы справочника.
СтрокаП сохраняется кнопкой <ок>.
При открытии она не пустая, но в таблицу ничего не восстанавливает.
Пробовал Форма.Обновить().(табл. на форме) - та же потеха.
   Guk
 
18 - 10.08.04 - 12:37
(17) Таб.Загрузить(ЗначениеИзСтроки(СокрЛП(СтрокаП)));
   Shadal
 
19 - 10.08.04 - 12:37
(17) попробуй совет (15).
   IAm
 
20 - 10.08.04 - 12:38
15 Если строкаП - неограниченная длина - то монопенисуально
   Guk
 
21 - 10.08.04 - 12:42
(20) Не буду спорить. Просто как вариант. Проверять лениво...
   i\'m
22 - 10.08.04 - 12:47
Через временную переменную - отказал.
В отладчике при восстановлении СтрДлина() = 54, хотя втоптал я туда гораздо больше.
При формировании ТЗ колонки добавлял в цикле без идентификаторов (обращение в дальнейшем по номерам) - это не может его смущать?
   АЛьФ
 
23 - 10.08.04 - 12:48
Лучше использовать ЗначениеВСтрокуВнутр/ЗначениеИзСтрокиВнутр.
   i\'m
24 - 10.08.04 - 12:48
монопенисуально - это куда?
   Shadal
 
25 - 10.08.04 - 12:49
Тоесть перед сохранением у тебя СтрДлина()> чем СтрДллина() при открытии???
   Shadal
 
26 - 10.08.04 - 12:50
(23) или (1)
   Shadal
 
27 - 10.08.04 - 12:52
Попробуй перем=ЗначениеВСтроку() и СтрокаП=перем
И сравни СтрДлина(перем) и СтрДлина(СтрокаП)
   i\'m
28 - 10.08.04 - 12:53
Это все что есть при открытии -
"{"ТаблицаЗначений","2",{"0","","0","0","0","","2",{}}}"
и где остальное  - понятия не имею.
   Shadal
 
29 - 10.08.04 - 13:00
(28) Попробуй создай табличку в модуле
Таб=СоздатьОбъект("ТаблицаЗначений");
Таб.Очистить();
Таб.НоваяКолонка("Первая");
Таб.НоваяКолонка("Вторая");
Таб.НоваяСтрока();
Таб.Первая=11;
Таб.Вторая=21;
Таб.НоваяСтрока();
Таб.Первая=12;
Таб.Вторая=22;
Выгрузи и посмотри что в строке?
   i\'m
30 - 10.08.04 - 13:18
Выгрузил, посмотрел, все круто как всегда.
Только одна проблема  - НЕ ВОССТАНАВЛИВАЕТСЯ !
Вопрос  - Сколько символов можно хранить в строке неограниченной длины?
   Shadal
 
31 - 10.08.04 - 13:29
кстате я вспомнил... у меня проблемы были с восстановлением года 3 назад из строки с неограниченной длины, пришлось создать три здоровых строчки. (Я хранил там список серийных номеров).Было типа три строки длиной по 999 больше не берёт
ну соответственно разделял на три строки потом склеивал, восстанавливал... С неограниченной ничего не получилось..
   AndrewZL
32 - 10.08.04 - 13:34
Контекст ---> Форма элемента справочника
Процедура ПриОткрытии()
    Если СокрЛП(СтрокаП) <> "" Тогда
        Стр = СоздатьОбъект("ТаблицаЗначений");
        Стр = ЗначениеИзСтроки(СтрокаП);
        Стр.Выгрузить(Тбз);
    КонецЕсли;
 КонецПроцедуры

Процедура Заполнить()
    Тбз.НоваяСтрока();
    Тбз.Номер1 = 11;
    Тбз.Номер2 = 12;
    Тбз.НоваяСтрока();
    Тбз.Номер1 = 21;
    Тбз.Номер2 = 22;
    СтрокаП = ЗначениеВСтроку(Тбз);
КонецПроцедуры

Тбз.НоваяКолонка("Номер1");
Тбз.НоваяКолонка("Номер2");
   i\'m
33 - 10.08.04 - 13:44
Офигеннейшее всем спасибо!
Понятия не имею что изменилось но теперь работает!
Конечный вариант звучит так:

Таб.Загрузить(ЗначениеИзСтроки(СтрокаП)); (С чего начал к тому и пришел)

Предположение 1.(фантастическое)
Попробовал вставить в форму реквизит СтрокаП(чтоб видно было что за гемор в ней твориться)и увидел обрезок этой строки. Поставил флажок Многострочный в свойстве поля, сформировал еще раз СтрокуП. и после открытия формы увидел текст полностью! (о чудо!).
Все работает.
Снес поле с формы - Все работает.
Ну чем не Волшебство!
Для чистоты эксперимента надо бы в другой конфе попробовать туже потеху, смотришь, и вправду в чудеса записать можно!
 
  Рекламное место пустует
   i\'m
34 - 10.08.04 - 13:48
Милый друг 1С.
Я не знаю чем бы я без тебя занимался последние 3 часа.
Это было крутооо!
   Shadal
 
35 - 10.08.04 - 13:50
(33) Молодца!!!
   Тор
 
36 - 10.08.04 - 14:11
(0) Ник - попытка погреться в лучах славы IAm?



Список тем форума
Рекламное место пустует  
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует