Имя: Пароль:
1C
1C 7.7
v7: ЗначениеВСтроку
,
0 Рябина
 
22.05.12
10:16
Доброе утро! В справочнике нужно ТЗ(таблица Значений) сохранить в при закрытии методом ЗначениВСтроку(). Создала реквизит справочника СохрТЗ - тип Строка, неогранич. ПриЗакрытии пишу СохрТЗ = ЗначениеВСтроку(ТЗ). А ПриОткрытии делаю запись ТЗ = ЗначениеИзСтроки("Стр"). Ничего не получается. Подскажите, кто знает, что не так я делаю?
1 big
 
22.05.12
10:20
ТЗ = ЗначениеИзСтроки(СохрТЗ)

наверное как-то так
2 Рябина
 
22.05.12
10:23
Ой ! Да, я так и прописала ТЗ = ЗначениеИзСтроки(СохрТЗ) . Ничего не выходит
3 viktor_vv
 
22.05.12
10:25
Это надо в ПриЗаписи() писать, а не в при закрытии.
4 viktor_vv
 
22.05.12
10:26
Плюс в ПРиЗакрытии() проверять модифицированность формы и в случае чего записывать, перед закрытием.
5 Рябина
 
22.05.12
10:27
Прописала в ПриЗаписи. Как проверять модифицированность формы?
6 PRADA
 
22.05.12
10:29
(0) скорее всего вы не сохраняли значение реквизита СохрТЗ при записи елемента справочника. Вообще использование реквизитов типа "Неограниченная длинна" в 7 плохо. Нужно стараться избегать подобных реквизитов.
7 aka AMIGO
 
22.05.12
10:32
до кучи можно еще попробовать ЗначениеВСтрокуВнутр и обратно :)
8 aka AMIGO
 
22.05.12
10:37
(6)избегать, конечно, нужно.. но у меня прекрасно работал этот вариант в документе.. т.е. запоминалась ТЗ в строку неогранич. длины
9 big
 
22.05.12
10:38
(8) а ссылочная целостность?
10 Рябина
 
22.05.12
10:39
Процдура ПриЗаписи() :
СохрТЗ =  ЗначениеВСтроку(ТЗ);
КонецПроцедуры

Процедура ПриОткрытии()
ТЗ = ЗначениеИзСтроки(СохрТЗ)
КонецПроцедуры

Пробовала и ЗначениеВСтрокуВнутр() тоже самое...???
11 viktor_vv
 
22.05.12
10:40
Так отладчиком в ПриЗаписи заходит ?
12 viktor_vv
 
22.05.12
10:44
В ПриОткрытии инициализируете переменную модуля типа ФлагИзменения = 0. При модификации ТЗ этот ФлагИзменения = 1.

В Призакрытии()

Если ФлагИзменения = 1 Тогда
   СохрТЗ =  ЗначениеВСтроку(ТЗ);
   Записать();
КонецЕсли ;

Как-то так.
13 viktor_vv
 
22.05.12
10:44
Это чтобы при каждом закрытии не записывать, а только при изменении.
14 viktor_vv
 
22.05.12
10:45
Ну и в приЗаписи оставить тоже.
15 PRADA
 
22.05.12
10:45
(9) не совсем понял к чему вопрос про удаление объектов?
16 aka AMIGO
 
22.05.12
10:49
Проверка модифицированности:
Если Модифицированность()=1 Тогда //были изменения в реквизитах
17 big
 
22.05.12
10:50
(15) когда в ТЗ есть ссылки на другие объекты метаданных, то при удалении эти ссылки будут игнорироваться
18 aka AMIGO
 
22.05.12
10:54
(10) вариант такой:
Процедура ПриОткрытии()
ТЗ = создатьОбъект("ТаблицаЗначений");
ТЗ = ЗначениеИзСтроки(СохрТЗ)
КонецПроцедуры
19 PRADA
 
22.05.12
10:55
(17) :) соглашусь с Вами, но мы же не читали техническое задание вопроса данной темы... можем спросить у автора...
(0) а какие типы данных хранит ваша ТЗ?
20 viktor_vv
 
22.05.12
10:55
(16) ПриИзмении ТЗ на форме Модифицированность() не меняется.
21 aka AMIGO
 
22.05.12
10:56
+18 это если ТЗ не есть реквизит формы!!
22 aka AMIGO
 
22.05.12
10:56
(20)согласен :)
23 1Сергей
 
22.05.12
10:57
ТЗ реквизит формы?
24 1Сергей
 
22.05.12
11:02
(23)+ если да, то:

Процедура ПриОткрытии()
ТЗврем = ЗначениеИзСтроки(СохрТЗ)
ТЗ.Загрузить(ТЗврем);
КонецПроцедуры
25 Ёпрст
 
22.05.12
11:05
Процедура ПриОткрытии()
  ЗначениеИзСтроки(СохрТЗ).Выгрузить(ТЗ);
КонецПроцедуры
26 aka AMIGO
 
22.05.12
11:13
вот работающий код:
   Если ПустоеЗначение(СтрокаТЗ)=1 Тогда
       СтатусАкта = Перечисление.СтатусАктаОБраке.НеОформлен;
       ТЗдляТЗ.Очистить();
       ТЗдляТЗ.НоваяКолонка("Метка","Перечисление",,,"Учтен",5);
       ТЗдляТЗ.НоваяКолонка("Док",,,,"ДокВыпПрод",25);
       ТЗдляТЗ.НоваяКолонка("Дата","Дата",,,,6);
       ТЗдляТЗ.НоваяКолонка("Изделие",,,,"Изделие",15);
       ТЗдляТЗ.НоваяКолонка("КоличествоИзделий",,,,"Кол.изд.",4);
       ТЗдляТЗ.НоваяКолонка("Цех");
       ТЗдляТЗ.НоваяКолонка("ТоварБрак",,,,"Брак",25);
       ТЗдляТЗ.НоваяКолонка("КолБрака","Число",,,,5);
   Иначе
       //СтатусАкта = Перечисление.СтатусАктаОБраке.НеУчтен;
       ТмпТаб = СоздатьОбъект("ТаблицаЗначений");
       ТмпТаб = ЗначениеИзСтрокиВнутр(СтрокаТЗ);
       ТЗдляТЗ.Загрузить(ТмпТаб);
27 aka AMIGO
 
22.05.12
11:15
+26 ТЗдляТЗ - это на форме, тз такая