Делаем из Бухгалтерии 3.0 Бухгалтерию 2.0 или "Назад в будущее".




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

24 Comments

  1. ben_art

    так не пользуйте такси , там же есть нормальный интерфейс

    Reply
  2. YalanchidiO

    Для чего все это, если есть возможность настройки интерфейса «Такси»? Если настроить правильно, то вам будет видна и история открытых документов(справочников, отчетов, обработок), и панель открытых документов(справочников, отчетов, обработок), а также появится и возможность открытия нескольких вкладок одновременно!) Мое мнение, что интерфейс «Такси» максимально удобен, Вы просто не умеете его готовить =)

    Reply
  3. YalanchidiO

    (1) ben_art, 1С грозится оставить только «Такси» и рекомендует привыкать к нему =) а так, да, есть возможность изменения интерфейса на старый из настройки программы… =)

    В общем, поставлю плюс за труд =)

    Reply
  4. makas
    Старый знакомый интерфейс, который на первых порах значительно облегчит переход к новым формам

    Возможность встроить во внешнюю обработку свои внешние отчеты и обработки без переписывания форм для управляемого приложения.

    …это хорошо +

    Reply
  5. CaSH_2004

    Большое спасибо, ну как раз для таких консерваторов как я…

    Reply
  6. alyaev.a.v

    В лучших традициях 1С, все через одно место

    Reply
  7. KliMich

    Спасибо! У меня бухгалтера стонут от Такси. Привыкли работать по старому и все тут…

    Очень пригодиться!

    Reply
  8. wolfsoft

    (2) YalanchidiO, ага, «удобен», только как всегда у нас — «после сборки доработать напильником и кувалдой».

    Reply
  9. Robert51

    Все очень просто. Программисты смотрят на интерфейс по своему, а мы, бухгалтера, должны работать этим инструментом. Мы стараемся решить поставленные задачи в максимально короткие сроки, а всё приходит к тому что время на исполнение только увеличивается. Конечно, не могу сказать, что 3.0 хуже 2.0, но ряд функций в 2.0 были куда удобнее чем в 3.0 Например, отбор в журналах, кнопка «найти документ в журнале», «сменить документ-основание» (эту функцию вообще упразднили и как теперь исправить никто не знает, даже на mista ру), в журнал договоры контрагентов просто так не добраться (тлько через все функции-справочники и там ищем), дополнительные реквизиты (раньше наводишь на него и показывает результат, сейчас надо обязательно провалиться), булево (зачем убрали галочку и добавили этот идиотизм с Да/Нет).

    Reply
  10. DAnry

    У нас в Украине типовую Бухгалтерию еще не перевели на управляемые формы и, наверное, слава Богу. А то как начитаюсь о мучениях российских бухгалтеров с новым иньервейсом страшно делается. Складывается впечатление, что 1С-ники как комунисты: «- Мы сделаем вас счастливыми. — Но мы не хотим! — А мы насильно сделаем вас счастливыми, даже если вы не хотите.» Шутка конечно, но в каждой шутке есть доля правды…

    Reply
  11. serg1983

    (2) Не дадите ссылку или подскажите как в такси хотябы «возможность открытия нескольких вкладок » приготовить

    Reply
  12. serg1983

    нашел ну не гады же удивлять и бухов. Вид- Настройка панелей

    Reply
  13. ben_art

    (11) serg1983, ещё можно правой кнопкой по ссылке и «открыть в новой вкладке»

    Reply
  14. Skotarev

    (2) YalanchidiO, если включить все панели в Такси, то и места на мониторе не останется) далеко не все бухгалтерские машины оснащены хорошими/большими мониторами

    Reply
  15. YalanchidiO

    (14) Skotarev, А зачем включать все панели? включить те, которые нужно. А именно панель открытых, я так думаю, ее удобнее сверху сделать, и панель истории внизу. И места займет не так уж и много.

    Reply
  16. RocKeR_13

    (10) DAnry,вполне нормальная ситуация: довольно накладно и в принципе нерационально поддерживать несколько однотипных конфигураций на разных платформах. Даже вот Microsoft взяла и прекратила поддержку XP)) А на счет интерфейса…есть даже те, кому он больше понравился: сам удивился, обычно люди к новым интерфейсам подозрительно относятся. Единственное, что все отмечают, так это более долгое обновление+заметно медленнее работает в файловом режиме. Для тех, кто не в курсе на счет интерфейсов: существует возможность переключения с режима «Такси» на «Интерфейс предыдущих версий 1С:Бухгалтерия 8» и даже на семерошный интерфейс. Находится сия настройка тут «Администрирование-Интерфейс». «Интерфейс предыдущих версий 1С:Бухгалтерия 8» с включенными панелями действий(Вид-Панель навигации и действий), а также с открытием форм в закладках (Сервис-Параметры-Формы в закладках) уже не наводит ужаса на бухгалтеров и многие даже считают сей интерфейс более удобным, чем в 2.0)

    Reply
  17. kns77

    А по моему с каждым новым интерфейсом 1с все больше в маразм скатывается. Дорабатывать надо не интерефейс, а функционал интерфейса.

    1. Блин где до сих пор нормальные фильтры (я не считаю нормальными те фильтры которые есть в 1с). В Acces 2.0 90-х годов фильтрация на порядок превосходит. Где фильтры по связанным полям, справочникам? (это уже для стандартных конфигураций, я понимаю что их надо писать, но их почти нет написанных, надеюсь напишут в дальнейшем).

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

    3. Объемы выборки, переход нормальный по связям документов.

    и тд. Короче могу по поводу интерфейса написать пунктов 20 сходу даже не не особо анализируя.

    Посмотрели бы лучше как Парусе 8 это реализовано. Я перевожу (и перевел уже 3/4 клиентов на 1С), но не из того что мне нравится 1с, а из за непомерных сумм обновлений, конф и того что я с них имею у Парус (50/50 у 1с с 50 000 реально интереснее чем 75/25 у Парус с 100 000, так как клиент платит менее, я получаю столько же, и привожу новых клиентов 1с). На обновлениях я конечно проигрываю, но зато суммы поддержки и продаж выгоднее.

    Обобщая скажу, у 1с проблема с гридами везде, стандартные шеридановские гриды за 200 долларов в далеких начале 2000 под VS имели в 2-3 раза больший функционал чем у 1с в новых управляемых формах в 2014.

    Видимо экономят.

    Reply
  18. adapter

    я настроил интерфейс «по умолчанию» для новых пользователей, что то добавил, что то убрал и нет проблем с такси у пользователей. Зато несколько новых уровней справочной системы, другая система быстрого подбора и ввода значений — (положительно сказывается на производительности), механизм поиска и устранения повторов уже встроен, более гибкие механизмы настройки всего и везде и т.д. — много положительных моментов по сравнению с 2.0. В итоге раздал на 300 удаленных пользователей через тонкий клиент и все работает.

    Reply
  19. Igoryany4

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

    Все остальное настраивается, в том числе текущие открытые окна, история и прочее.

    Поправьте ошибки в словах «Тостый» и «навгационным».

    Reply
  20. Soikalv

    3,0 типоваая гораздо хуже. поскольку не работают ни одни из внешних отчетов — Групповая печать РКО ПКО в удобном формате, Атк списания ТМЦ, М4 приходный ордер. перенумерация документов. Где это все искать?!!!!

    Интерфейс намного неудобнее, поскольку ни открытый журнал, ни табличную часть документа нельзя вывести ни в XML, ни в какой другой формат. Лучше бы вернули откат на 8.2. полный. А так. купишь эту обработку — и то же и получишь. Как мне год закрывать?

    Reply
  21. Soikalv

    Т.е. если б это был полный откат на 8.2 или была бы гарантия работы внешних обработок — то тогда еще можно было бы подумать.

    Reply
  22. AlexStack

    Помогу вернуть обратно Вашу бухгалтерию 2.0, если Вы перешли на 3.0 и Вам не понравилось. Дело в том, что правила конвертации, которые выложены в сети не решают всех проблем, а еще и создают кучу новых. Делаю другим способом, с гарантией. bv36

    Reply
  23. Alex_E

    (20) Soikalv, Из всего, что Вы ту написали сейчас нет на ИТС только перенумератора, здесь есть та обработка групововой подбор и обработка объектов, аналогичная версии для обычного приложения. Всё остальное делается без каких либо дополнительных «мулек», просто Вам никто не показал… Причём многое гораздо удобней, чем в обычном приложении.

    А да, если у Вас есть внешние обработки итп, их конечно надо переделать, но как ни крути, всё равно будете переходить, так что вариантов немного — сидеть до последнего на 2.0 и переходить на тройку в пожарном режиме, когда вариантов не будет совсем.

    Reply
  24. applesound

    Кто-то качал недавно обработку? Мне никак не приходит.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *