1с прикрепленные файлы где хранятся

Обновлено: 07.07.2024

Не подскажите, как можно реализовать :
Есть самописная конфигурация, 8.3 на упр формах, в ней есть справочник, к примеру "Организации".
Надо реализовать прикрепление к элементам его произвольное количество файлов ( текст, аудио . )

Правильно я понимаю, что можно сделать в справочнике табличную часть, добавить в нее реквизит "Файл" к примеру с типом "Хранилище значений" и дальше прописывать процедуры/кнопки загрузить, выгрузить . ?
Типового ничего нет ?

(3) а что мешает интегрировать? Умные люди изначально пишут нетленки на базе бсп.
в 1с есть процедуры и функции работы с файлами
типовое?типовое

нетиповая конфигурация, т.е. создали конфу для разработки, добавили в нее несколько справочников, пару документов, несколько отчетов по ним . Все.

а что такое бсп и как ее курить ? :)

база лежит кстати в 1сном облаке.

(8) да это я врубился уже что это - поставил - как-то там все муторно и много :( стар наверно я уже для такого )

(9) Почему бы и нет. Если не планируется дофига жирных файлов крепить и если не 100 человек в базе работает
БСП хороша тем,что это стандарт,то есть,предполагается,что любой программист знает,как оно работает,и если вашу конфигурацию будут поддерживать и дорабатывать посторонние программисты,то БСП для них будет знакома (если программист не с улицы),а если вы напишете свой алгоритм,то каким бы он прекрасным и удобным не был,с ним придется знакомится и программистам,и,самое главное,пользователям.
(11)Плюсую. Испольование БСП программистами 1С можно сравнить с использованием латыни в медицине.
Бсп в 7ке было набором экзотических и нетривиальных архитектурных решений. Бсп в 8ке это скорее неотъемлемая часть платформы с открытым кодом.
(0) Хранить файлы в ТЧ справочника очень плохая идея. Размер справочника существенно вырастет, каждое обращение к объекту илип к файлу будет блокировать параллельное обращение к объекту или к файлу. Хранить надо в отдельном справочнике. Если подразумевается только программное обращение к файлам, то можно сделать как в (9), если нужен интерфейс для работы пользователей, то лучше БСП.

(15) в моем случае например нужно к организации прикрепить не просто список файлов, а например отдельно список звонков - т.е. файл звонка, рядом кто звонил, сотрудник, комментарий, дата звонка . дальше следующий файл - с табличной частью показалось удобнее .

чем хранение в отдельном справочнике файла уменьшит объем базы ?

Насчет БСП - правильно я понимаю, ищу в ней в конфигураторе что мне подходит и через буфер обмена копирую в свою базу ?

(16) плюс в моем случае это будет не один список файлов со звонками, второй к примеру с договорами
и по этим спискам потом делать отдельные отчеты.
(16) если не ошибаюсь, можно выпилить нужную тебе подсистему через инструменты разработчика
(16)
не нужно ничего через буфер обмена
почитай про внедрение БСП и все

в типовых на БСП возможность крепления в два клика делаться изволит.

(16) Я не писал про объем базы, я писал про объем конкретного справочника. Справочник с реально относящимися к нему данными будет весить условно 1 гигабайт, а с прикрепленными файлами 20 гб. Зачем все это лишнее тащить туда-обратно при каждой инициализации объекта?

оххх,, что не так делаю :
поставил БСП, через первое внедрение БСП выгрузил xml файл с настройками

опытка получения неинициализированного значения параметра сеанса
где я накосячил ( чую везже :) ) .

- Запустим 1С и в окне "Список информационных баз" выберем «Добавить» :

- в открывшемся окне ставим переключатель на «Создание информационной базы без конфигурации…» :

- далее выбираем «Создание новой информационной базы» и нажимаем «Далее» :

- Указываем имя информационной базы, нажимаем «Далее» :

- Указываем папку, где будет храниться информационная база (желательно создать папку заранее), нажимаем «Далее» :

- В открывшемся окне нажимаем «Готово» :

Информационная база с указанным именем появится в списке.

2. Открытие конфигурации:

Выбираем данную базу и нажимаем «Конфигуратор» :

- в открывшемся окне для простоты можно нажать в левом верхнем углу кнопку «Открыть конфигурацию»:

3. Создание справочника «Файлы»:

Сразу оговоримся, что рассматриваемый пример упрощен и произвольный файл мы будем хранить в одном из реквизитов самого справочника.

Итак, справочник «Файлы» будет содержать два реквизита: Файл (для хранения двоичных данных), ИмяФайла (для хранения имени загруженного файла) и СсылкаНаВладельца (для привязки файла к нужному для нас документу).

- Создадим две подсистемы «Справочники» и «Документы»:

- Создадим новый справочник и назовем его «Файлы»:

- Перейдем на закладку «Подсистемы» и добавим данный справочник к подсистеме «Справочники»:

- Перейдем на закладку «Данные» и добавим новый реквизит, назовем его «Файл» и укажем Тип «ХранилищеЗначения»:

- Добавим еще один реквизит, назовем его «ИмяФайла» и укажем Тип «Строка», поставим галочку «Неограниченная длина»:

- Добавим еще один реквизит, назовем его «СсылкаНаВладельца» и укажем Тип «ДокументСсылка» :

- Переходим на закладку «Формы» и в поле Формы элемента нажимаем кнопку «Открыть» :

- В открывшемся окне можно ничего не менять и нажать кнопку «Готово» :

- Далее создадим Форму списка, в поле Формы списка нажимаем кнопку «Открыть» :

- В открывшемся окне теперь нажимаем «Далее»:

- Теперь указываем какие колонки должны отображаться в Форме списка, поставим галочку напротив «СсылкаНаВладельца» и нажимаем «Готово» :

- В открывшейся форме для красоты столбец «Код» переместим на верх (т.е.в начало таблицы):

Форма элемента справочника " Файлы" , помимо данных самого объекта, будет содержать два дополнительных реквизита: " Имя" и " СсылкаНаФайлВоВременномХранилище"

- В правой части под "Объектом" добавим реквизит и назовем его «Имя» и укажем Тип «Строка» :

- Добавим еще один реквизит, назовем его «СсылкаНаФайлВоВременномХранилище» и укажем Тип «Строка» :

Для загрузки файла с диска в информационную базу и для сохранения его на диск в форме элемента создадим две локальные команды: " ЗагрузитьСДиска" и " СохранитьНаДиск"

- Перейдем на вкладку «Команды» и создадим новую локальную команду « ЗагрузитьСДиска» :

- На вкладке «Команды» создадим еще одну локальную команду « СохранитьНаДиск» :

- На вкладке «Элементы» добавим группу «Обычная группа»:

- Теперь перетащим в созданную группу наши локальные команды:

- Установим горизонтальное положение кнопок на форме и снимем галочку «ОтображатьЗаголовок»:

- И для красоты создадим еще в этой группе «Декорацию-надпись»:

- Щелкаем правой мышкой на кнопке «Загрузить с диска» и выбираем «Действие команды»:

- оставляем «Создать на клиенте», нажимаем «ОК»:

- Повторяем ситуацию с кнопкой «Сохранить на диск», только теперь вставляем следующий код:

- В свойствах формы создаем следующие процедуры: "ПередЗаписьюНаСервере", "ПриЗаписиНаСервере" и "ПриОткрытии и подставляем код":

- теперь запускаем "Предприятие":

- Пытаемся создать элемент справочника, если выскакивает ошибка «Использование модальных окон в данном режиме запрещено!:

Сделаем не очень хорошую вещь:

В конфигураторе правой кнопкой мышки на назвони конфигурации щелкаем и выбираем «Свойства», где в самом низу в строке «Режим использования модальности» ставим «Использовать» и перезапускаем базу.

Теперь все должно заработать!

4. Создание Критерия отбор «СвязанныеДокументы»:

В дальнейшем данный критерий отбора нам понадобится, чтобы отобрать в табличную часть документа файлы, которые с ним связаны.

- Создадим новый критерий отбора и назовем его «СвязанныеДокументы»:

- Перейдем на закладку «Подсистемы» и добавим данный критерий отбора к подсистеме «Документы»:

- Перейдем на закладку «Данные» и установим Тип «ДокументСсылка» :

- Перейдем на закладку «Состав» и выберем реквизит справочника «Файлы» «СылкаНаВладельца» :

- Перейдем на закладку «Формы» и создадим Форму списка:

- В форму списка перетаскиваем реквизит Объекта «СсылкаНаименование» :

5. Создание документа «Продажи»:

Теперь создадим простенький документ с целью прикрепить к нему файлы.

- Создадим новый документ и назовем его «Продажи»:

- Перейдем на закладку «Подсистемы» и добавим данный документ к подсистеме «Документы»:

- Перейдем на закладку «Данные» и добавим данный какой-нибудь реквизит, к примеру, «Описание» с Типом «Строка» неограниченной длины и в многострочном режиме:

- На закладке «Данные» добавим табличную часть, назовем ее «СписокДокументов»:

- На закладке «Данные» в табличную часть добавим реквизит и именем «Файл» и Типом «СправочникСсылка.Файлы»:

- На закладке «Данные» в табличную часть добавим реквизит и именем «Документ» и Типом «ДокументСсылка»:

- Перейдем на закладку «Формы» и создадим форму списка:

- В открывшемся окне нажимаем кнопку «Далее» :

- В открывшемся окне выбираем реквизит «Ссылка» и нажимаем кнопку «Готово» :

- Перейдем на закладку «Формы» и создадим форму документа:

- В открывшемся окне нажимаем кнопку «Готово» :

- В открывшейся форме документа добавляем Группу «Обычная группа» и назовем ее «Документы»:

- И перетаскиваем в нее реквизиты так как показано на картинке ниже. Аналогично создаем еще одну такую группу с названием «Файлы» и перетаскиваем в нее «Список Документов»:

- На вкладке «Команды» создадим новую локальную команду с именем «ПолучитьСписок» и перетащим ее в папку Файлы:

- На появившейся кнопке на форме документа кликаем правой кнопкой мышки выбираем «Действие команды»:

- Создаем на клиенте:

- Добавляем следующий код:

- Также добавляем функцию:

- Переходим к справочнику «Файлы» на закладку «Ввод на основании», в верхней части кликаем на карандаш и выбираем Документ «Продажи» и нажимаем «ОК»:

- После этого кликаем «Конструктор ввода на основании»:

- В открывшейся форме напротив Поля «СсылкаНаВладельца» кликаем и выбираем вверху «Ссылка», потом жмем «ОК»:

- Теперь всё должно заработать!

В документе через «Создать на основании» прикрепляем файлы, а список получаем, переходя на страницу «Файлы» и нажав на кнопку «Получить список». После записи документа список сохраняется.

В общем отследил как он сохраняет файл, на примере ERP, справочник номенклатура. Файл можно достать так:

(39) для сериализации можно так сделать

Переменная ОбъектXDTO содержит структуру вашего xml файла с которой очень удобно работать. Далее обращаетесь к элементам XDTO читаете нужные данные

А получить куда? Справочник содержит адреса файлов во временном хранилище.
Обращайся по адресу к хранилищу значения и вытаскивай.

Вот простой пример сохранения файла из справочника.

В справочнике с есть реквизит с типом значения ХранилищеЗначений.
Вы его получаете и сохраняете. Только вам нужно знать какой тип сохранять!

(4)
(3)
Примерно попробовал ваши варианты, не очень понимаю как это сделать.
Через запросы получил значения и вышло следующее:

(5) у вас есть реквизит ФайлХранилище - в нем ваш файл

Хранилище = Выборка.Ссылка.ФайлХранилище.Получить();
Если Хранилище <> Неопределено Тогда
// далее все зависит от типа значений
Если ТипЗнч(Хранилище) = Тип("ДвоичныеДанные") Тогда
Хранилище.Записать(ПутьКФайлу)
Иначе
// другой метод записи в файл в зависимости от типа значения
Конецесли

Если ТипЗнч(Хранилище) = Тип("ДвоичныеДанные") Тогда
Хранилище.Записать(ПутьКФайлу)

Не определяет тип значения файла да и сам файл неопределен.

(8) То есть он возвращает тип НЕОПРЕДЕЛЕНО - следовательно в этом реквизите у вас нету ничего. Тогда если смотреть структуру Выборка.Ссылка есть еще один реквизит ТекстХранилища. Возможно его нужно попробывать

Когда сделаете Выборка.Ссылка.ТекстХранилища.Получить() - какой тип вернет?

(10) Так мы не правильно двигаемся,нужно понять где находится файл. Я думал в реквизите ФайлХранилище но вы говорите что у него тип возвращается не определено следовательно там пусто. Теперь давай те в отладке так же посмотрим на реквизит ВладелецФайла у него тип входящий электронный документ - скорее всего он там храниться. Для этого в отладке вставьте текст

Выборка.Ссылка.ВладелецФайла и вставьте скрин чтоб было видны реквизиты!

(12) блин, по ссылке нету ни чего. а давай те еще прин скрин табличных частей и там все станет ясно. Так не могу сообразить где файл храниться

(14) так давай те вернемся обратно. Вот этот этот код не работает (см ниже)

То есть когда Хранилище = Выборка.Ссылка.ФайлХранилище.Получить(); вы получаете тип значения Хранилище - НЕОПРЕДЕЛЕНО. Так ??

Бухгалтеры интересуются, как быть со сканами первички, банковскими выписками. Хочется их прикреплять в базу 1С «восьмерки», но база очень тяжелая выходит. Есть ли способы это оптимизировать?

«Чисто технический вопрос. Достали со встречками, сканер при виде меня пытается отползти в сторону. Хочу сканировать ТОРГ-12, с/ф, акты и прочее по мере поступления и прикреплять в базу. 1С Бухгалтерия 8.3. Кто так делает, база много весит, обновляется, архивируется намного дольше? Спасибо».

Вот что в комментариях пишут.

«Можно включить хранение на внешнем томе, а не внутри базы. Тогда объем существенно не вырастет. Но потребуется настройка резервного копирования того ресурса, на котором будете хранить сканы. Попросите админов».

Вот куда нужно нажимать для настройки на внешний том:

11с

А дальше вот сюда:

1с

Еще советуют на две почты документы получать — одна для первичек, одна для банковских выписок.

«А я по старинке, когда-то завела две почты: одну для выписок банка, вторую для первичек. Внутри почты папки по контрагентам. Все автоматически отправляется на почту, а внутри раз в квартал раскидываем по нужным папкам».

Вот еще решение предлагают:

«Мы сканируем все приходы и все реализации, сделали доработку для выгрузки файлов за период по контрагенту в определенную папку. За два года загрузки около 6 Гб данных, торговая компания с активной деятельностью. Очень помогает».

Кто-то еще предлагает с настройками сканера немного поиграть:

«В настройках сканера ставите PDF 200 dpi в цвете. Вес будет 50-150 kbs 8ка сама по себе „жирная“, если на хорошем компе, то не тормозит. Размер файла зависит от опыта того, кто сканировал. Видел сф по 5 мб🤦&zwj;♂️».

Еще советуют сервер поменять на более быстрый.

«У меня летом начали висеть тяжелые базы, уговорила админов сервер поменять. Теперь даже самые большие базы все делают быстро».

Правда, тут автор пишет, что директор этого делать не будет. Как и админа оплачивать, а своего нет.

Читайте также: