<?php // Полная загрузка сервисных книжек, создан 2025-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='\
бесполезно, т.к. объем нужно в названии номенклатуры дописывать (есть обработки) а алкокод что даст? вы его глазом из акцизной марки будете сканировать, вычленять и сравнивать?
Этот отчет берет название номенклатуры из справочника классификаторы алкогольной продукции, а узнать какой алкокод зашит в акцизе можно через специальный сайт.
Хороший отчет, мне пригодился! Все понятно доступно.
Сейчас занимаюсь остатками, отчетик бы пригодился, но не хватает 1sm, может уступите?
Могу, чуть позже на сегодня сделаю 1sm
Спасибо огромное, я уже другую Вашу скачал )
Скачала вариант №2. Обработку считаю полезной, так В 1С Разнице, даже применяя универсальные отчеты, невозможно бухгалтеру сделать свод-сопоставление остатков в ЕГАИС и на складе. Очень необходимо внести следующие изменения в эту прекрасную обработку :
1) В отчет не попадают позиции номенклатуры, по которой в ЕГАИС нулевые остатки, а на складе числится остаток(может быть и плюс, и минус — ошибки учета). На практике при номенклатуре более 1000 позиций номенклатуры очень трудно выловить эти расхождения. Я, бухгалтер, потратила на это 4 часа!
2) Было бы удобнее сверку вести не от последнего запроса Остатков в ЕГАИС, а дать возможность выбрать запрос. Соответственно, остатки на складе для сопоставления формировать на дату запроса.
Пока нету возможности сделать изменения, как появится время займусь этим вопросом.
(2)
Розница 2.2.5.27 сама нормально может запросить остатки по складу и в торговом зале ЕГАИС. В принятом xml с остатками уже есть информация какое наименование и какой алкокод… Вот только было бы гораздо полезнее в отчёте видеть остатки фактические и остатки с ЕГАИС чтобы узнать расхождения вовремя… По алкокоду будет видно пересорт…
Вторая картинка и вторая версия отчета как раз такую информацию и выводит!
(10)с номенклатурой ваш отчёт не сравнивает? по изображениям не ясно
Смотрите описание «v.2 Во второй версии отчета, формируются данные остатки ЕГАИС и учетные остатки, сгрупировано по номенклатуре и если есть связь несколько алкогольной продукции к одной номенклатуре, отчет выведет данные в иерархии. Также можно сделать отбор по конкретной номеклатуре.»
(12)спасибо, отличный отчёт!
Пара моментов, которые улучшили бы:
1. Колонка, в которой в которой были бы данные (Сумма всех привязанных аклокодов) — (Остаток номенклатуры).
Можно было бы сразу понять куда обратить внимание. Где нужно списать, а где поставить на баланс.
2. Отбор по алкокоду
Будут видны различия по конкретному АК, кроме того:
Сейчас нередко встречается, что у разных номенклатур один алкокод [Это могут быть обычная бутылка и наборы с бокалом, стандартная и сувенирные бутылки и т.д.]. Подвязывают один АК к разным номенклатурам через РегистрСведений.СоответствиеНоменклатурыЕГАИС
3. Отбор по времени и файлу остатков.
В отчёте берутся остатки на складе в момент формирования отчёта, в розничном магазине проходит продажа и кол-во в номенклатуре уменьшается, а остатки егаис обычно снимают в конце или начале дня.
А так вручную выбрали время и видим файл остатков — понимаем реальную разницу на начало или конец дня.
Для алкогольной продукции Наименование на наименование.полное было бы лучше сменить.
Например, Массандровские вина многие сейчас отображаются так:
«Винный напиток с добавлением этилового спирта, прошедший дополнительную бутылочную выдержку красный»
Это не обязательно и не критично, в номенклатуре есть назвние, но для рядового пользователя будет удобнее заодно проверить и сопоставление, т.к. многие до сих пор лажают ещё при оформлении прихода.
Что-то накатал я тут целую простыню текста, не считайте за критику 🙂
Спасибо за отзыв, в следующей версии отчета учту все указанные нюансы.
Скачал не работает в новой версии 1С Розница 2.2.6.18
Для версии 2.2.6.18 еще не чего не работает.
Для 6.22 не работает.
Отчёт очень полезный, обновите, пожалуйста под 6.22
В ближайшее время обновлю.
Что-нибудь получается?
Пока нету времени обновить до 6.22, как появится свободное время обновлю.
Просто подписка скоро кончится
Ребят как запрос по остаткам из ЕГАИС сделать, не могу добавить в запрос номенклуатуру.
В Рознице в складе есть запрос остатков
Не захотела работать обработка
Версию 2.2.7* не поддерживает.
(27) И не собираетесь поддерживать? Плохо.. Очень жаль 2 монеты. Очень. Тогда прошу возвратить 2 монеты. В описании было написано 2.2
Поддержка 2.2.7 и выше не планируется. Читайте внимательно описание!!!
(28)по поводу возврата это же вроде в техподдержку или владелец обработки тоже может вернуть?
(29) Ок. Буду читать внимательно. Жаль.
Жаль что ограничено версиями…. ((( Почти купил.!
Скорректировал отчет под версию Розницы 2.2.9.20.