Прикрепление внешних файлов к документам и справочникам 1С 8.3 (управляемые формы)

Публикация № 408860

Разработка - Практика программирования

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

В данной статье мы рассмотрим, как просто и быстро в любую конфигурацию на базе управляемых форм добавить функционал прикрепления внешних файлов к документам и справочникам.
Я начну описание с нуля, т.е. с создания пустой конфигурации. Так что даже  любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации.
Если Вам не хочется разбираться с ниже написанной инструкцией, можете скачать файл*.doc с описанием и скриншотами, либо уже саму готовую конфигурацию.

1. Создание информационной базы:

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

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

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

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

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

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

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

- Вставляем код:

 

&НаКлиенте
Процедура ЗагрузитьСДиска(Команда)      
АдресВХранилище = "";
ВыбранноеИмяФайла = "";
Если ПоместитьФайл(АдресВХранилище, , ВыбранноеИмяФайла, , УникальныйИдентификатор) Тогда
Файл = Новый Файл(ВыбранноеИмяФайла);
Имя = Файл.Имя;
СсылкаНаФайлВоВременномХранилище = АдресВХранилище;
Объект.Наименование = Файл.Имя;
Модифицированность = Истина; 
Объект.ИмяФайла = Имя;
КонецЕсли;                
КонецПроцедуры

 

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

 

&НаКлиенте
Процедура СохранитьНаДиск(Команда)
Если Объект.ИмяФайла = "" Тогда
Предупреждение("У поставщика нет сохраненного в базе договора");
Иначе
СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Файл");
ПолучитьФайл(СсылкаНаФайлВИБ, Объект.ИмяФайла);
КонецЕсли;        
КонецПроцедуры

 

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

  

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)       
// Получить файл из хранилища и поместить его в объект.
Если ЭтоАдресВременногоХранилища(СсылкаНаФайлВоВременномХранилище) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(СсылкаНаФайлВоВременномХранилище);
ТекущийОбъект.Файл = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
//ТекущийОбъект.ИмяФайла = ИмяФайлаКонтрагента;
ТекущийОбъект.ИмяФайла = Имя;       
КонецЕсли;       
КонецПроцедуры
 
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Удалить файл из временного хранилища
Если ЭтоАдресВременногоХранилища(СсылкаНаФайлВоВременномХранилище) Тогда
УдалитьИзВременногоХранилища(СсылкаНаФайлВоВременномХранилище);
КонецЕсли;
КонецПроцедуры
 
&НаКлиенте
Процедура ПриОткрытии(Отказ)      
Имя = Объект.ИмяФайла;          
КонецПроцедуры

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- Добавляем новую Группу «Страницы» и перетаскиваем в нее группы «Документы» и «Файлы»:

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

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

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

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

 

&НаКлиенте
Процедура ПолучитьСписок(Команда)               
ЭтаФорма.Объект.СписокДокументов.Очистить();      
МасивДокументов = ПолучитьСписокПодчиненныхДокументов(Объект.Ссылка);
Для Каждого Строка Из МасивДокументов Цикл
                   НоваяСтрока = Объект.СписокДокументов.Добавить();
                   НоваяСтрока.Файл = Строка.Файл;
                   НоваяСтрока.Документ = Строка.Документ;
КонецЦикла;     
КонецПроцедуры

 

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

 

&НаСервере
Функция ПолучитьСписокПодчиненныхДокументов(ДокументОснование)      
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |        СтруктураПодчиненности.Ссылка.Ссылка КАК Файл,
                   |        СтруктураПодчиненности.Ссылка.СсылкаНаВладельца КАК Документ
                   |ИЗ
                   |        КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности"; 
    Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ДокументОснование);
         ТЗ = Запрос.Выполнить().Выгрузить();      
         Массив = Новый Массив();
         СтруктураСтрокой = "";
         НужнаЗапятая = Ложь;
         Для Каждого Колонка Из ТЗ.Колонки Цикл
                   Если НужнаЗапятая Тогда
                            СтруктураСтрокой = СтруктураСтрокой + ",";
                   КонецЕсли;
                   СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
                   НужнаЗапятая = Истина;
         КонецЦикла;
         Для Каждого Строка Из ТЗ Цикл
                   НоваяСтрока = Новый Структура(СтруктураСтрокой);
                   ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
                   Массив.Добавить(НоваяСтрока);
         КонецЦикла;      
         Возврат Массив;
КонецФункции


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

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

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

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

 

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

- Все файлы записываются в справочник «Файлы»

Скачать файлы

Наименование Файл Версия Размер
Конфигурация

.cf 25,64Kb
97
.cf 25,64Kb 97 Скачать
Статья "Прикрепление файлов" (со скриншетами)

.docx 3,12Mb
50
.docx 3,12Mb 50 Скачать

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TODD22 18 15.10.15 18:57 Сейчас в теме
Так что даже любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации.

Хранение произвольных данных в конфигурации(сканов, фотографий, документов и тд) не самый хороший вариант.

Я бы сказал что даже очень не хороший. Прихожу как то в одну компанию. А они говорят у нас база тормозит.
Смотрю базу размер 76 Гб. База на SQL сервере. Какой то талантливый парень дописал хранение документов в реквизит объекта.
Начинаю разбираться... в итоге вес учётных данных в базе 1.5 Гб. А всё остальное натолкали пользователи, сканов, фотографий и тд . Пришлось выносить во внешнее хранилище....
Вес некоторых фотографий доходил до 7 Мб. Натолкают 10-15 фотографий в базу... а потом у них тормозит всё....
SagittariusA; Deslime; freeek; ашот; leonidol; blast5; user797918; user778376; sivatorov; Lena272; omenfarsh; zqzq; +12 Ответить
2. omenfarsh 139 16.10.15 12:59 Сейчас в теме
(1) TODD22, согласен с вами полностью! Но я столкнулся с другой ситуацией, когда надо было написать конфигурацию для учета заявок и к каждой заявке прикреплять несколько документов (решения, отчет по выполнению и т.д.). При этом базу часто переносят с компьютера на компьютер и прикрепленные файлы могут просто остаться в другом месте. Т.к. конфа была самописная и весила менее 10Мб, то мое решение оказалось вполне уместным.
10. sermalp 28.10.15 18:01 Сейчас в теме
(1) TODD22, можете сказать оптимальное, на ваш взгляд, решение задачи - хранение файлов в локальном каталоге; и как их потом отдавать (скачать) пользователю при клике по гиперссылке, например?
3. 91197ch 28 16.10.15 15:15 Сейчас в теме
А мы в этих же управляемых формах сделали так: есть закладка "Файлы" в нее добавляешь файл, а он передает этот файл в секретный каталог на сервере и сохраняет внутри программы путь к этому файлу. В итоге в Базе хранятся лишь ссылка на файлы. Сами файлы в каталоге на сервере, который архивируется каждый день. И база не растет и ограничений на файлы нет. Есть правда пока нюанс. Работает только внутри сети. Если кто-то заходит через Web сервер то доступ к файлам не дается.
9. sermalp 28.10.15 17:54 Сейчас в теме
(3) 91197ch, А есть ли доступ к секретному каталогу для пользователя от которого агент 1С работает?
4. Franco 78 16.10.15 15:17 Сейчас в теме
1.Скриншот через «о». Но это так, к слову
2.Хорошо было бы не привязывать 1 одному дркументу или справочнику владельцу. Сделать регистр сведений, измерения: «Ссылка на владельца» и «Ссылка на файл».
Тогда можно 1 хранимый файл привязывать к нескольким. Это кажется лишним? Ничего подобного - у меня уже такая необходимость случилась.
Тогда при добавлении справочника, допустим, «Номенклатура» его тип можно добавить в тип измерения.
3.Да, программа будет жутко торможить при считывании об'екта. Но при указании ссылки на справочник файлов или при испролльзовании связывающего регистра - никак. У меня ещё и не такие монстры в наследство достались...
4.И всё же файлы лучше хранить на диске - в справочнике файлы указывать ссылку на местоположение на сетевом диске. (у этого местоположения доступ пользователя, от которого запущен сервер 1С и недоступность пользователей). И - самое интересное - файлы легко архивировать
5.А вот шаблоны, бланки договоров и прочее «редкое и маломеняемое» - это да, самые что ни на есть хранимые файлы
6.Адрес временного хранилища в реквизите хранить не имеет смысла. Файл во временном хранилище живёт пока открыта форма, где он загружен.
5. Franco 78 16.10.15 15:21 Сейчас в теме
Забыл
Откажитесь от «ПолучитьФайлы» и «ПоместитьФайлы» в пользу «НачатьПолучениеФайлов» и «НачатьПомещениеФайлов». Рефакторинг в конфигурации в помощь.
SagittariusA; metal59; user778376; +3 Ответить
6. omenfarsh 139 17.10.15 09:26 Сейчас в теме
Спасибо всем за комментарии! Буду улучшать свой "шаблон" дальше и по возможности им поделюсь!
user778376; +1 Ответить
7. TODD22 18 18.10.15 10:47 Сейчас в теме
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Удалить файл из временного хранилища
Если ЭтоАдресВременногоХранилища(СсылкаНаФайлВоВременномХранилище) Тогда
УдалитьИзВременногоХранилища(СсылкаНаФайлВоВременномХранилище);
КонецЕсли;
КонецПроцедуры
 

Мне кажется вот эта часть кода не нужна. Если временное хранилище привязано к форме то после закрытия формы оно будет очищено автоматически.
И принудительно при записи объекта его большого смысла очищать нет.
8. wunderland 201 21.10.15 09:31 Сейчас в теме
Все равно коллега - молодец. Сделал, оформил, выложил... Понятно и доступно. А набор напильников у каждого свой :)
metal59; wattot; user933004; +3 Ответить
11. MeatCrash 24.02.16 09:52 Сейчас в теме
А нет ли у Вас случайно такого же примера, в котором ссылки на файлы были помещены в табличную часть документа? И где их можно было выбирать и видеть куда эти ссылки указывают (с указанием пути до файла и его имени)?
12. HamitovaRaisa 18.05.16 08:26 Сейчас в теме
Спасибо за подробную раскладку, а то зависла я с добавлением файла в управляемой форме уже продолжительное время. Попробую реализовать по этому алгоритму. А вместо справочника регистр сведений можно использовать?
13. omenfarsh 139 18.05.16 11:46 Сейчас в теме
(12) HamitovaRaisa, справочник с файлами не обязательно делать доступным для клиента, можно лишь оставить переход по ссылкам из формы документа или справочника. С Регистрами, если честно, не пробывал, но как минимум в Измерения нельзя добавить ХранилищеЗначения.
14. AnryMc 789 07.07.16 09:44 Сейчас в теме
Итак, справочник «Файлы» будет содержать два реквизита: Файл (для хранения двоичных данных), ИмяФайла (для хранения имени загруженного файла) и СсылкаНаВладельца (для привязки файла к нужному для нас документу).


Файл + ИмяФайла + СсылкаНаВладельца <> 2 реквизита
15. user613332_victor241 09.01.17 13:14 Сейчас в теме
Добрый день, сделал все по примеру, при попытке получить файлы ошибка

{Документ.ТестФайлы.Форма.ФормаДокумента.Форма(22)}: Ошибка при вызове метода контекста (Выполнить)
ТЗ = Запрос.Выполнить().Выгрузить();
по причине:
{(5, 9)}: Таблица не найдена "КритерийОтбора.СвязанныеДокументы"
<<?>>КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности
16. user613332_victor241 09.01.17 16:27 Сейчас в теме
Приношу свои извинения, разобрался в чем дело))
17. omenfarsh 139 09.01.17 19:23 Сейчас в теме
18. Rebelwek 23.01.17 16:20 Сейчас в теме
Отличный пример! Все получилось
19. esqado 09.06.17 14:23 Сейчас в теме
И перетаскиваем в нее реквизиты так как показано на картинке ниже.

Видимо что-то сломалось.
20. user778376 24.06.17 17:19 Сейчас в теме
На шаге "5" - И перетаскиваем в нее реквизиты так как показано на картинке ниже. Аналогично создаем еще одну такую группу с названием «Файлы» и перетаскиваем в нее «Список Документов»
Картинки нет ; ) И тут чтот не понятно.
21. user797081 18.07.17 14:20 Сейчас в теме
Со скринами что то нет то, не показываются
22. deutsch2008 144 10.10.17 16:21 Сейчас в теме
на веб клиенте работает?
23. omenfarsh 139 15.10.17 09:49 Сейчас в теме
(22)День добрый.
К сожалению, ответить на данный вопрос не могу, т.к. сменил сферу деятельности и проверить нет возможности.
24. OksanaSub 53 27.11.17 15:26 Сейчас в теме
Вот я тоже хотела хранить прикрепленные файлы на диске, но база в облаке, сервер чужой. Пришлось хранить в базе, но с ограничение по размеру файла. И думаю скоро придется сжимать справочник Файлов.
25. TyuminIS 24.10.18 15:42 Сейчас в теме
Хорошая статья, только, на мой взгляд, лучше хранить в регистре сведеней, тогда при удалении объекта (документа например) автоматически будут удаляться и файлы...
26. niktory 07.02.19 23:21 Сейчас в теме
Спасибо большое, очень помогли.
27. Jokemas 161 12.03.19 17:03 Сейчас в теме
Модальность на УФ? Зачем? Создайте справочник, киньте в него нужные реквизиты: Имя файла - имя файла с расширением, Наименование - без расширения, объект - составной тип, сюда пихаем все документы, которые будут записывать файл, ну и хранилище - хранилище значения.

В форме самого документа создаем команду, пишем код.

Подобный пример разбирал Павел Чистов. Это кусок из моей конфигурации.

&НаКлиенте
Процедура ПриложитьФайл(Команда)
	ПриложениеФайлаОповещение(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ПриложениеФайлаОповещение(ЭтотОбъект)
	
	Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);	
	НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	
	//Если пользователь отказался от выбора файла, то закрываем форму
	Если Не Результат Тогда
		Возврат;
	КонецЕсли;
	
	ЗаписатьВложениеНаСервере(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры);
		
КонецПроцедуры

&НаСервере
Процедура ЗаписатьВложениеНаСервере(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры)
	
	ВыбранныйФайл = Новый Файл(ВыбранноеИмяФайла);
	
	НовыйФайл = Справочники.ХранилищеФайлов.СоздатьЭлемент();
	НовыйФайл.Наименование = ВыбранныйФайл.ИмяБезРасширения;
	НовыйФайл.ИмяФайла = ВыбранныйФайл.Имя;
	НовыйФайл.Объект = Объект.Ссылка;
	
	//Записываем данные файла из временного хранилища в реквизит формы справочника.
	Если ЭтоАдресВременногоХранилища(Адрес) Тогда
		НовыйФайл.Хранилище = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Адрес));
	КонецЕсли;
	
	НовыйФайл.Записать();
	
КонецПроцедуры
Показать
Светлый ум; +1 Ответить
28. Светлый ум 269 15.04.20 10:50 Сейчас в теме
+1 пригодилось, накатил на свою 1пальцевую конфигу и прикрутил к справочнику.
29. metal59 13.10.20 15:30 Сейчас в теме
Чтобы не делать
не очень хорошую вещь:
предлагаю заменить строку: "Предупреждение("У поставщика нет сохраненного в базе договора");" на: "Сообщить("Вы пытаетесь выгрузить то, чего нет");".
30. user1584890 19.04.21 13:09 Сейчас в теме
Сделал все по алгоритму, выдает ошибку, как решить?
{Справочник.Файл.Форма.ФормаСписка.Форма(10,1)}: Переменная не определена (Объект)
<<?>>Объект.Наименование = Файл.Имя; (Проверка: Тонкий клиент)
{Справочник.Файл.Форма.ФормаСписка.Форма(12,1)}: Переменная не определена (Объект)
<<?>>Объект.ИмяФайла = Имя; (Проверка: Тонкий клиент)
{Справочник.Файл.Форма.ФормаСписка.Форма(19,7)}: Переменная не определена (Объект)
Если <<?>>Объект.ИмяФайла = "" Тогда (Проверка: Тонкий клиент)
{Справочник.Файл.Форма.ФормаСписка.Форма(22,47)}: Переменная не определена (Объект)
СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(<<?>>Объект.Ссылка, "Файл"); (Проверка: Тонкий клиент)
{Справочник.Файл.Форма.ФормаСписка.Форма(23,31)}: Переменная не определена (Объект)
ПолучитьФайл(СсылкаНаФайлВИБ, <<?>>Объект.ИмяФайла); (Проверка: Тонкий клиент)
{Справочник.Файл.Форма.ФормаСписка.Форма(48,9)}: Переменная не определена (Объект)
Имя = <<?>>Объект.ИмяФайла; (Проверка: Тонкий клиент)
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    4036    19    huxuxuya    11    

Интерактивная справка по объектам 1С (подключаемое расширение)

Практика программирования Работа с интерфейсом v8 ERP2 Абонемент ($m)

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

3 стартмани

29.09.2020    9940    62    sapervodichka    43    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    30106    27    Stepa86    46    

Вам нравятся запросы в 1С?

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    23707    6    m-rv    90    

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

Универсальные функции Инструментарий разработчика Учет ТМЦ Учет ТМЦ v8 1cv8.cf Россия БУ Абонемент ($m)

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

1 стартмани

17.08.2015    50021    168    ekaruk    32    

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом

Печатные формы документов Универсальные функции Email v8 КА1 БП2.0 УТ10 УПП1 Абонемент ($m)

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    27207    21    stvorl    0    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    24402    13    RocKeR_13    16    

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    44663    63    dsdred    17    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    32936    88    m-rv    58    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    31424    28    informa1555    26    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    56676    21    kalyaka    16    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    35219    11    SITR-utyos    13    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Использование механизма полнотекстового поиска в 1С не всегда оправдано, т.к. построение индекса и поддержание его в актуальном состоянии может значительно нагружать систему. Предлагаемая реализация нечеткого поиска методом N-грамм выполняется одним запросом, что позволяет производить поиск в любой таблице и не требует предварительного построения индекса.

1 стартмани

28.12.2015    30565    72    vasvl123    9    

Заполняем по шаблону (по умолчанию)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    30947    20    mvxyz    17    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    29452    56    kwazi    6    

Паузы при исполнении кода (Sleep для 1С)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Решил проверить все найденные варианты паузы для 1С. В результате получилась обработка для тестирования и небольшая статья с итогом.

1 стартмани

28.11.2017    56241    15    swimdog    46    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    55719    35    ildarovich    41    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    37186    140    PLAstic    59    

Умный дом на 1С + ардуино

Практика программирования v8 Абонемент ($m)

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    25255    21    sasha777666    64    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    147955    13    signum2009    48    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.03.2017    34660    119    romasna    49    

Распознавание текста с помощью нейросетей Google Cloud Vision и 1С

Практика программирования v8 1cv8.cf Абонемент ($m)

Возможности Google Cloud Vision в распознавании текста.

1 стартмани

08.02.2017    33417    137    kiv1c    18    

Графическая схема. Управление при помощи XDTO.

Практика программирования v8 Абонемент ($m)

В статье описывается методика программного управления элементами графической схемы при помощи механизма XDTO. Приложена готовая к использованию библиотека функций для создания и удаления графических объектов, а также для связи элементов схемы соединительными линиями.

2 стартмани

16.01.2017    25537    112    Alxby    23    

Несколько шаблонов для доработки типовых конфигураций

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы

1 стартмани

03.10.2016    39168    96    json    25    

HTTP-сервис: отчеты [Расширение]

Практика программирования Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    29771    144    Stepa86    15    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    51002    36    Demanoidos    60    

Недокументированное использование стандартных форм Upd.

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Вам не хватает возможностей в платформе 1С или у Вас нет времени на углубленное изучение платформы 1С? Рассмотрены возможности использования стандартных форм, вызываемых из платформы.

1 стартмани

26.07.2016    30890    92    ZhokhovM    65    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    61945    11    wowik    32    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

Инструментарий разработчика Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    67593    199    rozer    66    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

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

1 стартмани

26.04.2016    67069    19    arakelyan    22    

Еще один способ расчета остатков на каждый день в запросе

Математика и алгоритмы Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.04.2016    37312    51    ildarovich    23    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    87746    165    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    20263    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    54105    54    yuraos    18    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    61477    201    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    25336    8    Tatitutu    5    

Генерация QR-кода программная и интерактивная (код открыт, управляемая форма, обычное и управляемое приложение, API)

Универсальные функции Универсальные обработки v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).

3 стартмани

04.02.2016    51647    177    TuneSoft    30    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    42397    20    milkers    4    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.

1 стартмани

06.12.2015    60795    50    YPermitin    19    

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    102843    484    Luchik    210    

Автоматическая подстановка уничтожений временных таблиц в текст запроса

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция, которая сама подставляет в текст запроса "УНИЧТОЖИТЬ" в местах последнего использования ВТ.

1 стартмани

14.11.2015    21337    0    SeiOkami    3