Инструкция по работе в конфигурации "Зарплата и Управление Персоналом" (пользовательский режим)




Принцип обмена данными из 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. Re:аниматор

    Бегло посмотрел инструкцию и не нашел ни чего про северные и районные коэффициенты. Плохо смотрел или нет там по ним ни чего?

    Reply
  2. lonec

    (1) Про северный и районный коэффициенты, к сожалению, в инструкции ничего не описано. А что именно интересует Вас? Где именно устанавливаются? Я могу добавить.

    Reply
  3. Re:аниматор

    (2) да я вообще, желательно добавить. не только в западной части живут люди)

    лишним точно не будет.

    Reply
  4. lonec

    (3) Хорошо, обязательно добавлю. Чуть позже выложу обновленную инструкцию…

    Reply
  5. Re:аниматор

    lonec

    а вот меня лично интересует, можно ли в стандартной конфе ЗУП ввести начисления и взаиморасчеты в разных валютах по одному сотруднику?

    к примеру у нас

    На карту через банк в рублях, а наличкой в USD. и как видеть это все в расчетном листке?

    Если можно то добавте все возможное про валюты взаиморасчетов.

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

    Reply
  6. albert

    А что же скриншотов в инструкции нет? 🙂

    Reply
  7. lonec

    (7) Нет… 🙂 Добавлю….:)

    Reply
  8. afanasko

    Еще бы было бы хорошо добавить про отражение ЗП в регламентном учете. Там, где таблица действий по расчету зарплаты. Что бы уже полный алгоритм действий был 🙂

    Reply
  9. lonec

    (9) Хорошо, я обязательно добавлю этот момент. Он многим не понятен. Постараюсь описать с картинками…

    Reply
  10. gutentag

    (10) на всякий случай, посмотрите мои два первых постинга(про проблему с 2-НДФЛ у обособленного подразделения) http://infostart.ru/projects/3609/

    Вам это пригодится для составления инструкции….

    Reply
  11. oleg974

    А чем эта инструкция отличается от книги Медведевой М.Е. «1С:ЗуП Первые шаги»?

    Или это прикол такой выкладывать материал из книг для рейтинга?

    Reply
  12. lonec

    (11) Спасибо, обязательно посмотрю… 🙂

    Reply
  13. lonec

    (12) К сожалению, не могу никак найти книгу Медведевой М.Е. «1С:ЗУП Первые шаги» в электронном виде. Хотела сравнить… :))))

    Reply
  14. Re:аниматор

    (14) про валюты, что нить будет в следующей редакции?

    Reply
  15. lonec

    (15) Извиняюсь, что так долго не отвечала на Ваш вопрос. По-моему, в типовой конфигурации нет такой возможности производить расчет по одному и тому же сотруднику в разной валюте. Причем, валюта для регламентированного и управленческого учета задается для всей базы в целом в Настройке параметров учета. Тем более, что Вы сами говорите о том, что ничего подобного в типовой конфигурации не нашли. А то, что Вы реализовали это самостоятельно, это просто замечательно!!! За это Вам плюсик… 🙂

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

    Reply
  16. Re:аниматор

    (16) думал, может доработали, давно не смотрел стандартную конфигурацию

    Reply
  17. oleg974

    (14) Главное желание.

    гугл «1с Зарплата Первые шаги скачать»

    и первая ссылка:

    http://www.classs.ru/library1/tehnologii/medvedeva/

    Reply
  18. lonec

    (18) Да, плохо искала… 🙁

    Спасибо за ссылку!!! Я просмотрела. Очень хорошая книжка. Всё тщательно, по шагам описывается. Рекомендую.

    В своей инструкции я не использовала слов: «откроем это…», «нажмем ОК» и т.д. Я старалась как можно короче сделать описание, в этом помогли картинки — всё сами говорят за себя… Я, конечно, признаюсь, использовала литературу. А как же без нее?

    Некоторые моменты не описаны в книге Медведевой М.Е., а описаны у меня. Некоторые моменты не описаны у меня, но описаны в книге… Я буду очень рада, что, может, кто-то найдет в моем описании то, что не мог найти в своей литературе…

    Спасибо огромное всем, кто поддержал меня плюсиками!!! 🙂

    Reply
  19. RailMen

    Я а кошечек люблю :):):)

    Reply
  20. nikolas74

    Спасибо. Очень толково. Сам бы так не написал.) Теперь будет что выдать бухам в виде методички…)))

    Reply
  21. lonec

    (21) Я очень рада, что Вам понравилось… :))))) Спасибо за комментарий!!!

    Reply
  22. AgnaT

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

    Reply
  23. lonec

    (23) Прошу прощения, этот документ в типовой конфигурации отсутствует… 🙁 Совсем забыла его убрать из инструкции, настолько к нему привыкла… 🙂 В следующей редакции заменю описание документа «Приказ об изменении штатного расписания» на описание регистра сведений «Штатное расписание организации». Спасибо, что заметили!

    Reply
  24. bearcat

    lonec, спасибо , я как раз искала инструкцию пошаговую .., а книгу найти не смогла

    Reply
  25. Laser55

    Понравилась! — Автор 🙂 Инструкцию не смотрел, плюсую из личных симпатий!

    Reply
  26. lonec

    (25) bearcat, очень-очень рада, что Вам пригодится… :))) Спасибо за комментарий!

    Reply
  27. lonec

    (26) Спасибо за плюсик! :))) Очень приятно… 🙂

    Reply
  28. sergkostom

    Может кратко скажете про северные -где искать.

    Плюс ставлю. Методичка хорошая.

    Reply
  29. lonec

    (29) Спасибо большое! 🙂

    По поводу северных — описание подробное на странице 12-13. А вообще данные вводятся в справочнике Физические лица => кнопка «Труд» => Работа на севере.

    Reply
  30. oskar

    интресно,хорошая книжка

    Reply
  31. lonec

    (31) Спасибо большое! 🙂

    Reply
  32. Ambla

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

    Reply
  33. lonec

    (33) Спасибо! Рада, что инструкция «хорошая»… :))) По поводу обязательных данных при начальном заполнении базы — нужно подумать…

    Reply
  34. То что доктор прописал! Именно такие инструкции нужны чтобы качественно внедрять системы. А еще есть?

    Reply
  35. manan

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

    Reply
  36. vinnipyx

    Помогите пожалуйста, у меня при переходе на ссылку каждый раз скачиваетс ровно 24 килобайта. Что делать, как скачать ? Очень нужно для диплома. Автор помогите пожалуйста!

    Reply
  37. vinnipyx

    Спасибо большое автору!!!! Очень помогла. С меня плюсик! 😀

    Reply
  38. Наталья, а можно оглавление добавить?

    Reply
  39. akozhuhova

    Спасибо! Спасибо! Спасибо! Спасибо! Спасибо! Спасибо! !!!!

    Reply
  40. Ироида

    Спасибо! С помощью этой статьи состоялось знакомство с ЗУП!

    Reply
  41. Спасибо большое. Ваша инструкция помогла подготовить набор инструкций для пользователей отдельно для каждого рабочего места.

    Reply
  42. Svetlana_K

    Спасибо! Пользователям очень помогла во многом разобраться.

    Reply
  43. kalyaka

    Непонятна идея создания этой инструкции. Разве мало качественных изданий от 1С по работе с программой? В инструкции я не увидел логики изложения, нет также в ней содержания.

    Reply
  44. SSO

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

    Reply
  45. AlekseiLeit

    спасибо! пригодится!

    Reply
  46. SemenovaMarinaV

    Для ЗУП 3.0?

    Reply

Leave a Comment

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