Имя: Пароль:
1C
1С v8
Программное добавление прикрепленных файлов
0 SORTULV_1C
 
21.10.24
13:05
Доброго дня, товарищи! Подскажите, делаю программное присоединение файлов к справочнику, нужно исключить дублирование.

Файл = Новый Файл(ПутьКФайлу);
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.ИмяБезРасширения = Файл.ИмяБезРасширения;
ПараметрыФайла.РасширениеБезТочки = СтрЗаменить(Файл.Расширение,".",""); 
ПараметрыФайла.ВладелецФайлов = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(ОбъектXDTO.name);
СсылкаНаФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВХранилище);
Сообщить(СсылкаНаФайл);
1 SORTULV_1C
 
21.10.24
13:04
Подскажите, как можно исключить дублирование? Пройтись по всем файлам прикрепленным к Владельцу? Тогда как его поймать, этот дубль?
2 Волшебник
 
21.10.24
13:04
по ключу
3 SORTULV_1C
 
21.10.24
13:07
(2) А можно по подробнее?
4 Garykom
 
21.10.24
13:13
(0) ты про версии файлов в курсе?
РаботаСФайлами.ОбновитьФайл
5 maxab72
 
21.10.24
13:12
Может хеширование двоичных данных поможет?
6 Dzenn
 
21.10.24
13:16
(0) Специально для таких случаев предусмотрено такое понятие как контрольная сумма. Как считаю я:

Функция КонтрольнаяСумма(ДвоичныеДанные) Экспорт
	
	Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
	Хеширование.Добавить(ДвоичныеДанные);
	КонтрольнаяСумма = СтрЗаменить(Строка(Хеширование.ХешСумма), " ", "");
	Возврат КонтрольнаяСумма;
	
КонецФункции


если контрольные суммы равны, значит файлы идентичны
7 Garykom
 
21.10.24
13:17
Непонятно какая конфа (и версия БСП)
Непонятно чем не устраивает РаботаСФайламиВызовСервера.ЕстьФайлСТакимИменем
И т.д.
8 Garykom
 
21.10.24
13:20
(6) Например у заказчика по всем прикрепленным файлам запускается регламентное
Которое по условиям выполняет "конвертацию" и например добавляет "листы согласования" в конце
В этом случае от контрольной суммы проблема, надо в карточке файла нечто хранить для контроля
Чтобы более умно обрабатывать
9 SORTULV_1C
 
21.10.24
13:21
(7) Конфа - 1С:ERP Управление предприятием 2 (2.5.12.243), там нет РаботаСФайламиВызовСервера
10 Garykom
 
21.10.24
13:22
(9) ну посмотри что есть, я по ДО ответил
11 Garykom
 
21.10.24
13:41
Походу нет
Сделай примерно как тут
https://infostart.ru/1c/articles/2062725/

Только в запросе надо имя справочника подменять на нужное Справочник.[ИмяМетаданных]ПрисоединенныеФайлы по типу владельца
12 SORTULV_1C
 
21.10.24
13:32
Есть РаботаСФайламиСлужебныйВызовСервера
13 CepeLLlka
 
21.10.24
13:32
(0)Рассчитывай контрольную сумму и храни её где-нибудь, при загрузке проверяй.
14 SORTULV_1C
 
21.10.24
13:33
Все, понял, туплю...
15 Волшебник
 
21.10.24
14:07
(13) И это станет ключом
Закон Брукера: Даже маленькая практика стоит большой теории.