powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / работа с хранилищем значений в COM соединении
14 сообщений из 14, страница 1 из 1
работа с хранилищем значений в COM соединении
    #35932186
x-anna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подключаюсь к базе 1с по средствам СОМ-соединения и пытаюсь заполнить реквизит с типом Хранилище значений фалом, но ничего не получается. Если пытаюсь пытаюсь использовать метод Получить() то пишет ошибку, а если просто приравниваю то ничего в хранилище не оказывается. Может дело в том что это COM объект и с ним надо как то по особому? помогите пожалуйста...
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35932689
Сисой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниже приведен работающий пример в 1С. Используйте его с поправкой на вызовы COM-методов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
		НФ=Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
				НФ.Объект=ЗаявкаНаРасходованиеСредств.Ссылка;
				НФ.ИмяФайла=СокрЛП(ДокументОбъект.Файл); // путь к файлу
				НФ.ВидДанных=Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл;
				НФ.Наименование=ДокументОбъект.Файл; 
				
				НФ.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(НФ.ИмяФайла), Новый СжатиеДанных);
				Файлик= Новый Файл(НФ.ИмяФайла);
				НФ.ИмяФайла=Файлик.Имя;
				НФ.Записать();
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35932792
x-anna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в том то и проблема что с com объектами работаю в первый раз, пишу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
cntr = Новый COMObject("V81.COMConnector");
connection = cntr.Connect("File=""C:\фортунаперенос""; " ) ;
СпрКонтрагенты = connection.Справочники.Контрагенты;
СпрХР = connection.Справочники.ХранилищеДополнительнойИнформации;
перечисл = connection.перечисления.ВидыДополнительнойИнформацииОбъектов;
нов.имяфайла = "49.txt";
Попытка
  нов.хранилище =  Новый ХранилищеЗначения(Новый ДвоичныеДанные("C:\Documents and Settings\rus624\Рабочий стол\49.txt"), Новый СжатиеДанных());
Файлик= Новый Файл("C:\Documents and Settings\rus624\Рабочий стол\49.txt");
				нов.ИмяФайла=Файлик.Имя;
	
Исключение
		Предупреждение(ОписаниеОшибки());
	КонецПопытки;

нов.записать();

и никаких ошибок (((( Просто когда открываю во второй базе к которой обращаюсь просто пишет "Хранилище пусто"
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35932806
x-anna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может дело в то том, что реквизит "хранилище" теперь COM объект и с ним надо как то по другому работать?
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35933313
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создавать объекты надо в контексте COM - примерно так:

хранилище = connection.NewObject("ХранилищеЗначения");
двДанные=connection.NewObject("ДвоичныеДанные","C:\Documents and Settings\rus624\Рабочий стол\49.txt",connection.NewObject("СжатиеДанных"));
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35933585
x-anna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
судя по справке так можно создавать только объекты конфигурации и у меня не получилось
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35933676
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встроенная справка несколько более компактна, чем книжки. Пример в печ.документации показывает, что объект здесь - не только то, что объявлено в конфигураторе.

Кстати, совершенно непонятно в вашем примере, что такое нов :

нов.имяфайла = "49.txt";
и далее.
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #35933782
x-anna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Все получилось!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
cntr = Новый COMObject("V81.COMConnector");
	// создается объект COM-соединение
	connection = cntr.Connect("File=""C:\фортунаперенос""; " ) ;
	СпрКонтрагенты = connection.Справочники.Контрагенты;
	СпрХР = connection.Справочники.ХранилищеДополнительнойИнформации;
	перечисл = connection.перечисления.ВидыДополнительнойИнформацииОбъектов;
	нов =  СпрХР.создатьэлемент();
	нов.объект =   СпрКонтрагенты.найтипонаименованию("Охрана");
	нов.видданных =  перечисл.файл;
	Попытка
		ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
		ДиалогОткрытияФайла.ПредварительныйПросмотр = Истина;
		ДиалогОткрытияФайла.Заголовок = "Выберите файл с фотографией";
		ДиалогОткрытияФайла.ПолноеИмяФайла = "";
		Если ДиалогОткрытияФайла.Выбрать() Тогда
			
			двДанные=connection.NewObject("ДвоичныеДанные",ДиалогОткрытияФайла.ПолноеИмяФайла);
			нов.хранилище = connection.NewObject("ХранилищеЗначения",  двДанные,  connection.NewObject("СжатиеДанных"));
		Иначе        
			Возврат;
		КонецЕсли;
		Файлик= Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);
		нов.имяфайла=Файлик.Имя;		
	Исключение
		Предупреждение(ОписаниеОшибки());
	КонецПопытки;
	нов.записать();

А это то как этот файл открыть:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
cntr = Новый COMObject("V81.COMConnector");
	// создается объект COM-соединение
	connection = cntr.Connect("File=""C:\фортунаперенос""; " ) ;
	СпрКонтрагенты = connection.Справочники.Контрагенты;
	СпрХР = connection.Справочники.ХранилищеДополнительнойИнформации;
об= СпрХР.найтипореквизиту( "Объект", СпрКонтрагенты.найтипонаименованию("Охрана"));
	м = об.получитьобъект();
	СсылкаФайл = Новый Структура;
		СсылкаФайл.Вставить("ИмяФайла",  м.ИмяФайла);
		СсылкаФайл.Вставить("Хранилище", м.Хранилище);
		МассивСсылок = Новый Массив;
		МассивСсылок.Добавить(СсылкаФайл);
	
	УниверсальныеМеханизмы.ОткрытьФайлы(м, глЗначениеПеременной("глТекущийПользователь"),МассивСсылок, Ложь);

...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #36485451
eldarshak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x-anna,

Всем привет!

Вот наболела проблема хранения файлов.
У руководства большое желание пользоваться этой возможностью фирмы 1С хранить файлы в базе,
мне кажется это не очень хорошее решение, т.к. файлов будет много и средний размер файла составит около 3 Мбайт.
Не хочется засорять базу и могут возникнуть проблемы с выгрузкой.

Появилась идея вынести хранение файлов во внешнюю базу 1С, и через COM соединение сохранять файлы объектов.
Как думаете имеет ли она право на существование?

Еще попробовал выше указанный код записать во внешнюю базу получается в реквизит с типом ХранилищеЗначения, а вот считать никак бьюсь уже второй день.
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #36485460
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чо вы все в 1С разный мусор тащите...
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #36485819
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин ПЖчо вы все в 1С разный мусор тащите...Гугль на собственной ос работает. И не знает что в 1с можно было бы хранить всех их миллиарды файлов.

Автор - сколько файлов и какой общий объем?
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #36485831
eldarshak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сГосподин ПЖчо вы все в 1С разный мусор тащите...Гугль на собственной ос работает. И не знает что в 1с можно было бы хранить всех их миллиарды файлов.

Автор - сколько файлов и какой общий объем?

размер файла 3 Мб, цеплятся будет к элементу справочника за год набежит 3 тыс.элементов
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #36485845
eldarshak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1сГосподин ПЖчо вы все в 1С разный мусор тащите...Гугль на собственной ос работает. И не знает что в 1с можно было бы хранить всех их миллиарды файлов.

Автор - сколько файлов и какой общий объем?

размер файла 3 Мб, цеплятся будет к элементу справочника за год набежит 3 тыс.элементов
получится около 9ГБ - что в базе рабочей не нужно.

Есть у кого-нибудь подобные решения в связке 1С? Или еще идеи?

Хотелось бы услышать конкретные ответы, например,
как через COMСоединение как считать реквизит из внешней базы c типом
ХранилищеЗначений?
...
Рейтинг: 0 / 0
работа с хранилищем значений в COM соединении
    #36486137
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarshakПрограммист 1сГосподин ПЖчо вы все в 1С разный мусор тащите...Гугль на собственной ос работает. И не знает что в 1с можно было бы хранить всех их миллиарды файлов.

Автор - сколько файлов и какой общий объем?

размер файла 3 Мб, цеплятся будет к элементу справочника за год набежит 3 тыс.элементов
получится около 9ГБ - что в базе рабочей не нужно.

Есть у кого-нибудь подобные решения в связке 1С? Или еще идеи?

Хотелось бы услышать конкретные ответы, например,
как через COMСоединение как считать реквизит из внешней базы c типом
ХранилищеЗначений?Хм у меня в пределе 30 ГБ. Именно за счет картинок. Правда база рабочая но только для фабричных конструкторов. Скорость не требуется.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / работа с хранилищем значений в COM соединении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]