Инвентаризационная опись ИНВ-1 по ОС и материалам (счет МЦ) для 1С 8 Бухгалтерии2.0 и УПП




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

70 Comments

  1. skin

    Очень нужная и необходимая вещица.

    Reply
  2. NeeDiGeo

    чувак. Сам такую же писал. Еще и 3 клиентам продал )

    Reply
  3. COMPER

    (2) На инфостарте ничего подобного нет. Я искал. Если написал — выкладывай ссылку. Я тоже когда-то продавал до кризиса. Теперь не покупают — так не пропадать же добру.

    Reply
  4. Одинец

    Добавьте в обработку макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» состоящий из 2-х колонок – «полное имя метаданного» и «имя табличной части»

    Reply
  5. OK1951

    Нужная вещь

    Reply
  6. COMPER

    (4) Добавлено!

    Reply
  7. selinata2005

    А у меня ничего не получается. Выходит обычная ИНВ-1 с указанием ОС и по МОЛ не выбирает, а где ж материалы? У нас 8.1.13 БП

    Reply
  8. COMPER

    1) Проверьте настройки своих субконто.

    В описании этой обработки есть уточнение: «Отбирает по МОЛ при использовании на счетах субконто «РаботникиОрганизации». »

    2) Если не попали материалы — значит у вас нет их в остатках по выбранным счетам.

    Reply
  9. selinata2005

    Да все получилось, подхватывает сч. МЦ.04 по МОЛ, но сама ведомость выходит ИВН-1 (ОС), а надо-то по материалам ИНВ-3

    Reply
  10. COMPER

    Эта обработка делает именно ИНВ-1. Для ИНВ-3 есть другие разработки.

    Reply
  11. COMPER

    (9) Изначально бухгалтеру требовалось ИНВ-1. Вы уверены, что по данным счетам вам надо именно ИНВ-3?

    Reply
  12. selinata2005

    Да, мне необходимо составить ИНВ-3 по забалансовым материалам, т.к. раньше мы в др. программе делали такую (привычка)

    Reply
  13. COMPER

    ок. возможно добавлю

    Reply
  14. selinata2005

    Будем надеяться и ждать.

    Reply
  15. bodypit

    Ставлю минус, к моей базе не подходит, и в модуль не залезть, да не исправить.

    Reply
  16. COMPER

    (15) Большая просьба указывать релиз конфигурации, если у вас что-то не заработало.

    Reply
  17. selinata2005

    (13) Плиз, ускорить движение по добавлению, тяжко ждать.

    Reply
  18. COMPER

    (17) Сейчас совсем нет времени, т.к. мои немногочисленные клиенты сдают квартал. Да еще учебой занялся …

    Наверно после 20 апреля опять буду без работы сидеть и воплощу в жизнь ваше предложение.

    Reply
  19. selinata2005

    (18) Хорошо, опять буду ждать

    Reply
  20. VNik

    Только начал работать с этой конфигурацией хотелось бы знать пароль от обработки

    у меня как раз такое задание от главбуха, а возиться с паролем некогда, помогите!!!

    Reply
  21. gegetom

    по счету МЦ.04 нет МОЛа, только подразделение, а отбора не предусмотрено.

    Reply
  22. AlexMAM

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

    Reply
  23. COMPER

    Теперь платно

    Reply
  24. hmv59

    Очень пригодилась обработка, сейчас работает в составе конфигурации.

    Reply
  25. loivsky

    Не совсем практична для МЦ счетов.

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

    Проще было использовать её для счетов МЦ именно как отчёт, не создавая документа.

    Reply
  26. Степанова Н.

    У меня 1 С 8.2 КОРП пишет : «Ошибка загрузки документа. Внешняя обработка не может прочитано текущей версией программы

    Reply
  27. COMPER

    (26) Перед тем как пользоваться обработкой в 1с 8.2 надо 1 раз открыть обработку в конфигураторе, она сконвертируется для 8.2.

    Reply
  28. Степанова Н.

    Спасибочки за помощь

    Reply
  29. найма

    А у меня почему то ведомость по МЦ04 остается пустой ( в чем может быть проблема?

    Reply
  30. COMPER

    (29) сообщите плиз номер релиза вашей конфигурации

    Reply
  31. найма

    Бухгалтерия предприятия, редакция 2.0 (2.0.25.5) (http://v8.1c.ru/buhv8/)

    Copyright (С) ООО «1C», 2009 — 2011. Все права защищены

    (http://www.1c.ru)

    Reply
  32. COMPER

    (31) проверил на этой конфигурации отлично работает.

    Возможно вы не добавили субконто «РаботникиОрганизаций», как об этом просит программа.

    Прочитайте служебное сообщение, Которое у вас выскакивает на экран.

    Reply
  33. victro*

    спасибо пригодилась, народ доволен))

    Reply
  34. Utka73

    А как же 10.МЦ он только в налоговом. Не подходит

    Reply
  35. COMPER

    (34)Пишите подробней

    Reply
  36. ves_sergey

    Вообще никто не запрещает и подправить если что самому….

    Reply
  37. COMPER

    (36)Это призыв к взлому обработки?

    Reply
  38. ves_sergey

    (37) нет, если честно имел ввиду то что если кому не нравится можно и свое написать и не более.

    Reply
  39. SergeyGladyshev

    Очень полезный отчет, автору респект!

    Reply
  40. Ката174

    Увы. Деньги на ветер. Оказалось — это демо. Всего 10 позиций.

    Reply
  41. COMPER

    (40) Обновлено. Тут Полная версия (без ограничений), не демо. Если у вас возникли какие-либо проблемы с обработкой — обращайтесь лично.

    Reply
  42. 1cBokov

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

    Reply
  43. b-dm

    Скачал. пробую пользоваться.Скажите пожалуйста, а печатная форма ИНВ-3 поддерживается ? если да, то как её вызвать ? С ИНВ-1 все получилось, работает…

    Reply
  44. b-dm

    А так понял ИНВ-3 не используется…планируется ли доработка этой замечательной обработки ?…

    Reply
  45. COMPER

    (44) b-dm, этой обработкой вы заполнили документ «Инвентаризация товаров на складе», а уже из документа можете печатать стандартную ИНВ-3

    Reply
  46. b-dm

    (45) понятно, это тоже неплохо в принципе…а напечатать прямо из этой обработки доработать можно или проблемно ?) было бы идеально прямо из обработки печатать..

    Reply
  47. b-dm

    И ещё вопрос, также необходимо заполнение по счету 10.11 это возможно доработать ? В таком же ключе как по счету МЦ04 или МЦ02

    Reply
  48. gigagr

    Соглашусь с b-dm, у меня тоже просят заполнение по счету 10.11, так же как сделано по счету МЦ04 или МЦ02, тогда для меня это было бы интересно.

    Reply
  49. b-dm

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

    Reply
  50. COMPER

    (49) b-dm, (48) gigagr, Готово. Пробуйте.

    Reply
  51. b-dm

    (50) появился в списке счетов, правда не проеврял как заполняет…возник очень важный вопрос, а по подразделениям отбор сделать можно ? например у нас много подразделений и каждый бухгалтер хочет заполнять и видеть только своё ? а вот вводить новое субконто в план счетов представляется более проблематичным. это например касается вопрос счета 001.

    Reply
  52. b-dm

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

    Reply
  53. COMPER

    (52) b-dm, я уже писал, что это уже сделано)

    Reply
  54. COMPER

    (51) b-dm, я не понял, откуда брать подразделение?

    Reply
  55. b-dm

    (53) да, счет поставляется…а можно ли сделать дополнительный отбор по подразделению ?

    Reply
  56. b-dm

    (54) например из справочника складов 🙂 в ином случае как я понимаю надо добавлять реквизит подразделение в документы инвентаризаций…Просто думаю, как быть если складов несколько принадлежащих одному подразделению..

    Reply
  57. COMPER

    (56) b-dm, можно добавить субсчета. Каждый субсчет будет подразделением.

    Reply
  58. b-dm

    (57) то есть все равно править план счетов ? и кроме этого править документы, так ?

    Reply
  59. COMPER

    (58) b-dm, нет. документы не придется править.

    Reply
  60. COMPER

    Обновление для Бухгалтерии КОРП добавлен отбор по подразделениям.

    Reply
  61. b-dm

    (60) Чудесная обработка и правда работает! 🙂 а можно сделать так, чтобы колонка «учет количество» заполнялась равная количеству ?или опционально, чтобы можно было как заполнить так и оставить пустой ?)

    Reply
  62. buval

    В Комплексной автоматизации работает по 002 счету. Надо сделать сортировку -исправить 10 минут приходится писать автору и ждать, т. к. код закрыт. И алгоритм не понял — зачем привязка к документа, если отчет показывает всю номенклатуру только дату берет из пустого непроведенного документа Инвентаризация ОС.

    Reply
  63. COMPER

    (62) buval,

    1) сортировку чего надо? по номенклатуре?

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

    Reply
  64. RubikJan

    в 8.1 не открылось. еще и код за паролем.

    Reply
  65. COMPER

    (64) сообщите пожалуйста текст ошибки

    Reply
  66. COMPER

    (64) подскажите, для чего вы используете платформу 8.1 и не обновляете ее?

    Reply
  67. user1030940

    ДОбрый день! А для счета МЦ-01 возможна доработка? Платформа 8,3, Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.63.15)

    Reply
  68. COMPER

    (67) добрый день. Да, конечно. Напишите в личку, что вы хотите доработать.

    Reply
  69. user1030940

    (68) не уходят вам сообщения

    Reply
  70. COMPER

    (69) я вам написал только что. проверьте пожалуйста.

    Reply

Leave a Comment

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