Обращение к элементам с помощью JQuery

jQuery позволяет легко получать доступ к любым элементам на странице (ссылкам, изображениями, блочным элементам, текстовым полям и т.п.). При этом нам не требуется писать длинные конструкции, как это делается, например, в JavaScript. Ниже – небольшое справочное руководство.

Читать далее →

Сброс паролей в 1С 8.1 (в файловой версии)

Бывают случаи, когда пароль безнадежно утерян и восстановить его не представляется возможным и его можно добыть только взломом или снятием пароля с пользователя. Как быть? Ниже я расскажу как сбросить или «взломать» пароль в 1С8 в файловом режиме работы.

Читать далее →

Множественное выделение и копирование в табличной части

Функция для копирования при множественном выделении

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

Процедура МножественноеКопирование(ТабличнаяЧасть)
    ВыделенноеВТаблице = ЭлементыФормы.ТабличнаяЧасть.ВыделенныеСтроки;

    Если ВыделенноеВТаблице.Количество() > 0 Тогда
        Для Каждого Стр из ВыделенноеВТаблице Цикл
            нСтр = ТабличнаяЧасть.Добавить();
            нСтр.Колонка1 = Стр.Колонка1;
            нСтр.Колонка2 = Стр.Колонка2;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

 

Таблица значений 1С

Что такое таблица значений 1С?

Таблица значений — это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы.

Читать далее →

Работа с датами в 1С

Дата в 1С один из примитивных типов данных в системе. Дата всегда имеет формат год, месяц, день, час, минута, секунда. Таким образом, переменная типа дата содержит не только дату, но и время.Читать далее →

Отправка формы и файлов через Ajax

В процессе разработки страницы оформления заказа печати через интернет появилась проблема — при нажатии кнопки «Добавить в корзину» надо было сохранить на сервер прикрепленный клиентом файл. В предыдущих версиях, разрабатываемого мной сайта, все было просто — у формы выставлялся enctype=»multipart/form-data», а с помощью функции move_uploaded_file() файл перемещался в нужное мне место.
Сейчас же процесс добавления товара в корзину я написал на ajax, но, к сожалению, javascript метод XMLHTTPRequest не позволяет отправлять на сервер файлы. Меня выручила библиотека ScriptJava (кстати, умеет не только отправлять файлы через ajax — переходите по ссылке, там Вы найдете описание на русском языке, примеры и саму библиотеку).

Итак, как организовать отправку файлов через ajax.

1. Подключить библиотеку ScriptJava:

http://scriptjava.net/source/scriptjava/scriptjava.js

2. «Нарисовать» форму и кнопку на ней для выбора файла, например:

<form id="test_form" method="post" enctype="multipart/form-data">
  <input type="file" name="upload_file" />
   <br /><br />
  button type="button" onclick="SendFile()">Отправить файл</button><br />
</form>

3. Написать функцию отправки файла, например:

function SendFile() {
  $$f({
    formid:'test_form',//id формы
    url:'ajax.php',
    onstart:function () {
      $$('status','начинаю отправку файла');
    },
    onsend:function () {
      $$('status', $$('status').innerHTML+'<br />файл успешно загружен');
    }
  });
}

Функцию взял с сайта разработчика, объясню в чем её суть:
formid — id нашей формы, он обязателен!
url — адрес на серверный скрипт который будет принимать файл
onstart — функция, которая выполняется при начале отправки файла на сервер
onsend — функция, которая выполняется после отправки файла на сервер
В примере, который я взял с сайта разработчика, в

<div id="status">

передается статус того, что сейчас происходит. Нажали кнопку, увидели — «Название файла, начинаю отправку файла», закончилась загрузка, увидели «Название файла, файл успешно загружен».
Мне этот пример не очень понравился, поэтому я убрал

<div id="status">

и при начале отправки файла на сервер стал показывать блок с gif картинкой-загрузки:

<div style = "display: none">
    <p style="font-size: 14px;">Загружаем ваш прикреплённый файл</p>
    <img style="margin: 10px;" src="/images/loader.gif"/>
</div>

В итоге моя функция получилась следующая:

[php]
function SendFile() {
$$f({
formid:’test_form’,//id формы
url:’ajax.php’,
onstart:function () {
$(«.loader»).show(); //Показали скрытый блок
},
onsend:function () {
$(«.loader»).hide(); //Скрыли блок
}
});
}
[/php]

И осталось нам написать функцию для получения ответа от сервера — содержимое файла ajax.php может быть таким:

<?php
  if($_FILES['upload_file']['size']>0) {
    echo '
      <script type="text/javascript">
      var elm=parent.window.document.getElementById("status");
      elm.innerHTML=elm.innerHTML+"<br />Получен файл '.$_FILES['upload_file']['name'].' размером '.$_FILES['upload_file']['size'].' байт";
      </script>
    ';
  }
?>

Смысл в том, что, если файлик у нас загрузился, т.е. размер файла больше 0 в функцию, которая выполняется после выполнения загрузки передается сообщение вида «Получен файл .имя файла. размером .размер файла. байт».
В моем случае мне это сообщение выводить не надо, поэтому оно играет больше отладочную роль 🙂

Есть один нюанс — после выполнения работы скрипта в таком виде, который представлен мной и, соответственно, на сайте разработчика, файл будет просто удален, потому что он остался «висеть» во временных файлах. Для того чтобы этого не происходило я доработал функцию для получения ответа от сервера:

if($_FILES['upload_file']['size'] &gt; 0) {

        $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
        $file_name_for_save = $_FILES['upload_file']['size'].'_'.$_FILES['upload_file']['name'];

        move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploaddir.$file_name_for_save);
}

Что у меня происходит:
1. В переменную $uploaddir сохраняю адрес куда буду сохранять файл
2. В переменную $file_name_for_save сохраняю будущее название файла в виде: размерфайла_названиефайланакомпьютере
3. Перемещаю из временных файлов в нужную мне директорию с нужным мне названием.

Вот и все — отправка формы и файлов через Ajax не так уж и сложна.

Плагин SyntaxHighlighter для WordPress

Суть блога — записки на память, записки программиста. Само собой записывать будем программный код. Для того чтобы код в блоге отображался красиво был установлен плагин SyntaxHighlighter и вот как он работает:

Тест кода:

[php]
function open_pop_up(box) {
$(&quot;#overlay&quot;).show();
$(box).center_pop_up();
$(box).show(500);
}

function close_pop_up(box) {
$(box).hide(500);
$(&quot;#overlay&quot;).delay(550).hide(1);
}

$(document).ready(function(){

jQuery.fn.center_pop_up = function(){
this.css(‘position’,’absolute’);
this.css(‘top’, ($(window).height() — this.height()) / 2+$(window).scrollTop() + ‘px’);
this.css(‘left’, ($(window).width() — this.width()) / 2+$(window).scrollLeft() + ‘px’);
}

});
[/php]