|
ХранилищеЗначений в строке табличной части | ☑ | ||
---|---|---|---|---|
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) ну не делай тогда ХЗ в ТЧ. Либо ехать, либо шашечки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |