Отчет о реализации для 1С8, версия 13




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

73 Comments

  1. flyhunter

    выкидывает ошибку при запуске

    {ВнешнийОтчет.ОтчетОРеализации(1001)}: Поле объекта не обнаружено(ПрочиеДоходыИРасходы)

    Запрос.УстановитьПараметр(«ПустойПрочийДоходРасход», Справочники.ПрочиеДоходыИРасходы.ПустаяСсылка());

    Reply
  2. venger

    (0) Оформить нормально собираетесь? Я уже молчу про «скаченного у кого-то»…

    Reply
  3. Aksakal

    Автор великий шутник? Выложил совершенно пустой отчет, типа, это демо-версия?

    Reply
  4. lizard

    Выкидывает ошибку при запуске….Поле объекта не обнаружено и т.д.

    Reply
  5. lizard

    Извиняюсь за прошлый комментарий, автоматом открыла в УТ, в бухгалтерии работает, все нормально

    Reply
  6. cheri

    Хороший отчёт. Спасибо!

    Reply
  7. larisab

    У меня та же ошибка, что и в (1). Для казахстанской БП отчет не подходит, слишком разные конфигурации. Соответственно отчет оценить не могу. Если бы был «родитель», сравнила бы код и тогда бы можно было что-то сказать. Я обычно молчу в таких случаях, но если автор решил сделать рассылку с просьбой об оценке — то вот.

    Reply
  8. GAK_

    Хороший отчёт. Спасибо!

    Reply
  9. stepan_shock

    good!

    Reply
  10. tomiko

    Скажу честно сама не работала с отчетом, скачивала для коллеги. Он сказал: «Хороший отчет, спасибо!»

    Reply
  11. ТаняК

    Хороший отчет! Спасибо!

    Reply
  12. rasswet

    работает, благодарю!

    Reply
  13. rasswet

    прибыль = Сумма реализации — НДС начисленный — себестоимость

    можешь переделать? тебе это быстрее будет. кода много. и «прибыль» часто встречается. не могу понять в каком месте править.

    Reply
  14. LS

    Спасибо! Отчет хороший, клиенты — довольны! 🙂

    Reply
  15. rasswet

    Спасибо, новый вариант вполне устраивает!

    Reply
  16. lex.kiev

    Такая же ошибка как у комментария №1 🙁

    Reply
  17. bounty_amt

    Спасибо за отчет, очень хороший и полезный. Вам плюс.

    Reply
  18. cucuruza

    Спасибо огромное за отчет, вы сэкономили мне кучу времени.

    Reply
  19. PowerBoy

    Две одинаковые услуги с одинаковым количеством не суммирует. :(((

    Reply
  20. Kevik

    Отчет супер…

    Еще бы отбор по контрагенту сделать… и вообще супер-пупер будет.

    Reply
  21. cucuruza

    Присоединяюсь к просьбе, сделайте пожалуйста отбор по контрагенту.

    Reply
  22. bnw

    Отчет просто замечательный. Прошу автора адаптировать его под БП 2.0.

    Этот в 2.0. не работает.

    Reply
  23. bnw

    Попробовала самостоятельно сделать отчет о реализации для БП 2.0.

    http://depositfiles.com/files/yn7dbjqzy

    Если будет возможность, проверьте пожалуйста. Пишет, что деление на 0, но вроде работает

    Reply
  24. bnw

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

    Исправьте пожалуйста!

    Reply
  25. bnw

    Поправила отчет для БП 2.0.

    http://depositfiles.com/files/8t1m3378g

    Reply
  26. asterlana

    На первый взгляд очень хороший отчет. Надеюсь не разочароваться

    Reply
  27. bnw

    А для БП 2.0 все равно не работает и еще есть ошибка: Деление на 0, когда рассчитывается прибыль в %%. Обусловлено это тем, что если есть реализация товара на комиссию, то нет данных о себестоимости, т.к. при комиссии отгрузка осуществляется на 45 счет.

    Reply
  28. ARSS

    Бухгалтерия предприятия-1.6.25.6, невозможно подключить отчет пишет

    {Справочник.ВнешниеОбработки.Форма.ФормаЭлемента(181)}: Ошибка при вызове метода контекста (Создать): Ошибка в схеме компоновки данных

    Reply
  29. bnw

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

    Также возникает ошибка Деление на 0

    Reply
  30. bnw

    У меня в БП 2.0 все замечательно заработало. Браво автору!!!

    Reply
  31. bnw

    У меня вопрос к автору: как рассчитывается %% прибыли. Можно написать алгоритм.

    Если к себестоимости + процент прибыли, то у меня не получается цена реализации (без НДС)

    Уточните пожалуйста…

    Reply
  32. bnw

    Если сложить в столбик все цифры, то сумма не сойдется с теми итогами, которые выводятся. Почему?

    Reply
  33. anig99

    Отчет на СКД?

    Reply
  34. bnw

    В новой версии %% считаются правильно.

    Reply
  35. bnw

    Если установить галочку на Цена реализации, то выводится она из документа, а в документе очень часто бухгалтера устанавливают признак «в том числе НДС». Поэтому правильнее было бы считать Цена реализации, как Сумма без НДС/Количество. Поскольку себестоимость у нас указывается без НДС (и это правильно), то и Цена реализации должна указываться без НДС.

    Reply
  36. bnw

    А можно сделать так, чтоб организации внутри списка сортировались по алфавиту?

    Reply
  37. Lidia

    А что-то не так для валютных отгругрузок. Посмотрите, пожалуйста в EXEL файле.

    Себестоимость Вы отлично выводите, и сумму по документу, а вот по номенклатуре Вы

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

    так как при печати Торг-12.

    А оплаты нельзя вывести?

    Ведь в проводке есть информация об оплате.

    Reply
  38. kit

    Отчет работает, но цифры пока не проверял. Думаю, пригодится, спасибо автору.

    Reply
  39. sin-s

    Отчет хороший. Поставил плюс.

    А под УТ 10.3 можете такой же сделать?

    Reply
  40. kwirk

    просьба в колонке «кол-во» после запятой 3 знака сделать по возможности

    Reply
  41. bnw

    Модуль отчета открыт и Вы можете это сделать сами через Конфигуратор.

    Reply
  42. ivalexandrov

    Отличный отчет!

    Есть вопрос: При попытке сформировать за год, вылетает сообщение с чем это может быть связано? При формировании за произвольный период — все ОК

    {ВнешнийОтчет.ОтчетОРеализации(1700)}: Значение не является значением объектного типа (ЭтоГруппа)

    ТекОбласть.Параметры.Группа = ?(ВыборкаКонтрагент.Контрагент.ЭтоГруппа,ВыборкаКонтрагент.Контрагент.Наименование,ВыборкаКонтрагент.КонтрагентНаименование);

    Reply
  43. bnw

    Поддерживаю, у меня тоже выскакивает такая же ошибка! Что с этим делать?

    Reply
  44. bnw

    Мне удалось исправить эту ошибку.

    Reply
  45. bearcat

    отличный отчет!!!!

    огромное спасибо!!!

    с 01.01.11 переходим с 1С 8.1БП на 2.0

    будет ли он работать в 2.0?

    работает ли он в 1С УТ ?

    Reply
  46. cucuruza

    А в бух 2.0 будет работать?

    Reply
  47. r2d255

    Скриншот где?

    Reply
  48. PowerBoy

    Отчет не учитывает данные из документов «Корректировка записей регистров»

    Reply
  49. Olguna

    Огромное СПАСИБО автору и bnw тоже 🙂

    Reply
  50. cucuruza

    Слезная просьба:Добавьте пожалуйста в контрагенте отбор по договору (а то у меня их до 30 штук на одном контрагенте). Общая сумма реализации есть, количество есть, а по договору все надо перебрать руками. Заранее благодарна.

    Reply
  51. Ekaterina2210

    Плюсик поставлю, но вот проблема, вроде все нормально, а вот возврат не учитывает никак

    Reply
  52. vr.viper

    Себестоимость Сумма без НДС НДС Всего с НДС Процент, % Сумма

    25 050,60 18 983,06 16 016,94 35 000,00 -24.22 — 6 067,54

    почему-то в некоторых случаях прибыль красным выходит (в минус)

    Reply
  53. iva-74

    Добрый день

    очень хороший отчет все работает

    у меня вопрос:

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

    например «акт … от …)

    Reply
  54. Lants

    48+

    Отчет очень актуальный! Удобно с ним работать, хорошая настройка и расшифровка, но НЕ УЧИТЫВАЕТ РЕГЛАМЕНТНЫЕ ОПЕРАЦИИ ПО КОРРЕКТИРОВКЕ СТОИМОСТИ НОМЕНКЛАТУРЫ. Очень жаль, но картинка в таком случае получается кривая… Несовпадение со счетом 90.02.1.

    Reply
  55. Nur

    Отчет суперский. Директору нравиться

    Reply
  56. galexo

    Здравствуйте! Отчет работал почти полгода без проблем, спасибо!

    Но! Сегодня, при обновлении БП на релиз 2.0.27.10, отчет перестал разворачивать по номенклатуре. Работаем со след. настройкой:(V) Контрагенты по ном. группам, (V)Разворачивать по номенклатуре, (V)себестоимость, (V)Колоичество, (V) цена реализации. Помогите, пожалуйста — без этого отчета теперь никак!

    =======

    Вопрос снят — нашли свою ошибку 🙂

    Reply
  57. Sergoninfostarru

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

    Reply
  58. Максим2

    Здравствуйте, по валюте писал. Есть в планах сделать?

    Reply
  59. Aydrey

    Большое спасибо. простой и ничего лишнего. спасибо за сэкономленное время.

    Reply
  60. Oldboy

    Выдаёт ошибку

    {ВнешнийОтчет.ОтчетОРеализации.МодульОбъекта(1961)}: Ошибка при вызове метода контекста (Выполнить)

    Результат = Запрос.Выполнить();

    по причине:

    {(91, 15)}: Поле не найдено «ТОВАРЫ.СчетДоходовБУ»

    ГДЕ ТОВАРЫ.<<?>>СчетДоходовБУ В ИЕРАРХИИ(&СчетаПрочихДоходовИРасходов) ИЛИ ТОВАРЫ.СчетРасходовБУ В ИЕРАРХИИ(&СчетаПрочихДоходовИРасходов)

    Бухгалтерия предприятия 2.0 ядро и конфигурация последние. УСН.

    Reply
  61. cucuruza

    Присоединяюсь к предыдущему автору, выдает такую же ошибку. 1с Предпр 8,2 Бух предпр.2.0 (2.0.32.4).

    И еще огромнейшая просьба, можно сделать, что-бы по колонке количество подсчитывались итоги?

    Reply
  62. Sedative

    (60) Oldboy, Откройте обработку в конфигураторе и в запросе уберите «БУ» т.е не ТОВАРЫ.СчетДоходовБУ, а просто ТОВАРЫ.СчетДоходов итд. А лучше, чтобы сохранить идеологию автора(огромное ему спасибо за отчет): заменить все эти окончания БУ на «+?(ВерсияБП_2_0,»»,»БУ») + «.

    Reply
  63. Чародей

    Отчет шикарен, спасибо. Но увы есть проблема, в ПБ 8.2 не правильно считается НДС номенклатурных групп, можно ли это как то поправить?

    Reply
  64. shatt

    Скачал отчет, на типовой БП 2.0 выдает такую ошибку:

    {ВнешнийОтчет.ОтчетОРеализации.МодульОбъекта(2071)}: Ошибка при вызове метода контекста (Выполнить)

    Результат = Запрос.Выполнить();

    по причине:

    по причине:

    {(584, 26)}: Поле не найдено «ПередачаОС_ОС.Стоимость»

    ЕСТЬNULL(ПередачаОС_ОС.<<?>>Стоимость,0) КАК ЦенаРеалПоНоменклатуре,

    Reply
  65. NoxiD

    Так идет на 8.2 или нет?

    Reply
  66. NoxiD

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

    Итог почему-то не считает.

    Reply
  67. bnw

    Добрый день!

    Возможно ли реализовать механизм при котором в отчет будет попадать документ ОтчетОРозничныхПродажах?

    Reply
  68. vlanik

    Хороший отчет, спасибо автору за реально сэкономленное время.

    Reply
  69. red03

    добавить бы выбор договора по контрагенту, было б шикарно

    Reply
  70. Ele1234567

    соглашусь с (69) — добавило бы данное решение удобство получения аналитики

    Reply
  71. vovafr1

    не работает!!!

    Reply
  72. magolubev

    Версия для Бухгалтерии 3.0 (управляемые формы) планируется?

    Reply
  73. mn2010

    Огромное спасибо за отчет! Просто супер! Столько ручной работы отпало!

    Reply

Leave a Comment

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