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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *