Имя: Пароль:
1C
1С v8
Как добавить картинку в поле таблицы
0 Julia_S12
 
18.02.13
09:34
Добрый День!

Помогите разобраться. Мне нужно вставить в поле таблицы отсканированный документ(Картинку). Как это сделать не могу понять. Данные будут храниться на сервере
1 aka AMIGO
 
18.02.13
09:37
(0) для начала нажми красную букву "Я" справа от топика
2 Случайный прохожий
 
18.02.13
09:42
(0) Фотка где?
3 Julia_S12
 
18.02.13
09:46
О, Насчет кнопки спасибо..Сейчас посмотрю что ниб, но сколько не исала ничего найи не могла.точнее есть много, но для меня пока что не понятно..поэтому и прошу помочь так скажем с нуля..
4 Julia_S12
 
18.02.13
09:49
наверно мне нужно, чтоб при нажатии кнопки, было окно выбора файла, при выборе фото вставлялось в таблицу (пусть не сама картинка, а имя), но чтоб это была как ссылка. Например нашли в таблице нужного человека, и к нему прикреплен файл-резюме. Нажали на имя файла, и можно было просматривать в стандартных программах просмотра
5 aka AMIGO
 
18.02.13
09:50
(3) на здоровье :)

на первой странице форума есть еще одна кнопка, называется "Поиск". Я нажал её, в поле поиска ввет твой заголовок, получил вот что:
http://www.google.ru/search?as_sitesearch=forum.mista.ru&q=%CA%E0%EA+%E4%EE%E1%E0%E2%E8%F2%FC+%EA%E0%F0%F2%E8%ED%EA%F3+%E2+%EF%EE%EB%E5+%F2%E0%E1%EB%E8%F6%FB

когда вопросы были, я понимаю форумчан, отвечать не очень хочется.. ведь всё было, было.. :)
6 Cube
 
18.02.13
09:51
(0) На этом форуме девушкам принято сначала фотку в личную карточку вставлять, а потом уже вопросы задавать :)
Чем удачнее фото, тем оперативнее ответы :)
7 Julia_S12
 
18.02.13
09:52
аа..вон оно как:) ну щас вставлю)
8 Julia_S12
 
18.02.13
10:02
Ну давайте пока подумаем над поим вопросом))
9 Cube
 
18.02.13
10:04
(8) Не плохо.
Тебе картинку надо в табличный документ вставить или в таблицу значения, я что-то не понял чуть-чуть?
10 Julia_S12
 
18.02.13
10:04
Я не спорю, есть какие то фрагменты..Но я только начала узнавать 1с,
11 Случайный прохожий
 
18.02.13
10:07
Может быть таблица в вашем понимании - это есть форма списка справочника сотрудников?
12 Julia_S12
 
18.02.13
10:07
мм...ну смотри...Я создаю информацию о человеке, Реквизиты ФИО, УЧ.Учреждение, ну и т.д, и туда же (в информацию о данном человеке мне нужно будет поместить отсканированное резюме).
13 Cube
 
18.02.13
10:09
(12) "и туда же" - нет такого объекта в 1С :)
Ну хоть скрин покажи, если объяснить не можешь :)
14 Julia_S12
 
18.02.13
10:16
и куда мне скрин вставлять?
15 aka AMIGO
 
18.02.13
10:21
(14) хотя-бы сюда: http://itmages.ru/
16 Cube
 
18.02.13
10:21
(14) На любой хостинг картинок, например, сюда: http://itmages.ru
17 Julia_S12
 
18.02.13
10:24
Спасибо за подсказку:)
http://itmages.ru/image/preview/901074/687011b1
18 Cube
 
18.02.13
10:25
(17) Сюда надо вставлять ПРЯМУЮ ССЫЛКУ :)
19 Cube
 
18.02.13
10:25
20 Случайный прохожий
 
18.02.13
10:25
Версия платформы какая? Конфигурация типовая или самописанная?
21 Cube
 
18.02.13
10:26
(17) Ну и где на скрине мосто для фото? :)
22 Julia_S12
 
18.02.13
10:26
вот самое последнее поле: Резюме. Мне нужно, чтоб я могла выбирать сама файл, и после нажатия кнопки записать и сохранить в таблице как это отображалось
23 Cube
 
18.02.13
10:26
(20) Судя по скрину - самописка на УФ
24 Julia_S12
 
18.02.13
10:26
я сама её создаю.
25 Случайный прохожий
 
18.02.13
10:27
(17) А, все догадался :) Ошибочки орфографические исправьте :)
26 Cube
 
18.02.13
10:27
(22) Где ты таблицу на скрине видишь? Может я ослеп? :))
27 Julia_S12
 
18.02.13
10:28
ну походу я совсем тупая:В Простите уж:) Ну когда нажимаем записать и сохранить данные в таблицу записываются..
28 Julia_S12
 
18.02.13
10:28
Обязательно исправлю)
29 Cube
 
18.02.13
10:29
(27) Ты покажи скрин и выдели рамкой место, куда ты хочешь картинку с резюме разместить.
30 Julia_S12
 
18.02.13
10:30
точнее провести и закрыть
31 Cube
 
18.02.13
10:30
Ладно, у нас тут свет пропал, так что я исчезаю... :)
32 aka AMIGO
 
18.02.13
10:32
(29) ей не картинку надо, а поле с адресом картинки, справа кнопка выбора и вторая - кнопка просмотра
33 Julia_S12
 
18.02.13
10:34
Да, Именно так.
34 aka AMIGO
 
18.02.13
10:42
вот так оформляется выбор файла:
http://help1c.com/faq/view/282.html

сейчас поищу просмотр
35 Cube
 
18.02.13
10:44
(34) Это для УФ не подойдет.
36 aka AMIGO
 
18.02.13
10:45
ну, может это:
http://help1c.com/help/view/9084.html

там надо поискать, наверняка есть решение.
37 Cube
 
18.02.13
10:46
(36) Счас мой пофигуратор откроется - скину для УФ
38 Случайный прохожий
 
18.02.13
10:47
Ну если с самых низов: У тебя есть некий справочник физических лиц (сотрудников, пользователей, не важно вообщем). В этот справочник пихаешь еще один реквизит с типом "Строка" (сюда будешь сохранять путь до картинки). Сами картинки будут храниться где-нибудь в папке с базой. Соответственно этот реквизит выводишь в форму элемента справочника физ.лиц. В свойствах ставишь галочку "Имеет кнопку выбора". При нажатии на кнопку запускаешь функцию выбора картинки (файла картинки), которая в качестве возвращаемого значения возвращает адрес до файла и записывает его в наш реквизит (типа пункта 34-го). Вот... Пол дела сделано. Теперь пихаешь поле картинки туда, куда тебе нужно, и при открытии (или при нажатии на некую кнопочку) должна запускаться некая функция, которая бы обновляла картинку, исходя из сохраненного адреса. Вообщем я написал много букв и сильно устал :)
39 Cube
 
18.02.13
10:51
Загрузка файла (в примере подгружается word-файл):

&НаКлиенте
Процедура ЗагрузитьМакет(Команда)
   
   Если ПодключитьРасширениеРаботыСФайлами() Тогда
       ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
       ДиалогОткрытияФайла.ПолноеИмяФайла        = Объект.ИмяФайлаМакета;
       ДиалогОткрытияФайла.Фильтр                = "Документ Word 97-2003 (*.doc)|*.doc|Документ Word (*.docx)|*.docx";
       ДиалогОткрытияФайла.МножественныйВыбор    = Ложь;
       ДиалогОткрытияФайла.Заголовок            = НСтр("ru = 'Выберите файл макета'");
       ПомещаемыеФайлы = Новый Массив;
       ПомещенныеФайлы = Новый Массив;
       Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, ДиалогОткрытияФайла, Истина) Тогда
           МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ПомещенныеФайлы[0].Имя, "\");
           Объект.ИмяФайлаМакета = МассивПодстрок.Получить(МассивПодстрок.ВГраница());
           Если НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда
               МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Объект.ИмяФайлаМакета, ".");
               Объект.Наименование = Лев(Объект.ИмяФайлаМакета, СтрДлина(Объект.ИмяФайлаМакета) - СтрДлина(МассивПодстрок[МассивПодстрок.Количество() - 1]) - 1);
           КонецЕсли;
           Объект.ДатаЗагрузкиМакета = ТекущаяДата();
           ЗарегистрироватьМакет(ПомещенныеФайлы[0].Хранение);
       Иначе
           Возврат;
       КонецЕсли;
   Иначе
       АдресВоВременномХранилище = "";
       ВыбранноеИмяФайла = "";
       Если ПоместитьФайл(АдресВоВременномХранилище, , ВыбранноеИмяФайла, Истина) Тогда
           МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ВыбранноеИмяФайла, "\");
           Объект.ИмяФайлаМакета = МассивПодстрок.Получить(МассивПодстрок.ВГраница());
           Если НЕ ЗначениеЗаполнено(Объект.Наименование) Тогда
               МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Объект.ИмяФайлаМакета, ".");
               Объект.Наименование = Лев(Объект.ИмяФайлаМакета, СтрДлина(Объект.ИмяФайлаМакета) - СтрДлина(МассивПодстрок[МассивПодстрок.Количество() - 1]) - 1);
           КонецЕсли;
           ЗарегистрироватьМакет(АдресВоВременномХранилище);
       Иначе
           Возврат;
       КонецЕсли;
   КонецЕсли;
   
   ОбновитьИнформациюОФайле();
   
КонецПроцедуры //ЗагрузитьМакет()

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

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   
   Если ЗаписатьМакет Тогда
       ТекущийОбъект.ХранилищеМакета = Новый ХранилищеЗначения(ДвоичныеДанныеОбработки, Новый СжатиеДанных(9));
       ЗаписатьМакет = Ложь;
   КонецЕсли;
   
КонецПроцедуры //ПередЗаписьюНаСервере()
40 Cube
 
18.02.13
10:53
+(39) Тут используется процедура общего модуля "РазложитьСтрокуВМассивПодстрок", вот она:

// Разбивает строку на несколько строк по разделителю. Разделитель может иметь любую длину.
//
// Параметры:
//  Строка                 - Строка - текст с разделителями;
//  Разделитель            - Строка - разделитель строк текста, минимум 1 символ;
//  ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк.
//    Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:
//     - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки
//       включаются в результат.
//     - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в
//       случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а
//       при других разделителях результатом функции будет пустой массив.
//
//
// Возвращаемое значение:
//  Массив - массив строк.
//
// Примеры:
//  РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых  - пустые строки;
//  РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) - возвратит массив из двух элементов;
//  РазложитьСтрокуВМассивПодстрок(" один   два  ", " ") - возвратит массив из двух элементов;
//  РазложитьСтрокуВМассивПодстрок("") - возвратит пустой массив;
//  РазложитьСтрокуВМассивПодстрок("",,Ложь) - возвратит массив с одним элементом "" (пустой строкой);
//  РазложитьСтрокуВМассивПодстрок("", " ") - возвратит массив с одним элементом "" (пустой строкой);
//
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Экспорт
   
   Результат = Новый Массив;
   
   // для обеспечения обратной совместимости
   Если ПропускатьПустыеСтроки = Неопределено Тогда
       ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
       Если ПустаяСтрока(Строка) Тогда
           Если Разделитель = " " Тогда
               Результат.Добавить("");
           КонецЕсли;
           Возврат Результат;
       КонецЕсли;
   КонецЕсли;
   //
   
   Позиция = Найти(Строка, Разделитель);
   Пока Позиция > 0 Цикл
       Подстрока = Лев(Строка, Позиция - 1);
       Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
           Результат.Добавить(Подстрока);
       КонецЕсли;
       Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
       Позиция = Найти(Строка, Разделитель);
   КонецЦикла;
   
   Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
       Результат.Добавить(Строка);
   КонецЕсли;
   
   Возврат Результат;
   
КонецФункции
41 Случайный прохожий
 
18.02.13
10:54
(17) Поле "Отзыв о практике" (так-же как и "Задачи на практику") - сделай многострочным. Оценку перемести куда-нибудь в шапку на самое видное место и по умолчанию заполняй хотя бы двойкой (а то что это за оценка "0"??)
42 Cube
 
18.02.13
10:54
+(39) В реквизиты формы нужно добавить реквизит "ДвоичныеДанныеОбработки" с типом "Произвольный".
43 Cube
 
18.02.13
10:54
+(42) И Реквизит "ЗаписатьМакет" с типом "Булево".
44 Случайный прохожий
 
18.02.13
10:59
Cube, вот взял и девушку спугнул... (((
45 Cube
 
18.02.13
11:09
(44) У так УФ не для слабонервных)))
46 Julia_S12
 
18.02.13
12:04
нет нет..я тут:)
47 Julia_S12
 
18.02.13
12:05
я тут разбираюсь что вы мне посоветовали:)
48 Cube
 
18.02.13
12:11
(47) Ты погоди. Сейчас самое главное раз и навсегда решить: файлы с резюме должны храниться в базе или в папке на сервере?
Я привел пример для хранения в базе. Если хранить в папке на сервере, то код намного проще, примерно как в (34).
49 Julia_S12
 
18.02.13
12:17
давай чтоб на сервере
50 Julia_S12
 
18.02.13
12:17
в базе если этож весить она потом много будет, так же??
51 Cube
 
18.02.13
12:20
(50) Ну, у каждого способа свои плюсы и минусы.
Допустим, при хранении на сервере, можно папку стереть "нечаянно", но зато можно посмотреть файл не открывая 1С...
52 Cube
 
18.02.13
12:21
(49) Если на сервере, то в базе тебе нужен просто реквизит с типом "Строка" неограниченной длины, в котором ты будешь хранить путь до файла. Сейчас накидаю простой пример.
53 Julia_S12
 
18.02.13
12:23
давай, жду:)
54 Julia_S12
 
18.02.13
12:26
т.е когда пользователь будет выбирать вставляемую картинку этот путь будет копироваться в эту строку, правильно? а как в  базе отображаться будет?? в видде ссылки? И можно ещё раз сказать как сделать выбор..чтоб выскакивало окошко выбора....я ж чайник:) Пока что :)
55 Cube
 
18.02.13
12:32
+(52) Вот обработка: http://files.mail.ru/C536707A04D843D48ED99A4D4D79094D

Вот её модуль формы (на всякий случай):


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

&НаКлиенте
Процедура ПутьДоФайлаОткрытие(Элемент, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   КомандаСистемы("explorer " + Объект.ПутьДоФайла);
   
КонецПроцедуры //ПутьДоФайлаОткрытие()
56 Cube
 
18.02.13
12:33
(54) В базе будет просто строка храниться. Если надо где-то отобразить, то при любом способе хранения нужно ещё код отображения писать.
57 Julia_S12
 
18.02.13
12:35
а ты знаешь этот код??:)
58 Cube
 
18.02.13
12:37
(57) Глупый вопрос :)
После прочтения (39) у тебя разве не возникло такого ощущения? :)
59 Julia_S12
 
18.02.13
12:39
так..ну сейчас я разбирусь немного и напишу что я поняла из всего этого:)
60 Cube
 
18.02.13
12:42
(59) Да да, ты сначала сделай одно, а потом уже хватайся за другое)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший