image_pdfimage_print

Жизнь на Марсе и ActiveX в тонком клиенте Windows 1C 8.3.6

Доброго времени суток!

Есть ли жизнь на Марсе, это пусть исследуют ученые, а мы займемся земными вещами и попытаемся ответить на вопрос: Если ActiveX в тонком клиенте Windows?

Ортодоксы 1С сразу приведут ссылку на ITS: http://its.1c.ru/db/metod81#content:3266:1 и будут неправы.

Мы люди недоверчивые, словам не верим. Внутреннее устройство платформы 1С это тайна за семью печатями. Которой получается только пользоваться, но не изучать. Поэтому возьмем ПолеHTML и посмортим есть ли там ActiveX. В Windows это поле основано на технологиях Microsoft IE. И внутри 1С это поле показывает версию IE 7, значит ActiveX есть.

Сейчас глядеть в старые версии IE, уже не модно и не нужно, но историю надо знать. В IE7 мир ActiveX хотели сделать более безопасными и поэтому ввели два понятия:
— «Безопасные ActiveX» — очень безопасные, от известных производителей (см. ниже) работают везде.
— KillBit — установлен для убийственно небезопасных ActiveX (пример — ADODB.Stream). Отключаем по умолчанию.
И в сам движок IE добавили безопасный режим выполнения — http://msdn.microsoft.com/en-us/library/bb250462%28v=vs.85%29.aspx#wpm_fliwl

Вот первый тип ActiveX перешел и работает в тонком клиенте Windows 1С! А вы ожидали webkit или blink. Я вместе с вами.

Приведем список самых популярных безопасных ActiveX:

  • MS Media player 9 — 6BF52A52-394A-11d3-B153-00C04F79FAA6
  • MS Media player 6.4 — 22D6f312-B0F6-11D0-94AB-0080C74C7E95
  • Adobe Player — D27CDB6E-AE6D-11cf-96B8-444553540000
  • Adobe PDF — CA*A9780-280D-11CF-A24D-444553540000

Они у вас включены по умолчанию. Не доверяйте — поверьте.

Если вы не доверяете ActiveX  на своем компьютере, можно их временно отключить http://support.microsoft.com/kb/240797/ru или удалить http://support.microsoft.com/kb/154850/ru

 

Р.S.

1С последнее время упорно лезет в интернет.  Уже предлагая использовать только своего тонкого клиента 1С. А если она такая популярная, то сразу возникает вопрос с безопасностью такой работы. С другой стороны все мы привыкли считать Windows не безопасной системой. А антивирус и другая защита у нас входит в обязательный комплект установки после покупки компьютера. И хотя в плане безопасности Microsoft сделала правильные шаги, но осадочек остался.

Думайте сами и тестируйте безопасность ваших решений!
Для ленивых обработки 1С на infostart.ru http://infostart.ru/public/235751/

Пропуски в графиках 1С.

Доброго времени суток!

Никак не понимал как делаются отступы и пропуски в графиках 1С. Но все оказалось намного проще чем я думал.
У графика есть два специальных свойства
БазовоеЗначение = Значение(0, 315…)
ПропускатьБазовоеЗначение = Истина или Ложь

 

Если мы в точках где не должно быть графика ставим Значение равное Базовое значение и для всего графика ПропускатьБазовоеЗначение = Истина. Получаем то что нужно.

ПробелыВГрафиках

Источник:
http://www.forum.mista.ru/topic.php?id=682997

 

В 1С 8.3.1 появились плавные линии графиков. Это новый свойства: РежимСглаживания(Булево) и НатяжениеСглаживания(0..100). Теперь у нас графики более плавные.

И для полной картины установим максисальное и минимальное значение, которые ведут себя несколько странно:

LinesMaxMin

И под конец рецепт установки вертикалых подписей в шкале принудительно:

VertLabels

Градиенты градиенты, а я маленький такой.

Доброго времени суток!

Рисование графики в 1С с помощью javascript библиотеки Raphael затягивает. И сегодня мы более подробно осветим тему заполнение цветом различных фигур и использовании градиентов.

Начальная обработка для 1С на infostart: http://infostart.ru/public/191248/

 

А теперь в поле для заполнения кода вставим:

Ну подумаешь красный шар. Эка невидаль. Его нарисовать можно и другими средствами. Их целый вагон.
Хорошо. А теперь последнюю строку заменим на другую:

Нравиться мне такая магия. Всего одна строка и немного чисел, а вид стал приятный для глаз. Можно попробовать прямо в браузере

red_ball

В документации к Raphael написано:

Линейный градиент пишется в формате: “‹угол›-‹цвет›[-‹цвет›[:смещение (‹offset›]]*-‹цвет”, например: “90-#fff-#000” — наклон 90° градиент от белого к черному или “0-#fff-#f00:20-#000” — наклон 0° градиент от белого через красный (на 20%) до черного.
Радиальный градиент записывается: “r[(‹fx›, ‹fy›)]‹цвет›[-‹цвет›[:смещение (‹offset›]]*-‹цвет”, например: “r#fff-#000” — градиент от белого к черному или “r(0.25, 0.75)#fff-#000” градиент от белого до черного с точки фокусировки на 0.25, 0.75. Точка фокуса координаты находятся в диапазоне 0..1. Радиальные градиенты могут быть применены только к кругу и эллипсу.

Это достаточно для работы, но в современных сложных технологиях надо понимать основы. Поэтому посмотрим на чем основана такая раскраска элементов. Посмотрим исходный код в браузере IE10:

<svg xmlns=»http://www.w3.org/2000/svg» style=»left: 0px; top: 0px; overflow: hidden; position: absolute;» width=»640″ height=»480″ version=»1.1″ xmlns=»http://www.w3.org/2000/svg»><desc>Created with Rapha?l 2.1.0</desc>
<defs>
<radialGradient id=»0r_0.25__0.75__f00-_400″ fx=»0.25″ fy=»0.75″>
<stop stop-color=»#ff0000″ offset=»0%» />
<stop stop-color=»#440000″ offset=»100%» />
</radialGradient>
</defs>
<circle style=»opacity: 1; fill-opacity: 1;» opacity=»1″ fill=»url(#0r_0.25__0.75__f00-_400)» fill-opacity=»1″ stroke=»#000″ cx=»200″ cy=»200″ r=»150″ />
</svg>

Здесь я советую на будущее погрузиться и узнать немного о CSS3 и SVG для градиентов: htmlbook, www.w3schools.com

 

И сделаем имитацию, как это работает внутри тонкого клиента 1С. Переустанавливаем(F12) режим браузера в совместимый и режим документов в IE7:

<?xml:namespace prefix = «rvml» ns = «urn:schemas-microsoft-com:vml» />
<rvml:shape style=»HEIGHT: 1px; POSITION: absolute; LEFT: 0px; FILTER: ; TOP: 0px; WIDTH: 1px» raphael=»true» raphaelid=»0″ coordsize = «21600,21600» filled = «t» fillcolor = «red» stroked = «t» strokecolor = «black» path = » ar1080000,1080000,7560000,7560000,4320000,1080000,4320000,1080000 x e»><rvml:stroke opacity = «1» miterlimit = «8»></rvml:stroke>
<rvml:skew on = «t» matrix = «1,0,0,1,0,0» offset = «-.5,-.5»></rvml:skew>
<rvml:fill rotate=»false» type = «gradientTitle» color2 = «#400» angle = «0» focus = «100%» focusposition = «.25,.75» focussize = «0,0» method = «none» colors = «0 red»></rvml:fill>
</rvml:shape>

Технологии Microsoft VML и Raphael помогают нам, получить практически такую-же картинку, что и в предыдущем примере.

Но одно разочарование нас все-таки ждет. В тонком клиенте 1C Linux градиент не работает. Может там просто webkit старый? Ну как обычно поворчим на 1С…

id=»0r_0.25__0.75__f00-_400″ fx=»0.25″ fy=»0.75″>

Воронка продаж современными средствами SVG графики.

Доброго времени суток!

Задела меня статья на мисте о воронке продаж «Воронка продаж типовыми средствами 1С (без использования Html, .Net etc.)» Задела не тем, что там все хорошо и есть что изучать, а тем что большинство не изучая методы и средства конкретной реализации пытаются найти способы реализовать графику средствами исключительно внутри 1С. Не объясняя и не показывая поэтапно, как сделана эта графика. На какой библиотеке она основана и как реализована. А тайную информацию про ImageMagik читаем в руководстве администратора стр.238. Если посмотреть на эту графику 1C в веб клиенте через средства разработки (есть уже во всех браузерах), то легко заметим что график это просто картинка:

voronka0

Поэтому в 1С до 8.3.3.721 графики всегда строются на сервере и передаются картинкой. А хотелось бы равняться на современные тенденции и строить графики на клиенте передавая с сервера только данных для построения графика.

Поэтому мы пойдем по другому пути. Пойдем от стандартной графики в интернете основанной на Scalable Vector Graphics (SVG) и затем ее уже будем реализовывать в 1С в поле HtmlДокумента.

Для начала прочитаем вступительную статью про SVG графику например: http://ruseller.com/lessons.php?rub=28&id=1602

Итак, начнем по шагам:

  1. Сначала нарисуем эллипсы, из которых будет состоять наша воронка (из оригинала).  Точнее только верхная крышка у нас эллипс. В htmlполе надо записать в body следующий код:
    <svg viewBox=»0 0 1400 1400″ xmlns=»http://www.w3.org/2000/svg» version=»1.1″>
    <ellipse cx=»200″ cy=»100″ rx=»100″ ry=»20″
    style=»fill:yellow;stroke:purple;stroke-width:1″/>
    </svg>В 1С в тонком клиенте Windows 8.3.3.721 так не будет работать, в вэб клиенте все работает. В библиотеке raphaeljs для старого движка IE есть методы работы с SVG элементами. Добавляем в функцию onload:

    voronka1
  2. Остальные уровни это не полные эллипсы а только нижние дуги от эллипсов. В htmlполе надо записать в body следующий код:

    <svg viewBox=»0 0 1400 1400″ xmlns=»http://www.w3.org/2000/svg» version=»1.1″>
    <path d=»M 100 200
    A 100 20 0 1 0 300 200″
    fill=»none» stroke=»red» stroke-width=»1″ />
    </svg>
    В 1С в тонком клиенте Windows 8.3.3.721 так не будет работать, в вэб клиенте все нормально. В библиотеке raphaeljs для старого движка IE есть методы работы с SVG элементами. Добавляем в функцию onload:

    voronka2
  3. Теперь построим боковые стороны от вернего полуэлипса до нижнего. В htmlполе надо записать в body следующий код:
    <svg viewBox=»0 0 1400 1400″ xmlns=»http://www.w3.org/2000/svg» version=»1.1″>
    <path d=»M 50 100
    A 150 20 0 1 0 350 100
    L 300, 200
    A 100 20 0 0 1 100 200Z»
    fill = «none» stroke=»red» stroke-width=»1″ />
    </svg>
    В 1С в тонком клиенте Вы сами понимаете… Добавляем в функцию onload и градиент раскраски для оживления (fill: «0-#f00-#400»):

    voronka3
  4. Теперь собираем весь код для обработки для библиотеке Рафаэля:
    [wpdm_file id=12]
    Код для вставки:

    voronka4

    Получилось патриотично!

Да мы не рассказали, а как так волшебным образом SVG графика заработала в старом движке. Просто раньше у Microsoft развивала библиотеку VML и ее приоритетная реализация работает со старыми движками. А библиотека raphaeljs позволила нам сделать шаг от старых браузеров в новые открытые стандарты HTML.

Для очень ленивых обработка для 1С (требует подключение к интернету — берет скрипты с этого сайта) на infostart.ru http://infostart.ru/public/199275/

Отчеты в фоновом режиме 1С

Источник: http://programmist1s.ru/otchetyi-v-fonovom-rezhime-1s/

Простой пример кoда:

ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);

Для очень длительных и сложных отчетов это простой метод запустить их и оставить программу доступной для пользователя.

Есть способ сделать тоже не для системы компоновки данных, но это получиться намного сложнее.
 

Когда размер имеет значение. Определение размера поля html в 1С в пикселях.

Доброго времени суток!

Играясь с полем html внутри тонкого клиента 1с, встала задача определение его размеров. Именно реальных размеров в пикселях, а не виртуальных в символах, которые устанавливаются в 1С. Эти размеры могут меняться. Меняться могут как самой программой, так и пользователями. Надо обрабатывать событие изменение размера и менять вывод поля. Привязывать решение внутри самой 1С не хотелось. 1С это просто вэб-клиент привело к следующему решению:

  1. Определяем размер для разных режимов
  2. Проверяем на 0.
  3. Инициализация элемента html проходит несколько этапов, но именно последний выдаст нам не нулевой размер контейнера.
  4. Вызываем этот код в функциях window.onload = function() и window.onresize = function() в javascript.

Кусок кода на javascript для html поля:

P.S. Вот так можно потихонечку можно обжиться внутри 1С с программирование на javascript.

Расшифровки в 1С из графиков Рафаэля(raphaeljs)

Доброго времени суток!

Читая на досуге писание библиотеки Raphaelsj — RaphaëlJs Tutorial: http://cancerbero.mbarreneche.com/raphaeltut/

Задумаемся над интеграцией графиков Рафаэль и 1С. Что нам хочется? Хочется, чтобы нажатие на элемент графика можно было отловить в 1с и точно сказать на каком элементе мы нажали. Дальше внутри кода 1С мы сможем сделать что нам надо. Можно открыть форму пересчитать суммы или обновить график.

Возьмем обработку из предыдущей статьи Моя “Доминикана” или Я и Рафаэль.

В поле для кода наберем или скопируем следующий пример:

Наши идентификаторы элементов графика подчеркнуты. В коде 1С напишем обработку нажатия на поле HTML.

И все начинает работать!
Наложение фигур работает правильно.
Но есть нюанс, который вы наверно сразу заметили. Во всех браузерах(вэб клиентах) границы фигур определяются правильно. В тонком клиенте Windows границы расширяются до квадрата содержащего фигуру. Плохо, но видимо движок в тонком клиенте очень специфичный. Бороться с этим не получиться, просто будем знать специфику.

Второй метод заключается в инициализации внутри htmlПоля события click. Пример:

Но не все так безоблачно становиться с новыми версия 1С 8.3. Передача параметров становиться нестабильной. Для работы во всех версиях 1С прдлагаю использовать строковой параметр window.event.data и почутать данные в 1С следующим образом:

 

P.S.

Так постепенно 1С становиться понятнее. Хотя некоторые ответственные товарищи утверждают, что это магия

Моя «Доминикана» или Я и Рафаэль.

Доброго времени суток!

Привет ‘Доминикане’ в Тайланде (http://infostart.ru/dominikana/) из пыльной и грязной Москвы.

dominicana1C-2

Конечно черепашка здесь не причем. А Вы о ком подумали? Я подумал вместе со статистикой. Нет сегодня мы попробуем использовать очень интересную библиотеку на JavaScript. Называется она Raphaël [‘ræfeɪəl] . Она достаточно популярна, имеет хорошую документацию и самое главное выводит графики внутри 1С. Спасибо создателю библиотеки Dmitry Baranovskiy за его открытую лицензию и незабываем его благодарить.

Видео с разработчиком:

http://events.yandex.ru/events/yac/2012/talks/371/

 

Кто не хочет копаться во внутренностях представляем готовые обработки работающие с этим сайтом:

http://infostart.ru/public/190734/

http://infostart.ru/public/191306/

http://infostart.ru/public/191307/

 

А тех, кто засучил рукава и не боиться javascript кода. Прошу. Обработка на infostart.ru http://infostart.ru/public/191248/.

Пример анимации

Смотрим. Нравиться? Есть поле для изменения кода на javascript, начнем экспериментировать…

 

Примеры кода для экспериментов. Вставляйте в поле для кода и нажимайте обновить:

Пример 1: Начало

raphaeljs1

Пример 2: Анимация

raphaeljs2
Пример 3: Отслеживание событий

raphaeljs3
Пример 4: Псевдотрехмерность

raphaeljs4
Библиотека достаточно маленькая, это хорошо. Но примеры в ней я бы назвал слишком низкоуровневыми. Поэтому автор развивает дополнительный проект http://g.raphaeljs.com/

Р.S. Вот так незаметно для себя я стал поклонником этой библиотеки…

 

Работа динамического списка в 1С

Доброго времени суток!

Задумываясь над выводом больших и огромных данных в 1С типа полного журнала документов. Понимаешь,  что получить ты его сможешь, а показать все сразу, ну никак не получиться. Только  если Вы не безумный печатный маньяк и Вас не уволили с предыдущего места работы за растрату бумаги.

А как сама 1С выводит такие большие списки. Можно же просто открыть журнал расходных накладных. Браузер нам в руки, а там есть средства разработчика. Будем смотреть:

На реальных данных не смогу показывать, а в демонстрационных базах 1С данных немного. Лучше посмотреть на своей тестовой базе. Открываем какой-нибудь список. Пролистываем его вниз и о чудо — получаем вторую порцию данных:

Получается очень логично, вначале делаем быстрый отклик и  показываем начало списка,  а по мере скроллинга подтягиваем ставшиеся данные.

Да это именно, то что 1С именует динамическим списком. Им не можно, а нужно пользоваться в 1С. Жаль, что внешнего API для него нет, да нам не привыкать…

Так, что: Знания — сила. Ф. Бекон (англ. философ)

HTML5 Canvas в 1С 8.3 или Google нам поможет.

Доброго времени суток!

Добрался я для написания маленьких тестов для 1С в плане web графики. Версии 1С 8.2.61 и 8.3.3.641.

Зайдем на http://www.w3schools.com/html/html5_canvas.asp и перенесем примеры в обработку 1С.

Скачать обработкe можно на инфостарте http://infostart.ru/public/174856

Результаты не радуют. 1С в Internet Explorer, как и в тонком клиенте Windows не работает ничего. Видно проверка в 1С идет именно на IE и все замещается и не работает. Без библиотеки excanvas.js она просто ругается, но и она не спасает. Все остальные браузеры показывают правильный результат. Видно руки 1С туда не дошли, как и в тонком клиенте на Linux.

HTML51CIE9
Меня 1C научила никогда не отступать от решения задачи, насколько сложной она не казалась с первого раза. Для этого надо понять, а как работает библиотека excanvas. Посмотреть на пример в http://infostart.ru/public/57648/. Да вспомнить, что до html5 Microsoft усиленно толкала свою систему VML (http://msdn.microsoft.com/en-us/library/ee384217%28v=vs.85%29.aspx). Вот она и прекрасно работает со старыми версиями движков IE. И excanvas это эмуляция функций обрисовки графиков html5 через эту систему. Значит 1С надо немного помочь. Посмотрев как эта библиотека работает в старых IE, получилось решение что нужно добавить в для 1С. Делаем дополнительный флаг «Довесок для 1С». Тестируем обработку HTML5-1С-min (см. вложение к статье). Ура, заработало. Делаем 1С ближе к HTML5.

Любителям «Такси» тоже сделаем картинку, пусть проверяютHTML51CThinkTaxiGood

Но таким методом не получиться протащить видео и звук в HTML5. Здесь мы отсылаем читателя к дальнейшим разработкам:  Звук и Видео на Windows.

 

И из дополнительного, что очень хочется сделать — показ катринок заменяя значение src в поле image.

СтраницаНТML = »
|< html >
|< head >
|< /head >
|< body >
|< div > Тест страницы < /div >
|< div > < img src='»+СсылкаНаКартинку+»‘/ > Тест картинки < / div >
|< / body >
|< / html > «;

А переменной СсылкаНаКартинку можно получить с помощью функций:

  • ПолучитьНавигационнуюСсылку
  • ПоместитьВоВременноеХранилище

И для полноты картины посмотрим как сама 1С выводит свои графики:

 

 

 

 

Просто делает динамически картинку во временном хранилище и ее показываем.