Добавление нового файла в Хранилище доп. Информации в ут 10.3 программно

1. user817897 2 11.03.19 09:25 Сейчас в теме
Доброе утро всем. Может кто делал добавление нового файла(word) в Хранилище доп. Информации в ут 10.3 программно? я создал макет(из его делаю договор с контрагентом) и сохраняю его по пути на диск, далее хочу чтобы автоматически из этого пути прописывалось в хранилище доп информации,чтобы потом можно было зайти в карточку контрагента и распечатать договор. Может кто подскажет как это сделать? я в своей кнопке где делаю договор и сохраняю его по пути на диск,прописал такое:
датдог = Формат(ДатаДоговора,"ДФ=""дд-ММ-гггг""");
Word.SaveAs("F:\Dogovora\IP\" + НомеДог + " на " + НаименованиеПолное +" от "+ датдог + " года",0);
ДействияФормыФайлы(Кнопка); --- открывает эту форму,теперь как-то надо нажать кнопку добавить и выбрать из пути.
подскажите пожалуйста,как сделать или может кто уже делал похожее?!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SedovSU@mail.ru 297 11.03.19 09:46 Сейчас в теме
То есть вам нужно ваш сохраненный файл сохранить в справочник "Файлы"?

ПутьКФайлу = "F:\Dogovora\IP\" + НомеДог + " на " + НаименованиеПолное +" от "+ датдог + " года" 
Word.SaveAs(ПутьКФайлу,0); 
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу); 
// далее создаете элемент справочника Файлы
Файл = Справочники.Файлы.СоздатьЭлеменент();
Файл.Владелец = Контрагент; 
Файл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); 
Файл.Записть();


