Набор "В помощь бухгалтеру". Простые отчеты под "1С:Бухгалтерия 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='\

99 Comments

  1. CheBurator

    Да, действительно все как-то однотипно… просто и запаролено…

    да и ошибки, как всегда — детские 😉

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

    {H:\_НАКОПИТЕЛЬОТЧЕТОВ.DIRВ-ПОМОЩЬ-БУХУ.DIR3ОТЧЕТ ПО ПРОДАЖАМ БУХГАЛТЕРИЯОТЧЕТ ПО ПРОДАЖАМ.ERT(90)}: Группировка ДатаДок;Группировка ТекущийДокумент;Группировка Товар без Групп; <<?>> ?(Контрагент = ВыбКонтрагент);

    Запрос[15] : Неизвестая ошибка ‘?’

    Шняга полная, плюсовать не буду! Принципиально! Потому как врет отчет нафиг! 😉

    У меня всяких поступлений и отгрузок полным-полно, только ручными операциями — вот их-то и не рассматривает… а как бы было хорошо… а мне — плохо!

    Другим — наверняка пригодится…

    Взнос взнес комментом…

    Reply
  2. CheBurator

    Остатки товаров.

    1. позволяет выбирать группу, но при этом не выводит результатов в отчет.

    2. а почему только количество? сумму… хочется…

    Движение товаров.

    1. не выводит если не выбран склад.

    почему? — если эта аналитика не заполнена, тем не менее такие проводки имеют право быть… не удалось мне получить такой отчет… и опять же почему только количество? типа суммы в БУ — несущественно…?

    … итого

    (+) что в одном флаконе, работоспособно для большинства юзеров

    (-) запаролено, недоделано для остальных юзеров.

    +1 почти набежало.. чуток не хватило…

    Reply
  3. O-Planet

    > Шняга полная, плюсовать не буду!

    Ни хрена не шняга! Ошибка исправлена. ПЛЮСУЙ!!! А то, что детская — это точно, потому что отчет писался на заре моей юности 1С-ной.

    Reply
  4. O-Planet

    > Остатки товаров.

    Он таким задуман был, чтобы увидеть кол-во того, что есть на конкретной точке. Читай «Полное описание»: если оно не устраивает, то просто не используй. Смысл этих отчетов в чем: минимум универсальности для максимума оперативности по КОНКРЕТНОЙ, узкой задаче.

    Reply
  5. O-Planet

    Хошь с суммой?… Щас, выложу!

    Reply
  6. O-Planet
  7. CheBurator

    О!

    > Смысл этих отчетов в чем: минимум универсальности для максимума оперативности по КОНКРЕТНОЙ, узкой задаче.

    //

    Вот так и надо говорить сразу! а то тянешь из вас клещами…

    У вас чувсвуется по точкам специализация идет — поделился с народом бы как организовано, где бяки, где гуды — было бы востребовано…

    Reply
  8. CheBurator

    С суммами — в принципе нормально… вооружусь…

    (+1) добрал все-таки…

    Reply
  9. O-Planet

    > Вот так и надо говорить сразу!

    А по-твоему, ссылка «Подробное описание» вверху этого экрана просто, оформительский изыск такой?

    Reply
  10. CheBurator

    Хотя ОСВ воообщем-то то же самое дает, только без средней цены…

    Reply
  11. O-Planet

    Кстати, есть у меня программулина по снятию паролей с отчетов. (Сам писал) Выложить чтоли здесь? 😉

    Reply
  12. O-Planet

    >Хотя ОСВ воообщем-то то же самое дает, только без средней цены…

    Угу. Опять же, смотри ОПИСАНИЕ! Там пишется, что все эти ведомости хороши, но только не для распечатывания, потому как много там строк. А у меня частенько директора малых фирмочек просят бухов распечатать остаток на складе. Вот тогда мой отчет и оказывается нужным им.

    Reply
  13. CheBurator

    Выкладывай… или на мыло зашли мне…

    Reply
  14. kandellaster

    +1 сойдет

    Reply
  15. kandellaster

    говори пароль и рейтинг будет до потолка)))

    Reply
  16. O-Planet

    Пароль …

    В общем, как токо рейтинг будет достигать очередной пятерки (5, 10, 15 … ) — буду выкладывать без пароля очередной отчет, начиная с первого. Т.о., до остатков товаров без пароля осталось 2!

    (Лублу поиздеваться над честными пользователями! 🙂 )

    Reply
  17. kandellaster

    клади уже))

    Reply
  18. O-Planet

    ЁЁЁлки!!! 🙂 Остатки товаров выложил БЕЗ ПАРОЛЯ!

    Reply
  19. Все здорого

    Reply
  20. agent100

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

    Reply
  21. O-Planet

    >переписывать чужой код

    = изголяться 🙂

    Блин! Еще +2 и придется движение товаров СДАТЬ! 🙂

    Reply
  22. SunShinne

    Зачем в отчете по движению товара выводить товары с нулевым сальдо и без движения?

    Reply
  23. O-Planet

    Можно легко поставить галочку, которая это отключает.

    Вот, на фиг! Выкладываю движение товаров БЕЗ ПАРОЛЯ!!!

    Reply
  24. O-Planet

    И кто меня за язык-то тянул? 🙂 Отчет по оптовым продажам — без пароля. НАТЕ…

    На очереди — реестры?.. 🙁

    Reply
  25. O-Planet

    А Чебурашка говорил: «Да, действительно все как-то однотипно… просто»

    Народ-то не обманешь! народ — он понимат!!! УХ!!!!!!!! 🙂

    Reply
  26. egles

    Очень хорошие отчеты, но блин какой пароль?

    Reply
  27. O-Planet

    А вот когда еще два раза кликнут по рейтингу, тогда он просто не понадобится уже для четырех из шести отчетов! 🙂

    Reply
  28. Julia-7

    Спасибо

    Reply
  29. O-Planet

    20… Вечером реестр выдам без пароля

    Reply
  30. O-Planet

    Реестр поступления без пароля. Bitte!..

    Reply
  31. metaeditor

    рассказать чтоли людям как пароль через блокнот снимается 😀

    Reply
  32. ystet

    Плюсанул…. ;)))))

    Reply
  33. O-Planet

    > рассказать чтоли людям

    🙂

    Оно отрыгнется потом… Ты придумай вот, как защитить эртэшку можно.

    Reply
  34. O-Planet

    Пароли высланы…

    Reply
  35. metaeditor

    О-Планет: конечноже отрыгнется… поэтому и нескажу 🙂 публичное изгнание с инфостарта итд.

    а про защиту это к Альфу с его КЗК

    Reply
  36. egles

    В отчете «реестр оптовых продаж» д када сформировал все хорошо кроме того вы нет количетва проданных товаров для каждого товара(т.е. сколько всего раз допустим за месяц был продан товар) и общее количество продаж и цену лучше сразу связать с НДС а то потом сумму с НДС складывать приходится

    Reply
  37. O-Planet

    УРЯЯЯ!!! Общими усилиями осталось с паролем только два последних отчета!

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

    СПАСИБО ВСЕМ!!!

    Reply
  38. egles

    Приятно услышать, жду новых программ!

    Reply
  39. O-Planet

    Ну, ОДЫН плюсик — и предпоследний отчет станет без пароля!!!

    Reply
  40. 21088

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

    Reply
  41. O-Planet

    Это — всегда пожалуйста.

    КСТАТИ… Рейтинг + 30 и остался под паролем только последний отчет! Кто сделает еще +5, чтобы весь комплект стал доступным не только для скачивания и использования, но и для любых изменений?

    Reply
  42. Вы меня просто спасли!!!

    Reply
  43. viktnov

    спасибо

    Reply
  44. O-Planet

    Последний клик остался до полной свободы?

    Reply
  45. Лови последний без пароля http://rapidshare.de/files/34888967/_____________-__________________.ert.html

    Reply
  46. O-Planet

    НЕ ПОНЯЛ, но все равно приятно.

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

    РЕЗЮМЕ: всеобщее оскудение нравов

    Это как на Евровидении…

    А Чебуратор, помнится, изрек: «Шняга полная, плюсовать не буду»! 😉 Нет, Ч., кризис — глобален!!!

    Reply
  47. zalst

    +1 не за отчеты (я их не видел), а за маркетинг 😀

    Reply
  48. CheBurator

    безделушки и востребованы… 😉

    не адо морочиться с подстройкой под себя и пр…

    поэтому и качают и юзают и плюсуют…

    Reply
  49. kosma

    +1

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

    Reply
  50. O-Planet

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

    ЖДИТЕ ИНФЫ В ЭТОЙ ВЕТКЕ

    Reply
  51. Jan Volk

    Спасибо автору! Скачиваю для изучения. Я новичок.

    Reply
  52. +1

    Reply
  53. Masterintru

    +

    дабы нафиг не удалили

    бум смотреть, учиться.

    Спасибо.

    Reply
  54. СПАСИБО.

    Reply
  55. karat60

    +1

    Reply
  56. victuan

    Не пора бы пополнить копилку новыми отчетами? Пока плюсовать не буду! Жду новинок.

    Reply
  57. А как установить отчеты?

    Reply
  58. O-Planet

    Скопировать в каталог информационной базы в папку ЕxtForms. Использовать меню программы, пункт «Сервис», «Дополнительные возможности», кнопка «Изменить», выбрать «Внести в список».

    Reply
  59. vasilykushnir

    >O-Planet

    >Что ж. Поздравляю всех. Рейтинг 35 на, по сути, безделушку. А ведь сколько на Инфостарте по-настоящему классных разработок осталось незамеченными!

    Уже 57.

    Вот-вот. Рядом лежит Новейший Отчет, который закроет все эти обработки с головой да еще место останется; скачиваний 4852, рейтинг — 31. Извините, это юмор или сатира?

    Reply
  60. vasilykushnir

    И еще, признайся честно O-Planet, «1С умеет говорить!» (рейтинг 69) соизмерима по изяществу решения со всеми этими разработками кучей взятыми? А ведь идут почти ноздря в ноздрю… А относительно рейтинга… Если уж куча народа плюсовала ради получения пароля, то так им и надо, лентяям.

    Reply
  61. O-Planet

    Мне самому забавно. Я раньше всякие рекламные компании придумывал, чтобы реферов привлечь, а теперь просто раз в три дня захожу и вижу, как оно стало с 40 до 45, с 50 до 60… Главное, что «в помощь бухгалтеру» можно в принципе уже не плюсовать: везде написано, что без пароля. А люди все равно ставят плюсы. Просто это называется: реклама заработала 🙂

    Кто-то хорошо заметил, что система рейтингования на Инфостарте показывает скорее не уровень сложности разработки, а то, как она востребована. Мне кажется, это верное замечание.

    Проанализировав рейтинг работ (не только моих), можно легко сделать маркетинговый вывод, в чем нуждается программист-разработчик 1С и как привлечь его внимание.

    Reply
  62. vizik

    O-Planet !С Новым Годом ! Удачи Вам и исполнения всех желаний ! Воспользовалась Вашим широким жестом и скачала ‘ Реестр поступления’. Работает нормально. А не будете ли Вы так добры, что подскажете, как добавить в отчет ‘Документ основание’, где-нибудь под номером документа или 2-ой строкой. Очень надеюсь на Ваше БЛАГОРОДСТВО ! С уважением: vizik @pochta.ru

    Reply
  63. O-Planet

    Как можно под Рождество отказать незнакомке из Таллина? Качайте. Если что не подходит — пишите.

    Reply
  64. Gendalf

    Есть за что поставить +!

    Получите, тов.O-Planet, распишитесь! 🙂

    Reply
  65. спасибо автору!

    Reply
  66. tdn62

    Спасибо !!!

    Reply
  67. anlap

    спасибо мои бухгалтера будут рады..

    Reply
  68. Отличные отчеты

    Reply
  69. administrater

    гуд! :))

    Reply
  70. cs25

    Имел возможность скачать непосредственно с http://www.belkamag.ru

    и оценить.Отозвалась Менеджер: Римма Шапирова !!! Отчёты НУЖНЫЕ !!! +5 или 5 с + !!!

    Reply
  71. aleksaleksaleks

    Остатки товаров гляну как получаются, и остальное. Нужное дело делаешь…

    Вкалывали всё таки чтоб роботы хочется…

    Reply
  72. krasivaja

    Помогите, плиз, в отчете остатки товаров ввожу склад , в поле номенклатура ввожу номенклатура Товары нажимаю остатки и выводится ошибка:

    Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, , 1);

    {D:DB_77EXTFORMSОСТАТКИ ТОВАРОВ БЕЗ ПАРОЛЯ.ERT(30)}: Поле агрегатного объекта не обнаружено (Номенклатура)

    Reply
  73. O-Planet

    А что за конфигурация-то? Давай вот из чего исходить: более 10000 скачиваний. И ошибка — у тебя любимой. Это что-то да значит 🙂

    Reply
  74. gray_mage_sh

    Большое СПАСИБО!

    Reply
  75. dry723

    Спасибочки!

    Reply
  76. AlfaGl

    Спасибо!

    Reply
  77. cheredaevgeny

    Альтруизм рулит. Спасибо!!!

    Reply
  78. slavawww

    СПАСИБО!!!!!!!

    Reply
  79. SergeyM

    Большое спасибо.

    Reply
  80. nahinalka

    Спасибо! Отчеты нужные.

    Reply
  81. Sergks84

    Очень нужно.

    Не удаляй ни за что.

    Reply
  82. akoch

    Спасибо!

    Reply
  83. greenclean

    Спасибо!

    Reply
  84. O-Planet

    Ух ты! Пожалуйста…

    Reply
  85. fgremlin

    Мое «Спасибо» может показаться банальностью, но тем не менее:

    Спасибо! 🙂

    Reply
  86. jilzzoni

    в отчете по продажам нужно в графе «сумма» указывать стоимость роеализованных товаров без НДС! В случае реализации импортных товаров прибыль получается с НДС, что не совсем удобно.

    Reply
  87. O-Planet

    (86) Доработаешь? Высылай, выложу.

    Reply
  88. egles

    Остатки товаров (без пароля) — было бы неплохо бы иметь еще и колонку цена и соответсвено общую сумму

    а то общее количетво есть — это хорошо, а общую сумму товаров группы нет

    Reply
  89. O-Planet

    Добавил по просьбам трудящихся движение товаров для конфигурации 1С:Бухгалтерия 7.7 УСН

    Reply
  90. Strizh

    спасибо автору!

    Reply
  91. Ice-Dragon1988

    Спасибо, за отчеты. Очень нужны.

    Reply
  92. LenaKuz

    Не годится для Украины…

    Reply
  93. O-Planet

    В отчете «Движение товаров для УСН» выявлена ошибка: нач. сальдо не считает. Пока не качаем. Посмотрю на днях…

    Reply
  94. O-Planet

    Проблему, описанную в (93) исправил.

    Reply
  95. irina_ph

    Большое спасибо автору!!!

    Reply
  96. Altez

    +, А можно линк на паролесъемничек?))

    Reply
  97. O-Planet

    (96) А не проще спросить в личку у мну обработку без пароля? 😉

    ПС А, кстати, что тут с паролем осталось?

    Reply
  98. Altez

    >ПС А, кстати, что тут с паролем осталось?

    Здесь как раз все нормально, свои б вспомнить))

    Reply
  99. luckardo

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

    Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, , 1);

    {D:DB_77EXTFORMSОСТАТКИ ТОВАРОВ БЕЗ ПАРОЛЯ.ERT(30)}:_ Поле агрегатного объекта не обнаружено (Номенклатура)

    Reply

Leave a Comment

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