<?php // Полная загрузка сервисных книжек, создан 2026-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='\
Плюсанул. А для Зик 7.7 уже есть такая спавка ?
(1) Вроде вот
Но я не смотрел, с 7-кой практически не работаю.
Одну из ошибок в новом тестовом релизе 31.3 исправили, интересно, как быстро найдут еще 🙂
Актуально! Только вот «признак» в шапке выходит с ошибкой — там код нужен, а не строка «СводнаяСправка»
(4) возможно что пропустил. Посмотрю.
Однако в отличии от типовой формы 1С, справка из обработки легко редактируется вручную.
А как правильно подключить?
При вызове через Файл-Открыть выходит ошибка : {ВнешняяОбработка.ПечатьСправки2НДФЛ(1049)}: Метод объекта не обнаружен (ПолучитьЗначенияРеквизитов)
ДанныеОрганизации = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Организация, «ИНН, КодИМНС, НаименованиеПолное, НаименованиеСокращенное» + ?(ЭтоЮрЛицо,»», «,ИндивидуальныйПредприниматель»));
ps: правда у меня 1С:Предприятие 8.1 (8.1.15.14), Зарплата и Управление Персоналом, редакция 2.5(2.5.20.3)
(6) О-о-о…
У Вас слишком старый релиз ЗУП, я под него даже и не рассчитывал. Почему бы Вам не обновиться?
О-о-о…
У Вас слишком старый релиз ЗУП, я под него даже и не рассчитывал. Почему бы Вам не обновиться?
Слишком много дописок. Стараемся обновляться по существенным изменениям. Вот ждем последний релиз, только там наверное уже будет новая форома…
(8) Добавил возможность. Изменения минимальные.
Спасибо. Сейчас попробую.
Все заработало!!! Ура!!! 😀
Круто в УПП запустил немного дописав,нужно всего лишь определить переменную Релиз.
(12)
😀
Потому и написано что для ЗУП — на других типовых (с блоком зарплаты) тоже должно работать, но нет времени на проверки. А текст открыт, можно дорабатывать как хочется.
Сам не смотрел, но что0то мне седня мой бух сказал, что мол «Не показывает налоговые вычеты- конкретно имущественный. Подтверждение прав на имущественный вычет заполненно.»
(14) Попробуйте сейчас.
Данная ошибка проявлялась не всегда, только при некоторых условиях. Исправил.
Обе версии обновили да? Щас попробуем
Что-то обработка кушает <АдрИНО> (Адрес проживания за пределами РФ). Не кто не проверял?
(17) Ошиблись адресом? 😉
(16) Получилось?
(18) Нет, в справке не отражается имущественный вычет, № справки дата, сумма, на это раз сам проверил — реально нету
(19) Вопросы:
Имущественный вычет введен на головную организацию или обособленное подразделение?
Справка формируется по головной организации или обособленному подразделению?
(20) Да у меня реально есть подозрение, что у нас что-то не так настроено, связанное с головной/обособленной. Я в этом вообще не спец. Документ «Подтверждение права на имущественный вычет» введен на обособленное подразделение и справка формируется по ней же. В движениях документа где организация, там стоит головная, а где обособленное подразделение вообще ничего нету, а почему так и как должно быть не знаю. Чую какой-то подвох, но не андерстенд.
(21) Тогда понятно почему.
Код обработки открыт.
В модуле обработки удалите строки под номерами: 655, 570. Должно заработать.
(22)Спасибо что-то появилось, завтра скажу расчетчику, проверит.
Спасибо за обработку, планируем переход на зарплату и управление персоналом, ваша обработка очень пригодится для бухгалтерии.
Спасибо автору! обработка очень пригодилась для бухгалтеров. По ка не обновились на нужный релиз очень выручала.
Имущественный вычет введен на головную организацию или обособленное подразделение?
Справка формируется по головной организации или обособленному подразделению?
(27), (28).
Возможны оба варианта.
Я для себя выбрал немного другой вариант, как не требующий поддержки и дописок по мере внесения изменений в законодательство
А так да, хорошо
Обработка не теряет актуальности, частенько бухгалтерам приходиться печатать 2-НДФЛ а создание документа совсем не к чему, немного доработала с учетом текущей конфигурации. Спасибо ))