Ошибка при добавлении присоединенного файла 1с

Здравствуйте. В данной заметке я хочу рассказать как организовать работу с прикрепленными файлами для нового объекта в конфигурациях 1С, которые содержат библиотеку стандартных подсистем (БСП). Зад…

Здравствуйте.

В данной заметке я хочу рассказать как организовать работу с прикрепленными файлами для нового объекта в конфигурациях 1С, которые содержат библиотеку стандартных подсистем (БСП).

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

Решение данной задачи будем осуществлять на конфигурации «1С: Управление торговлей 11.2», но все действия можно применять и к другим конфигурациям, содержащим БСП (ЗУП 3, БУ 3, ERP 2 и т.д.).

1. Чтобы добавить новый документ необходимо включить возможность редактирования нашей конфигурации.

Снять с поддержки конфигурацию

Редактирование с сохранением поддержки

2. Добавим новый документ с произвольной структурой

Новый документ

3. Добавим копированием новый справочник «БСП_НовыйДокументПрисоединенныеФайлы» и в реквизите «ВладелецФайла» изменим тип на «ДокументСсылка.БСП_НовыйДокумент». Для копирования был выбран справочник «ЗаказКлиентаПрисоединенныеФайлы».

Новый справочник присоединенных файлов

Также не забываем изменить описание и представление объекта.

4. Добавляем в определяемые типы «ВладелецПрисоединенныхФайлов», «ПрисоединенныйФайл», «ПрисоединенныйФайлОбъект» новые объекты.

ПрисоединенныйФайлОбъект

ПрисоединенныйФайлОбъект НовыйТип

ПрисоединенныйФайл

ПрисоединенныйФайл НовыйТип

ВладелецПрисоединенныхФайлов

ВладелецПрисоединенныхФайлов НовыйТип

5. Если необходимо добавить возможность копирования присоединенных файлов при копировании документа, то необходимо в параметры формы документа добавить параметр «ЗначениеКопирования» и сделать его ключевым.

Копирование присоединенных файлов

В модуль формы добавить процедуру «ПриЗаписиНаСервере».

 
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	ПрисоединенныеФайлы.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры);
КонецПроцедуры

6. Для отображения в форме списка наличия прикрепленных файлов необходимо доработать форму списка.

Изменим текст запроса списка

 
ВЫБРАТЬ
	ДокументБСП_НовыйДокумент.Ссылка,
	ДокументБСП_НовыйДокумент.ПометкаУдаления,
	ДокументБСП_НовыйДокумент.Номер,
	ДокументБСП_НовыйДокумент.Дата,
	ДокументБСП_НовыйДокумент.Проведен,
	ДокументБСП_НовыйДокумент.Реквизит1,
	ДокументБСП_НовыйДокумент.Реквизит2,
	ДокументБСП_НовыйДокумент.МоментВремени,
	ВЫБОР
		КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы ЕСТЬ NULL 
			ТОГДА 1
		КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы
			ТОГДА 0
		ИНАЧЕ 1
	КОНЕЦ КАК ЕстьФайлы
ИЗ
	Документ.БСП_НовыйДокумент КАК ДокументБСП_НовыйДокумент
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеПрисоединенныхФайлов КАК НаличиеПрисоединенныхФайлов
		ПО ДокументБСП_НовыйДокумент.Ссылка = НаличиеПрисоединенныхФайлов.ОбъектСФайлами

В форму списка добавим колонку «ЕстьФайлы» и изменим настройки отображения.

Наличие прикрепленных файлов

7. Тестирование.

Запускаем режим «1С:Предприятие» и с помощью обработки из набора внешних обработок библиотеки стандартных подсистем «ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf» обновляем наши новые данные.

Обновление вспомогательных данных

Список документов
Список документов с прикрепленными файлами

Форма документа
Кнопка "Файлы"

Прикрепленный файл
Прикрепленный файл документа

Популярность: 27%

Запись опубликована в рубрике Настройка и оптимизация с метками БСП. Добавьте в закладки постоянную ссылку.

Присоединенные файлы к собственному справочнику

Я
   Sayan_mi

16.06.20 — 09:44

Есть ЕРП 2.4.10.94 на платформе 8.3.16.1063.

ЕРП Дописанная есть там например 2 справочника СметыЗаказчикови СметыЗаказчиковПрисоединенныеФайлы работа с присоединенными файлами организована аналогично со справочником Номенклатура, но в справочник номенклатура картинка грузится, а в справочник СметыЗаказчиков нет. В чем может бытьпроблема и как связываются меж собой справочники с присоединенными имеется в виду что картинка добавляется именно в нужный справочник. Структура справочника СметыЗаказчиковПрисоединенныеФайлы аналогична справочнику НоменклатураПрисоединенныеФайлы

   Галахад

1 — 16.06.20 — 09:48

Наверное, программировать нужно…

   2S

2 — 16.06.20 — 09:49

(0) там не только лишь справочники надо создать

   Волшебник

Модератор

3 — 16.06.20 — 09:49

Нужно поставить точку останова в модуле формы элементы справочника СметыЗаказчиков на ту строчку, где загружается картинка и посмотреть.

   Sayan_mi

4 — 16.06.20 — 09:57

(2) А по подробнее?

(3) С точкой остановки проблема, на каком то этапе на неё перестаёт выходить.

Вот полное описание возникающей ошибки:

В общем модуле РаботаСФайлами на точке останова не останавливается. Остальное отследил, вроде все корректно.

Ошибка при добавлении присоединенного файла «План_1_этаж.jpg»:

Запись не верна! Значение поля «Файл» не может быть пустым!: ДвоичныеДанныеФайлов:  (Регистр сведений: Двоичные данные файлов)

{ОбщийМодуль.РаботаСФайлами.Модуль(723)}:            ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

{ОбщийМодуль.РаботаСФайламиСлужебныйВызовСервера.Модуль(28)}:    Возврат РаботаСФайлами.ДобавитьФайл(

{ОбщийМодуль.РаботаСФайламиСлужебныйКлиент.Модуль(1568)}:        ПрисоединенныйФайл = РаботаСФайламиСлужебныйВызовСервера.ДобавитьФайл(

{ОбщийМодуль.РаботаСФайламиСлужебныйКлиент.Модуль(272)}:            ПоместитьВыбранныеФайлыВХранилище(

{ОбщийМодуль.ФайловаяСистемаСлужебныйКлиент.Модуль(1104)}:    ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, РасширениеПодключено);

{ОбщийМодуль.ФайловаяСистемаКлиент.Модуль(701)}:    ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершение, «ПодключениеНеТребуется»);

{ОбщийМодуль.РаботаСФайламиСлужебныйКлиент.Модуль(527)}:        ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(ОписаниеОповещения);

{ОбщийМодуль.РаботаСФайламиКлиент.Модуль(87)}:    РаботаСФайламиСлужебныйКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(ОписаниеОповещения);

{ОбщийМодуль.ПрисоединенныеФайлыКлиент.Модуль(55)}:    РаботаСФайламиКлиент.ДобавитьФайлы(ВладелецФайла, ИдентификаторФормы, Фильтр);

{Справочник.табСметыЗаказчиков.Форма.ФормаЭлементаДинамическая.Форма(1613)}:        ПрисоединенныеФайлыКлиент.ДобавитьФайлы(Объект.Ссылка, ИдентификаторФайла, НоменклатураКлиент.ФильтрФайловИзображений());

{Справочник.табСметыЗаказчиков.Форма.ФормаЭлементаДинамическая.Форма(3325)}:    ДобавитьИзображениеНаКлиенте(«ДанныеФайлаКартинки3»);

   yzimin

5 — 16.06.20 — 10:00

В БСП хорошее описание как это сделать. В двух-словах: создать новый справочник, добавить владельца в определяемый тип

   2S

6 — 16.06.20 — 10:03

(4) гугли, инфы море

   Волшебник

Модератор

7 — 16.06.20 — 10:05

(4) У вас ошибка при добавлении присоединенного файла, а не ошибка вывода картинки на форму.

   Fish

8 — 16.06.20 — 10:29

(4) В определяемые типы свой справочник добавил?

  

Sayan_mi

9 — 16.06.20 — 10:33

(5)(8) Писал не я, надеялся что в определяемые типы справочники добавил, также как и в подписку. Оказалось нет. Из за этого и вылетало. Сейчас всё работает. Спасибо.

Ошибка? Это не ошибка, это системная функция.

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

  1. Добрый день! УТ 11.1.10
    Пытаюсь реализовать присоединение фотографий к документу.
    Содрал все из Справочник.Номенклатура формы и процедуры ,в общем все 1 в 1
    Но при добавлении фотки к документу вылетает ошибка

    {ОбщийМодуль.ПрисоединенныеФайлыСлужебный.Модуль(1449)}: Ошибка при добавлении присоединенного файла.
    У владельца файлов "Документ cервиса 00СЦ-0770 от 24.02.2016 11:31:50" типа "Документ cервиса"
    не указан основной справочник для хранения файлов.
    
    В этом случае параметр "НоваяСсылкаНаФайл" должен быть указан.
        ВызватьИсключение СокрЛП(ТекстОшибки);
    

    Вроде бы все делал как у справочника номенклатура но не могу понять где искать этот НоваяСсылкаНаФайл

    Вот из общего модуля процедура

    // Возвращает имя справочника для указанного владельца или вызывает исключение,
    // если их более одного.
    //
    // Параметры:
    //  ВладелецФайлов  - Ссылка - объект, к которому добавляется файл.
    //  ИмяСправочника  - Строка, если заполнено, то выполняется проверка
    //                    наличия справочника среди справочников владельца для хранения файлов.
    //                    Если не заполнено, возвращает имя основного справочника.
    //  ЗаголовокОшибки - Строка - заголовок ошибки.
    //                  - Неопределено - не вызывать исключение, а вернуть пустую строку.
    //  ИмяПараметра    - Строка - имя требуемого параметра для определения имени справочника.
    //  ОкончаниеОшибки - Строка - окончание ошибки (только для случая, когда ИмяПараметра = Неопределено).
    //
    Функция ИмяСправочникаХраненияФайлов(ВладелецФайлов, ИмяСправочника = "",
        ЗаголовокОшибки = Неопределено, ОкончаниеОшибки = Неопределено) Экспорт
       
        НеВызыватьИсключение = (ЗаголовокОшибки = Неопределено);
        ИменаСправочников = ИменаСправочниковХраненияФайлов(ВладелецФайлов, НеВызыватьИсключение);
       
        Если ИменаСправочников.Количество() = 0 Тогда
            Если НеВызыватьИсключение Тогда
                Возврат "";
            КонецЕсли;
           
            ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                ЗаголовокОшибки + Символы.ПС +
                НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                           |нет справочников для хранения файлов.'"),
                Строка(ВладелецФайлов),
                Строка(ТипЗнч(ВладелецФайлов)));
        КонецЕсли;
       
        Если ЗначениеЗаполнено(ИмяСправочника) Тогда
            Если ИменаСправочников[ИмяСправочника] <> Неопределено Тогда
                Возврат ИмяСправочника;
            КонецЕсли;
       
            Если НеВызыватьИсключение Тогда
                Возврат "";
            КонецЕсли;
           
            ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                ЗаголовокОшибки + Символы.ПС +
                НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                           |нет справочника ""%3"" для хранения файлов.'"),
                Строка(ВладелецФайлов),
                Строка(ТипЗнч(ВладелецФайлов)),
                Строка(ИмяСправочника));
        КонецЕсли;
       
        ОсновнойСправочник = "";
        Для каждого КлючИЗначение Из ИменаСправочников Цикл
            Если КлючИЗначение.Значение = Истина Тогда
                ОсновнойСправочник = КлючИЗначение.Ключ;
                Прервать;
            КонецЕсли;
        КонецЦикла;
       
        Если ЗначениеЗаполнено(ОсновнойСправочник) Тогда
            Возврат ОсновнойСправочник;
        КонецЕсли;
           
        Если НеВызыватьИсключение Тогда
            Возврат "";
        КонецЕсли;
       
        ШаблонПричиныОшибки =
            НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                |не указан основной справочник для хранения файлов.'") + Символы.ПС;
               
        ПричинаОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            ШаблонПричиныОшибки, Строка(ВладелецФайлов), Строка(ТипЗнч(ВладелецФайлов)));
           
        ТекстОшибки = ЗаголовокОшибки + Символы.ПС
            + ПричинаОшибки + Символы.ПС
            + ОкончаниеОшибки;
           
        ВызватьИсключение СокрЛП(ТекстОшибки);
       
    КонецФункции
    

  2. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    На ИТС почитайте статьи по БСП, как и что нужно, а самое главное где, нужно прописать код, чтобы не изобретать велосипед:)

  3. Да вот нет доступа к ИТС :(
    Может ткнете на что то похожее?
    Поиском все излазил ну нет нигде НоваяСсылкаНаФайл где указать этот параметр..


  4. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Скорее всего у какого-нибудь справочника нужно установить еще один тип документа, которому разрешено присоединять файлы. Плюс еще, возможно, в подписках на событиях возможно тоже нужно проставить. Это все на коленке написано:)

  5. Вот если я делаю так
    Общую команда «ПрисоединенныеФайлы», в свойств «Тип параметра команды» указываю нужный объект (например, «РеализацияТоваров»).
    Справочник «Файлы». Указываю нужный объект в типе реквизита «ВладелецФайла».
    То все нормально присоединяется, если же по аналогии со справочником Номенклатура то хрен там два -Arghh-


  6. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Потому что нужно почитать про внедрение подсистемы хранения файлов на ИТС :)

  7. Вот как бы в конфигурации нашел описание
    Но как ее передать что то не допераю…


  8. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Ну зайдите в этот справочник — хранения файлов владельца, посмотрите какие реквизиты, какие типы используются. Без документации — скуритесь что-то внедрять :)


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Понравилась статья? Поделить с друзьями:
  • Ошибка при выполнении операции установка vipnet csp windows 10
  • Ошибка при выполнении операции со страницей торрент
  • Ошибка при добавлении номера телефона battle net
  • Ошибка при выполнении операции со страницей write to disk
  • Ошибка при добавлении аккаунта google