![]() |
Как добавить файл в контрагенты? Есть в справочнике контрагентах группа прикрепленные файлы. Как туда программно добавить файл. Т.е. грубо говоря получена ссылка на контрагента, как к нему добавить файл? Конфигурация какая-то самописная. |
0-Паровоз > Бестолочь! Ты хатя ба сам та читал што ты написал? Типа, у мну исть самаписная канфигурация каторую нихто ни видел, падскажите как в ниё файл дабавить. Типичнай ты адынесник! |
открой конфигуратор, там написано, как программно... |
да не совсем самописная, когда-то это был itil.Управление информационными технологиями предприяьтия, но снят с поддержки и дописывался кем-то. [url]http://files.mail.ru/DD1437644417469E9116C8BB17253F96[/url] |
очередной туповатый одноЭсник ставит опыты по скрещиванию ужа и ежа |
Хм... Это смотря как хранятся эти самые файлы... Вне БД, или внутри БД (используя хранилище). Если вне БД, то можно добраться до списка файлов данного контрагента, если сами файлы сформированы с именами, включающими UUID данного контрагента. Что позволяет не вносить новые реквизиты, если файл единственный, или это директория. Если в хранилище (надеюсь, БД не файловая?), то в качестве ключа записи можно использовать ссылку владельца (тот же UUID вид сбоку). P.S. По ссылке в (3) не ходил: подозреваю, внутри что-то сложное для понимания ;) |
5-VZ >Там скриншот Конфигуратора :) |
6-DaCAT >:) 0-Паровоз > Не знаю как в твоей конфигурации, но в БП3 есть функционал "Присоединенные файлы". Основа: подчиненные справочники объектов (например ОрганизацииПодчиненныеФайлы, где есть реквизит ВладелецФайла тип СправочникСсылка.Организации), и один общий регистр сведений для хранения истории. Ну, куча функционала из БСП для обработок этих файлов. Рекомендуется стянуть ;) |
&НаКлиенте Функция ДобавитьФайл(ИмяФайла, НомерЗаявки) код=СокрЛП(Строка(НомерЗаявки)); Элемент=ПолучитьОбъект(код); Форма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].Хранение; КонецЕсли; // Создадим карточку Файла в БД Док = РаботаСФайлами.СоздатьФайлСВерсией( ВладелецФайла, Файл.ИмяБезРасширения, ФайловыеФункцииКлиент.РасширениеБезТочки(Файл.Расширение), ВремяИзменения, ВремяИзмененияУниверсальное, Файл.Размер(), АдресВременногоХранилищаФайла, АдресВременногоХранилищаТекста, Ложь); // это не веб клиент Состояние(); ПараметрыОповещения = Новый Структура("Владелец, Файл", ВладелецФайла, Док); Оповестить("СозданФайл", ПараметрыОповещения); Параметры = Новый Структура("Ключ, КарточкаОткрытаПослеСозданияФайла", Док, Истина); //Если НеОткрыватьКарточкуПослеСозданияИзФайла <> Истина Тогда // Форма = ПолучитьФорму("Справочник.Файлы.Форма.ФормаЭлемента", Параметры); // Форма.ВладелецФормы = ФормаВладелец; // Форма.НовыйФайл = Истина; // Форма.Открыть(); //КонецЕсли; КонецПроцедуры |
ТАк все-таки, как? Нашел Процедуру СоздатьДокументНаОсновеФайла(ПолноеИмяФайла, ВладелецФайла, ФормаВладелец, НеОткрыватьКарточкуПослеСозданияИзФайла = Неопределено) Экспорт Все она прекрасно добавляет, но из формы!!! А мне нужно файлы добавлять в обработке, Владельца получаю так Функция ПолучитьОбъект(код) Элемент=Справочники.Заказчики.НайтиПоНаименованию(код).Контрагент; возврат Элемент; конецфункции а как получить форму? |
зачем тебе форма? файлы же не в форме хранятся |
У меня есть в контрагентах группа файлы, т.е. к каждому контрагенту нужно по подвязывать файлы со сканами договоров и паспортных данных, их несколько сотен, а готовая функция нормально работает в форме |
Гениально |
Текущее время: 07:19. Часовой пояс GMT +3. |