|
Проблема с созданием записей в регистре сведений. | ☑ | ||
---|---|---|---|---|
0
НачинающийВ1С
30.04.19
✎
15:56
|
Добрый день.
Документооборот 2.1.11.5 Столкнулся с проблемой. Я вытаскиваю данные из другой системы через одату. К каждому элементу справочника (ссылку на который я в процедуру передаю) могут быть прикреплены файлы. До вызова этой процедуры я выясняю есть ли эти файлы (если есть, то получаю их расширение, наименование, дату) и в эту процедуру уже передаю готовый json, содержащий base64data. Процедура находит строковое представление файла, создает файл (справочник файлы), создает версию (справочник версиифайлов) и запись в регистре сведений (именно там в документообороте хранятся файлы, как я понял). Если файл к документу прикреплен один, то все работает как надо. А вот если файлов несколько, то в регистре сведений по итогу со ссылкой на наш элемент справочника только одна запись почему-то. Интерактивно файлы я вижу, но открывается только последний, а при попытке открыть другие появляется сообщение "Неправильный путь к файлу '/e1cib/data/РегистрСведений.ХранимыеФайлыВерсий.ХранимыйФайл?ВерсияФайла=8daa001e673baedb11e96b4707264ccd'". При этом если менять порядок в источнике, то всегда открывается корректно именно последний документ, хотя если ставить точки останова, мы при каждом документе этот код проходим. Возможно кто-то сможет подсказать, что я делаю не так в коде? &НаСервере Процедура СозданиеФайловВБазеДанных(Ответ, Ссылка, Расширение, ПолноеНаименование, ДатаСоздания) ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(Ответ); ТекущееСвойство = ""; ЕстьПрикрепленныеФайлы = Ложь; Пока ЧтениеJSON.Прочитать() Цикл ТипJSON = ЧтениеJSON.ТипТекущегоЗначения; Если ТипJSON = ТипЗначенияJSON.Строка и ТекущееСвойство = "ХранимыйФайл_Base64Data" тогда НовыйФайл = Справочники.Файлы.СоздатьЭлемент(); НовыйФайл.ВладелецФайла = Ссылка; НовыйФайл.ПолноеНаименование = ПолноеНаименование; двоичныеДанные = Base64Значение(ЧтениеJSON.ТекущееЗначение); Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); НовыйФайл.ДатаСоздания = ДатаСоздания; НовыйФайл.ТекущаяВерсияРасширение = Расширение; НовыйФайл.Записать(); НоваяВерсия = Справочники.ВерсииФайлов.СоздатьЭлемент(); НоваяВерсия.Владелец = НовыйФайл.Ссылка; НоваяВерсия.Расширение = НовыйФайл.ТекущаяВерсияРасширение; НоваяВерсия.ДатаСоздания = НовыйФайл.ДатаСоздания; НоваяВерсия.ПолноеНаименование = НовыйФайл.Наименование; НоваяВерсия.Наименование = НовыйФайл.ПолноеНаименование; НоваяВерсия.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе; НоваяВерсия.НомерВерсии = 1; НоваяВерсия.Автор = Пользователи.ТекущийПользователь(); НоваяВерсия.ДатаСоздания = ДатаСоздания; НоваяВерсия.Размер = двоичныеДанные.Размер(); НоваяВерсия.Записать(); СсылкаНаОб = НовыйФайл.Ссылка; ФайлОБ = СсылкаНаОб.ПолучитьОбъект(); файлОб.ТекущаяВерсия = НоваяВерсия.Ссылка; ФайлОб.Записать(); ХранимыеФайлыВерсий = РегистрыСведений.ХранимыеФайлыВерсий; НаборЗаписей = ХранимыеФайлыВерсий.СоздатьНаборЗаписей(); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.ВерсияФайла = НоваяВерсия.Ссылка; НоваяЗапись.ХранимыйФайл = ХРАНИЛИЩЕ; НаборЗаписей.Записать(); КонецЕсли; Если ТипJSON = ТипЗначенияJSON.ИмяСвойства тогда ТекущееСвойство = ЧтениеJSON.ТекущееЗначение; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
Mort
30.04.19
✎
16:05
|
Ну так набор надо записывать с параметром (ложь) если хочешь без удаления предыдущих.
|
|||
2
НачинающийВ1С
30.04.19
✎
16:08
|
(1) Спасибо большое. Все заработало как нужно.
|
|||
3
ptiz
30.04.19
✎
16:27
|
(2) Всегда устанавливай отбор:
НаборЗаписей.Отбор.ВерсияФайла.Установить(НоваяВерсия.Ссылка); И никогда не записывай Набор без отбора, иначе затрешь весь регистр в один прекрасный момент. |
|||
4
НачинающийВ1С
30.04.19
✎
16:53
|
(3) Ок, спасибо за совет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |