Имя: Пароль:
1C
1С v8
ХранилищеЗначений в строке табличной части
,
0 Flawless
 
05.08.13
17:27
Здравствуйте.
Проблема такая, что добавил реквизит в табличную часть элемента справочника с типом ХранилищеЗначений, в дальнейшем, при попытке в него что-то записать 1С сообщает, что нет такого реквизита. И действительно, если остановить работу конфы и посмотреть, на что делится строка, то там есть все что угодно, кроме созданного мной реквизита с типом ХЗ.
Задача состоит в том, что бы в справочнике была ТЧ, содержащая хранимые файлы. В ТЧ записывается имя файла, расширение(для удобства) и собственно ДД(сейчас не записывается)
Соответственно вопрос. Как записать ДД в ХЗ или почему 1с не хочет видить реквизит?
1 Cyberhawk
 
05.08.13
17:33
УФ?
2 Flawless
 
05.08.13
17:45
(1) да
3 Cyberhawk
 
05.08.13
17:52
Щас работющий кусок кода кину
4 Flawless
 
05.08.13
17:56
(3) спасибо, жду
5 Cyberhawk
 
05.08.13
17:56
&НаКлиенте
Процедура ДобавитьВложение()    
    Перем ВыбранноеИмя;
    Перем АдресВременногоХранилища;    
    НовыйОбъект = Объект.Ссылка.Пустая();
    Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина) Тогда        
        Файл = Новый Файл(ВыбранноеИмя);
        НовоеВложение                     = Объект.Вложения.Добавить();
        НовоеВложение.Имя               = Файл.Имя;
        НовоеВложение.ИмяФайлаИсточника = ВыбранноеИмя;
        НовоеВложение.Пиктограмма        = ПиктограммаФайла(Файл);        
        ПоместитьФайлОбъекта(АдресВременногоХранилища,НовоеВложение.НомерСтроки-1);
        
        //Если НовыйОбъект Тогда
        //    ОтобразитьИзменениеДанных(Объект.Ссылка, ВидИзмененияДанных.Добавление);
        //КонецЕсли;            
    КонецЕсли;    
КонецПроцедуры

&НаКлиенте
Процедура ВложенияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    Отказ = Истина;
    ДобавитьВложение();
КонецПроцедуры

&НаСервере
Процедура ПоместитьФайлОбъекта(АдресВременногоХранилища,Индекс)
    ТекЗадача = РеквизитФормыВЗначение("Объект");
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    ТекЗадача.Вложения[Индекс].Хранилище   = Новый ХранилищеЗначения(ДвоичныеДанные);
    
    РазмерФайла = ДвоичныеДанные.Размер();    
    Для Кратность=0 По 2 Цикл
        Если РазмерФайла > 1024 Тогда
            РазмерФайла = РазмерФайла / 1024;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    сзЕдиницы = Новый СписокЗначений;
    сзЕдиницы.Добавить(" б");
    сзЕдиницы.Добавить(" Кб");
    сзЕдиницы.Добавить(" Мб");
    Единица = сзЕдиницы.Получить(Кратность);
    
    стрРазмерФайла = Строка(окр(РазмерФайла, 2))+ Единица;    
    
    ТекЗадача.Вложения[Индекс].РазмерФайла = стрРазмерФайла;
    ТекЗадача.Записать();
    УдалитьИзВременногоХранилища(АдресВременногоХранилища);
    ЗначениеВРеквизитФормы(ТекЗадача, "Объект");
КонецПроцедуры


Реквизит ТЧ с типом ХЗ зовется "Хранилище". Читай, сравнивай со своим кодом, правь и радуйся
6 Flawless
 
05.08.13
18:02
(5) спасибо, буду разбираться
7 alexei366
 
05.08.13
18:26
(5) А как для нового объекта, который в базу ещё не записан?
8 alexei366
 
05.08.13
18:28
(0) И вообще чувак, я те не советую так делать, а то будет у тебя 10 строк в таб части объекта, и в каждой из них файлик к примеру возьмем 5 метров (и того 50), вот ты охренеешь со скорости открытия и записи объекта
9 Infsams654
 
05.08.13
18:53
(8) 5 м - то не 5 г, в прочем, зачем задумываться об этом. Если есть такая возможность, то пользуйся. Если, что-то не устраивает после этого - предъявляй претензии
10 Cyberhawk
 
05.08.13
18:53
(7) э, а в чем там будет сложность?
11 alexei366
 
05.08.13
18:56
(10) Я немного не так выразился, мне не очень нравиться что при каждом действии от будет перезаписывать весь объект, тоесть добавляем 11 строку, и ждем минуту пока он грохнет старые записи, и занесет новые (беря средний комп и файлики по 5 метров)
12 Infsams654
 
05.08.13
20:15
(11) ну не делай тогда ХЗ в ТЧ. Либо ехать, либо шашечки.
Независимо от того, куда вы едете — это в гору и против ветра!