<?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='\
(0)
«автора не нашел, но есть мыло»(с)
Может это оно:http://infostart.ru/public/118836/
P.S. Потратил две минуты на поиск. 😉
(1) Спасибо, поправил!
скажите, а формат утвержден
На сайте пока изменений к нему нет
А перемещения между обособленными подразделениями учитываются?
Неплохо бы было включить в обработку недостающие процедуры из глобального модуля. А так же указать, что в обработке использована компонента 1с++
Функция не обнаружена (глПолучитьВыборку)
Переменная не определена (гл_rs)
Процедура не обнаружена (глСтрокаСообщения)
(6) winterspring, Поддерживаю!
Автор, пришлите пожалуйста недостающие функции или сделайте полностью автономной обработку, чтобы можно было запустить на типовой ТиС.
формат утвердили
(8) подскажи, а где можно скачать утвержденный формат, а то на сайте росалкоголь регулирования не могу найти
Постановление от 9 августа 2012 г. №815 О представлении деклараций об объеме производства, оборота …
http://government.ru/gov/results/20165/
Форматы
http://www.fsrar.ru/files/structure/1366.pdf
Информации что утвердили форматы пока не видел.
(10) спасибо за информацию
вообщем и постановление пока не опубликовано, странно уже 23 число…
http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=134109
(9) апостол, В последнем деклорант-алко как раз актулаьные схемы
(13) подскажи, везде написано про розничную продажу пива, а если имеется только оптовая, тогда что декларировать не нужно?
Е(14) апостол,
Если у вас только оптовая торговля пивом, то Вы сдаете 5,6,7 декларации точно. Пиво — это алкоголь. Для них ввели специально 3 кода в классификаторе.
(15) спасибо за информацию, а еще не знаешь есть инструкция по заполнению этих деклараций. сейчас посмотрел их и есть некоторые вопросы.
как запустить эту обработку в тисе? одни ошибки почему то
(15) Mihand, скажите а 8-ую форму надо заполнять?
Присоединяюсь к просьбе добавить недостающие процедуры из глабальника
(12) sergb1979,
Постановление уже есть:
http://правительство.рф/gov/results/20165/
(20) igoren032, а что оно не требует опубликования в российской газете?
да. хотелось бы недостающие гл_rs и глПолучитьВыборку
строка сообщения непринципиальна
(16) апостол,
Нет. Инструкции пока нет. Сами ждем.
Человек на форуме ФСРАР пишет:
Постановление 815 опубликовано
Источник публикации
«Собрание законодательства РФ», 20.08.2012, N 34, ст. 4735
В КонсультантПлюс: примечание.
Начало действия документа — 28.08.2012.
Сайт ЗакСобрания не выложил 34 номер. Наверно типа тупо набирают текст.
Присоединяюсь к (18).
Мы тоже не можем понять кто же сдает 8 форму. Надо ли сдавать оптовику перевозящему в розницу на своем транспорте только фасованную продукцию?
ребятки, подскажите пожалуйста, как эту обработку попробовать?
подниму темку. актуально.
Работающий вариант!!!
Исправьте тогда на Неработающий вариант!!!
Подскажите, что нужно установить, чтобы появились Функция (глПолучитьВыборку) и Переменная (гл_rs)? Или их автор сам написал?
(28) ivankudinr,
Функция глПолучитьВыборку(ODBCRecordset,Текст, Отладка=0, Очищать = 1, ТЗ2 = «») Экспорт
ODBCRecordset.Отладка(Отладка);
Если ODBCRecordset.Открыть(Текст)=0 Тогда
Ошибка=ODBCRecordset.ПолучитьОписаниеОшибки();
Если ПустаяСтрока(Ошибка)=0 Тогда
ВыполняемыйМодуль=СоздатьОбъект(«ВыполняемыйМодуль»);
ВыполняемыйМодуль.СформироватьОшибку(Ошибка);
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(ТЗ2) = 1 Тогда
ТЗ2=СоздатьОбъект(«ТаблицаЗначений»);
КонецЕсли;
ODBCRecordset.ПолучитьРезультатыВ_ТЗ(ТЗ2,Очищать);
ODBCRecordset.Закрыть();
Возврат ТЗ2;
КонецФункции
Эта функция для запуска SQL запроса. Будет работать если стоит компонента 1С++
гл_rs=СоздатьОбъект(«ODBCRecordset»);
Повторимся. Этот вариант работающей нашей конфигурации измененной очень сильно Торговле 24
И выложен как заготовка для вашей базы, чтобы печатные формы не делать, и формирование файла.
Большое спасибо за обработку, а можете выложить образец xml файла, который формируется с помощью обработки? Хочу наглядно посмотреть струткуру файла, а то описание формата 4.20 что-то плохо до меня доходит.
(29) Функция глПолучитьВыборку(ODBCRecordset,Текст, Отладка=0, Очищать = 1, ТЗ2 = «») Экспорт
ODBCRecordset.Отладка(Отладка);
Если ODBCRecordset.Открыть(Текст)=0 Тогда
Ошибка=ODBCRecordset.ПолучитьОписаниеОшибки();
Если ПустаяСтрока(Ошибка)=0 Тогда
ВыполняемыйМодуль=СоздатьОбъект(«ВыполняемыйМодуль»);
ВыполняемыйМодуль.СформироватьОшибку(Ошибка);
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(ТЗ2) = 1 Тогда
ТЗ2=СоздатьОбъект(«ТаблицаЗначений»);
КонецЕсли;
ODBCRecordset.ПолучитьРезультатыВ_ТЗ(ТЗ2,Очищать);
ODBCRecordset.Закрыть();
Возврат ТЗ2;
КонецФункции
гл_rs=СоздатьОбъект(«ODBCRecordset»);
В КАКОЕ МЕСТО ГЛОБАЛЬНОГО МОДУЛЯ ЭТО ВСТАВИТЬ?
Ps. далек от программирования 1С, решил потестиь бекап.
У нас КА, доработанная под алкоголь. Поправила запрос на выборку данных. Форма заполняется, но при попытке выгрузки файла ругается
Почему? Что поправить надо?
(33) Svetlya4ok13
куда выгружаете? не понимаю откуда ошибка
Автор, извините ради Бога, ошиблась с веткой — не к вам вопрос.
Попробовал открыть в торговле 24h выдала кучу ошибок
1С 7,70,027 24h 7.70.345 что сделать?
(36) pudmma,
допиливать!
структура обработки простая, сбор и обработка данных разделены
оставляйте движок формирования, а запросы к данным делайте свои или правьте имеющиеся
наша конфигурация поддерживается самостоятельно, с Торговлей24 уже мало чего общего осталось.
Переменная не определена (гл_mdw)
объявление переменной нуно
И да, нужно добавить что конфигурация должна быть sql-ной
с дбф не работает
У нас пока типовая 24h (файловая). Тоже хотим алкогольную декларацию. За сколько возьмётесь сделать?