Поиск по блогу

Showing posts with label Программы. Show all posts
Showing posts with label Программы. Show all posts

Monday, May 19, 2014

Модуль горизонтального выпадающего меню для Joomla 2.5 и 3.x

Данный модуль предназначен для формирования меню в публичной части сайта. Пункты меню верхнего уровня расположены горизонтально. Вложенные меню выпадают вниз и вправо при наведении мыши на соответствующие пункты меню верхнего уровня. Уровень вложенности не ограничен.
Эффект выпадающего меню достигается исключительно с помощью HTML и CSS без использование JavaScript
Модуль совместим с Joomla 2.5.x и 3.x
По сути модуль является слегка измененным стандартным модулем меню, взятым из 3-й Joomla. CSS-стили намеренно добавлены помнимому, только для обеспечения функционала, что бы придать максимум универсальности модулю. Внешнее оформление пунктам меню рекомендую прописывать в CSS-стилях шаблона сайта.

Часто употребляемые наименования классов:
  • .horizmenu a - Все ссылки в меню, здесь можно задать общий для всех ссылок цвет фона, границ, формат шрифта. Для всех ссылок установлен блочный режим отображения - поэтому здесь можно задавать отступы, ширину и высоту;
  • .horizmenu .level-n a - Ссылки в меню соответствующего уровня. В ".level-n" вместо "n" нужно подставить соответствующую цифру (напр. ".level-1", ".level-2" и т.д.);
  • .horizmenu .active > a - "Активные" ссылки меню - то есть родительские для текущего пункта;
  • .horizmenu .current a - Текущий пункт меню - пункт меню, ссылающийся на текущую страницу в вашем броузере.
Скачать последнюю версию модуля можно отсюда: mod_horizmenu
PS: Скачивание идет с домена powerhost.pw, то что это мой домен можно проверить по Whois.

Надежный платный виртуальный хостинг сайтов  Подробнее

Wednesday, May 6, 2009

Пересчет курсов валют

Обработка "Пересчет курсов валют" предназначена для автоматизации расчета курсов и кратностей валют на основе других.
В случаях когда расчеты с контрагентами производятся в условных единицах по курсу отличному от ЦБ (например курс + %), для автоматизации учета удобно создавать дополнительную валюту, рассчитывая для нее соответствующий курс. Скачать обработку можно отсюда

Tuesday, February 10, 2009

Загрузка текстового файла в 1С8

После накопления некорого опыта программирования, возникла мысль складывать более-менее законченные фрагменты кода в отдельные текстовые файлы, дляприменения их в будующем. Такие фрагменты кода я для себя называл "технологиями". Здесь выложена первая такая технология.
Название: ЗагрузкаТекстовогоФайлаВТаблицуЗначений 1.0.0
Описание: Считывает данные из текстового файла, адрес которого берется из ГПМ мИмяФайла. Ищет колонки по разделителю ";". Полученные данные заносит в ГПМ мДанныеИзФайла типа ТаблицаЗначений. В случае ошибки в данных устанавливает ГПМ мОшибка в Истина. Для работы требуется ГПМ мПрочиеНастройки типа Структура с полем КоличествоКолонок типа Число содержащее максимальное количество колонок в файле. Также при наличие ГПМ мДанныеИзБазы в нее будет записана ТаблицаЗначений;
Использует: ВедениеЛога 1.0.0
Комментарии: Данная технология будет полезна при необходимости загрузки данных из внешнего текстового файла, имеющего табличную структуру, например csv. При работе испольщуется несколько глобальных переменных, что вызвано условиями первоначальной разработки программы. Также происходит вызов внешней процедуры, котора должна записывать сообщения в лог. Технологию для ведения лога выложу позже, пока что эти вызовы можно закомментировать или заменть стандартными выводами сообщений. На выходе будет получена таблица значений (опять-таки в глобальной переменной) , содержащая столбец "Индекс" с номерами строк и столбцы А0-Аn, где n это количество столбцов -1. Все записи в таблице имеют тип "Строка". Посмотреть исходный текст процедуры можно здесь.

Thursday, June 19, 2008

Програмная работа с файлами в 1С:Предприятие 8

Для реализации пользовательского интерфейса работы с файлами в 1С8 можно пользоваться следующими процедурами.
Для отображения имени файла в форме, с которой работает пользователь, разместим на ней элемент управления "ПолеВвода" (Имя: ИмяФайла; ТипЗначения: Строка; Длина: Неограниченна, КнопкаВыбора, КнопкаОткрытия, КнопкаОчистки: Истина);

Определим обработчики для этого ЭУ:

// Обработчик НачалоВыбора
Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)

ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.Заголовок = "Выберите файл для импорта";

// Здесь xxo и xx1 расширения файлов, которые пользователь сможет выбрать
ВыборФайла.Фильтр = "Файл (*.xx0)*.xx0Файл (*.xx1)*.xx1";

Если НЕ ВыборФайла.Выбрать() Тогда
Возврат;
КонецЕсли;

ПолеВвода.Значение = ВыборФайла.ВыбранныеФайлы[0];

КонецПроцедуры // ИмяФайлаНачалоВыбора

// Обработчик Открытие
Процедура ИмяФайлаОткрытие(Элемент, СтандартнаяОбработка)

Попытка
ЗапуститьПриложение(Элемент.Значение);
Исключение
Предупреждение("Не удалось открыть файл.");
КонецПопытки;

КонецПроцедуры // ИмяФайлаОткрытие

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

// Выполняет действия над текстовым документом
// Получает: ИмяФайла-Строка-Полное имя открываемого файла
Процедура ОбработатьТекстовыйДокумент(ИмяФайла)

