Интерактивная ОСВ v2.53




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

99 Comments

  1. clappa

    Публикуется здесь в связи с хроническими глюками проклуба.

    Reply ↓
  2. Shagan

    очень полезная ВЕЩЬ !!! Если полностью вникнуть, то меню отчетов от 1С, практически не нужно 🙂 Спасибо!

    Reply ↓
  3. azernot

    Пользуюсь давно. Всем рекомендую.

    Пользуясь случаем, снимаю шляпу.. +1

    Reply ↓
  4. azernot

    Вот страность какая… При горизонтальном развороте по периодам, сальдо на конец периода показывается как ########, хотя без разворота — нормально. Само сальдо больше триллиона (1,171,676,491.68).

    Reply ↓
  5. vat-74

    Задумано хорошо, фунуциональность широчайшая. Да и выводится красиво. +1 и от меня.

    Reply ↓
  6. JohnyDeath

    У нас тоже с недавнего времени пользуются. Главбух в восторге… и я вместе с ней

    +1

    Reply ↓
  7. clappa

    Azernot, это в какой же валюте?! А ещё говорят что 7.7 — для малого бизнеса…

    Reply ↓
  8. clappa

    * Исправлена ошибка: ширина последних столбцов не подстраивалась автоматически под разрядность сумм (thank’s to Azernot)

    Reply ↓
  9. OlegTor

    Молодец!

    Reply ↓
  10. azernot

    Вот вы смеётесь…

    А может я самолётами торгую? С итальянцами, за лиры?

    Представляете, что у меня в стандартных отчётах творится? 999,999,999.99

    Ну почему они считают стандартной Число 15.2?

    Reply ↓
  11. berghouse

    Супер. +1

    Reply ↓
  12. maljaev

    Отличная разработка. Вещь, которую нужно сделать и которую несложно сделать — добавить при экспорте в эксель группировки в том случае, если они есть. Тогда можно будет еще и в экселе сворачивать/разворачивать группировки. Где-то на проклубе у меня даже пример валялся.

    Reply ↓
  13. O-Planet

    Слушай, за три дня рейтинг этой работы 17?! Присоединяюсь. Ты где был раньше-то? 🙂

    Reply ↓
  14. clappa

    [to O-Planet] Так она уже давно в и-нете валяется. Ещё до инфостарта.

    Reply ↓
  15. clappa

    * Добавлена группировка строк при экспорте в Excel (special for Maljaev)

    * Добавлена возможность использования отчета с TurboBL (если в каталог отчета положить turbobl.dll, она будет загружена при открытии отчета. Подробнее см. turbo.txt). Так как весь отчет построен на таблицах значений, ускорение на операциях, не связанных с запросами к бухитогам, до 80%. Искренняя признательность Александру Орефкову.

    * Исправлена ошибка: при сворачивании горизонтального разворота отчет формировался два раза подряд.

    Reply ↓
  16. maljaev

    Прикольно получилось! Молодец, жалко не могу еще один плюс поставить, настолько нравится.

    Reply ↓
  17. бубух

    Вам хорошо… А у меня пшик (скачал, загнал в Extform, включил в список-увидел!)- жмаю на ОК, а в ответ них…, т.е. ваще ничего не происходит! Ну очень хочется поглядель на нее. Подскажите пож. буху-чего еще надо сделать?

    Reply ↓
  18. clappa

    (to бубух) Непонятно. По крайней мере, кнопки ОК в «Дополнительных возможностях» быть не должно. Попробуй просто запустить файл OSV2.ert через пункт меню «Файл->Открыть…». По результатам пиши на clappa<coбaka>mail.ru

    Reply ↓
  19. clappa

    * Исправлена ошибка: отчет вываливался при одновременном вертикальном развороте по проводкам и горизонтальном — по периодам

    * Исправлена ошибка: не работала сортировка по суммам для разворотов ниже 2-го уровня

    * Исправлена ошибка: перепутаны кнопки управления точностью сумм в диалоге настройки отчета (thank’s to Vlad_Dimov)

    Reply ↓
  20. clappa

    * Исправлена ошибка: в режиме расчета развернутого сальдо программа «ругалась» при попытке сделать разворот по корсчету

    Reply ↓
  21. mgmac

    Разработка потрясающая 🙂

    Если бы в оборотке там где в качестве субконто выступает справочник выводить как нить группы и обороты по этим группам… эх 🙂

    +1 молодец

    Reply ↓
  22. clappa

    [to mgmac] Это предусмотрено. Например, если у вас типовая конфигурация, то для счетов 60 и 62 доступен разворот по Контрагентам по группам.

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

    так называемый «пользовательский» разворот.

    Подробнее — в справке по отчету.

    Reply ↓
  23. andrey995

    Спасибо Автору,

    ПочетИУважение_!!!

    Reply ↓
  24. Плюшкин_

    Класс !!! Даже не знаю как выразить восхищение данной обработкой.

    Reply ↓
  25. viktnov

    Спасибо

    Reply ↓
  26. Блистательно!!!

    Слежу за развитием проекта уже несколько лет.

    Если бы фирма 1С объявила конкурс на лучшую утилиту, то эта обработка была бы главным фаворитом.

    Reply ↓
  27. pr_kristar

    +1 Очень понравилось, спасибо Автору.

    Reply ↓
  28. бубух

    Здравствуйте. Я заказал отчету многоуровневый разворот по счету 60. Разворот получился с таким комментарием: «Ошибка 2229

    Ошибка расчета развернутого сальдо по счету 60

    Ошибка расчета развернутого сальдо по счету 60″. Скажите пожста, что это мб?

    Reply ↓
  29. clappa

    [to бубух] Спасибо за сообщение, постараюсь исправить в ближайшее время.

    Reply ↓
  30. Filipp_inf

    Благодаря этой ПРЕКРАСНОЙ ОСВ даже противная работа стала доставлять удовольствие!

    Вот бы и для 8-ки такую-же !!

    А то там в Бухгалтерии обычная, примитивная. Никто из разработчиков не учитывает, что кроме работы в интерактивном режиме, еще нужно и распечатывать для предстоящих налоговых проверок, причем не «шахматки» на простынях, а удобные отчеты по проводкам, по оборотам, с различной многоуровневой аналитикой на листах ф.А4.

    Еще раз преклоняюсь перед Талантом и Щедростью АВТОРА.

    Reply ↓
  31. clappa

    Всем спасибо за добрые отзывы. К сожалению, моя новая работа не связана с 1С, поэтому боюсь, не получится и дальше совершенствовать отчет. Хотя, может к лету выйдет версия для восьмерки (если заказчик не сорвется).

    [филипп] Про щедрость вы зря. Денег, полученных за эту разработку, хватило бы на три такие.

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

    Reply ↓
  32. clappa

    * Исправлена ошибка расчета развернутого сальдо при многоуровневом развороте (thank’s to бубух)

    Reply ↓
  33. karaw

    Да-а-а, очень полезная вещь. Если бы еще отчет позволял получать обороты по иерархии элементов справочников, то я думаю вообще отчет можно было бы считать идеальным. А так, в любом счучае +1

    Reply ↓
  34. clappa

    [to karaw] Возможность предусмотрена. См. ниже комментарий от 22.11.2006, и справку по отчету.

    Reply ↓
  35. NeeDiGeo

    КРУТО!!! ВЫСШИЙ КЛАСС. АВТОРУ РЕСПЕКТ

    Reply ↓
  36. karaw

    Спасибо! Отчет на самом деле совершенен.

    Reply ↓
  37. genja

    Супер класс!!!

    Reply ↓
  38. CheBurator

    Все хвалят, скачал посмотреть.

    да, сделано хорошо! +1 (сильно мщно оценить не могу — по бухии мало работаю)

    однако сколько не штрымдячил не удалось добиться следующего: хочу вывести ОСВ по сч.62 по субсчетам ТОЛЬКО для конкретного сочетания контрагент/договор (этого не получилось!!) — а уже дальше разворачивать суммы, ходить по корреспонденциям.

    … надо посмотреть инт.осв внутрях — чувствтую, будет чему поучиться…

    Reply ↓
  39. CheBurator

    кста: напроклабе есть еще заменитель типовой ОСВ (конечно, не такой навороченный, но тоже нормалек) — подходит для тех бухов, которые не смогут осилить ИНТЕРАКТИВНУЮ ОСВ — Account Explorer — там кстати мне понравилось окошко с выбором периода…

    Reply ↓
  40. bvk

    Спасибо!!!

    Reply ↓
  41. oops-hi

    Креативно, нестандартно, суперфункционально! Спасибо!

    +1

    Reply ↓
  42. Alexandra

    +1. Спасибо! Очень функциональная и удобная штука!

    Reply ↓
  43. EddieTocha

    +1 Поставил. АВТОРУ — респект. Вот так пишут прфессионалы. Вот бы еще сама 1С у АВТОРА поучилась, представляете в каких конфах нам бы пришлось работать.

    Reply ↓
  44. zaika

    Обалденный отчет. Я как бухгалтер в восторге. Огромное спасибо. Действительно очень красиво и функционально. Пользуюсь постоянно.

    Reply ↓
  45. clappa

    Для бухгалтеров и делалось. Я вообще к представительницам этой профессии неравнодушен — жена бухгалтер.

    Reply ↓
  46. alexmp

    да, здорово!!!

    Reply ↓
  47. yulia

    Отчет замечательный — ШИКАРНЫЙ !

    Reply ↓
  48. viktnov

    Ставлю еще один +

    Reply ↓
  49. zaika

    сделать бы еще возможность отбора не по всем субконто, былa бы вообще сказка, а не отчет

    Reply ↓
  50. FogOfJokes

    Приятно и красиво! +

    Reply ↓
  51. akat65

    Очень прилично!Спасибо!!!

    Reply ↓
  52. clappa

    Версия 2.53 отчета

    * Добавлена возможность расшифровки итогов в новом окне отчета

    * Добавлена возможность настройки отбора по учетным измерениям

    * Добавлена возможность вывода промежуточного сальдо при горизонтальном развороте

    * Добавлена возможность быстрой настройки многоуровневого разворота

    Reply ↓
  53. CheBurator

    Молодец!

    Reply ↓
  54. CheBurator

    +1 оказывается я раньше не ставил!

    Reply ↓
  55. tatyana_schukina

    ОЧЕНЬ ХОРОШАЯ ВЕЩЬ

    Reply ↓
  56. ibm2007

    +1 Очнь нужная вещь !!!

    Reply ↓
  57. v_id

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

    Действительно «доступно и в серьез»!

    Reply ↓
  58. maysi

    Отчет отличный! Заменяет и превосходит почти любой штатный отчет 1С,

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

    Небольшое замечание:

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

    Reply ↓
  59. ReaL

    Весчь !!!

    +1

    Reply ↓
  60. константин

    Да…+3

    Reply ↓
  61. Punisher

    Вещь — бомбовая. Следу за ней еще с версии 2.0

    Reply ↓
  62. g789

    Это лучший отчет для 7 бухгалтерии

    Reply ↓
  63. kss

    Это мой самый любимый отчет!:)

    Reply ↓
  64. treeg

    Лучший отчет для платформы 7.7!!!!

    Reply ↓
  65. registration

    Согласен

    Reply ↓
  66. Йожкин Кот

    Супер удобный, супер быстрый, супер понятный!

    Жду что-то типа анализа субконто!

    Reply ↓
  67. clappa

    [to Йожкин Кот] В шапке отчета, слева от надписи «Код» есть ячейка с символом «v». Если по ней щелкнуть, выбрать из меню «Полный список…» и далее нужный вид субконто, то будет построен отчет «ОСВ по субконто». Если ещё раз щелкнуть по ячейке, выбрать «Многоуровневый разворот», и добавить в список выбранных показателей «Кор. счета», то получится почти классический анализ субконто.

    Reply ↓
  68. clappa

    [to Йожкин Кот] Сорри, в предыдущем посте следует читать «Счета/субсчета» вместо «Кор. счета»

    Reply ↓
  69. Olyunchik

    Не ожидала!!! Бесподобно!!! Для «Восьмерки» интересно такое будет… Собираюсь переходить в ближ. будущем…

    Reply ↓
  70. andrey995

    Автору — немного доработал отчет — рядом с «открыть элемент справочника» добавил возможность «открыть общий журнал по справочнику» — удобно , например, быстро перейти в журнал по контрагенту или по его договору, если нужно могу прислать правленый отчет

    Reply ↓
  71. yur_art

    Когда работал на 7.7 постоянно пользовался им. Превосходная вещь! Спасибо автору! В этом году перешли на 8.1. Жалко, что не могу воспользоваться больше этим отчетом

    Reply ↓
  72. ВосточныйПарень

    Отличный отчет. Только подглючивает при фильтрации по субконто — не все счета показывает.

    Reply ↓
  73. ded00786

    мощно…

    Reply ↓
  74. Pride

    Бесподобно. Супер. Спасибо автору.

    Reply ↓
  75. Искатель

    Присоединяюсь к [75]. Брависимо!

    Reply ↓
  76. oops!

    Несколько лет тому назад пытался делать тоже что-то универсальное на тему ОСВ, но поглядев эту ВЕЩЬ, понял, что лучше не сделать 😉 — сделано с любовью! БРАВО!

    —

    Для полного счастья не хватает фильтра по «красноте» — как в начальном и конечном сальдо, так и внутри (отрицательный оборот). Интересны «минусы» не только в суммах, но и в количестве (конечное сальдо «ноль», а по количеству глубокий минус). Ну и вариант отчета — вывести только «минуса» 🙂

    Reply ↓
  77. Dolly_EV

    Присоединяюсь к 77 и по поводу «БРАВО» и про «минусы»

    Reply ↓
  78. rasswet

    не сохраняет в настройках разделитель учета. приходится 20ть филиалов каждый раз заново подбирать…как настроить сохранение?

    Reply ↓
  79. boobleak

    Очень удобно. Спасибо

    Reply ↓
  80. Lych1

    Молодец!

    Reply ↓
  81. Sprite

    Пригодилось. Вовремя. Удобно. «+»

    Reply ↓
  82. starruslan

    Мое почтение супппееррррр!

    Reply ↓
  83. бубух

    Отчет отличный- — радость главбуха! Вопрос. От OSV250 далеко ушлел OSV2.53? Стоит поменять или? Плюсую по любому.

    Reply ↓
  84. бубух

    А чё низя второй раз плюсануть?! Один раз плюсовал-то год назад, несчитова.

    Reply ↓
  85. AlexisVZ

    Блеск!

    Reply ↓
  86. O-Planet

    Да, это нечто!

    Reply ↓
  87. andrey_k65

    Приятно видеть такой уровень проработки отчёта. Молодец.

    Reply ↓
  88. VIC_KIEV

    Отчет просто фантастика!

    Reply ↓
  89. Kruzo

    С ОГРОМНЫМ нетерпением ждем версии Вашего шедевра для 8.1.

    Привык работать с Вашим отчетом в 7.7 — теперь не могу ничего сделать в типовой БП 8.1. Хоть опять переходи на 7.7.

    Как Ваши планы этим летом сваять нетленку и для 8.1? Не поменялись? Не убивайте надежду!

    Reply ↓
  90. sssvvvvvvvvvvvv

    Солидарна с Kruzo, в 8.1 без такого отчёта, как «без рук». К хорошему привыкаешь быстро 🙂

    Reply ↓
  91. бубух

    (84) «Стоит поменять или?» СТоит, проверил, поменял.

    Reply ↓
  92. svsrus

    Мда… Только восхищение! +

    Reply ↓
  93. MADINAABAZA

    Это просто фантастика!!!!

    Reply ↓
  94. Morlias

    Автору низкий поклон!

    Reply ↓
  95. Altair777

    Еще не знаю как мои бухши оценят, а я уже оценил!

    Reply ↓
  96. Pavlovsky

    Бухам нужна фича — формировать ОСВ по списку фирм. Отчет это позволяет.

    Разработка залуживает уважения! Автору мое восхищение! Как отнесутся бухи к такому количеству настроек пока не знаю.

    Reply ↓
  97. kulenk

    У меня субконто в счете — Контрагенты. А они группированы . В отчете не выводится итог по группам субконто.Хотелось бы узнать можно ли здесь, Вывести итоги по группам контрагентов и с развернутым сальдо(как по ведомости) ?

    Reply ↓
  98. Доня

    Великолепно! Браво!

    Огромная просьба — ТАКУЮ ЖЕ для 1С8

    Reply ↓
  99. Angel2009

    azernot 02.11.2006

    Вот страность какая… При горизонтальном развороте по периодам, сальдо на конец периода показывается как ########, хотя без разворота — нормально. Само сальдо больше триллиона (1,171,676,491.68).

    А самому размерность (формат ячейки в печатной форме исправить слабо!?)

    Reply ↓

Leave a Comment

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