Акт списания материалов Бух 7.7




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

74 Comments

  1. z_serg_v

    Про рейтинг не забывайте

    Reply
  2. sergeP

    Спасибо. пригодится многим!

    Reply
  3. SunShinne

    Спасибо, мои уже три месяца просят, все нехотелось этим заниматься, отпало

    Reply
  4. Starik

    Открываем, нажимаем заполнить и

    ТЗ.СубСчет10= Строка(ДокОснование.Материал.Субсчет10);

    {C:PROGRAM FILES1CV77БАЗЫБУХГАЛТЕРИЯ1SBDEMOEXTFORMSАКТСПИСАНИЯ.ERT(115)}: Поле агрегатного объекта не обнаружено (Субсчет10)

    Это все потому, что в док. Требование накладная в табл. часть могут попасть не только материалы, но и продукция и полуфабрикаты…

    Reply
  5. z_serg_v

    08.09.06 Исправил ошибку, теперь работает

    по продукции и полуфабрикатам.

    Поправил описание.

    Reply
  6. бухгалтер

    спасибо большое , то что надо и именно сейчас

    Reply
  7. константин

    Спасибо, выручили…

    Reply
  8. lan

    Очень удобно …Спасибо Автору.

    Reply
  9. stepan_shock

    не корректно работает, в ОСВ по счету есть ТМЦ, он ничего не рисует

    Reply
  10. z_serg_v

    Он работает по документам Требование-накладная

    Reply
  11. Конечно очень здорово и акт прикольный в печатной форме,только вот заполнить таблицу не можем.

    Reply
  12. СНА

    СПАСИБО!!!

    Reply
  13. LiOn

    Спасибо у меня по другому но тоже нормально.

    Reply
  14. RuslanF

    Может чего-то не понимаю как заполнить таблицу

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

    Reply
  15. z_serg_v

    Смотрите описание

    Reply
  16. DudaeFF

    а где это самое описание?????

    Reply
  17. DudaeFF

    и еще, при формировании списка на списание он формируется из всего что есть например на эту дату а не из того что есть в выбранной требовании-накладной… Так и должно быть или это можно как то побороть?

    Reply
  18. z_serg_v

    Описание на кнопке Описание в отчете на панели инструментов.

    Отчет формируется по всем требованиям накладной за выбранный период.

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

    Можно сделать выбор треб-накл, но это уже другой отчет. У нас этого не требовалось.

    У меня Акт списания сделан документом, но принцип работы тоже за период.

    Reply
  19. maritaka

    Очень нужная вещь. Вот только бы заставить ее работать.

    Что нужно сделать чтобы таблица начала заполняться?

    Reply
  20. z_serg_v

    Сделал выбор документа для списания.

    Повторяю: Отчет работает по документам «Перемещение материалов » в производство

    Reply
  21. AlMir

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

    Reply
  22. winan

    Благодарю!!!

    Reply
  23. yulka

    как скачать акт списания материалов?

    Reply
  24. z_serg_v

    Должен быть для всех свободен. Если нет могу на мыло сбросить

    Reply
  25. nev-zhanna

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

    Reply
  26. z_serg_v

    Это внешний отчет. Никуда он не добавляется. Через МЕНЮ ФАЙЛ ОТКРЫТЬ открывается

    Reply
  27. nahinalka

    Нужная вещь. Только бы заставить работать…

    Reply
  28. vlad50

    Отлично! Спасибо! )

    Reply
  29. blacky

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

    Reply
  30. Zzimma

    а можно просто распечатать?

    Reply
  31. sip

    Супер! и надо доработать! сделайте пожалуйста чтобы его можно было выбрать в открытом требовании-накладной (кнопкой внизу). Т.е. сразу заполнил требование-накладную и распечатал акт.

    Reply
  32. sip

    Здорово! напишите пожалуйста пароль на AktSpis2. Нужно подправить длину строки наименование акта. Спасибо!

    Reply
  33. Зарина

    Хороший отчет, но только для типовой конфигурации. А для УСН? И можно ли узнать пароль, попробую в УСН. Спасибо.

    Reply
  34. kudag1

    Нечитаемый формат. —

    Reply
  35. Holla

    аналогично с KUDAG1… формат не читается… без 1С форму нельзя просматривать?

    Reply
  36. assgs

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

    Reply
  37. fomenkom

    В УСН выдает ошибки! Документ не заполняется

    Reply
  38. Angel77

    Все супер!!! только можно несколько ньюансиков:

    1. грамматическая ошибка: в графе итого прописью стоит «ИОГО»;

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

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

    Reply
  39. adya

    Молодец! Супер…но ошибки надо исправить, но все-равно спасибо

    Reply
  40. AV-56

    Не открылось?

    Reply
  41. geo 55

    Благодарю за решение проблемы, а то наша ИФНС при выездной проверке зацепилась за эти акты и выкинула из расходов все материалы.

    Reply
  42. 4ish

    А можно узнать пароль на ert?

    Reply
  43. Иванкова

    объясните пожалуйста куда сохранить и как открыть или где взять инструкцию?

    Reply
  44. olgec

    В усн И В бУХГАЛТЕРИИ ГОВОРИТЬ ЧТО НЕПРАВИЛЬНЫЙ ФОРМАТ ФАЙЛА

    Reply
  45. cheri

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

    Reply
  46. olgec

    Напишите пожалуста актик для упрощенки!!!!!!!!!!!!!!!

    Reply
  47. sonata

    Скачала данные обработки.

    Требует пароля.

    Это как?

    Reply
  48. vasilykushnir

    (47) А так… Наверное надо в личку автору обработок что-то написать….

    Reply
  49. Altair777

    (48) Если архив закрыт паролем, это надо в шапке указать

    имхо 🙂

    Reply
  50. Арчибальд

    А я так и не понял, зачем к форме М-11 плодить еще документы, не предусмотренные нормативкой. Похоже, огромный процент бухгалтеров мается от безделья. В развитие направления могу предложить:

    1. Указывать приказ о назначении комиссии.

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

    3. Сопровождать актом каждую строку формы м_11 (это, правда, уже кто-то предложил).

    4. При перемещении ТМЦ между складами для источника составлять акт списания, а для приемника — акт оприходования.

    5. Расширить обработку, чтобы работала с документами «ОтпускМатериаловНаСторону», «ПродажаВРозницу», «РасходнаяНакладная».

    Reply
  51. sonata

    (49) Не поняла…что и где указать…

    Подскажите, пожалуйста…

    Наш администратор сказал, что файл запаролен.

    Reply
  52. sonata

    (48) автору написала в личку, но он пока не отвечает…

    По-идее, он должен в личку прислать пароль?

    Reply
  53. Altair777

    (51) автор должен был предупредить, что архив запаролен и указать способы получения пароля

    (52) Дата последнего входа: 16.01.2009 14:16:12

    Reply
  54. Арчибальд

    (51)Запускаете 1С-ину (любую). Файл-открыть. На форме давите листок с вопросительным знаком.

    Вчитываетесь в текст, медитируете (мантра: ап что может думать такой папаша).

    Запускаете Конфигуратор. Опять Файл-открыть. Получаете окно-доступ ограничен, введите пароль.

    Вспоминаете о папаше (см выше), думаете как он (ап выпить рюмку водки и т.д. по Бабелю). Набираете пароль. 🙂

    Reply
  55. sonata

    (54) С чувством юмора, у вас все хорошо.

    Мне просто очень срочно надо, а владелец не отвечает.

    Возможно, он не в сети.

    Или забыл про форум.

    Может кто-нибудь помочь с паролем?

    Reply
  56. 125118

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

    Reply
  57. stgy

    А по форме 230 сделать слабо?

    Reply
  58. ketr

    блин, хотел столбец добавить, а обработка запаролена(((

    есть может у кого ломалка? Поделюсь обработкой декодирования модуля для 8.1

    Reply
  59. fortuna_77

    Спасибо,всё работает,мне этого не хватало для полного счастья.

    Reply
  60. Nellim

    Спасибо за разработку, экономия времени

    Reply
  61. AB3012

    очень полезная штука

    Reply
  62. vlad50

    Очень полезная разработка! Спасибо!

    К сожалению для настройки и измемения под себя закрыта паролем. Неплохо было бы указывать это в шапке…

    А так — всё нормально! Сенкс! )

    Reply
  63. forurchik

    отличная обработка. Давно искал .

    Reply
  64. Oleg51

    Большое спасибо. Удобная и нужная обработка.

    Reply
  65. v-oksana

    Спасибо. Нужная вещь.

    Reply
  66. OleGazz

    отличная вещь, большое спасибо

    Reply
  67. ann999

    а для УСН подходит?

    Reply
  68. Мать Тереза

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

    Reply
  69. Bomba1911

    Спасибо,всё работает,мне этого не хватало для полного счастья.

    Reply
  70. vovkakursk

    Спасибо. Очень нужная вещь!

    Reply
  71. vaiteri

    Для подтверждения списания достаточно формы М-11. Форма утвеждена Госкомстатом. Дополнительная форма «акта на списание» не является обязательной.. 🙂

    М-11 есть во всех 7.7-8.х конфигурациях.

    Reply
  72. Мать Тереза

    А я так и не понял, зачем к форме М-11 плодить еще документы, не предусмотренные нормативкой. Похоже, огромный процент бухгалтеров мается от безделья. В развитие направления могу предложить:

    1. Указывать приказ о назначении комиссии.

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

    3. Сопровождать актом каждую строку формы м_11 (это, правда, уже кто-то предложил).

    4. При перемещении ТМЦ между складами для источника составлять акт списания, а для приемника — акт оприходования.

    5. Расширить обработку, чтобы работала с документами «ОтпускМатериаловНаСторону», «ПродажаВРозницу», «РасходнаяНакладная».

    Сп(50) Арчибальд, угу, по поводу- маюцца бездельем — в небольших фирмах вести полный учет все равно надо ,и никто никому ничго не выдает и в ведомость не записывает ,все только на бумаге…А тут подрок-опа и за месяц весь 10 счет оптом списал.

    Reply
  73. 1c8.2

    (10) Подскажите,пожалуйста, как будет выглядеть строка с данными, если в ТребованиеНакладная в строке Комментарий есть данные? Мне нужно вытащить эти данные из Комментарий в дополнительную колонку

    Спасибо!

    Reply
  74. gigagr

    Присоединяюсь к Alyadelf, мне то же надо вытащить данные из строки Комментарий. Как-то можно это включить в обработку? У нас всегда в ТребованиеНакладная в строке Комментарий указывался объект, вот теперь это понадобилось буху

    Reply

Leave a Comment

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