Структура может отличаться, пишу в общем виде
Только наверное следует проверяет а нету ли для данного объекта уже добавленного файла
3. user817897 2 11.03.19 10:09 Сейчас в теме
(2) в строке Файл.Владелец = Контрагент, поменял на = ПолноеНаименование;
и выскакивает ошибка:((
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(2612)}: Ошибка при вызове конструктора (ДвоичныеДанные)
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу);
по причине:
Файл не обнаружен 'F:\Dogovora\IP\1-000001087-2019 на Иванов Иван от года'
хоть в папке создало документ ворд и он там лежит с таким же названием
4. SedovSU@mail.ru 297 11.03.19 10:15 Сейчас в теме
(3) а попробуйте еще расширение файла указать
5. user817897 2 11.03.19 10:19 Сейчас в теме
(4)да,я добавил. doc,и изменил
Файл = Справочники.Файлы.СоздатьЭлеменент(); на
Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
так теперь ругается на
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(2615)}: Ошибка при установке значения атрибута контекста (Владелец)
Файл.Владелец = Наименование;
по причине:
Справочник не имеет владельца
7. SedovSU@mail.ru 297 11.03.19 10:28 Сейчас в теме
(5) Значит не нужно добавлять владельца. Мне сложно сказать не видя какие реквизиты заполнить. Владельца уберите, но наверное нужно еще какие нибудь обязательные поля указать
9. user817897 2 11.03.19 10:29 Сейчас в теме
(7)
Прикрепленные файлы:
6. user817897 2 11.03.19 10:26 Сейчас в теме
(4)У меня справочника Файлы нет просто
8. user817897 2 11.03.19 10:29 Сейчас в теме
(6)мне кажется надо указать может ссылка?
Прикрепленные файлы:
10. SedovSU@mail.ru 297 11.03.19 10:32 Сейчас в теме
(8) нет, вам обязательно нужно заполнить поле "Объект" - это будет ссылка на вашего контргента, обязательно нужно указать наименование и хранилище
11. user817897 2 11.03.19 10:35 Сейчас в теме
(10)как быть?
сейчас пришли к такому коду:
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу); 
// далее создаете элемент справочника Файлы
Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
Файл.Владелец= Наименование; 
Файл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); 
Файл.Записть();
12. user817897 2 11.03.19 10:38 Сейчас в теме
(10)
Прикрепленные файлы:
13. user817897 2 11.03.19 10:39 Сейчас в теме
(10)поменял Владелец на ИмяФайла,прошло отладчиком,дальше выходит ошибка на
{Справочник.Контрагенты.Форма.ФормаЭлемента.Форма(2617)}: Метод объекта не обнаружен (Записть)
Файл.Записть();
14. user817897 2 11.03.19 10:45 Сейчас в теме
(10) вот так сработало, но файл так и не появлется в справочнике почему-то( из-за чего так может быть?
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу); 
// далее создаете элемент справочника Файлы
Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
Файл.ИмяФайла= Наименование; 
Файл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); 
Файл.Записать();
15. SedovSU@mail.ru 297 11.03.19 10:54 Сейчас в теме
(14) А добавьте ссылку на объект. Реквизит по скрину Объект - это ссылка на вашего контрагента. И заполните реквизит вид данных
16. user817897 2 11.03.19 10:58 Сейчас в теме
(15)понял но не понял,куда добавить
17. SedovSU@mail.ru 297 11.03.19 11:03 Сейчас в теме
(16)

Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент(); 
Файл.ИмяФайла= Наименование; 
Файл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); 
Файл.Объект = Контрагент; // ссылка на контрагента 
Файл.ВидДанных = ; // тут тоже нужно значение указать
Файл.Записать();
18. user817897 2 11.03.19 11:13 Сейчас в теме
(17) создаётся вот такая вот строка в справочнике хранилище данных:
Прикрепленные файлы:
19. user817897 2 11.03.19 11:14 Сейчас в теме
(17)а вместо хранилище значения должен быть наш ПутьКФайлу, правильно?
20. SedovSU@mail.ru 297 11.03.19 11:15 Сейчас в теме
(19) нет почему, в хранилище значения, храниться ваш двоичный файл. То есть файл храниться в 1С в формате ХранилищеЗначения
21. user817897 2 11.03.19 11:23 Сейчас в теме
(20)а,не знал, ссори,чего тогда он не подгружается?
тут указал:
Файл.Объект = Наименование; // ссылка на контрагента
Файл.ВидДанных = Файл;
оно не загружает эти данные,что не правильно я сделал?
22. SedovSU@mail.ru 297 11.03.19 11:26 Сейчас в теме
(21) а покажите шире прин скрин, вот тот который вы добавили в нем написано ХранилищеЗначений, а у других как оно выглядит, Может просто не туда записываете значения
23. SedovSU@mail.ru 297 11.03.19 11:28 Сейчас в теме
(21) В справочнике ХранилищеДополнительнойИнформации у реквизита Хранилище - какой тип значения????
Мне кажется я вам не правильно написал! Есть справочник файлы а есть справочник ХранилищеДополнительнойИнформации нужно два объекта создавать
24. user817897 2 11.03.19 11:29 Сейчас в теме
(23)ХранилищеЗначения тип
25. SedovSU@mail.ru 297 11.03.19 11:31 Сейчас в теме
(24) Тогда код вот такой должен
Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент(); 
Файл.ИмяФайла= Наименование; 
Файл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанные); 
Файл.Объект = Контрагент; // ссылка на контрагента 
Файл.ВидДанных = ; // тут тоже нужно значение указать 
Файл.Записать();
26. user817897 2 11.03.19 11:36 Сейчас в теме
(25)сейчас вот так сделал,так может не правильно?
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу); 
// далее создаете элемент справочника Файлы
Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
Файл.Объект = Наименование; 
Файл.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл; 
Файл.Наименование = Наименование; 
Файл.ИмяФайла = ПутьКФайлу;
//Новый ХранилищеЗначения(ДвоичныеДанные);
Файл.Записать();
Показать
Прикрепленные файлы:
27. user817897 2 11.03.19 11:42 Сейчас в теме
(25) что-то я тут уже понапутывал)))
28. SedovSU@mail.ru 297 11.03.19 11:51 Сейчас в теме
(27) У вас не заполнился реквизит объект. Он какого типа значения?
29. user817897 2 11.03.19 11:56 Сейчас в теме
(28)
ДокументСсылка.ВходящийЗапросКаталога, ДокументСсылка.ЗаказПокупателя, СправочникСсылка.Организации, ДокументСсылка.ВходящееИзвещение, ДокументСсылка.ИсходящийКаталогТоваров, ДокументСсылка.ИсходящееИзвещение, ДокументСсылка.ИсходящийРеджектАкцептСчетаФактуры, ДокументСсылка.ВходящийАкцептСчетаФактуры, ДокументСсылка.ИсходящийРеджектАкцептЗаказа, ДокументСсылка.ЗаказПоставщику, СправочникСсылка.ДоговорыКонтрагентов, ДокументСсылка.ВходящийАкцептНакладной, СправочникСсылка.Номенклатура, ДокументСсылка.ВходящийЗапросПрайсЛиста, СправочникСсылка.Контрагенты, ДокументСсылка.ИсходящийРеджектАкцептНакладной, ДокументСсылка.ВходящийСчетФактура, СправочникСсылка.СерииНоменклатуры, ДокументСсылка.ВходящийКаталогТоваров, ДокументСсылка.ПланируемоеПоступлениеДенежныхСредств, ДокументСсылка.ВходящийРеджектЗаказа, СправочникСсылка.Склады, СправочникСсылка.ФизическиеЛица, ДокументСсылка.Событие, ДокументСсылка.СчетФактураВыданный, ДокументСсылка.ЗаявкаНаРасходованиеСредств, ДокументСсылка.ИсходящийПрайсЛист, ДокументСсылка.ИсходящийЗаказ, ДокументСсылка.ИсходящийЗапросКаталога, ДокументСсылка.ВходящийАкцептЗаказа, ДокументСсылка.ПоступлениеТоваровУслуг, ДокументСсылка.ВходящийТоварКРаботе, ДокументСсылка.ИсходящийТоварКРаботе, ДокументСсылка.ВходящийРеджектСчетаФактуры, СправочникСсылка.Проекты, ДокументСсылка.СчетФактураПолученный, ДокументСсылка.ИсходящийСчетФактура, ДокументСсылка.РеализацияТоваровУслуг, ДокументСсылка.АвансовыйОтчет, ДокументСсылка.ВходящийРеджектНакладной, ДокументСсылка.ВходящийПрайсЛист, ДокументСсылка.ИсходящийЗапросПрайсЛиста, ДокументСсылка.ВходящийЗаказ, ДокументСсылка.ЭлектронноеПисьмо
30. user817897 2 11.03.19 11:57 Сейчас в теме
31. SedovSU@mail.ru 297 11.03.19 12:00 Сейчас в теме
(30) среди них нету справочника контрагентов, вы не сможете прикрепить данный файл к справочнику контрагентов
32. user817897 2 11.03.19 12:10 Сейчас в теме
(31) есть же СправочникСсылка.Контрагенты
33. user817897 2 11.03.19 12:11 Сейчас в теме
(31)Файл.ЭтотОбъект = Справочники.Контрагенты.НайтиПоНаименованию(Наименование);
вот так тоже не заполняет(
)))
34. SedovSU@mail.ru 297 11.03.19 12:17 Сейчас в теме
(33) Вам нужно указать ссылку на контрагента. В реквизите Объект - должна храниться ссылка. Может весь код покажите, может так проще будет
35. user817897 2 11.03.19 12:32 Сейчас в теме
(34)

год =  Год(ТекущаяДата());	

НомерДоговора= Код;	
ОбработаннаяСтрокаСтр = СокрЛП(НомерДоговора);
Результат = ОбработаннаяСтрокаСтр;
Для н=1 по СтрДлина(ОбработаннаяСтрокаСтр) Цикл
ТекСимвол = Сред(ОбработаннаяСтрокаСтр,н,1);
Если Найти("0123456789",ТекСимвол) = 0 Тогда
Результат = СтрЗаменить(Результат,ТекСимвол,""); 
КонецЕсли; 
КонецЦикла; 

ГодНов = Формат(Год, "ЧГ=");
приве = 1;
НомеДог =Строка(""+приве + "-" + Результат+ "-" +ГодНов);


	СсылкаМакет = ПолучитьОбщийМакет("ДоговорИППредоплата");
        Word = СсылкаМакет.Получить();
    
        //открываем и активируем документ
        СсылкаМакет = Word.Application.Documents(1);
        СсылкаМакет.Activate();
		// в метод Bookmarks передаем название "закладки" 
		Word.Bookmarks("НомерДоговора").Select(); 
		Word.Application.Selection.TypeText(НомеДог); 
		Word.Bookmarks("ДатаДоговора").Select(); 
		Word.Application.Selection.TypeText(ДатаДоговора); 
		Word.Bookmarks("ПолноеНаименование").Select(); 
		Word.Application.Selection.TypeText(НаименованиеПолное); 
		Word.Bookmarks("ПолноеНаименование2").Select(); 
		Word.Application.Selection.TypeText(НаименованиеПолное); 
		Word.Bookmarks("ОснованиеИП").Select(); 
		Word.Application.Selection.TypeText(ОснованиеИП); 
		Word.Bookmarks("Выданного").Select(); 
		Word.Application.Selection.TypeText(Выданного); 
		Word.Bookmarks("УсловиеОплаты").Select(); 
		Word.Application.Selection.TypeText(УсловиеДоговора);
		Word.Bookmarks("Год").Select(); 
		Word.Application.Selection.TypeText(год);
		Word.Bookmarks("Адрес").Select(); 
		Word.Application.Selection.TypeText(АдресЛица); 
		Word.Bookmarks("УНП").Select();                                               
		Word.Application.Selection.TypeText(ИНН); 
		Word.Bookmarks("ОКПО").Select(); 
		Word.Application.Selection.TypeText(КодПоОКПО); 
		Word.Bookmarks("Телефон").Select(); 
		Word.Application.Selection.TypeText(ТелЛица); 
		Word.Bookmarks("ЭлАдрес").Select(); 
		Word.Application.Selection.TypeText(ЭлАдрес); 
		Word.Bookmarks("РасСчет").Select(); 
		Word.Application.Selection.TypeText(РасСчёт); 
		Word.Bookmarks("ВБанке").Select(); 
		Word.Application.Selection.TypeText(ВБанке);
		Word.Bookmarks("АдресБанка").Select(); 
		Word.Application.Selection.TypeText(АдресБанка); 
		Word.Bookmarks("Бик").Select(); 
		Word.Application.Selection.TypeText(БИК); 
		Word.Bookmarks("ПодписьНаименование").Select(); 
		Word.Application.Selection.TypeText(ЛицоКонтрагента);
		//устанавливаем новое значение текста

        //включаем видимость приложения
		//СсылкаМакет.Application.Visible = Истина;
		
		датдог = Формат(ДатаДоговора,"ДФ=""дд-ММ-гггг""");
		ПутьКФайлу = "F:\Dogovora\IP\" + НомеДог + " на " + НаименованиеПолное +" от "+ датдог + " года.doc"; 
		Word.SaveAs(ПутьКФайлу,0);

		
 
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу); 
// далее создаете элемент справочника Файлы

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

Файл.Записать();
Показать
36. SedovSU@mail.ru 297 11.03.19 13:10 Сейчас в теме
(35) Вам нужно присвоить реквизиту Объект - ссылку на контрагент

Напишите так

Файл = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент(); 
Файл.Объект = Ссылка;  // вот тут укажите ссылку. Если это из модуля объекта то укажите Ссылка
Файл.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл; 
Файл.Наименование = Наименование; 
Файл.ИмяФайла = ПутьКФайлу; 
Файл.Записать();
37. user817897 2 11.03.19 13:48 Сейчас в теме
(36)Файл.Объект = Ссылка; написал так,всё равно объект пустой((
38. user817897 2 11.03.19 13:50 Сейчас в теме
(37)
а нет,всё круто,сработало,это я ошибся.
39. user817897 2 11.03.19 13:51 Сейчас в теме
(36)спасибо огромнейшее, сделать проверку надо и сделать замену если согласится,иначе отказ
40. SedovSU@mail.ru 297 11.03.19 14:01 Сейчас в теме
(39) ну и отлично что получилось
41. user817897 2 11.03.19 14:09 Сейчас в теме
(40)единственный вопрос,почему выскакивает такое сообщение: когда открываю этот файл из 1с
Прикрепленные файлы:
42. SedovSU@mail.ru 297 11.03.19 14:27 Сейчас в теме
(41) Он возникает - скорее всего из за типовой работы платформы, то есть программа из хранилища пытаетеся записать файл а он там уже есть, и поэтому выдает сообщение. Выход из этого - после того как файл загрузили просто его удалить
43. user817897 2 11.03.19 14:55 Сейчас в теме
(42)как, Word.Delete; ?оно сохраняет просто не нужные для меня документы в папку темп
44. SedovSU@mail.ru 297 11.03.19 15:02 Сейчас в теме
(43) нет зачем, вот так поробуйте

ПутьКФайлу = "F:\Dogovora\IP\" + НомеДог + " на " + НаименованиеПолное +" от "+ датдог + " года.doc"; 
Word.SaveAs(ПутьКФайлу,0); 
ДвоичныеДанные= Новый ДвоичныеДанные(ПутьКФайлу); 
// далее создаете элемент справочника Файлы 

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

Файл.Записать();
// удаляем файл
УдалитьФайлы(ПутьКФайлу);
Показать
45. user817897 2 11.03.19 15:31 Сейчас в теме
(44)Не,так дело не пойдёт,мне надо чтобы удаляло не из папки куда я сохранять их буду,а из Users/блаблабла,на скрине видно куда оно сохраняет дополнительно,вот мне тад не нужно.как оттуда удалять?
46. user817897 2 10.11.20 14:14 Сейчас в теме
Спасибо всем. Тема Закрыта.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот