Экспансия решений 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='\

21 Comments

  1. kembrik

    По поводу «И финансовый год может быть разный» уже есть подвижки на уровне платформы

    Reply
  2. profiprog1c

    Статья очень интересно написана

    Reply
  3. Steelvan

    Начал читать. Далее список очевидных ляпов и личных предубеждений автора:

    *) «На тех, кто хочет работать на глобальном рынке, т.е. на Западе.»

    Автор считает, что весь мир это Запад ?

    Без комментариев. Про страны БРИКС (по сравнению с которыми Запад это мелочь, даже экономически) у автора отсутствуют знания.

    *) «клиентоориентированность, потому что с этим у нас так же плохо, как и с работой в команде.»

    Мне жаль автора, если у него в компании с этим все плохо.

    *) «Юзабилити и интуитивно понятный интерфейс»

    Если под англицизмом «юзабилити» автор понимает «удобство пользования», то пускай сравнит с тем же САП и прочими подобными системами.

    *) «1С:ERP» и принесем на внешний рынок, то выяснится, что она не выполняет и половины того, что ожидает клиент.

    Вы видели как внедряется САП, когда у Заказчика ломаются важные бизнес-процессы из-за того, что «программу нельзя доработать» ?

    *) «Точно также нужно понимать различие в праве. Америка – это страна прецедентного права, как и Великобритания.»

    Автор весь Запад вообще Америкакой ограничил. Без комментариев.

    *) «гайд для ведения бизнеса»

    Учи русский. Англицизм «Гайд» это Руководство.

    *) «Про 1С International я уже говорил – это, по сути, опыт всех «дочек» фирмы 1С, в том числе малоизвестной AccountingSuite из США.»

    http://yellow-erp.com/ = последние новости февраля 2017.

    *) «Но как только у вас в Америке начинаются проблемы с налоговиками, с отчетностью, со сделками – люди теряют сумасшедшие деньги и закрывают бизнес.»

    Это в корне верное замечание. И вообще, держитесь подальше от Америки.

    *) «Это частая ситуация, когда говорят: «I’ll call you», т.е. «Я завтра вам перезвоню» и не перезванивают. »

    Почему ? Потому, что это чисто западная, особенно американская, черта улыбаться и врать в глаза.

    Бесполезно выходить на рынок автоматизации в тех странах, где:

    *) Редко меняется законодательство;

    *) Общий уровень компьютерной грамотности низкий;

    *) Большинство компаний настолько просты, что обходятся электронными табличками;

    *) Заказчики считают каждую копейку и сложно доказать преимущество автоматизации.

    Разрыв шаблонов автора: Америка и есть такая страна, которая подходит под все вышеуказанные пункты.

    Выход на локальный рынок должен быть на локальном языке. НИКАКОГО АНГЛИЙСКОГО. Мы для себя выбрали следующую стратегию: Русский, Немецкий, Португальский.

    Reply
  4. grumagargler

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

    Среднестатистический бух на месте говорит — наша компания платит $120 в час за консультации аккаунтатна (у них тут другая иерархия), вот он пусть потом всё и корректирует. Никто ЗП, амортизацию и подобные вещи не считает, аутсорсят, форматов обмена данными — миллион, и всё это тоже аутсорсится, есть отдельные конторы, которые только этим и занимаются.

    Про улыбчивость. У каждой нации свои культурные особенности, взять тех же безэмоциональных японцев, оставаться тем, кем вы есть — ценится, и нормально восприниматься (ведь никто не собирается грубить). Говорить без акцента всё равно не получится, всё равно будете иностранцем, а говорить о деле, и не лыбиться без повода — это преимущество, которое очень ценится, если вы действительно делаете дело, проверено. Эта тошлиловка “we appreciate your call” с последующим разводом или бесполезной помощью, тоже им надоедает, я ни раз был свидетелем, как разговор с суппортом квикбукса заканчивался факами.

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

    Reply
  5. Hans

    Фото Шилкина какого года?

    Reply
  6. ddelphknn

    Видел во Вьетнаме Розницу на вьетнамском языке.

    Reply
  7. ifilll

    (6) Подтверждаю насчет слабой автоматизации, также встречается ситуация когда один или небольшая группа программистов/внедренцев пишет нужный продукт (складская программа например, для определенной сферы использования) и перемещается по стране поддерживая её, и при этом практически не испытывая конкуренции, у нас такое видел только в первой половине 2000-х годов.

    Reply
  8. RayCon

    (6) Дима, привет! Давно не общались. 🙂

    >Никто ЗП, амортизацию и подобные вещи не считает, аутсорсят, форматов обмена данными — миллион,

    >и всё это тоже аутсорсится, есть отдельные конторы, которые только этим и занимаются.

    Слишком категоричное утверждение, чтобы быть верным. 🙂

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

    >говорить о деле, и не лыбиться без повода — это преимущество, которое очень ценится, если вы действительно делаете дело, проверено.

    Если ты прочтёшь книгу Люка Джонса, то ты поймёшь, что я говорил совсем о другом. В двух словах: доброжелательная улыбка и «лыбиться без повода» — не одно и то же: первое помогает бизнеса, второе — нет.

    >План счетов. Активный/пассивный, применимы в любой системе учета, и также являются и техническими терминами

    Со вторым согласен, с первым — нет. Например, активно-пассивных счетов нет в МСФО. Точно так же, как и, например, сторно. В этом смысле очень характерен пример российского счета 91: 91.01 — доходы, 91.02 — расходы. В международном учете либо создают такую же пару для доходов и расходов, либо делают один счет доходов, а расходы учитывают на нём со знаком «минус». Но то, что допустимо для счетов доходов и расходов, недопустимо для счетов активов и обязательств: стандарт IAS 1 запрещает такую свёртку (offsetting) явным образом.

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

    Так и я тоже не согласен, но в платформе это есть.

    Reply
  9. DatiniFM

    Не отражены важные моменты по которым никакой экспансии не будет.

    1. 1с это система перепроведения документов и не имеет надежного аудиторского следа. В странах запада запрещено законодательно использовать такие программы для учета (Польша имеет явный закон, закон SOX США 2003г и тд)

    2. 1с ЕРП не соответствует МСФО в части учета продукции (в большинстве стран где учет на основе мсфо (а не таких тко 2- РФ и РБ) по стоимости текущей реализации а не по себестоимости).

    3. Программирование на родном (русском) языке — тотальное преимущество в СНГ надо альтернативными системами которые и поумирали из за этого. Программирование на английском языке — НЕДОСТАТОК. тк как на английском на западе есть для программиста выбор огромный где можно зарабатывать либо больше либо меньшими усилиями чем в 1с. Поэтому не над языком интерфейса надо думать, а над языком программирования — человек должен программировать на испанском например языке. то есть платформа должна быть инспанско-английская и с русско-английской самопереводится через английский язык.

    Reply
  10. o4karek

    (4)

    *) «Про 1С International я уже говорил – это, по сути, опыт всех «дочек» фирмы 1С, в том числе малоизвестной AccountingSuite из США.»

    http://yellow-erp.com/ = последние новости февраля 2017.

    Вроде речь про 1с. А данный сайт к 1с имеет никакого отношения

    Reply
  11. DatiniFM

    Кстати достоинство 1с в плане русскоязычного программирования, которое и вывело 1с в лидеры, но диалектически является и ее проблемой но уже в другом ключе. низкий порог входа в систему дает возможность использовать больше потенциальных работников и приводит к девальвации их заработка. если посмотрите вакансии в Москве, например, то вакансии программистов или консультантов 1с (включая ерп) сравнимы или даже уступают по зарплате вакансиям завсекцией сантехники в супермаркете например.

    Reply
  12. grumagargler

    (14)

    Слишком категоричное утверждение, чтобы быть верным. 🙂

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

    К сожалению, к очень крупным нам сложно пробиться. Пытались как-то, но даже при наличии разработки и каких-то связей, решение принимаются советом директоров и не в пользу малоизвестной компании. Авторитет нужно нарабатывать самостоятельно, а партнеры, зачастую только и сетуют, что в платформе того или сего нет…»ах если бы календарь с воскресенья, тянул бы лямку как медведь» (кстати, он уже с воскресенья).

    (14)

    Если ты прочтёшь книгу Люка Джонса, то ты поймёшь, что я говорил совсем о другом. В двух словах: доброжелательная улыбка и «лыбиться без повода» — не одно и то же: первое помогает бизнеса, второе — нет.

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

    (14)

    Например, активно-пассивных счетов нет в МСФО. Точно так же, как и, например, сторно.

    Да, это имеет место быть, но среднестатистического американского учетчика/бухгалтера, в среднестатистической конторе (не корпорации, а там, где нам удается работать), со слова МСФО клонит ко сну. В тойже Канаде, к примеру, один из самых крупных по провинции Квебек дистрибьюторов курятины ведет учет в бамага/эксель, убедить его, что ему нужно что-то менять, когда у него и так всё в порядке — навыков не хватает. Поэтому сторно они понимают как Credit, а активные и пассивные счета разделяют по знаку минус перед числом.

    Reply
  13. acanta

    (17)

    например

    В эксель есть макроязык. Есть акцесс наконец. И это счастье продается в предустановке при продаже компьютеров.

    Для малого бизнеса более чем достаточно. Для среднего тоже ( с учетом аутсорсной разработки баз данных).

    Т.о. этапы развития оперативного учета состоят из — ексель(малый бизнес) — акцесс(средний-крупный бизнес) — sql/oracl/sap(очень крупный).

    Непрерывное развитие от среднего до крупного (без кризисов, неизбежных при тотальной замене учетных систем).

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

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

    И пытается(!) обосновать что при переходе от крупного к очень крупному тоже можно найти какое-нибудь место для 1с

    (локализованные учетные системы, постоянная и качественная поддержка законодательства, для оперативного отслеживания и отражения изменений которого sap/oracl/sql слишком дорогое удовольствие).

    В состоянии ли 1сники обеспечивать на должном уровне поддержку локального законодательства на внешнем рынке при ценовой доступности для мелкого бизнеса?

    Какой должна быть квалификация 1с ника?

    Как обеспечить для достаточного количества разработчиков 1с получение необходимых компетенций?

    Как получить необходимое количество разработчиков/внедренцев?

    Reply
  14. СергейК

    (18)

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

    А как это возможно? Там такой простой учет/отчетность?

    Или это касается только торговой деятельности, а отчетность на оутсорсе?

    Да даже если только торговой:

    долги, оплата, договора, склад, и т.п. как это сейчас можно вести в экселе то?

    Reply
  15. grumagargler

    (20)

    долги, оплата, договора, склад, и т.п. как это сейчас можно вести в экселе то?

    но ведь до 1С и наши организации как-то вели 🙂 вот и они ведут. Я понимаю, это плохо укладывается в голове, но ситуация именно такая. Для отчетов стоит квикбукс, договоров как таковых нет, валюта одна, взаиморасчеты по одной схеме (2% 10 Net 30) со всеми.

    Reply
  16. СергейК

    (21) Меркурия, ЕГАИС и Маркировки им не хватает чтоб не скучать. 🙂

    Reply
  17. nickpugachev

    (19)

    Как получить необходимое количество разработчиков/внедренцев?

    Научить индусов

    Reply
  18. par_62

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

    Reply
  19. selis

    Если тут зашел разговор о движении 1С на запад. Кто нибудь встречал хорошую базовую конфигурацию 1с для компаний исповедующих ACCA , GAAP , IFRS?

    Там основная особенность — в отсутствии привязки к плану счетов, но при этом нужны базовые средства начисления амортизации, ЗУП, РБП, неттинга. Понятно что налоговый учет и специфическая отчетность будет своя.

    Мне есть с чем сравнивать. Например есть такая программа Sun Account , в целом простая

    https://docs.infor.com/sunsystems/6.3.x/en-us/ssolh/lsm1457708110337.html

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

    Я смотрел https://1c-dn.com/applications/1c_accounting_suite/ (1С accounting suite) но он даже амортизацию не автоматизирует, хотя 1С может сделать тот же функционал Sun Account гораздо лучше, а бонусом пойдет возможность сделать на 1С что угодно

    Reply
  20. AllexSoft

    Статья достаточно грамотно написана, по большей части все верно, но:

    1. Пока существует 1С:Транслятор и функция НСтр() никакой мультиязычности в конфигурациях ожидать не стоит. Уже давным давно все придумано в этом вопросе — обычные строковые константы в виде таблицы, где первая колонка номер константы (ключ), все остальные колонки переводы этой строки на н-языков. Таким образом НСтр должна принимать следующий вид НСтр(«СообщениеОНехваткеТовара»), все! В возврате должен быть перевод этой константы на языке в котором запущена платформа из таблицы локализации. Добавление языков конфигурации (по сути редактирование таблицы локализации) должно быть доступно из пользовательского интерфейса, посадил переводчика — и пусть переводит. Сегодня мне нужен английский, а завтра немецкий — для этого никто программный код не переписывает, кроме как в 1С. Это полнейший бред.

    2. Модульность конфигураций, вернее ее отсутствие. К примеру хотим написать УТ для внешнего рынка, открываем а там тебе и ЕГАИС, и ВЕТИС и торговое оборудование которое есть только у нас.. какого оно там все.. и не вырежишь же! Я не говорю про тотальное использование Если СтавкаНДС = Перечисления.СтавкиНДС.НДС18 тогда и в запросах и по коду.. Это все надо убирать, решения интеграции с гос. информационными системами должны быть реализованы отдельной конфой, а из УТ туда обмен и все. А для всего оборудования, вернее внешних компонент пора сделать свой менеджер в ветке метаданных и подключать это дело через него, нативно, а не через костылики в виде кучи макетов и прокси-обработок

    Reply
  21. Охотница за головами

    Николай, прошлась по тексту, честно, не все осилила, технические моменты не возьмусь оценивать, но в целом позитивно. Меня как эйчар интересовали первые слайды. Разделяю Ваши мысли относительно потребности бизнеса на глобальном уровне, абсолютно согласна про новые рынки, про XBRL молчу! В общем, Вы молодцы, смотрите на вещи правильно, жаль, что не все видят развитие 1С в таком же ключе. Я правда плохо представляю 1С в США, но почему-то бы и нет, черт возьми, нужно стремиться к нереальному;)

    Reply

Leave a Comment

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