Я мог бы автоматизировать любое предприятие на платформе 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='\

51 Comments

  1. support

    Плюс не глядя, за оформление. Это подвиг с данным редактором. 🙂

    Reply
  2. noblekey

    и как сие чудо можно исследовать?

    Reply
  3. coder1cv8

    Идея интересная… И реализация добротная, судя по картинкам…

    Не заметил, а каких изменений в существующих объектах метаданных требует добавление этой… эм… подсистемы?

    Reply
  4. artbear

    Костя, а где реализацию можно посмотреть? Хочется пощупать столь удобную по описанию вещицу.

    ЗЫ на всякий случай, я и в аську тебе отписался 🙂

    Reply
  5. artbear

    «СКАТ-Профессионал» для 1С:Предприятие 8.1: Разработан механизм «Настройка типов данных» для 1С:Предприятие 8.1. Механизм упрощает процедуру создания дополнительных атрибутов конфигурации, общих модулей и констант, позволяет описывать общие модули, константы и атрибуты, создавать формулы расчета значений атрибутов документов и справочников, привязывать формулы к событиям системы, настраивать свойства, оформление, поведение атрибута, назначать каждому документу системы список доступных печатных форм и дополнительных атрибутов.

    .

    Похоже, что оно и есть 🙂

    Reply
  6. Lesovik

    Достигнуть вселенского щастья практически бесплатно?:)

    Reply
  7. СоболиныйГлаз

    +(4) Да. Сыр показали, а мышеловка где? Есть-ли демоверсия. Можно-ли сей продукт скачать и ознакомиться.

    Reply
  8. JohnyDeath

    (7) Костя обещался, значит будет!

    Reply
  9. 33lab

    Уважаемые, Константин сегодня в командировке, завтра ответит на все вопросы.

    Reply
  10. fedor40

    И где же можно скачать наша светлое будущее…..

    Reply
  11. mdzen

    Красота! А теперь пощупать бы…

    А сколько стоит и как сие чудо исследовать?

    На сайте в новостях : «Выпущен первый релиз конфигурации для оперативного (управленческого) учета «СКАТ-Профессионал» на платформе 1С:Предприятие 8.1. Доработан интерфейс целого ряда документов, усовершенствованы отчеты по складу….»

    А где смотреть. Жутко интересно…

    Но все-таки плюс…

    Reply
  12. O-Planet

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

    Reply
  13. CheBurator

    метеа-мета-мета-мета…..мета-конфигуратор… и вот она — БКК!!!!!! Большая Красная Кнопка!

    по итогам:

    п.3 и п.4 — вряд ли…

    Reply
  14. Душелов

    А к чему это все?

    Reply
  15. 33lab

    Всем добрый вечер.

    Ввиду ряда объективных причин (одна из которых катастрофическая нехватка времени) — нет возможности выложить демо-версию сейчас.

    Демо-версия несомненно будет выложена, но чуть позже.

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

    Для создания универсального механизма — платформа 8.1 не обладает достаточным инструментарием (отсутствует ООП, но самое неприятное — отсутствует универсальный перехват всех возможных событий (аналог класса «перехватчик» из компоненты 1С++), без которого вообще сложно сделать что-то универсальное не затрагивающее изменение конфигурации)

    (12) O-Planet — речь в первую очередь идет о внедренцах — людях далеко неглупых, которые зачастую обладают знаниями уровня разработчика.

    (14) Душелов — можно почитать статью 🙂

    Reply
  16. 33lab

    (13) Сhe Burashka — Речь не идет о «большой красной кнопке» — речь о механизме позволяющем решить множество проблемм связанных с внедрениемсопровождением конфигурации.

    Reply
  17. Душелов

    Прочитал. Не понятно. Зачем все делать на справочниках, если есть конфигуратор и прочие возможности, которые он предоставляет?

    Reply
  18. 33lab

    (17) Душелов — если после прочтения статьи остался тот же самый вопрос то боюсь я врядли смогу на него ответить, к сожалению сложно отвечать на вопросы из разряда «зачем в предприятие обработка <консоль отчетов> ведь все можно сделать в конфигураторе да и возможностей там больше»

    Reply
  19. coder1cv8

    (15) Значит добавить в типовую не получится. Тогда, действительно, зачем всё это?… Зачем писать статью о решении всех проблем внедренца… бла-бла-бла… и всё такое. Это не более чем интересная возможность ВАШЕЙ конфигурации. Не надо вводить людей в заблуждение 🙂

    Reply
  20. O-Planet

    (15) Мде… Как-то ожидал большего. Мы еще на семерке делали разные шаблончики, которые пользователь при желании мог оформить в собственные, дополнительные справочники и документы, не залазия в конфигуратор. Что мешает сделать некий универсальный, промежуточный блок, расширяющий возможности системы при создании своих копий документов? Указываешь исходный документ, список доп. реквизитов, схему проводок… Название «метаконфигуратор» вдохновило на идеи, но боюсь, что демка серьезно разочарует.

    Reply
  21. bumbarasch

    Такой механизм действительно необходим… правильная тема, правда возможности такие должны быть заложены в платформу, но к сожалению ничего подобного 1С пока не предлагает…остается ждать, когда разработчик прислушается…думаю необходимость наличия подобных вещей они понимают, но вот почему пока не реализовывают.. возможно что-то подобное будет в следующем поколении платформы…

    Reply
  22. wolfsoft

    Н-да… Насвистел пескарь… Наливают, отпускают…

    Reply
  23. Палыч

    И, что самое приятное во всем этом – при очередном обновлении Пользователя свежим релизом — никакой головной боли, ни у Внедренца, ни у самого Пользователя.

    Терзают смутные сомнения насчет достоверности этого тезиса. Сдается мне, автор чего-то не договаривает…

    Что будет, если, скажем, в новом релизе разработчик добавил в документ реквизит, наименование которого совпадает с мета-реквизитом?

    Reply
  24. 33lab

    20 (O-Planet)

    >>Мы еще на семерке делали разные шаблончики, которые пользователь при желании мог оформить в собственные, дополнительные справочники и документы.

    Шаблончики — это несомнено здорово (без них жизнь пользователя была бы еще сложнее), но шаблончики всегда останутся шаблончиками.

    >> Что мешает сделать некий универсальный.

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

    Reply
  25. 33lab

    23 (Палыч)

    >> Что будет, если, скажем, в новом релизе разработчик добавил в документ реквизит, наименование которого совпадает с мета-реквизитом?

    Ничего не будет — нет пересечения реквизитов конфигуратора и реквизитов добавленных пользователем — так что подобного рода проблемм точно не возникнет.

    Reply
  26. 33lab

    22 (wolfsoft) — судя по всему это намек на отсутствие демки?! если это так — то спешу заверить что демка будет выложена в течении текущего месяца.

    Reply
  27. 33lab

    21 (bumbarasch)

    >> возможности такие должны быть заложены в платформу, но к сожалению ничего подобного 1С пока не предлагает

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

    Reply
  28. dima1c

    угарная штука )))

    Reply
  29. obmailok

    Идея действительно витала в воздухе. Реализовывал нечто похожее (по идее, а не по реализации, без пользовательского режима, но с упрощением сопровождения) для типовой конфигурации. Молодцы! И если 1С не заложила подобных возможностей в платформу, то, возможно, это послужит стимулом для выхода новых типовых релизов с подобным функционалом.

    Reply
  30. ops

    …и почем нынче опиум для народа? 🙂

    Reply
  31. tsd

    идея интересна,

    интересует вопрос скорости работы с большими массивами данных.

    Думаю, пока, хотя бы демка не появиться обсасывать нечего.

    Но, минимум, за идею, большой рахмат.

    Reply
  32. Asdam

    (26) Что-то уже и следующий месяц заканчивается, а демки нету.

    Reply
  33. 33lab

    (32.Asdam) Справедливое замечание, к сожалению публикацию демки пришлось отложить (по принципу пусть будет позднее зато с бОльшими возможностями) — демка будет выложена 1 декабря (совместим выход с выходом нового дизайна инфостара ;))

    Reply
  34. artbear

    Юзаю альфа-версию демки от автора.



    Лично у меня энтузиазма только прибавилось.

    Очень здорово смотрится и юзается.



    .

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

    .

    Конечно, есть нерешенные проблемы, куда же без них.

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

    ИМХО пока здесь нужно обратиться к возможностям выгрузки/загрузки модулей/форм конфигурации, к возможностям Enterpise Integrator, V8Unpack и т.д., к возможностям сливания текстов с помощью 3-merge (Kdiff3 и др.)

    Т.е. некоторые аналоги того, что уже давно существует для 77.

    .

    ЗЫ автор обещает завтра для всех выложить демку после исправления тех мелочей, которые мы сегодня обнаружили.

    Reply
  35. 33lab

    Вот ссылка на Альфа-версию конфигурации

    http://webfile.ru/2443265

    Р.S. к сожалению на инфостарте пока еще нет возможности закачать файл большого размера, поэтому скачать можно пока только по ссылке

    P.P.S. конфигурация находится в разработке и выложена пока только для изучения возможностей, выход бета-версии ожидается в конце декабря начале января.

    Reply
  36. Demion

    Ссылка не работает, а посмотреть очень хотелось бы.

    Reply
  37. lustin

    собственно плюс я поставил давно. почти аналогичный функционал СКАТа использовал и дейсвительно РЕАЛЬНО решил многие вопросы без использования конфигуратора, таким образом возникает только один вопрос

    Костя, гемороя много наверное с оконачтельнйо доводкой демо-версии?

    уж очень не хочется мне корежить ЗуП, функционал востребован

    Reply
  38. 33lab

    (37) Привет Алексей, извини что не сразу ответил (отчетный период лишил свободного времени)

    Демка есть, но нет времени, что бы ее выложить, могу скинуть тебе на почту если интересно.

    Reply
  39. lustin

    интересно конечно

    90% текущий задач можно закрыть подобным функционалом и отдать на сопровождение в техподдержку

    почта allustin на яндекс.ру

    Reply
  40. twiny

    ребят, так где демку то глянуть?

    Reply
  41. Aloger

    33lab, если демки не будет, тогда отпишись, чтобы напрасно не ждать.

    Reply
  42. 33lab

    Демо-версию можем выслать по эл. почте (80 мб.). Пишите, пожалуйста, на 33lab@mail.ru с темой «Демо», файлы архива отправим на обратный адрес.

    Reply
  43. sunrise40

    За идею +. Очень хочется увидеть как это выглядит в реальности.

    Reply
  44. artbear

    А где же комменты? пропали при обновлении?

    Reply
  45. slawaill

    Хочу посмотреть альфа-версию. Ссылка не работает. Пришлите пожалуйста на ящик slawaill@mail.ru

    Reply
  46. Маргоша

    Очень хотелось бы попробовать. Где можно демо посмотреть? 🙂

    Reply
  47. voroninll@rambler.ru

    головной боли может быть меньше, а может и нет.

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

    А как же строить отчёты? Нужные нам данные не имеются фактически в документах и регистрах, значит надо также переписывать их все, связывая получаемые данные с данными в этих надстройках?

    Reply
  48. DitriX

    Тема интересная, но как правильно описали в (47) — вызывает определенный ряд сомнений.

    Так где же взять демо?

    Reply
  49. soba

    (48) DitriX, Демо-конфигурация у них на сайте лежит. URL под последним рисунком в статье.

    Reply
  50. recon

    На мой взгляд в наших реалиях такой способ разработки не взлетит.

    Возьмем пример: Нужно доработать конфигурацию для того же молокозавода. Специфики у него очень много, начиная от особенностей при приемке сырья (пересчет в жирокилограммы) до трех единицах измерения при хранении сырья (в типовых конфигурациях одна). Теперь представим что некто (Разработчик) взял за основу мифическую УПП написанную по правилам мета-конфигуратора. Другой некто (Внедренец) взял и всю эту конфигурацию допилил напильником до требований заказчика. Теперь появляется третий, Сопровожденец, который и будет дальше поддерживать конфигурацию. Что он увидит ? Набор непонятных справочников, модулей созданных в пользовательском режиме, без возможности сравнения с типовыми наборами, без возможности описания и понимания логики разработки.

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

    Дальше — больше. Захочет например бухгалтер учет автотранспорта в системе. Сейчас сопровожденец возьмет за основу тот же УАТ. Выдернет оттуда модули и документы, допилит под требования заказчика и готово. А в мета-конфигураторе будет до скончания веков переносить вручную код. С формами же он вообще застрелится,как я понял автора, сложные произвольные формы, сильно отличающиеся от родительских документов, нужно создавать программно.

    Хотя с другой стороны, если мы посмотрим на тот же oracle, у них уже есть системы разработки конфигурации, работающие в режиме веб клиента. Сделать такой мета-конфигуратор на управляемых формах, и для некоторых конфигураций он станет незаменимым дополнением-ведь в этом случае можно один раз закинуть конфигурацию на сервер, и далее все манипуляции с ней производить уже через веб браузер, без использования громоздких средств разработки в виде конфигуратора. Но с увеличением сложности конфигурации пользы от мета конфигурации имхо будет все меньше.

    Reply
  51. 33lab

    (50) recon,


    На мой взгляд в наших реалиях такой способ разработки не взлетит.

    Не просто «взлетит» а успешно «летает» у всех наших клиентов уже несколько лет.


    Возьмем пример: Нужно доработать конфигурацию для того же молокозавода. Специфики у него очень много, начиная от особенностей при приемке сырья (пересчет в жирокилограммы) до трех единицах измерения при хранении сырья (в типовых конфигурациях одна). Теперь представим что некто (Разработчик) взял за основу мифическую УПП написанную по правилам мета-конфигуратора. Другой некто (Внедренец) взял и всю эту конфигурацию допилил напильником до требований заказчика. Теперь появляется третий, Сопровожденец, который и будет дальше поддерживать конфигурацию. Что он увидит ? Набор непонятных справочников, модулей созданных в пользовательском режиме, без возможности сравнения с типовыми наборами, без возможности описания и понимания логики разработки.

    Такая «мифическая» конфигурация написана довольно давно — называется «СКАТ». Для тех же молокозаводов (да и не только для них) многое написано именно через мета-конфигуратор и это успешно работает не один год.


    Дальше — больше. Захочет например бухгалтер учет автотранспорта в системе. Сейчас сопровожденец возьмет за основу тот же УАТ. Выдернет оттуда модули и документы, допилит под требования заказчика и готово. А в мета-конфигураторе будет до скончания веков переносить вручную код.

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

    P.S. Реализовывать «хотелки» пользователей в конфигуроторе несомненно в несколько раз проще,удобнее и возможно быстрее чем в мета-конфигураторе, но это и есть некая плата за универсальность… Либо удобство разработки (конфигуратор) либо удобство обновление (мета-конфигуратор).

    P.S.S. Наша конфигурация строится на 3 основных моментах:

    1. Мета-конфигуратор (возможность внесения любых изменений без конфигуратора)

    2. Типовые операции (выбор проводок в документах пользователем а не программистом в модуле проведения)

    3. Регистры правил (права доступа, запрет редактирования, автоподстановка и т.д.)

    P.S.S.S. Если интересно могу показать как это все реально работает (через аммитимвьер)

    Reply

Leave a Comment

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