<?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='\
Не хватает одно маленькой колонки Контрагент называется. А так идея супер и реализация супер молодца.
И для ТиСа было бы не плохо сделать такое же дело.
(2) Вы совершенно правы. Но, это было сделано для бухгалтера, ей контрагент не нужен. Но есть одно но, бухгалтер наехала на менеджеров, нажаловалась директору, и те внесли ряд предложений, а именно:
1) Добавить контрагента.
2) Добавить товар.
Так что скоро будет.
Доработан отчет. Добавлен контрагент и есть возможность выводить товар по накладной.
Сделайте для комплексной. Если не сложно!
Подскажите, в какую папку скопировать этот файл?
Можно в любую 🙂 А в 1С Файл открыть и открыть этот файл.
А можно в EXTFORMS информационной базы и подключить через Сервис — Дополнительные возможности
На ТиС 77.92 дает ошибку:
Опер=СоздатьОбъект(«Операция»)
{ПУТЬ к .ERT(25)}:неудачная попытка создания объекта (операция)
Пробовал и через внешние формы, и просто как файл открывать, запуск производится, но вместо результата ошибка. Единственное, на что уповаю, так это на то, что для Торговли версия еще не сделана.
Вопрос: если бага, то когда ждать фикса, а если нет, то что я мог сделать неверно?
Вообще идея просто замечательная, искренне говорю спасибо!
(8) На ТиСе ошибка потому что версия для бухгалтерии.
(2, 8) По поводу версии для ТиСа. А что вам мешает пользоваться отчетом «Отчет по продажам ТМЦ» ставите галку в «Детализации» против «Номенклатура», «Документы реализации» и получаете нечто похожее, где продажи ниже себестоимости выводятся красным цветом. И колонки почти такие же 🙂
Согласен. Можно и так. Но Ваше решение позволяет дозировать инфу.
Спасибо от бухгалтера!
Отчет не подходит..если отгузка в валюте =)ь Себестоимость берет в рублях…а выручку в валюте..и понятное дело что убыток будет хорошенький) Щас посмотрю код..че к чему)
(12) Согласен. Надо доделать
Впринципе там не так уж и много…в начале условие на проверку валюты договора..и в рублевом случае К = 1, а в валютном К = курсу..и в нужных местах домножить на К…где надо оно на курс, а где не надо на 1 домножит =) ну я так сделал..
в конце месяца, регламентными операциями происходит корректировка средневзвешанной себестоимости. Жаль что обработка не учитывает эти корректировка. и выводимая себестоимость не всегда правильная
(14) Тут еще у главбуха есть идея по доработке, буду доделывать и твое вставлю 🙂
(15) Корректировка средневзвешенной это чисто бухгалтерско-налговые заморочки, а отчет показывает по какой накладной отгрузили ниже себестоимости на момент отгрузки, что бы принять меры (например наказать менеджера). Если товар в течении месяца приходил по разной цене, а при текущем состоянии дел в стране, он приходит дороже и дороже, то корретировка средневзвешенной себестоимости только усугубляет результат. Да и даже если товар после конкретной продажи придет по более дешевой цене, нечего уповать на это, надо стремиться продавать не ниже текущей себестоиомсти.
(10) Для дозирования инфы в ТиС, достаточно «Отчет по продажам ТМЦ» сохранить как внешний и добавить в нем условие, если продажа ниже себестоимости, то выводим строку, если нет пропускаем. Это такая мелоч, что выкладывать ее сюда как то даже стыдно 🙂
(16) ой, извините, я просто убрал условие < себестоимости, и получился отчет, побобный «Отчет по продажам ТМЦ» в ТиС… Ведём учет предпринимателя в стандартной бухгалтерии, и Ваш отчет помогает заполнить Книгу учета доходов и расходов индв. предпринимателя
(18) 🙂 Судя по опыту внерений Предприятия 7.7, для бухгалтера что Торговля, что Предприниматель, да и Упрощенка с 15%, темный лес. Привыкли они к стандартной бухгалтерии с ее планом счетов 🙂 Вот и приходится извращаться 🙂
спасибо, видимо полезная вещь, можно не мэйл (ost_s@mail.ru) получить?, а то рейтинга не хватает…
(20) хотел было сказать, приходите завтра, но решил не огорчать женский пол 🙂 отправлено 🙂
СПАСИБО ОГРОМНЕЙШЕЕ!!!
Спасибо!
Все хорошо! Но можно было бы добавить и документ «Продажа в розницу». Было бы еще лучше!
Пытаюсь подобное написать для 8.2.
Не будет наглым попросить код в качестве примера?
sysline@mail.ru
(25) код открыт, качни и смотри 🙂
Добрый день, не подскажите а проблему с валютными доками решили или нет? К сожалению в прочих подобных обработках именно эта проблема, цепляется выручка в валюте из накладной, а надо из операции по 90.1.1, нигде не могу найти доведенный до ума вариант, у самой ума не хватает переделать под себя :((((
Попробую ваш отчет на себе. Отпишусь, как и че.
«Добрый день, не подскажите а проблему с валютными доками решили или нет? К сожалению в прочих подобных обработках именно эта проблема, цепляется выручка в валюте из накладной, а надо из операции по 90.1.1, нигде не могу найти доведенный до ума вариант, у самой ума не хватает переделать под себя :(((( »
Да к сожалению в обработке не рализована возможность работы с документами в валюте :((
А еще было бы хорошо формировать полный анализ выручки и отдельно выводить убыточные реализации ))
Извините но как то некогда с 7-кой возиться, особенно со старыми разработками, все на 8-ку переходят, под нее отчеты страгаем 🙂
Спасибо! Полезная вещь