<?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='\
У семерки открылось второе дыхание 😉
Вещь полезная, так как у 7.7 и 8.х разные рыночные ниши.
Правда, боюсь, что агрессивный маркетинг самой 1С приведет к тому что 7.7 окончательно потеряет популярность, что скажется на популярности данной разработки. Но будем надеяться, что этого не произойдет.
Вах !!! 😀
Это бы да лет 5 назад. Была бы бомба.
Умные люди! ( В частности, автор) А объясните не настолько умным людям, ЗАЧЕМ это? Где, к примеру, применить?
(5)http://j1c.ru/j1c/node/1 Там же есть и пример доступа через Web
(6)
Спасибо Крутизну проета оценил 😀 Потрясен масштабами и бесплатностью 😀
Не смотрел пока, но… Правильно ли я понял, что используя J1C можно реализовать логику проведения документа отличную от указанной в конфигурации? Если так, то об этом надо предупреждать и я бы рекомендовал пользоватся встроенными функциями проведения документов. А то ведь можно и ошибиться реализовывая алгоритм проведения отличный от описанного в модуле проведения документа и к чему это может привести пока не ясно…
Желаю успехов 😉 и жду версию для фаловой базы.
(8)
В документации и на сайте об этом рассказано. Замечу только, что «просто так», случайно провести документ не получится. Необходимо создать класс наследник от базового класса j1c V.DocumentObject и затем реализовать его метод close() (это аналог процедуры проведения в 1с).
Если вы под функциями имели в виду хранимые процедуры самой 1С — то да, они используются. Это процедуры главным образом отвечают за пересчет итогов (как бух. так и регистров). Так что в этом смысле используется родной механизм 1С.
Но ведь можно и «просто так», случайно «создать класс наследник от базового класса j1c V.DocumentObject и затем реализовать его метод close()» 😉
Значит реализовать альтернативный алгоритм проведения таки нельзя..? Вы правы надо всё же почитать документацию 🙂
Под функциями я имел ввиду вызов процедур Провести(), Записать(), Удалить() и далее в таком духе… Именно они и должны обеспечить выполнение хранимых процедур. Ну, да вы в курсе 🙂
А процедуры обработки проведения документа могут делать, что угодно… Это уже от задач зависит. Частенько, кстати, делают записи в истории периодических реквизитов 🙂
Вот ещё вопрос (пока не почитал документацию 😳 ) — есить ли возможность получить данные из таблиц формируемых отчётами и обработками? Ну… Мало ли 😉 ?
З.Ы. Ушёл читать документацию…
Значит реализовать альтернативный алгоритм проведения таки нельзя..?
Почему же нельзя — наследуете и реализовываете protected методы 🙂
В j1c они представлены методами: close(), write(), delete() соответственно
При кроме того, так же как и для close(), есть protected методы аналоги ПриЗаписи(), ПриОтменеПроведения и т.п.
У класса V7.CatalogObject есть метод:
в реализации метода close() вызывайте его — все очень похоже как в 1С 🙂
нет, такой возможности нет — как вы себе это представляете? j1c работает вне 1с, но с ее базой. Клиент 1с для j1c не нужен и не используется никак.
А можно где-то посмотреть, как выводиться справочник в веб?
И можно ли сделать вывод журнала, документа и его проведение?
(12)
Вот здесь статья-пример создания сервлета с помощью сервлетаhttp://j1c.ru/j1c/node/23
В прикрепленных файлах картинки, как выглядит стартер, для сервера приложения j1c (из примера) и соответственно справочник контрагенты типовой комплексной. Вы именно это хотели посмотреть?
Конечно можно (как я понял вы про веб спрашиваете). Конечно, для документов нужно не забыть реализовать модуль проведения.
(13) не локальный сервер, а публичный сервер есть?
(14) Нет, нету такого. А что вам это даст? Ну увидите вы вебе хтмл странички с показом списка. Откуда вы можете «быть уверенным» что данные берутся из 1С?
http://j1c.ru/files/download/DemoWebService.zip отсюда демопример, положить это вебприложение в каталог контейнера сервлетов (например Tomcat) — и самиму посмотреть одним глазом в 1С, а другим в браузер.
Я вам рекомендую скачать
(15) Тогда сделайте такой демосервер, чтобы можно было документ создать, подобрать номенклатуру, провести.
Жесть! Как давно об этом я мечтал :))) Красавчеги!
Я правильно понимаю, что можно создать базу в 1С, а запускать и работать с базой при помощи J1C?
(18) Правильно. J1C это программное апи к данным. При этом можно работать одновременно, как клиентом 1С так и j1c (база должна быть sql формата).
(19) Круто! Надо попробывать. А как установить ее?
(20) Скачиваете апи (jar Файл), указываете javac путь к нему (подключаете то бишь библиотеку). Создаете свои классы используя классы апи. Примеры можно найти здесь:http://j1c.ru
(21) Спасибо!
Клюшки — вечны!
+
Хорошая вещь. Желаю успешного развития этому проекту!
+
Выложил обновление. Альфа — 0.0.70
Изменения с момента первой публикации:
1. Реализована поддержка DBF формата.
2. Существенно изменена (переработана) объектная модель (дрейф к 8-ке).
3. Доработана модель запросов к данным — поддержка нотации 1CPP
4. Переработка модели запуска класса V7.
Выложил 0.0.72 версию.
В версии:
1. Развитие поддержки DBF формата ИБ.
Принципиальное изменение к подходу анализа текста запросов. Для анализа и разбора текста запросов был реализован jsqlparser с использованием JavaCC.
Это позволит в дальнейшем легко развивать язык запросов. В следующих релизах будет доработан функционал языка запросов в нотации 1CPP.
2. Реализация виртуальных таблиц:
$РегистрОстатки.<ИмяРегистра>([<ГраницаРасчета>][,
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]
$РегистрОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][,<Периодичность>][,
Консоль
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]
$РегистрОстаткиОбороты.<ИмяРегистра>([<НачалоПериода>][, <КонецПериода>][, <Периодичность>][,<МетодДополнения>][,
<Соединение>][,
<Условие>][,
<Измерение>][,<Ресурс>]
) [as <Алиас>]
Подробное описание работы следует. Пока можно попробовать работу с помощью консоли запросов. Консоль запросов
Выход 0.0.73 версии0.0.73 версия
Сайт j1C недоступен. Уже неделю. Надеюсь что временно и тема будет развиваться. Задумал пошшупать, а тут такая засада.
28 Сайт заработал, можно смотреть.
А что с сайтом j1C? Сейчас не доступен?
Хотел купить эту разработку, но сайт j1C недоступен с 2011 года… так проект закрыт или нет?
И система покупки какая-то сложная, скажите, сколько я должен за нее заплатить и все, не нужны мне в нагрузку другие разработки. Советский Союз какой-то — хотите купить хорошую книгу, купите еще 2 ненужных.
Аватар еще пришлось какой-то искать обязательно, что за усложнения жизни?!
(0) Проект еще жив?
(29) А можно как то заполучить потестировать вашу разработку? А то сайт не работает…
Судя по последним комментариям загнулась тема…а жаль…было бы очень полезно использвать такую библиотеку для веба и разработки мелких фронтов для разездных товарищей. Хотя, есть же 8.3…проснулись, отряхнулись…
(33) andrey314, если уж так интересно, можно покопаться вhttp://web.archive.org/web/20100704020117/http://j1c.ru/j1c/
f13. К сожалению Ваша ссылка не работает «Page cannot be crawled or displayed due to robots.txt.». Очевидно авторы сайта ставили ограничение на архивирование сайта. Можно ли как-то в другом месте покопаться ? Тема не умерла — возможна реставрация 1С7.7 с помощью новых технологий, так бизнес-процессы, бизнес-логика, сами пользователи-бухгалтеры в компаниях остались те же. Буду признателен за ответ.
сайтhttp://j1c.ru не работает…
Документация и примеры находятся на сайте которого нет… наверное разработку можно удалять..
Вообще печально с 7.7, столько разного интересного было придумано (1cpp, formex, openconf и т.п.), а теперь 7.7 это исключение, везде уже 8-ка.
(39) Alister, Не везде! Очень много специализированных конфигураций на 7.7 написано. У меня на предприятии до сих пор такая конфа работает. И я её поддерживаю 🙂 Вот только, конкретно эта разработка, мне не пригодилась.
На веб архиве есть только текст страниц нет зипов для загрузки… печаль… люблю 7.7 терпеть не могу 8! С 7-и скорее сменю род деятельности чем сяду на 8 (оч много своих малких конфигураций… 18-лет разработки), а с 8-кой не срослось, не знаю почему, перегорел наверно, 42 скоро.
Парни, если у кого есть архив даной разработки… dreadlord@rambler.ru ! Спасибо