<?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='\
Спасибо!
Обращаю пристальное внимание всех страждущих этого отчета, что у него неправильная форма. Возьмите бланк где-нибудь в Гаранте-Консультанте-Главбухе и убедитесь.
Я вот не проверил, а поверил, теперь столько переделывать…
Я не писал, что это Унифицированная форма N МХ-20(http://www.consultant.ru/document/cons_doc_LAW_26072/?frame=23) . Да отличается немного, да работает, скриншот есть. Делалась для клиента по его форме, скачивайте на своё усмотрение )
попробовал на БП 3.0.37.32 не подключается форма
Отчет подключается и работает в редакции 3.0.37.35 и выше. См. вложение. Возможно, при выборе раздела и нажатии на кнопку «Дополнительные отчеты» надо нажать внизу на кнопку «Настроить список» и добавить интересующие вас отчеты в правый список(«Выбранные команды»).
подключал на БП КОРП 3.0.37.32, скорей всего в этом ошибка…., есть возможность допилить отчет под данную конфигурацию?
(12) Petrm, скрин ошибки выложите
Спасибо,отчет сэкономил время.
А можно доработать эту форму , чтобы был выбор для заданного Контрагента ?
(15) paris, только у счета 10.07, есть субконто контрагент, вам для него?, потому что у остальных 10-ых счетов нет такого субконто и следовательно невозможно сформировать отчет по контрагенту. Уточните
БП 3,0 релиз 3,0,44,200 — Переменная не определена: БухгалтерскиеотчетыВызовСервраПовтИсп.
(17) Исправил ошибку для БП 3.0.44.200 и выше, файл обновил
(18) Александр, благодарю за оперативность, все заработало! Нам не хватает в этом отчете, дополнительно, простого реестра документов по движению, по приходу и по расходу, на основе которых был сделан отчет. Возможна модернизация отчета?
(19) Реестр сделан, смотрите скриншоты отчета
Скачал, запустил (скрин отчета прикладываю), кнопка редактирование — реакции нет, в разрезе документов только список номенклатуры, скрин приложил. Непонятно может проблема в версии 44-46? завтра (сегодня) обновлюсь и еще раз проверю…
(21) Выслал исправленный отчет на почту.
выложил исправление в Публикацию, спасибо за информацию по ошибкам.
Александр, благодарю! Ваш отчет уже в работе! Допилить полностью под наши нужды пока не хватает знаний по скд, поэтому у нас пока «сборная солянка»: шапка для отчета из публикации Анастасииhttp://infostart.ru/public/264163/ , тело отчета — Ваш отчет в «разрезе документов»(преимущества Вашей формы в том, что там только те позиции по которым было движение), и подвал — первичные документы (сверяем которые по отчету «Обороты счета»), Главное процесс рабочий…
Александр, такой вопрос: в Вашем отчете в разрезе документов можно сделать группировку наоборот: сначала документы, потом номенклатура?
Да, можно, сейчас пока некогда заняться, вечером или завтра постараюсь выложить.
(24)Александр, нет слов чтобы выразить Вам слова благодарности. Скачал, запустил — заработало! Не удержался, полез в СКД, сравнил с 0,3, пощелкал мышкой чуток и получил тот самый вариант который хотели мои девчонки. Классная штука это СКД!
Мой Вам, Александр, Респект и уважение за такое отношение к клиентам и коллегам!
Добрый день! Скачала «Материальный отчет MX-20 v0.3 для бухгалтерии 3.0.44 и выше» не открывает со счетом 10. только 41. Почему? у нас вся номенклатура на 10 счете. Как исправить? 1С:Предприятие 8.3 (8.3.8.2197) Бухгалтерия предприятия, редакция 3.0 (3.0.46.19)
(26) Добрый день, скиншот приложите, где выбор счета или ошибки, поможем если сможем
(26)У вас на 10 счетах есть субконто Склад?
(26) похоже что у вас нет субконто Склад на 10 счете, переделаю как будет возможность. В описании указано, что
отчет работает со счетами 10, 41, 43, 003 и др., где есть субконто Номенлкатура и Склад;
(26) Переделал, можете повторно скачать версия 0.5
(30) Спасибо! По складам учет не ведется. Скачаю — попробую..
(30)Все равно не работает!
(32) так вы его не скачали, качайте версию 0.5 там должно работать. Редакция 0.4 работает только если на счете есть оба субконто «Склад» и «Номенклатура» читайте внимательно. В версии 0.5 достаточно только субконто «Номенклатура»
(33) Скачала очередной раз! Теперь v0,5, как вы сказали. Спасибо! Все работает! Вернёте sm за предыдущие не работающие у меня v0.3??
(34) К сожалению, не верну, так как там было в описании что отчет работает только со счетами где есть оба субконто «Номенклатура» и «Склад», я уже об этом писал выше.
(34) вы же мне не платите за время которое я трачу на доработку отчета, поймите меня правильно.
Да конечно. Просто я вам сразу писала, что скачала v0.3. И не нашла где там описание…
Добрый день!
По МЦ 04 по работникам можно отбор сделать?
А так хороший отчет.
Добрый день! Отбор по счету и организации обязателен?
Да, данные отборы обязательны
Добрый день! Отчет можно сформировать по нескольким счетам? Если можно, группировка есть по счету? Из скринов непонятно. Спасибо.
(41)Добрый день! Данный отчет можно только сформировать по группе счетов(например, если выбрать 41 счет, то тогда получим данные по 41.01, 41.02, 41.03 и др. счета, входящие в данную группу). Данные выводятся без учета группировок, т.е. сводно. Планирую доработать, чтобы формировалось по списку счетов. В др. публикации «Отчет о движении ТМЦ. Бухгалтерия 3.0»https://infostart.ru/public/582604/ можно формировать по списку счетов и с группировкой по счетам и др. группировкам.
Добрый день!
На каком релизе была написана v0.5? И каким образом, откуда вычисляется учетная цена?
Написана на редакции 3.0.46, протестирована на редакции 3.0.67. сред. цена: если есть конеч. остаток, тогда: сумма конеч. остаток / кол-во конеч. остаток. , если кон. остатков нет, то берутся данные данные оборотов(сумма/количество), иначе — данные начальных остатков(сумма/количество)
(44) А сумма берется с НДС или без него?
(45)Сумма идет такая же, как в ОСВ, см. рисунок
(46)Спасибо!