<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Однозначно нужная статья!
Все же посоветую переделать файл в формат .doc — с учетом того, что 2007 версия еще не очень юзается. А статья хорошая.
А вот еще для создания БД приходилось подправить
26) Редактирую файл /etc/rc.d/init.d/postgres
добавляю в команду создания DB «—locale ru_RU.UTF-8 -E UTF8» :
$SU -l postgres -c «$PGENGINE/initdb —locale ru_RU.UTF-8 -E UTF8 —pgdata=’$PGDATA’ —auth=’ident sameuser'» >> «$PGLOG» 2>&1 < /dev/null
27) Проверяем что получилось создать базу с кодировкой UTF8:
/etc/rc.d/init.d/./postgresql start
su postgres
psql -l И вижу что кодировка UTF8!
(2) А еще лучше, чтоб не качать, а читать сразу с экрана;-)
ОТЛИЧНАЯ Статья! Спасибо.
Статья отличная. Еще можно добавить ссылки на etersoft.ru — там сборки постгреса для 1С с нужными патчами посвежее.
а это же только для 7-ки реально?
Для 7-ки нет. по ряду причин. одна из основных- нет 3-х уровненвой архитектуры, и из СУБД работает она только с ms sql
Автору рекомендуется паралельно выложить полностью текст статьи прямо на этой странице.
статья нужная
http://blog.unixstyle.ru/index.php?/archives/79-1C-8.1-Linux-CentOS.html
но некоторые вещи можно сделать проще и красивее, сам пользуюсь инструкцией с
если не устанавливать параметр stats_row_level = off к чему может привести?
просто его нет в самом конфиге (Postgres 8.4.1)
самба нужна для определения DNS имени linux сервера в в локальной сети
без нее обратиться к хосту по имени а не по IP можно прописав его в hosts, но это муторно
настроить можно чз графический интерфейс (поставив соотв пакет)
и не забыть ей запустить
и прописать в «автозагрузку»
еще заморочка при установке этого набора что с users.v8.1c.ru пакеты идут упакованные RAR ом а в базовом варианте CentOS его не поддерживает
http://packages.sw.be/rar/
решить задачку можно скачав соот пакет из
актуальная версия Postgres 8.4.3-3.1C
автору: выдели команды которые нужно вводить в linux выдели тегами
будет более читаемо
(10) Опыта установки Postgres 8.4 не имею, но собираюсь попробовать…
stats_row_level = off — встречал такую рекомендацию в инструкциях по установки Postgres 8.2
(11) Если клиентских компов не много, то не сложно прописать и в hosts. В больших организациях обязательно есть сервер DNS. А использовать WINS самбы для опеределения имен в Linux — неуважительно для операционной системы 🙂 Самбу устанавливал, но для удобства переноса установочных файлов 1C и Postgres на Linux.
Помогите пожалуйста, в чем может быть проблема? система — Mandriva 2010 spring — порты открыты, файервол отключен на обоих машинах. Сервисы стартуют и слушают порты как в мануале. Пингуется нормально, имя определяется. Телнет к порту 1540 подключается спокойно. (к постгре c помощью pgAdmin подключаюсь нормально). Но вот консоль не создает кластера и выдает такую ошибку
Помогите пожалуйста, в чем может быть проблема? система — Mandriva 2010 spring — порты открыты, файервол отключен на обоих машинах. Сервисы стартуют и слушают порты как в мануале. Пингуется нормально, имя определяется. Телнет к порту 1540 подключается спокойно. (к постгре c помощью pgAdmin подключаюсь нормально). Но вот консоль не создает кластера и выдает такую ошибку
Помогите пожалуйста, в чем может быть проблема? система — Mandriva 2010 spring — порты открыты, файервол отключен на обоих машинах. Сервисы стартуют и слушают порты как в мануале. Пингуется нормально, имя определяется. Телнет к порту 1540 подключается спокойно. (к постгре c помощью pgAdmin подключаюсь нормально). Но вот консоль не создает кластера и выдает такую ошибку
(15) С такой ошибкой не сталкивался, но вот что нашел здесь:http://www.gilev.ru/1c/support/tasks/10064.htm: В настройках кластера режим безопасного соединения с режимом безопасности ТОЛЬКО СОЕДИНЕНИЕ перевыбрать «отключено» на нужное
Консоль — Центральные серверы — Ваш сервер — Кластеры — 1541 — Свойства
Но может и файервол не полностью выключен. Доступен ли порт 1560 на сервере?
спасибо! разобрался, оказывается запускал консоль 8.1 — через консоль 8.2 все пошло… Но база не создалась — выругалась на mchar… мучался мучался — решил поставить 1совскую версию — но не ставятся пакеты требуют то libreadline.so.4, libssl.so.4… блин… уже устал
Плюсую за использование технологий open source.
а вместо PostgreeSQL можно поставить Db2 (причем по-возможности чтобы Db2
ставить не методом
apt-get install db2cc
а предварительно скачанный с сайта Db2 ?
Присоединяюсь к 20 комментарию насчет Db2.
А еще было-бы здорово ставить НЕСКОЛЬКО баз на Db2Express-c который скачан с сайта 1с
(или если это нереально — ставить несколько экземпляров Db2).
И по возможности на Ubuntu Server
До двенадцати пользователей могут работать без ключа! Справедливо для версии 1С 8.1.11
Прошу прокоментировать! Для версии 8.2 не катит?
(22) 1977, На 8.1.11 точно работало 10 пользователей (у клиента больше не было) без ключа на сервер приложений… На более новых версиях не проверял, но на партнерском форуме пишут что «В linux-версии сервера предприятия при одном рабочем процессе и до 12 подключений ключ сервера не проверяется. При добавлении второго рабочего процесса в кластер, а также при подключении более 12 пользователей, ключ проверяется.
Однако это чисто техническое решение, и несмотря на него, ключ сервера необходим в любом случае, будет он проверяться или нет. В лицензионном соглашении однозначно сказано, что работа сервера безусловно допускается только при наличии лицензии на него, коей как раз и является ключ сервера» (Леонов Александр) 02.05.2010
Хм интересный вариант настройки! Попробую! Хотя жесть как скриншотов не хватает!
За статью спасибо.
Так кто-нибудь проверял работу IBM DB2 Express под Linux?
Точно ли, что Сервер приложений под 8.2 позволяет работать 12 пользователям?
А Возможна работа без сервера 1с и sql?
(26) vovafr1, файловая база работает без сервера, но для небольшого числа пользователей.
Есть ли возможность запустить 2 сервера 1С разных версий на linux? как должны выглядеть команды регистрации/запуска сервисов в этом случае?