Имя: Пароль:
1C
1С v8
уф. не видит реквизит ТЧ хранилище значений.
0 zladenuw
 
14.06.13
14:45
&НаСервере
Процедура ПолучитьТекстДоговора(ТекСтрокаФирма)
     ТЧПоФирмам = Объект.ПоФирмам;
     НайденныеСтроки = ТЧПоФирмам.НайтиСтроки(Новый Структура("Фирма",ТекСтрокаФирма));
   Если НайденныеСтроки.количество()=0 Тогда
        новСтр = ТЧПоФирмам.Добавить();
        новСтр.Фирма =  ТекСтрокаФирма;
        МакетДоговора = новСтр.Текст.Получить();
        ТекФирма = ТекСтрокаФирма;
        Записать();
   Иначе
       МакетДоговора = НайденныеСтроки[0].Текст.Получить();
   КонецЕсли;

{Справочник.ШаблонДоговора.Форма.ФормаЭлемента.Форма(44)}: Поле объекта не обнаружено (ТекстДоговора)
        МакетДоговора = новСтр.ТекстДоговора.Получить();
http://www.ximage.ru/index.php?id=1371206718
1 MSII
 
14.06.13
14:50
А где строка 44?
2 zladenuw
 
14.06.13
14:50
(0) хм. пробую при созданиенасервере получить. но и там его нету. почему ?
3 zladenuw
 
14.06.13
14:51
(1) да не видит реквизит хранилище значений. как его получить ?
НовСтр  =  Объект.ПоФирмам.Добавить();
НовСтр.ТекстДоговора - нету такого реквизита.
4 acsent
 
14.06.13
14:52
в уф нет хранилица
5 zladenuw
 
14.06.13
14:54
(4) вообще даже на сервере ? :)
а чего пример вот тут http://infostart.ru/public/74958/.
и все работает, а я хочу такое же. только через табличную часть
6 MSII
 
14.06.13
14:56
Да есть, просто в данных формы недоступен - написано же. Делай так:
   РеквизитОбъект = РеквизитФормыВЗначение("Объект");
   ХЗ = РеквизитОбъект.ТекстДоговора.Получить();
7 zladenuw
 
14.06.13
14:57
(6) да но.
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   ТекущийОбъект.ПоФирмам[0].ТекстДоговора
КонецПроцедуры

я его вижу в отладчике!!!! почему тогда при создание он не доступен ?
8 acsent
 
14.06.13
14:58
(5) нужно хранить коллекцию адресов во временном хранилище
9 MSII
 
14.06.13
14:59
(7) А ТекущийОбъект в ПриЧтенииНаСервере у тебя - какой тип?
10 zladenuw
 
14.06.13
14:59
(9) объект
11 MSII
 
14.06.13
15:01
(10) Ну. И чего глупые вопросы-то задаешь?
12 zladenuw
 
14.06.13
15:02
(11) а еж ты кот. спасибо
13 MSII
 
14.06.13
15:03
(12) Да не за что.
14 zladenuw
 
14.06.13
15:10
а почему не сохраняет ? :)
добавил команду вызываю на сервере


&НаСервере
Процедура СохранитьТекстДоговораСервер()

     РеквизитОбъект = РеквизитФормыВЗначение("Объект");
     НайденныеСтроки = РеквизитОбъект.ПоФирмам.НайтиСтроки(Новый Структура("Фирма",ТекФирма));
   Если НайденныеСтроки.количество()=0 Тогда
        новСтр = РеквизитОбъект.ПоФирмам.Добавить();
        новСтр.Фирма =  ТекФирма;
        новСтр.ТекстДоговора = Новый ХранилищеЗначения(МакетДоговора);
   Иначе
       НайденныеСтроки[0].ТекстДоговора = Новый ХранилищеЗначения(МакетДоговора);
   КонецЕсли;
   Записать();
КонецПроцедуры
15 acsent
 
14.06.13
15:12
Записываешь совсем другой объект ))
16 zladenuw
 
14.06.13
15:13
(15) добавил
ЗначениеВРеквизитФормы(РеквизитОбъект,"Объект");

Сохраняет. но форматированный документ все равно пустой,
то есть другой объект ?
17 zladenuw
 
14.06.13
15:34
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   ТекущийОбъект.ПоФирмам[0].ТекстДоговора = Новый ХранилищеЗначения(МакетДоговора);
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   ТекФирма = ТекущийОбъект.ПоФирмам[0].Фирма;
   МакетДоговора = ТекущийОбъект.ПоФирмам[0].ТекстДоговора.Получить();
КонецПроцедуры

делаю так и все равно пусто.
18 Defender aka LINN
 
14.06.13
15:41
(6) Не надо так делать
19 MSII
 
14.06.13
15:43
(18) Ага. ДанныеФормыВЗначение.
20 Defender aka LINN
 
14.06.13
15:45
(19) Че ага? Не взлетит один хрен.
В (17) правильные процедуры выбраны
21 MSII
 
14.06.13
15:46
(20) Уже вижу. Только непонятно, почему. После десериализации хранилище очищается, что-ли?
22 zladenuw
 
14.06.13
15:48
(20) я уже себе сломал мозг. решил удалить форму и сделать по новой.
У меня есть справочник у него тч, два реквизита фирма и текстдоговора.

как мне при активизации строки заполнить форматированный документ ?
(17) код работает, хз чего. но по началу глючил. может кеш.
23 zladenuw
 
14.06.13
15:49
(22) ПриЧтенииНаСервере, помещать во временное хранилище ? и уже при активизации строки получать из него ?
24 Defender aka LINN
 
14.06.13
15:50
(21) Хранилище не отображается в данные формы, потому и очищается, видимо.
(22) Сложить данные во временное хранилище формы, например
25 zladenuw
 
14.06.13
15:51
(24) спасибо. буду пробовать.
26 zladenuw
 
14.06.13
16:18
сделал так.
&НаКлиенте
Процедура ФирмаВыбораПриИзменении(Элемент)
   НайденСтроки = Объект.ПоФирмам.НайтиСтроки(Новый Структура("Фирма",ФирмаВыбора));
   Если НайденСтроки.Количество()=0 Тогда
      НовСтр = Объект.ПоФирмам.Добавить();
      НовСтр.Фирма = ФирмаВыбора;
      НовСтр.УИ = Новый УникальныйИдентификатор;
      ПоместитьВоВременноеХранилище(МакетДоговора,  НовСтр.УИ);
   иначе    
       МакетДоговора = ПолучитьИзВременногоХранилища(НайденСтроки[0].УИ).Получить();
   КонецЕсли;
       
КонецПроцедуры

&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   Для каждого ТекСтр Из ТекущийОбъект.Пофирмам Цикл
           ТекСтр.ТекстДоговора = ПолучитьИзВременногоХранилища(ТекСтр.УИ);
   КонецЦикла;
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   Для каждого ТекСтр Из ТекущийОбъект.Пофирмам Цикл    
        ПоместитьВоВременноеХранилище(ТекСтр.ТекстДоговора, ТекСтр.УИ);
   КонецЦикла;
КонецПроцедуры

пишет ошибку
           ТекСтр.ТекстДоговора = ПолучитьИзВременногоХранилища(ТекСтр.УИ);
по причине:
Ошибка получения значение из временного хранилища
по причине:
Неправильный путь к файлу 'e67da86d-693e-407c-a8df-edc07db4e493'

что делаю не так ?
27 zladenuw
 
14.06.13
16:48
и даже если так

&НаКлиенте
Процедура ФирмаВыбораПриИзменении(Элемент)
   НайденСтроки = Объект.ПоФирмам.НайтиСтроки(Новый Структура("Фирма",ФирмаВыбора));
   Если НайденСтроки.Количество()=0 Тогда
      НовСтр = Объект.ПоФирмам.Добавить();
      НовСтр.Фирма = ФирмаВыбора;
      НовСтр.УИ = ПоместитьВоВременноеХранилище(МакетДоговора);
      Сообщить(НовСтр.УИ);
   иначе    
       МакетДоговора = ПолучитьИзВременногоХранилища(НайденСтроки[0].УИ).Получить();
   КонецЕсли;
       
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   Для каждого ТекСтр Из ТекущийОбъект.Пофирмам Цикл
           ТекСтр.ТекстДоговора = ПолучитьИзВременногоХранилища(ТекСтр.УИ);
   КонецЦикла;
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
   Для каждого ТекСтр Из ТекущийОбъект.Пофирмам Цикл    
        ТекСтр.УИ = ПоместитьВоВременноеХранилище(ТекСтр.ТекстДоговора.Получить());
   КонецЦикла;
КонецПроцедуры

получаю ошибку
{Справочник.ШаблонДоговора.Форма.ФормаЭлемента1.Форма(19)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
           ТекСтр.ТекстДоговора = ПолучитьИзВременногоХранилища(ТекСтр.УИ);
по причине:
Ошибка получения значение из временного хранилища
по причине:
Неправильный путь к файлу 'e1cib/tempstorage/4207e482-d4f0-11e2-a986-001e6702', в процедуре передзаписью. что делаю не так ?
28 Defender aka LINN
 
14.06.13
16:53
Может все же прочитаешь про метод ПоместитьВоВременноеХранилище хоть что-нибудь?
29 zladenuw
 
14.06.13
17:00
(28) читал
30 zladenuw
 
14.06.13
17:05
(28) сказал бы лучше, что не так делаю. вроде все правильно. не понимаю что ей не нравится.
31 Поросенок Петр
 
14.06.13
17:08
(29) Перечитай ещё раз.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан