<?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) Mamakan, И правда файла не было — залил по новой.
Отличная штука, спасибо, очень пригодилось! Обычная форма, для того чтобы обработка работала и в бухгалтерии 2?
(3) Dvornik, Обычная форма — это из исходной обработкиhttp://infostart.ru/public/114979/ . Можно сделать чтобы и там и там работала одна обработка (в смысле и в 2.0 и в 3.0), только стало жалко времени, а форму не удалил, может будет досуг — сделаю.
Бухгалтерия предприятия, редакция 3.0 (3.0.39.51) (http://v8.1c.ru/buhv8/)
http://www.1c.ru)
Copyright (С) ООО «1C», 2009 — 2015. Все права защищены
(
При попытке печати ошибка: «Индекс находится за границами массива»
Виноват, не выбрал шаблон печатной формы.
(5) Spektr, Я уж испугался 🙂
Добрый день. Акты на печать выводятся не по алфавиту, а в своем загадочном порядке, хотя в окне обработки упорядочил по алфавиту
(7) qasdfrg, Честно говоря причину искать сейчас некогда, но использовать встроенную в обработку печать вовсе необязательно, можно просто открыть список актов сверки штатно, выделить нужные и распечатать оттуда… Интересно, а там какой порядок получится?
при запуске под правами бухгалтера выдаёт ошибку, что нет прав доступа к «Плану обмена. Розница, редакция 1.0». БУХ 3.0.43.52, платформа 8.3.6.2390
при запуске под правами администратора такой ошибки нет, акты создаются нормально.
(9) disla, В сведениях о обработке нужно поставить безопасный режим — Ложь…будет время выложи такую версию — сейчас нет возможности
(9) disla, Выложил новую версию (спасибо за сообщение, если нужно — пришлю на почту, пишите в личку)
Хорошо бы отбор по списку контрагентов. А так — плюс.
(12) automatizator, Реализовать список можно, времени сейчас нету…
и как сформировать акт сверки только по контрагентам у которых остатки по счету 62
(14) В этой обработке нет отбора по счетам. Если овпрос про документ, то в нём есть закладка «Счета учета расчетов» , где можно оставить только галку 62 счета…
Почему попадает только одна организация, напишите инструкцию как ей пользоваться
(16) Попадает организация, выбранная в форме, состав реквизитов формы повторяет состав реквизитов документа, что ещё написать в качестве инструкции даже не знаю….
в обработке нет счетов учета, про какой документ вы пишите, как его заполнять вообще не понятно, у меня автоматом попала только одна организация
Контрагенты как автоматом попадают в этот документ, вы же пишите это это групповая обработка
обработку как загружать в 1с?
(19) Даже странно, я Вам отвечаю, но такое ощущение, что ответы Вы не читаете
про документ — Акт сверки взиморасчетов, потому что я не понял Ваш вопрос
— акт сверки — единственное число, и подумал Вы спрашиваете про документ…
— контрагенты попаают из бухгалтерских оборотов и итогов, если задать дополнительный отбор в поле «Контрагент», выбрав там группу — то заполнятся документы будут только по контрагентам этой группы.
И да — обработка групповая)))))
у меня не заполняется акт сверки, напишите как его загрузить может я не правильно его открыла
(20)
— стандартно: Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки — Там Создать и Загрузить из файла.
(19)
— это не документ — это обработка, которая создает документа «Акт сверки……» группой — потому и групповая))))
Давайте по порядку: более подробное описание есть по ссылке в публикации, т.к. это аналог обработки для БП 2.0 с точно таким же функционалом, Вы его читали?
ок, я по другому загружала файл открыть
(25) Разницы нет, и так и так открывается одна и та же обработка….
Загрузила, сейчас где найти этот документ
(27) Ещё раз — ЭТО НЕ ДОКУМЕНТ — это обработка, которая предназначена для создания документов. При подключении её в дополнительные Вы сами должны указать в каком разделе она будет доступна, и пользователей, которым она будет доступна.
нашла документ
(28) а вы можете доработать чтобы формировалось только у кого есть остатки по счетам
(30) Поясните, разве сейчас не так формируется?
Всех с прошедшими, и Наступающим!!!
Наступил новый год, народу срочно занадобились акты сверки…
Выложил новую версию обработки группового создания актов сверки, в которой реализовал некоторые хотелки из обсуждения, убрал модальность, пропущенную ранее в вызове выбора списка печатных форм, добавил возможность печати не всех созданных документов, а только тех, в которых зафиксирована задолженность.
Скачали Вашу обработку, все ОК. Нельзя ли реализовать возможность печати таблицы с контрагентами и остатками (либо сохранения в Excel с числовым форматом данных)?
(34) Что имеется ввиду под
? Печать стандартно усеет сохранять отчет и отсылать по почте, или имеется ввиду список с самой обработке? Дайте пример, какой список Вы хотите видеть — сделать можно всё, если точно знать что делать)))))))))))).
(34) Выложил новую версию с печатью свода.
Спасибо! То, что нужно!
(37) Пожалуйста!
Подскажите, предусмотрено ли в этой обработке заполнение табличной части «По данным контрагента»? У меня заполняется только по данным организации.
(39) Нет, не предусмотрено.
(40) Жаль. Будем доделывать сами. Там же наверное аналогично заполнению первой таблицы.
(41) Не думаю, что это проблема.
Версия 3.0.2.1 не формирует акты сверки сводно по контрагенту, только раздельно по договорам.
(43) Посмотрю — давно не обновлял — в БП много изменений. А не формирует как — ошибку выдаёт?
(44)Прошу прощения, посмотрел код, разобрался, все ок.
(45) Ну вот…всё нормально?
(46)Да. Теперь не хватает групповой рассылки по e-mail))))
(47) Будет досуг — нарисую, сейчас невпротык….
Скажите, а почему у меня не выходят сверки по филиалу? В договоре стоит основное предприятие.
(49) Пишите в личку — могу посмотреть по АА…а так — информации в вопросе нет, я же не вижу, что Вы делаете, может Вы период выбрали прошлого века?
(50) У нас есть обособленное подразделение и головное предприятие, мы учет ведем по обособленному подразделению(филиалу) и я сверку хочу сделать по нему, но обработка не видит расчетов, хотя они есть.
(51) У Вас КОРП? Дайте посмотреть, повторяю — мне отсюда не видно, что у Вас не получается….
(52) У нас КОРП. Программа не видит документы по филиалу, потому что все документы висят на договоре основного предприятия. Посмотреть по АА это как?
Вы скачиваете программу ammyy admin, запускаете её, сообщаете мне я подключаюсь и смотрим. И да — писал на БП в КОРП не проверял…
(54) админы запрещают удаленку((( спасибо и на этом. буду другую искать
(55) не за что…привет админам, а Вы попросите их посмотреть, раз по удалёнке нельзя))))
(56) Хорошо)))
Отличная обработка, возьму на заметку