Прыг-Скок…или из MS EXCEL в 1С (7.7) TiS* (открытый код — бесплатно)




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

39 Comments

  1. Tatitutu

    Универсальная загрузку данных из Microsoft Office Excel

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

    Данная обработка загружает почти все в конфигурацию «Торговля и Склад»

    с возможность «откатить» до первоначального вида.

    Перейти к публикации

    Reply
  2. Lara.Builova

    Спасибо!

    Reply
  3. SerzhM

    Функция не обнаружена (ДанныеТЗ)

    ДоступностьКнопокНаПервом<<?>>()

    Функция не обнаружена (ДоступностьКнопокНаПервом)

    ДоступностьКнопокНаВтором<<?>>()

    Функция не обнаружена (ДоступностьКнопокНаВтором)

    КонстантаОсновнаяФирма<<?>>

    Переменная не определена (КонстантаОсновнаяФирма)

    Эталон<<?>>

    Переменная не определена (Эталон)

    Reply
  4. Tatitutu

    (2) а теперь попробуйте запустить правильно

    с компонентой защиты.И все получится 😉

    Reply
  5. SerzhM

    Жалуется на отсуствие компоненты decoder.dll

    Reply
  6. arimar

    Все конечно хорошо:)))но это что то не понятное

    Reply
  7. Tatitutu

    (4) она есть в архиве

    (5) а вы как запускаете обработку ?

    добавил в шапку

    Установка:

    в архиве три файла :

    RIGSKOKTIS.ert — запускной файл

    PRIGSKOKTISIs.ert — исполняемый модуль

    Decoder.dll — компонента защиты от Альфа (КЗК-1)

    Копируем в папку ExtForms свой конфигурации

    (или запускаем файл RIGSKOKTIS.ert он самостоятельно попытается скоприровать исполняемые файлы)

    и из обработки «дополнительные возможности»

    запускаем «Прыг-Скок…или из MS EXCEL в 1С (7.7) TiS»

    Reply
  8. SerzhM

    У меня вопрос. У меня в конфе 2 артикула. Мне нужно производить поиск по 2 артикулу который был добавлен в конфу т.е нужно будет обработку дорабатывать под заказчика?

    Reply
  9. SerzhM

    обработку запустил да скорее всего забыл докопировать dll

    Reply
  10. Tatitutu
    SerzhM пишет:

    У меня вопрос. У меня в конфе 2 артикула. Мне нужно производить поиск по 2 артикулу который был добавлен в конфу т.е нужно будет обработку дорабатывать под заказчика?

    Пишите предложения.

    ПРОЕКТ ОТКРЫТ — будут любые доработки за теже деньги — лишь бы вам удобно было

    Reply
  11. SerzhM

    Потестили немного. Результат даже выбрав в настройках документ поступление ТМЦ розница при опрделении реквезитов нет цена и сумма и ручками добавить реквезит нельзя( может просто ограничение демоверсии)Поиск по не точному совпадению нет (пример Ваза -аквариум дцв 124*103мм Флора не равно Ваза-аквариум д/цветов 124мм 103мм «Флора» PSB 43417 1070049. самое что плохое то что он завел строчку и придется ее метить на удаление ненужная трата времени)

    Нет документа поступление в розницу купля продажа.

    Reply
  12. SerzhM

    Да еще я указал реквизит который есть в накладной допустим 6787 указал что это 2 артикул(самописный)и при создании нового элемента он не скопировался

    Reply
  13. SerzhM

    Если соберетесь делать поиск по неточному совпадению ( а вам придется его делать т.к покупать не будут) перед тем как создать новую позицию номенклатуры:

    Предварительная загрузка, завести колонку с флажком, те позиции которые будут заведены новые ставить флажок(галочка) а те что нашел флажок отсутствует.

    Т.е перед тем как создать номенклатурную строку(возможно лишнию) оператор может сам выбрать какая это строка.

    И при неточном совпадении предлагать на выбор.

    Reply
  14. Tatitutu

    (12)

    SerzhM пишет:

    самое что плохое то что он завел строчку и придется ее метить на удаление ненужная трата времени

    будьте внимательны — там есть инструмент «отката» все что НОВОГО обработка заводит — можно сразу «Если например неправильно» удалить. Посмотрите в настройках обработки

    SerzhM пишет:

    а вам придется его делать…

    Спасибо , вам за хорошее настроение 😀 — посмешили от души.

    Лично мне эта обработка не нужна как таковая. Прочитайте ВНИМАТЕЛЬНО описание обработки

    А теперь меда для скептиков, вот здесь

    Прыг-Скок…или из MS EXCEL в 1С (7.7)

    начало этой истории с открытым кодом — так сказать рыба для творчества

    так же есть версия (она более «продвинутая»)

    Прыг-Скок…или из MS EXCEL в 1С (7.7) Full* на она для специализированной конфигурации МАГАЗьКА

    Задавали много вопросов , когда же выйдет для ТиС — вышла и никому не нужно.

    Я написал проект открытый:

    — все что предложите добавлю

    — интелектуальная загрузка из файла — загружает только то что нужно для документа

    — поддерживает три формата файла

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

    — сопоставление реквизитов

    — предварительная загрузка

    — «откат» до начала использования обработки (удалить все хвосты)

    Reply
  15. Tatitutu

    Вышел новый релиз обработки

    — исправлены и добавлены все замечания и дополнения

    — возможность «Откатиться назад» — поменка на удаления всего созднанного обработкой

    Текущая версия релиза 3.0.03 от 16.05.2011

    Reply
  16. SerzhM

    Поиск аналогов номенклатуры(или по схожим словам) сложно реализовать?

    Reply
  17. Tatitutu

    (16) нет не сложно, что конкретно нужно ?

    чтобы предлага на выбор или …

    Reply
  18. SerzhM

    Что бы и выбор предлагала, если запятая

    Reply
  19. Strannik99

    Испытал демку, работает, проста и удобна в использовании.

    один вопрос.

    Документ поступления ТОРГ-12, цена указана Без НДС за 1шт, соответственно заполнены сумма без ндс, НДС,сумма НДС,сумма с учётом НДС.

    Предприятие ИП и есть ООО как настроить чтоб автоматом в ТЧ документа поступления загружать НДС

    Настройка сумма из файла не устраивает, т.к идёт искажение информации о стоимости за счёт округления видимо

    Reply
  20. Tatitutu

    Обновил шапку выложил с открытым кодом и бесплатно

    кому нужно пользуйтесь (допиливайте для себя)

    Я этим проектом больше не занимаюсь.

    Прыг-Скок…или из MS EXCEL в 1С (7.7) TiS* FREE

    (открытый код — бесплатно)

    Reply
  21. trioka

    почему я её раньше не заметил. лепил самопал

    Reply
  22. Tatitutu

    Кто не давно скачал (после 12.03.12)

    Прыг-Скок…или из MS EXCEL в 1С (7.7) TiS* (открытый код — бесплатно)

    а там закрытый код — я извиняюсь, почему то файл не заменился

    Reply
  23. Mikeware

    красиво

    Reply
  24. Tatitutu

    Уважаемые пользователи!

    Я выложил обработку с открытым код — совершенно бесплатно для вас

    берите кому нужно и пользуйтесь.

    Но я этот проект доделывать и обновлять не буду (на авторство тоже претендовать не буду, меняйте код, дополняйте функционал, продавайте — все ваше в полном объеме)

    (честное слово нет времени)

    Год была платной (за символическую плату)

    с предложением доделать по вас и ваши нужнды (никому не нужно было)

    а теперь меньше чем за 5 дней — 64 письма с предложениями , как нужно

    сделать и как было бы здорово.

    Я знаю как сделать (на основе этой обработки сделана универсальная загрузка данных из MS EXCEL

    для программного продукта МАГАЗьКА (с)

    Reply
  25. trioka

    сегодня опробовал.

    очень долго загружается к сожалению (3 тыс строк), непонятно зачем можно выбирать РОЗНИЧНУЮ цену, так и не смог никуда прикрутить.

    зато закупочную при каждой загрузке в справочник цены добавляет.

    я не нашел галки отключения «Добавление нового элемента». мне к примеру просто цену обновить из прихода.

    при совпадении наименования в загружаемом файле, становится в ступор, ( в штрих код и артикул то разные)

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

    если стоит галочка автоматического отрезания шапки, то номенклатура загружается не вся, к примеру если в половине цифры а в половине «ДУ-13/650ЭР» то возьмутся только цифры.

    если штрих кода у элемента нет. то ступор.

    если не стоит галка в настройках. поиск по ШК, то ШК в справочник номенклатуры не записывается.

    я понимаю что вы не собираетесь доделывать эту обработку. Но вдруг какой то баг нашёл…

    Reply
  26. trioka

    ЗЫ. если на торговой точке используется ШК. а приходная в некоторых позициях не содержит ШК. во всё, вилы.

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

    Reply
  27. trioka

    ЗЫЫ…

    а если в настройках колонок сначала идёт закупочная цена. а ниже Розничная. то берется только закупочная.

    а если вдруг как я поменял местами для проверки. то взялось нормально. и предварительная загрузка показываться начала цену первую сверху, тоесть в данном случае Розничную… а.а.а..а… я голову сломал уже.

    вы записывайте-записывайте. я что зря пол вечера убил?! своей за два прохода бы сделал. у меня только одна цена за раз берется. 🙁

    Reply
  28. fomix

    Обработка рабочая. Автор молодчина — сделал основательно. Спасибо! +

    Reply
  29. nagieva.d

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

    Reply
  30. cronys

    Скачал но при открытии выдает — Данная обработка вызывается из процедур конфигурации

    Reply
  31. Ass-72

    У меня тоже самое. Что нужно сделать чтобы работала?

    Reply
  32. Ass-72

    Блогодаря советам у меня получилось . Я в коде обработке убрала в процедуре приокрытии условие.И уменя открылась обработка. Отличная штука для бухгалтера. Позволяет сэкономить массу времени.Большое спасибо! И не такая сложная, как обработка от решения. Я там нечего не поняла . А в этой обработке наглядное представление столбцов и строк.и все получилось с первого раза.В общем огромное спасибо!

    Reply
  33. серегин

    (24) Скачал, все великолепно

    но поиск в номенклатуре(при создании нового элемента справочника) по артикулу не работает

    а это самый главный критерий идентификации товара

    при разных названиях артикул остается прежним.

    Reply
  34. Sasha255n

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

    Reply
  35. westinka

    Очень очень полезная вещь, автору огромное спасибо!

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

    Reply
  36. ketr

    (35) серегин, Да, точно не работает. Проверил. Плюс не загружает в документ реализации, не смотря на то, что в настройке обработки можно выбрать этот тип документа

    Reply
  37. Tatitutu

    (38) ketr, продолжай наблюдение !

    Никто и не говорил что будет работать- читаем внимательно шапку — — так сказать рыба для творчества (начальный шаблон для загрузки данных)

    а дальше напильник в руки и под свою конфигурацию допиливать.

    Это было на уровне идеи…

    Готовый вариант ПРЫГ-СКОК есть только для конфигурации МАГАЗЬКА 7.7 (MAGAZKA 8.2)

    Reply
  38. porter

    Помогите кто-нибудь! Скачал все ок, работает, устраивает. но не добавляет штрихкод новому элементу справочника номенклатура. хотя в exel поле есть в настройках обработки столбец указан….

    Reply
  39. nekto44

    Спасибо автору, отличная обработка.

    Reply

Leave a Comment

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