ТекстДок = Новый ТекстовыйДокумент;

Попытка
ТекстДок.Прочитать(ИмяФайла);
Исключение
Предупреждение("Файл не найден");
Возврат;
КонецПопытки;

// Дальнейшие действия надокументом...

КонецПроцедуры // ОбработатьТекстовыйДокумент

Для документа XML напишем:

// Выполняет действия над XML-документом
// Получает: ИмяФайла-Строка-Полное имя открываемого файла
Процедура ОбработатьXMLДокумент(ИмяФайла)

ЧтениеXML = Новый ЧтениеXML;

Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
Предупреждение("Файл не найден");
Возврат;
КонецПопытки;

Пока ЧтениеXML.Прочитать() Цикл

// Обработка узла XML...

КонецЦикла;

КонецПроцедуры // ОбработатьXMLДокумент

Если-же мы открываем COM-соединение, например с MS Excel, то код может быть примерно таким:

// Открывает COM-соединение и выполняет над ним действия
// Получает: ИмяФайла-Строка-Полное имя файла запуска приложения
Процедура ПолучитьДанныеЧерезCOM(ИмяФайла)

Состояние("Попытка открытия файла...");
Попытка
Excel = Новый COMОбъект("Excel.Application");
WB = Excel.Workbooks.Open(ИмяФайла);
WS = WB.Worksheets(1); //указываем номер листа - 1
arr = WS.UsedRange.Value;
WB.Close(0);
Исключение

Предупреждение("Файл не найден");
Возврат;
КонецПопытки;

Состояние("Обработка данных...");

МассивКолонок = arr.Выгрузить();
ТаблицаСДанными = Новый ТаблицаЗначений;
ОписаниеТипов = Новый ОписаниеТипов("Строка, Число");
ТаблицаСДанными.Колонки.Добавить("Колонка0", ОписаниеТипов);

Для инд=0 По МассивКолонок[0].ВГраница() Цикл
НоваяСтрокаДанных = ТаблицаСДанными.Добавить();
НоваяСтрокаДанных.Колонка0 = МассивКолонок[0][инд];
КонецЦикла;

Для инд=1 По МассивКолонок.ВГраница() Цикл
НоваяКолонкаДанных = ТаблицаСДанными.Колонки.Добавить("Колонка"+Строка(инд), ОписаниеТипов);
ТаблицаСДанными.ЗагрузитьКолонку(МассивКолонок[инд], НоваяКолонкаДанных);
КонецЦикла;

// Обрабатываем полученную таблицу значений

КонецПроцедуры // ПолучитьДанныеЧерезCOM

Wednesday, December 26, 2007

1С 8.x и Web-расширение.

В связи с бурным развитием бизнеса в интернет все более актуальной становится проблема получения удаленными пользователями доступа к информационным ресурсам предприятия. В связи с широкой распространенностью платформы 1С:Предприятие потребность пользователей в удаленном доступе к ее базам весьма велика. На данный момент времени существуют несколько способов решения этой проблемы, здесь пойдет речь о связке 1С:Предприятие 8.x + Web-расширение.

На момент написания статьи текущей версией Web-расширения для настольных компьютеров была 8.0.9.1, выпущенная 28.05.2007. Вкратце об этом продукте:
Web-расширение это звено между 1С:Предприятие и Internet Information Server, обеспечивающее доступ к базе на чтение и запись посредствам технологии ADO.NET и COM-соединения. В комплект поставки также входит набор серверных элементов управления для построения интерфейса пользователя, мастера для быстрого создания визуальных форм объектов БД и утилита импорта метаданных конфигурации 1С.
Среди преимуществ этого решения следует отметить доступ к базе данных на чтение и запись в реальном времени, большого количества пользователей, без необходимости приобретения дополнительных ключей к программе. Также стоит отметить, что каждый пользователь работает со своим собственным интерфейсом, расположенным на его компьютере, что снижает требования к серверу и каналам передачи данных.
Web-расширение подойдет для активно обновляемых баз с большим количеством удаленных пользователей, когда из-за проблем с коллизиями создавать распределенную БД нецелесообразно.
Недостатками же являются необходимость в собственном IIS со всеми вытекающими отсюда проблемами интернет-безопасности. Кроме того, при реализации Web-приложения не удается воспользоваться многими наработками, реализованными в конфигурации 1С. В частности приходится заново разрабатывать интерфейс пользователя (который может быть достаточно сложен) напрямую недоступны обработки, с помощью которых реализована достаточно большая часть функционала типовых конфигураций. Основную часть работы приходится выполнять на языке C# в Microsoft Visual Studio, то есть разработчик должен иметь в своем распоряжении и уметь пользоваться как минимум двумя инструментами. С элементами управления, которые поставляются с Web-расширением и которые призваны облегчить жизнь разработчика тоже много проблем. Недостаток документации и неочевидная логика работы сводят на нет все предполагаемые преимущества от их использования. Созданные с помощью мастеров формы работают очень медленно и сильно загружают работу сервера. Поставляемые вместе с некоторыми типовыми конфигурациями Web-приложения сильно ограничены в своих возможностях и являются скорее демонстрационными примерами, нежели законченными приложениями.

Мое личное впечатление, что технология Web-расширения даже будучи ориентированной на разработчиков, а не на конечных пользователей является еще очень "сырой" и для работы с ней требуется большой опыт работы с .NET. Человеку, делающему первые шаги в ASP.NET видимо проще всего будет максимально ограничить в своих проектах ее использование.

 
Google+