Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как добавить файл в контрагенты? (http://forums.kuban.ru/f1040/kak_dobavit-_fajl_v_kontragenty-5754716.html)

Паровоз 29.05.2014 09:57

Как добавить файл в контрагенты?
 
Есть в справочнике контрагентах группа прикрепленные файлы. Как туда программно добавить файл. Т.е. грубо говоря получена ссылка на контрагента, как к нему добавить файл? Конфигурация какая-то самописная.

t_steb 29.05.2014 10:03

0-Паровоз > Бестолочь! Ты хатя ба сам та читал што ты написал? Типа, у мну исть самаписная канфигурация каторую нихто ни видел, падскажите как в ниё файл дабавить.
Типичнай ты адынесник!

user1C 29.05.2014 10:04

открой конфигуратор, там написано, как программно...

Паровоз 29.05.2014 10:15

да не совсем самописная, когда-то это был itil.Управление информационными технологиями предприяьтия, но снят с поддержки и дописывался кем-то.

[url]http://files.mail.ru/DD1437644417469E9116C8BB17253F96[/url]

Helen1986 29.05.2014 10:16

очередной туповатый одноЭсник ставит опыты по скрещиванию ужа и ежа

VZ 29.05.2014 11:07

Хм... Это смотря как хранятся эти самые файлы... Вне БД, или внутри БД (используя хранилище). Если вне БД, то можно добраться до списка файлов данного контрагента, если сами файлы сформированы с именами, включающими UUID данного контрагента. Что позволяет не вносить новые реквизиты, если файл единственный, или это директория.
Если в хранилище (надеюсь, БД не файловая?), то в качестве ключа записи можно использовать ссылку владельца (тот же UUID вид сбоку).
P.S. По ссылке в (3) не ходил: подозреваю, внутри что-то сложное для понимания ;)

DaCAT 29.05.2014 16:00

5-VZ >Там скриншот Конфигуратора :)

VZ 30.05.2014 10:21

6-DaCAT >:)
0-Паровоз > Не знаю как в твоей конфигурации, но в БП3 есть функционал "Присоединенные файлы". Основа: подчиненные справочники объектов (например ОрганизацииПодчиненныеФайлы, где есть реквизит ВладелецФайла тип СправочникСсылка.Организации), и один общий регистр сведений для хранения истории. Ну, куча функционала из БСП для обработок этих файлов.
Рекомендуется стянуть ;)

Паровоз 30.05.2014 15:59

&НаКлиенте
Функция ДобавитьФайл(ИмяФайла, НомерЗаявки)
код=СокрЛП(Строка(НомерЗаявки));
Элемент=ПолучитьОбъект(код);
Форма2=ПолучитьФорму();
//РаботаСФайламиКлиент.СкопироватьФайл(Элемент.Контрагент,"c:\1.txt");
// www=РаботаСФайлами.СоздатьФайл(Элемент.Контрагент, "eeee", " 13   zayavka_1", "jpg", "", "c:\");
если НЕ элемент.Пустая() тогда
сообщить(Элемент.контрагент.НаименованиеПолное);
иначе
сообщить("ссылка-пустая!!! при поиске по коду -"+код);
конецесли;
РаботаСФайламиКлиент.СоздатьДокументНаОсновеФайла("c:\1.txt",Элемент.Контрагент,Форма2.ПолучитьФорму("ФормаЭлементаITIL").ВладелецФормы, Истина);

возврат Элемент.Контрагент.ИНН;
конецфункции
&НаСервере
Функция ПолучитьФорму()
форма= справочники.Контрагенты;
возврат форма;
конецфункции
&НаСервере
Функция ПолучитьОбъект(код)
Элемент=Справочники.ЗаказыЭЦП.НайтиПоНаименованию(код);
возврат Элемент;
конецфункции
___________________________
Есть встроенная функция у них,
РаботаСФайламиКлиент.СоздатьДокументНаОсновеФайла
но у меня при последнем вызове пишет ошибку
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
_____________
Сранная функция, наверно она расчитана , чтобы получать ссылку на формы из формы, а у меня она вызывается не из формы?
Процедура СоздатьДокументНаОсновеФайла(ПолноеИмяФайла, ВладелецФайла, ФормаВладелец, НеОткрыватьКарточкуПослеСозданияИзФайла = Неопределено) Экспорт
// Здесь создаем Файл ...
Файл = Новый Файл(ПолноеИмяФайла);
МаксРазмерФайла = РаботаСФайламиКлиентПовтИсп.ПолучитьПерсональныеНастройкиРаботыСФайлами().МаксимальныйРазмерФайла;

РазмерВМб = Файл.Размер() / (1024 * 1024);
РазмерВМбМакс = МаксРазмерФайла / (1024 * 1024);

Если Файл.Размер() > МаксРазмерФайла Тогда

ОбновитьПовторноИспользуемыеЗначения();

ВызватьИсключение
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Размер файла ""%1"" (%2 Мб) превышает максимально допустимый размер файла (%3 Мб).'"),
Файл.Имя,
?(РазмерВМб >= 1, Формат(РазмерВМб, "ЧДЦ=0"), Формат(РазмерВМб, "ЧДЦ=1; ЧН=0")),
?(РазмерВМбМакс >= 1, Формат(РазмерВМбМакс, "ЧДЦ=0"), Формат(РазмерВМбМакс, "ЧДЦ=1; ЧН=0")));
КонецЕсли;

АдресВременногоХранилищаТекста = ФайловыеФункцииКлиент.ИзвлечьТекстВоВременноеХранилище(
Файл.ПолноеИмя,
ФормаВладелец.УникальныйИдентификатор);

ВремяИзменения = Файл.ПолучитьВремяИзменения();
ВремяИзмененияУниверсальное = Файл.ПолучитьУниверсальноеВремяИзменения();

ИмяФайла = Файл.Имя;
РазмерВМб = Файл.Размер() / (1024 * 1024);

ТекстПояснения =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Идет сохранение файла ""%1"" (%2 Мб).
|Пожалуйста, подождите...'"),
ИмяФайла,
?(РазмерВМб >= 1, Формат(РазмерВМб, "ЧДЦ=0"), Формат(РазмерВМб, "ЧДЦ=1; ЧН=0")));

Состояние(ТекстПояснения);


// Поместим Файл в ВременноеХранилище
АдресВременногоХранилищаФайла = "";

ПомещаемыеФайлы = Новый Массив;
Описание = Новый ОписаниеПередаваемогоФайла(Файл.ПолноеИмя, "");
ПомещаемыеФайлы.Добавить(Описание);

ПомещенныеФайлы = Новый Массив;

Если НЕ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ФормаВладелец.УникальныйИдентификатор) Тогда
ВызватьИсключение
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка при помещении файла в хранилище: %1'"), Файл.ПолноеИмя);
КонецЕсли;

Если ПомещенныеФайлы.Количество() = 1 Тогда
АдресВременногоХранилищаФайла = ПомещенныеФайлы[0].Хранение;
КонецЕсли;

// Создадим карточку Файла в БД
Док = РаботаСФайлами.СоздатьФайлСВерсией(
ВладелецФайла,
Файл.ИмяБезРасширения,
ФайловыеФункцииКлиент.РасширениеБезТочки(Файл.Расширение),
ВремяИзменения,
ВремяИзмененияУниверсальное,
Файл.Размер(),
АдресВременногоХранилищаФайла,
АдресВременногоХранилищаТекста,
Ложь); // это не веб клиент

Состояние();

ПараметрыОповещения = Новый Структура("Владелец, Файл", ВладелецФайла, Док);
Оповестить("СозданФайл", ПараметрыОповещения);

Параметры = Новый Структура("Ключ, КарточкаОткрытаПослеСозданияФайла", Док, Истина);

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

Паровоз 02.06.2014 14:51

ТАк все-таки, как?
Нашел Процедуру СоздатьДокументНаОсновеФайла(ПолноеИмяФайла, ВладелецФайла, ФормаВладелец, НеОткрыватьКарточкуПослеСозданияИзФайла = Неопределено) Экспорт

Все она прекрасно добавляет, но из формы!!!
А мне нужно файлы добавлять в обработке,

Владельца получаю так

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

а как получить форму?

Управление торговлей 11 02.06.2014 14:53

зачем тебе форма? файлы же не в форме хранятся

Паровоз 02.06.2014 14:57

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

endfilm 04.06.2014 05:45

Гениально


Текущее время: 07:19. Часовой пояс GMT +3.