Имя: Пароль:
1C
1С v8
Рисунок на таб доке и веб клиент
0 Paradox
 
11.03.13
10:32
Привет всем, если кто сталкивался с данной пролемой, посоветуйте как решить, пожалуйста.
Программно рисую на таб.доке линиями фигуру, сохраняю данный таб.док  в реквизит с типом Хранилище. (Это все справочник)
Далее запросом выбираю данные из этого справочника и вывожу в новый таб.док данные из хранилища. получается нечто похоженее на галерею чертижей. Вывожу так: получаю в запросе реквизит с типом "хранилище значений", программно создаю область и вывожу в эту область полученный таб док из хранилища. Все это разумеется в цикле по записям справочника. Получаем галерею чертежей. Но при выводе рисунок то не отображается, то сильно смещается вправо, вообще не понятно почему так. В тонком клиенте все работает отлично а в веб клиенте - вот такая беда.
Заранее благодарю.
1 Paradox
 
11.03.13
10:33
Рисунок рисую путем добавления линий на таб.док
2 Paradox
 
11.03.13
11:02
ап
3 sikuda
 
11.03.13
11:18
Приведи пример кода твоей идеи. Я тоже мучаюсь с графиками, но с другой стороны... http://sikuda.ru/?p=18
4 Paradox
 
11.03.13
11:41
&НаСервере
Процедура ВыполнитьЗаполнениеГалереиСервер()
   Макет  = Обработки.осиВыборНоменклатуры.ПолучитьМакет("Макет");
   Чертеж = Макет.получитьОбласть("Чертеж");
   
   Запрос = Новый Запрос();
   Запрос.Текст =
   "ВЫБРАТЬ
   |    осиЧертежи.Ссылка,
   |    осиЧертежи.Чертеж,
   |    1 КАК Порядок,
   |    NULL КАК ДатаСозданияЧертежа
   |ИЗ
   |    Справочник.осиЧертежи КАК осиЧертежи
   |ГДЕ
   |    НЕ осиЧертежи.ПометкаУдаления
   |    И осиЧертежи.Клиент = &Клиент
   |    И осиЧертежи.ВидИзделия = &ВидИзделия
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    осиЧертежи.Ссылка,
   |    осиЧертежи.Чертеж,
   |    0,
   |    осиЧертежи.ДатаСозданияЧертежа
   |ИЗ
   |    Справочник.осиЧертежи КАК осиЧертежи
   |ГДЕ
   |    НЕ осиЧертежи.ПометкаУдаления
   |    И осиЧертежи.Клиент = &ПустойКлиент
   |    И осиЧертежи.ВидИзделия = &ВидИзделия
   |
   |УПОРЯДОЧИТЬ ПО
   |    Порядок,
   |    ДатаСозданияЧертежа";
   Запрос.УстановитьПараметр("ВидИзделия",    Объект.Изделие);
   Запрос.УстановитьПараметр("ПустойКлиент",    Справочники.осиКлиенты.ПустаяСсылка());
   Запрос.УстановитьПараметр("Клиент",        Объект.Клиент);
   Выборка = Запрос.Выполнить().Выбрать();
   Галерея.Очистить();
   Галерея.ТолькоПросмотр = Истина;
   Пока Выборка.Следующий() Цикл
       ТабДок = Выборка.Чертеж.Получить();
       Если 1=0 Тогда
           ТабДок = Новый ТабличныйДокумент;
       КонецЕсли;
       Область = ТабДок.Область("R1C1:R6C3");
       Область.Заполнение=ТипЗаполненияОбластиТабличногоДокумента.Параметр;
       Область.Расшифровка = Выборка.Ссылка;
       Область.Текст = Выборка.Ссылка.Наименование;
       Область.Объединить();
       
       ОбластьМакета=ТабДок.ПолучитьОбласть("R1C1:R6C3");
       Галерея.Вывести(ОбластьМакета);
   КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   ВыполнитьЗаполнениеГалереиСервер();
   ВыполнитьПервоначальноеЗаполнениеСервер();
КонецПроцедуры
5 Paradox
 
11.03.13
11:42
в тонком - все норма работает, а в веб - косит рисунки вправо
6 Paradox
 
11.03.13
11:43
Это код по формированию галереи чертежей в элемент формы Галерея.
Чертеж - реквизит справочника с типом ХранилищеЗначений
7 Paradox
 
11.03.13
11:45
Рисунок делаю программно, на форме справочника
8 Paradox
 
11.03.13
11:45
&НаКлиенте
Процедура ВыполнитьПостроениеГеометрииКлиент()
   Масштаб = 5;
   ОчиститьЧертеж();
   темпЛево = 5;
   темпВерх = 5;
   текУгол = ?(Объект.ПоЧасовойСтрелке, -Объект.НачальныйУгол, Объект.НачальныйУгол);
   Для каждого Стр Из Объект.ПараметрыИзделия Цикл
       Линия = Просмотр.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Прямая);
       Линия.Лево = темпЛево;
       Линия.Верх = темпВерх;        
       
       УголВРадианах = ИзГрадусовВРадианы(текУгол);
       Линия.Ширина = Стр.Длина * cos(УголВРадианах)/Масштаб;
       Линия.Высота = -Стр.Длина * sin(УголВРадианах)/Масштаб;                    
       темпВерх = Линия.Верх + Линия.Высота;
       темпЛево = Линия.Лево + Линия.Ширина;
       текУгол = текУгол + ?(Стр.ПоЧасовойСтрелке, -Стр.Угол, Стр.Угол);
       
       //Надпись = Чертеж.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
       //Надпись.Текст = ""+Стр.Длина;
       //Надпись.Лево = темпЛево/2;
       //Надпись.Верх = темпВерх-5;        
       //Надпись.ГраницаСверху    = Ложь;
       //Надпись.ГраницаСлева    = Ложь;
       //Надпись.ГраницаСнизу    = Ложь;
       //Надпись.ГраницаСправа    = Ложь;
       //Надпись.Ширина = 10;
       //Надпись.Высота = 3;                    
   КонецЦикла;
КонецПроцедуры
9 Paradox
 
11.03.13
11:46
&НаКлиенте
Функция ИзГрадусовВРадианы(УголВГрадусах)
   УголВРадианах = 3.14 /180 * УголВГрадусах;
   Возврат УголВРадианах;
КонецФункции
10 sikuda
 
11.03.13
12:31
По табличному документу что там происходи не скажу. Посмотри в разный браузерах. Может есть какая специфика...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший