<?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='\
Как обработает старые марки?
(1) Пожалуйста, напишите в виде строки пример Вашей акцизной марки
452503932251971100731758122601600079399639463387081370775441 61720697
Алкод вычислится, но он будет неправильный, для старых марок нет алгоритма, РАР это подтвердил. Алкод для такой продукции получпть только в личном кабинете.
Поэтому марки состоящие только из цифр, нужно отсеивать для ручной постановки.
(4)Алексей, спасибо Вам за замечание! Открыл поле «алкокод» для ручного редактирования.
Подскажите а если несколько АП к одной карточки как поведет себя ваша обработка в такой ситуации?
(6) Алекс, обработка не пустит к сбору акцизных марок, пока Вы не устраните это (там встроенный инструмент для устранения этой, на мой взгляд, ошибки. Если такой вариант Вас не устраивает, в модуле формы можете просто открыть доступность страницы «сбор акцизных марок».
А обновленную версию можете скинуть на почту или снова придется тратить sm
(8) Алекс, выслал Вам на почту.
Спасибо большое уже увидел)
Артем, доброго дня.
У нас сейчас 1 номенклатуре в 1С:Розница соответствует несколько (от 1 до 5) номенклатур ЕГАИС.
Естественно, по результатам инвентаризации остатки не идут — где-то больше, а где то в сумме на это же количество меньше.
Правильно ли я понимаю, что для Вашей обработки важно, чтобы 1й номенклатуре ЕГАИС было настроено соответствие только 1й номенклатуры 1С:Розница?
(11) Алексей, хммм, вообще за основу я брал не номенклатуру, а алкогольную продукцию, и подсчёт идёт по ним же. Обработка вас не пустит, пока не исправите сопоставления, в обычном режиме. Можно зайти в режиме администратора через «ещё», откроются все страницы и можно будет перейти к корректировке. Где взять пароль от админа я вам напишу в личку. В некоторые документы будет попадать номенклатура, в связке с алкогольной продукцией, будет браться тупо первая, но для вас это не страшно, ведь корректируем продукцию ЕГАИС.
(12) Значит для нас данная обработка позволит провести инвентаризацию в разрезе акцизных марок и отправит данные в ЕГАИС?
Создаст ли она в ЕГАИС акты списания и постановки на баланс? Откуда она возьмет данные для этих актов (номенклатура 1С или алкокоды ЕГАИС по марке)?
(13) По алкокодам (по акцизным маркам). Да, позволит. Она создаст акт списания, и два акта постановки на баланс (один по излишкам, другой для продукции, которой у вас на остатках вообще не числится, то есть полученной до ЕГАИС, либо списанной по каким-то причинам в ноль)
А можете тоже написать пароль?
Скачал. Хорошо бы пароль получить для режима администратора. Кстати в регистре может быть несколько записей АП-Номенклатура с разными упаковками и характеристиками.
(16) Пароль находится на странице «проверка множественного сопоставления», нужно навести мышью на область правее кнопки с шагом 2, он высветится всплывающей подсказкой
Пароль ввел, ничего не произошло… Закладки не разблокировались.
(18) Неправильно ввели пароль. Вводить нужно 4 символа, скорее всего, без пробела. Пароль — это точный объём вашей оперативной памяти на компьютере (если 4 гб, это не значит, что 4000, или 4096).
Тогда для 16280 — какие четыре цифры вводить?
(20) Прямо их и вводить. Не работает, так?
Нет не работает
(22) Виталий, отправил Вам в личку ссылку на скачивание версии, которая пустит любой пароль, который введёте.
Обработку считаю очень полезной и нужной, все интуитивно понятно. Автору респект)
А почему обработка не создает документы Списания и оприходования в учетной программе!? С корректировкой в ЕГАИС ясно, но учетные остатки должны совпадать с ЕГАИСовскими, не так ли?
(25)
Для вас есть два варианта:
1 Своими силами дописываете обработку, чтобы корректировались не только остатки ЕГАИС, но и учётные, потребуются навыки программирования.
2 Сначала делаете учётное списание всего маркируемого алкоголя, затем на основании вновь загруженных остатков в торговом зале (после корректировки) создаёте учётное оприходование, это действия на уровне пользователя, не требующие навыков программирования.
Обновленную заново скачивать?
И с паролем та же беда, ввожу что появляется, не проходит
А обновленную версию можете скинуть на почту?
(27) Игорь, я не вижу вашего аккаунта «progaoff» в списке купивших.
(29) Алекс, Скинул прямую ссылку в Л.С.
Добрый день, подскажите а доработка под новую версию Розница 2.2.6.* будет?
(33) Здравствуйте! Да, будет.
(35) Здравствуйте, Дмитрий! Это баг. Скажите, у вас какая версия обработки? Этот баг был в старой версии
Обработка 1.9
1С:Предприятие 8.3 (8.3.10.2639)
Розница, редакция 2.2 (2.2.6.33)
Версия обработки 1.8, отсканированно порядка 8000 марок, все этой хозяйство экспортировал в новый файл, теперь открываю обработку, делаю импорт данных и …ничего …несколько часов и ничего не грузит. Файло с товаром на 1000-15000 позиций открывает без проблем … так же не работает функционал изъятия акцизной марки, она все равно остается !
(38) Скиньте мне текстовый файл, пожалуйста
(38) Баг поправлю. Он был связан с обработкой события сканера штрихкода. Но работала, если копировать марку вручную в поле удалить
Да вот он, с утра уже третья попытка, никак не подгрузить … один раз получилось что подгрузил, но не полностью ..
(41) Спасибо, протестировал. Всё должно грузиться, при условии, что вы не переключаете окно 1С. Моё железо: Core i7-6700, в вашем файле 7765 акцизных марок, обрабатывалось около 10 минут. Окно 1С должно быть активно, нельзя ничего сворачивать, уверен, что проблема в этом.
Так и есть, ничего не трогая в момент подгрузки на файловой все проходит, на серваке через rdp все попрежнему весит. Спасибо.
Добрый день обновил розницу до 2.2.7.29 теперь обработка не открывается. Подскажите что поправить, или как обойти ошибку в прикрепления файле.
(44) Скоро выложу обновление для новой розницы
(45)понял Ждём.
В процессе инвентаризации , выяснилось что не хватает нумерации при сборе акцизных марок. Чтобы была возможность видеть количество просканированных позиций.
так же обновил розницу до 2.7.9 и не запускается
2.7.29
(45)по срокам сориентируйте?
В процессе, скоро будет готова
Какие перспективы?
Уже 2.2.7.32 обновилось а у Вас тишина. Есть надежда на обновление?
Уважаемый разработчик! Очень нужно обновление, хочется надеяться , что Вы не забросили этот проект!
Надежда есть
Здравствуйте! нужно бы связаться, есть предложение. polukaroff@gmail.com
(55)Скажите когда же будет обновление?
Вроде бы дата на файле для закачки 26.03.2018, значит ли это что выщло обновление? Можно получить его как-то?
Обработка так до сих пор и не работает на версии 2.2.7?
День добрый. Работает ли обработка с новыми марками? и как работает с текущей конфигурацией 2.2.11.16?
Здравствуйте, такой же вопрос.
Работает ли с новыми марками?