Имя: Пароль:
1C
1С v8
Получение двоичных данных из временного хранилища в модуле менеджера справочника.
0 Полумудр
 
28.11.25
10:57
Адрес = На сервере находится аудио_файл.wav (e1cib/tempstorage/bebc6049-ea40-4957-bcc5-9cfe817cd2c6?seanceId=MDhkZjAxMWUtYjcyZi00MzYwLWI1NmMtMGE1ZTExYjI2ZTRi50SRUxAYX0ayEqTl2bfldwAAAAA)

Справочник._имя_.МодульМенеджера
Функция ПолучитьДвоичныеДанные()
    ПолучитьИзВременногоХранилища(Адрес)
КонецФункции;

Проблема.
При инициализации функции не удается получить двоичные данные.
Но если открыть (Справочник._имя_.ФормаСписка) тогда двоичные данные удается получить.

Вопрос.
Куда копать?
1 arsik
 
гуру
28.11.25
11:04
Ошибку может какую пишет?
Ну и еще посмотреть бы, как ты положил во временное хранилище. Там от второго параметра "Адрес" зависит сколько будет жить это значение в хранилище.
2 Волшебник
 
28.11.25
11:02
зачем нужен этот аудио-файл?
как называется справочник?
3 DiMel_77
 
28.11.25
12:15
(0) А адрес временного хранилища где хранится? Т.е. функция вида:
Функция ПолучитьДвоичныеДанные(Адрес) Экспорт
    
    ДвоичныеДанные = Неопределено;
    Если ЭтоАдресВременногоХранилища(Адрес) Тогда
       ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    КонецЕсли;

    Возврат ДвоичныеДанные;
КонецФункции;


Должна работать.
4 Полумудр
 
28.11.25
12:50
(1) Ошибки никакой нет просто "Неопределено" возвращается
Строка = "C:\файлы\Звук1.wav"
ДвоичныеДанные = Новый ДвоичныеДанные(Строка);
Адрес = (ПоместитьВоВременноеХранилище(ДвоичныеДанные));

(2) Не понимаю для чего нужно знать справочник -.-
Но вот Справочник._ДемоРаботаСРечьюРаспознанныеФайлы.МодульМенеджера
А файл нужен для расшифровки звука в текст для телефонии по приему показаний.

(3) Не работает. Проблема в том что когда функция инициализируется но при этом Справочник в 1С-Предприятии (Не конфигуратор) не открыт (Любой вид: Список, Элемент), тогда ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес) = Неопределено.
А когда Справочник открыт тогда ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес) = "24 43 53 32 23 43...".
5 Волшебник
 
28.11.25
12:54
(4) Вы готовы взять на себя ответственность за ошибки распознавания?
Если Ваш робот расшифрует неправильно и добавит нолик, потом будет расчёт и получится счёт на миллионы рублей, что тогда?
6 Полумудр
 
28.11.25
12:56
(5) Для этого там существует файл который можно прослушать.
Сомневаюсь что данный вопрос относится к проблеме получения двоичных данных .-.
7 Волшебник
 
28.11.25
13:00
(6) Не вижу никакой проблемы получения двоичных данных. Это чисто техническая проблемка, вызванная криворукостью программиста. Зато вижу грандиозную проблему в самой постановке задачи.
8 DiMel_77
 
28.11.25
13:02
(4) Чего за бред вы пишете? Где и как вы помещаете объект во временное хранилище? Как передаете этот адрес в модуль менеджера?
9 Полумудр
 
28.11.25
13:03
(7) Ты прав.
Но я все же хочу убрать зависимость открытой формы справочника.
Перемещение Функции исполняющую получение Двоичных данных из модуля менеджера не желательна.
10 arsik
 
гуру
28.11.25
13:06
(4) Внимательно мануал читай по помещению в хранилище
<Адрес> (необязательный)
Тип: УникальныйИдентификатор, Строка. 
Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода. 
В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы.
Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя.
Если передан адрес уже удаленного значения, будет сгенерировано исключение.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
11 Полумудр
 
28.11.25
13:17
(8)
РегистрСведений.Файлы.ФормаСписка   =============================================

&НаКлиенте
Процедура РасшифроватьФайлы(Команда)
    РасшифроватьФайлыНаСервере();
КонецПроцедуры


&НаСервере
Процедура РасшифроватьФайлыНаСервере()
    Строка = "C:\файлы\Звук1.wav";
    ДвоичныеДанные = Новый ДвоичныеДанные(Строка);
    Адрес = (ПоместитьВоВременноеХранилище(ДвоичныеДанные));
    ДвоичныеДанные = Справочники._ДемоРаботаСРечьюРаспознанныеФайлы.ОтправитьНаРаспознавание(Адрес);
КонецПроцедуры

////////////////////////////////////////////////////

Справочники._ДемоРаботаСРечьюРаспознанныеФайлы.МодульМенеджера =============================================

Функция ОтправитьНаРаспознавание(Адрес)
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    Возврат ДвоичныеДанные;  ///ДвоичныеДанные = Неопределено !!!
КонецФункции;
12 Полумудр
 
28.11.25
13:18
(8) Скомпоновал. На бред вроде не похоже .-.
13 Волшебник
 
28.11.25
13:20
Полный бред
14 Полумудр
 
28.11.25
13:22
(10) Спасибо большое!
Понял свою ошибку. Не хватало (,Новый УникальныйИдентификатор)

//ПоместитьВоВременноеХранилище(ДвоичныеДанные,Новый УникальныйИдентификатор)
ПоместитьВоВременноеХранилище(ДвоичныеДанные,Новый УникальныйИдентификатор)
15 DiMel_77
 
28.11.25
13:22
(11) Ну допустим, файл по этому пути лежит на сервере, допустим что вы забыли указать слово "Экспорт" в вашей функции "ОтправитьНаРаспознавание(Адрес)", но почему при помещении не используете второй параметр?

Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор);
16 Полумудр
 
28.11.25
13:22
(13) Псипки :3
17 Полумудр
 
28.11.25
13:23
(15) Спасибо))
18 Волшебник
 
28.11.25
13:39
Если файл уже на сервере, то временное хранилище не нужно.

&НаСервере
Процедура РасшифроватьФайлыНаСервере()
	Строка = "C:\файлы\Звук1.wav";
	ДвоичныеДанные = Новый ДвоичныеДанные(Строка);
	Результат = Справочники._ДемоРаботаСРечьюРаспознанныеФайлы.ОтправитьНаРаспознавание(ДвоичныеДанные );
КонецПроцедуры


////////////////////////////////////////////////////

Справочники._ДемоРаботаСРечьюРаспознанныеФайлы.МодульМенеджера =============================================

Функция ОтправитьНаРаспознавание(Данные) Экспорт
	// здесь распознавание
	//
	Возврат Результат;
КонецФункции;
19 Полумудр
 
28.11.25
13:44
(18) Истина.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший