Проектирование в 1С на практике. 1С:СППР.




Принцип обмена данными из 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='\

46 Comments

  1. wtlz

    где скачать? 1c.ru?

    Reply
  2. comol

    (1) wtlz, на v8 есть online демка… в принципе может она устроит…

    Reply
  3. vandalsvq

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

    Вторая версия — это уже другое дело. Сейчас я понемногу занимаюсь анализом совмещения собственной разработки и СППР, если удастся объединить получится большое решение покрывающее множество задач.

    К чему я это, спасибо за полезную и интересую статью, я хоть понял что не один страдаю проблемой отсутствия нормальных инструментов проектирования и разработки. В общем тебе плюс, а как у меня будет более менее что-то готовое я думаю поделюсь с сообществом.

    Reply
  4. maldinitaly

    Спасибо, за интересную статью. Она будет еще одним аргументом в деле уговоров руководства о её необходимости. И автору плюс.

    Reply
  5. BabySG

    (0)

    Функционала для организации разработки и тестирования в 1C:СППР просто не существует.

    Это не совсем так, в одной из промежуточных версий (ранние версии на управляемых формах) был фукнционал тестирования (в двух словах: пишем сценарий, тестировщик по нему идет и отмечает «работает» или создает ошибку).

    В финальную версию данный фукнционал не вошел.

    Reply
  6. pumbaE

    (5) BabySG, это разные продукты, которые почему-то у 1С совершенно друг с другом не связанные.

    Например: СППР + Автоматизрованная проверка конфигураций + Тест-центр, но минус хранилище, т.к. в хранилище интеграции никакой в принципе нет.

    Reply
  7. comol

    (6) pumbaE,

    СППР + Автоматизрованная проверка конфигураций + Тест-центр

    + 1С:ITIL бы ещё + «Центр контроля качества» и тогда уже получим некое решение подобное буржуйским, вроде SAP Solution Manager 🙂

    Reply
  8. BabySG

    (6) Нет, это не разные продукты, а именно СППР. Те, кто участвовал в пилотных проектах по СППР могли видеть данный фукнционал именно в СППР. Мы сами его использовали, но трудоемкость, конечно, весьма большая. Не каждый клиент будет готов этим пользоваться (вопрос цены), но для разработки, а-ля отраслевой — очень полезно, конечно.

    Reply
  9. amon_ra

    Кажется, часть статьи я слышал на Инфостарт Event. =)

    Спасибо за статью.

    Reply
  10. Gureev

    Жалко конфы приложенной нет, очень пригодилась бы ((

    Сам все планирую что-то подобное разработать, а то все распихано по разным документам, приходится как то вертеться…

    сапожник без сапог(

    Reply
  11. pumbaE

    (7) ALM?

    Reply
  12. WanGoff

    Очень рад появлению статей такой тематики. Растем.

    Reply
  13. help1Ckr

    Спасибо за статью. Сам к этой конфигурации присматриваюсь давно) Просто я программист по неволе) Поэтому решил сначала освоить IDEF0

    Reply
  14. comol

    (11) pumbaE, Ну или ALM если у на Dynamics или VS TFS

    Reply
  15. comol

    (13) help1Ckr,(12) WanGoff,

    Просто я программист по неволе

    плохие рассуждения. Главное нам не «дорасти» до того как в SAP, а то будет «полгода пишем бумажки» а потом «3 строчки кода» и ещё «полгода бумажек».

    Reply
  16. spetzpozh

    (10) Gureev, она денег стоит, вы в курсе?

    Reply
  17. WanGoff

    (15) горы бумажек — это все, что Вы знаете про SAP? Давайте честно признаем, что у них там может не все хорошо, но все же есть чему поучиться.

    Я считаю, что очень плохо, что разработчики… да что там разработчики, архитекторы — и те не знают, что такое IDEF0, UML и прочие слова.

    Reply
  18. comol

    (17) WanGoff, А когда архитекторы кроме слов IDEF0 больше ничего не знают ИМХО это ещё хуже 🙂

    Reply
  19. Evgen.Ponomarenko

    Проектирование — вечная тема! Автору однозначно плюс.

    Чтение статьи напомнило публикацию из «Зазеркалья»

    http://v8.1c.ru/o7/201402prg/index.htm

    Здесь, чтобы надолго не уходить в эту область, я бы хотел

    сослаться на книгу Эрика Эванса «Предметно-ориентированное проектирование (DDD)».

    Reply
  20. Evgen.Ponomarenko
    Reply
  21. comol

    (20) Evgen.Ponomarenko, Зачет 🙂

    Reply
  22. qwinter

    (20) Evgen.Ponomarenko,

    Дополнительные реквизиты справочников и документов реализуются средствами виртуальной машины. Схемы проводок также полностью настраиваются.

    Странно, что это выделено жирным, ведь это и так реализуемо в 1С)

    Reply
  23. pt_olga

    Спасибо за статью, освежил в памяти 🙂

    с твоей легкой руки приобрели 1С:СППР и активно используем её,

    правда не так, как вы, но если честно, то сейчас я с трудом представляю работу над проектами 1С без 1С:СППР 🙂

    в одной базе 1С у меня «сидит» 4 проекта 1С, зафиксированы все этапы доработок/разработок, расписание, пул задач в разрезе процессов и функций, задачи летят исполнителям на почту и в наш корпоративный сервис-деск… красота! 🙂

    Reply
  24. Evgen.Ponomarenko

    (22) qwinter,

    Дополнительные реквизиты реализованы, но реализация далека от совершенства.

    Схемы проводок также полностью настраиваются

    В какой конкретно конфигурации??? Частичные настройки я видел. А так, что бы полностью можно было бы создать транзакцию с нуля любой степени сложности — не видел… подскажите, где посмотреть с удовольствием разберу на запчасти.

    Reply
  25. qwinter

    (24) Evgen.Ponomarenko, ну прям с нуля и любой степени сложности пока не видел, а вот в рамках регистра бухгалтерии это реализовано в Бухгалтерии государственного учреждения редакция 2.0 (но переложить эту логику на все движения можно, было бы время))). Хотя если учитывать возможность использования внешних обработок то по сути и по другим регистрам можно делать движения не вмешиваясь в конфигурацию. Ну и там же дополнительные реквизиты, дополнительные колонки табличных частей, дополнительные табличные части.

    Reply
  26. Evgen.Ponomarenko

    (25) qwinter,

    ну прям с нуля и любой степени сложности пока не видел

    Большая просьба ко всем, кто видел хорошие решения данного вопроса — делитесь. Как раз сейчас занимаюсь этим вопросом. Решение есть, но оно какое-то не очевидное в плане наглядности, нет в нем красоты. А так хочется совершенства. Внешние обработки — это как вариант, но хотелось бы чтобы программирование как таковое происходило только в обработчиках событий, а логика приложений лежала в структурах настроечных таблиц. Как пример удачного решения можно привести http://wpmag.ru/2014/sql-wordpress-query-monitor/ увы… это не 1С.

    Reply
  27. qwinter

    (26) Evgen.Ponomarenko, в контексте ссылки могу сказать, что плагины вордпресс равносильны внешним и внутренним доработкам. И их реализация не отличается от 1с. Разве только в том, что не требуется выгонять всех пользователей при установке.

    Reply
  28. Evgen.Ponomarenko

    (27) qwinter,

    Ага… согласен… но внутренним механизмам wordpress присущи два свойства это простота и красота, изначально заложенные в систему.

    1С пошло по пути наращивания функциональности и усложнению системы.

    Reply
  29. qwinter

    (28) Evgen.Ponomarenko, если бы у 1с ничего кроме одной конфигурации не было бы, тогда можно сравнивать, а так сравнение несравнимого.

    Reply
  30. comol

    (23) pt_olga,

    зафиксированы все этапы доработок/разработок, расписание, пул задач в разрезе процессов и функций, задачи летят исполнителям на почту

    из всего перечисленного к прямому назначению СППР относится только «в разрезе процессов и функций» :))))

    Reply
  31. Gureev

    (16) spetzpozh, ой, точно. Я думал это типа конвертации.

    (17) я еще в школе научился рисовать блок-схемы, а оказывается это что-то типа IDEF0…

    UML странная фигня, не знаю… если кто-то покажет пример реального использования, то можно это слово запомнить.

    Вообще, хороший архитектор должен знать «куда забить гвоздь», а не «чем его забивать».

    Инструмент всегда вторичен. Плохо когда об этом забывают.

    Это как автоматизация ради автоматизации, или проектирование ради проектирования.

    Reply
  32. Puk2

    Вместе с конфигурацией 1С:ERP Управление предприятием 2.0 поставляется готовый заполненный шаблон СППР:Проект «УП (ERP), ред. 2.0».

    В нём содержатся уже готовые ER- и IDEF0-диаграммы, функциональное описание по блокам и с приличной декомпозицией. Так же многие функции уже связаны с метаданными конфигурации.

    Считаю, что 1С на правильном пути, данная формализованная информация позволит более результативно и эффективно (цена/качество) начинать проекты по УП 2.0.

    v8.1c.ru/erp/function_model

    Reply
  33. BabySG

    (20) Evgen.Ponomarenko,

    Схемы проводок также полностью настраиваются.

    Открываем БГУ2 и видим, что там это сделано. Исходя из опыта запуска (мы пилотный проект запускали, когда официально еще даже конфигурации не существовало) — для средней и большой системы это нафиг не надо. Для ларьков — самое то. (Разговор о пользовательском режиме).

    Теперь смотрим УП2 — уже лучше, но тоже есть свои грабли.

    Reply
  34. Anastasia_M

    Доброе время суток!

    Подскажите, пожалуйста, есть ли в СППР встроенный механизм загрузки/создания в отдельной группе объектов метаданных отчетов/обработок , внешних по отношению к описываемым в проектах конфигурациям? Не в группах объектов метаданных проекта (конфигурации) под названиями «Обработки» и «Отчеты», а в отдельной группе объектов метаданных (например, с наименованием «Дополнительные/внешние обработки, отчеты»), но в рамках одного подраздела проекта («Объекты метаданных»).

    Reply
  35. BabySG

    (34) Нет, в типовой нет.

    Вообще, СППР по своей идее не предназначен для такого.

    Reply
  36. Lama12-1

    Коллеги, кто использует СППР более чем на 85% и находится в Москве, можете организовать мастер класс, частному лицу, с описанием процесса работы и как используется данная система в процессе?

    По документации сложно разобраться 🙁

    Естественно, оплата обсуждается.

    Reply
  37. profnet

    Ребята, а может кто нибудь может поделиться документацией? буду очень благодарен 🙂

    Reply
  38. Steelvan

    IDEF0 там конечно не ахти. Если объединить с ОптимаСофт:ПРИМА http://www.optimasoft.info/index_prima.html то можно получить нормальную декомпозируемую модель бизнес-процессов автоматизируемой организации в IDEF0 + eEPC + use case (uml).

    Reply
  39. V_V_V

    Прошло пол-года с момента публикации статьи. Есть какие-то существенные измененияулучшения в последних релизах системы? На вопросы и пожелания в конце статьи была какая-то реакция?

    Reply
  40. ZLENKO

    (31) Gureev, «UML странная фигня, не знаю… если кто-то покажет пример реального использования, то можно это слово запомнить.»

    Ну обрывочно можно что то зафиксировать в UML диаграммах, но так чтобы комплексно отрисовать весь проект от реальных бизнес-процессов до программного кода, то я не могу себе представить как это возможно. Мы даже раз попытались это сделать. Неудобно моделировать и непонятно выглядит. В результате увязать разные уровни представления между собой оказалось попросту невозможно…

    ARIS очень мощный инструмент для формализации бизнес-процессов. Использовал в ряде проектов.

    P.S.: 1С правильно сделала позаимствовав нотацию eEPC у ARIS.

    Reply
  41. ZLENKO

    Завидую автору… У меня сейчас нет клиентов, готовых оплачивать «рисование картинок» 🙁

    Reply
  42. ZLENKO

    (38) Steelvan, «можно получить нормальную декомпозируемую модель бизнес-процессов автоматизируемой организации в IDEF0 + eEPC + use case (uml)»

    Зачем скрещивать ежей с ужами ? Нотация eEPC полностью покрывает потребности моделирования бизнес-процессов.

    Reply
  43. pt_olga

    (39) V_V_V, только косметические изменения пока приходят, увы

    Reply
  44. Lama12-1

    (37) profnet, Документация — ни о чем. Даже сканить стыдно.

    Reply
  45. necropunk

    Когда последний раз щупал СППР все было очень сыро. Сперва переводил ее на управляемые формы. Объекты метаданных это, конечно, хорошо, но хотелось бы еще заполнять объекты данных, отделить методологов от разработчиков. Допилил объекты данных. Типовая загрузка грузила не все, так и пришлось свой загрузчик конфигураций писать. Печати в ворд не хватает очень и очень сильно, свои шаблоны писал. В общем, намаялся довольно сильно. Сейчас используем, но не очень активно. Имеет смысл новую версию ковырять, принципиально много поменялось?

    Reply
  46. adva

    (32) а шаблон это сама конфа СППР? Или что-то что в нее надо загрузить?

    И с ERP 2.1 тоже поставляется?

    Reply

Leave a Comment

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