<?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='\
у меня {ВнешняяОбработка.Конвертер2НДФЛ}: Переменная не определена (СправкиПоНДФЛ)
Управление производственным предприятием, редакция 1.2 (1.2.35.1)
(1) Исправил, перезалил обработку.
Спасибо, говорят, работает 🙂
Эх, на три часа бы раньше — не пришлось бы вчера шаманить между 3мя версиями «Налогоплательщика»…
(3) Гм. Так вчера сделал и выложил 🙂
также работает с выгрузкой из ЗиК, правда пришлось чуток изменить типовую «ПодготовкаСведенийДляИМНС»… вовремя ЗиК не сделают — есть запасной вариант!
(5) Ну, подготавливалась с таким умыслом, что бы корректно обрабатывала выгрузку откуда угодно.
Теоретически хоть выгруженный файл из старых налогоплательщиков.
Кстати, при конвертации заменяет так же старые коды имущественных вычетов на новые, а не просто меняет формат.
Возможно, что некоторые файлы обработать не сможет, но тут уж… Делалась на конкретных примерах выгрузок.
эта обработка 8-ки? А для 7-ки есть?
(7) Увы. На текущий момент с 7.7 не работаю. Только в случае заказа …
Скажите, а должны переноситься коды и суммы вычетов, которые перечисляются в таблице доходов справки 2-НДФЛ, а не в конце в разделе 4?
У меня в исходном файле указано так:
А получается вот так:
т.е. сведения о 201-м вычете теряются, а в разделе социальных и имущественных мы его отражать не должны.
Пытался смотреть структуру форматов в макетах — там вроде бы все правильно описано…
а для 7-ки
(9) Если не трудно, возможно файл исходного примера в личку ?
Просто на практике мне такие вычеты не попадались. Возможно некорректно обработалось.
(10) Увы…
На самом деле какая разница, под какую платформу обработка? Я свой файл выгружал из 1С 7.7, запускал эту обработку в 8.1 и там конвертировал в новый формат файла, который и планируем отправлять в налоговую после проверки…
(12) Ну, некоторые просто даже не хотят заморачиваться с 8-кой. Им легче с 3-мя налогоплательщиками извратиться 😀
Большое Вам человеческое СПАСИБО!!!! Отчет принят 😀
А как эта программа работает. Скачиваешь и что дальше. Я выгрузила файл в формате 2009г из 1С8 и что с ним делать.У меня программа не открывается.
(15) Открываете через «Файл — Открыть» в любой конфигурации на платформе 8.1
Указываете какой файл конвертировать.
Указываете в какой каталог будет помещен указанный файл.
Выполняете.
Всё, проверяете результат.
(16) Не понял. А ЗУП 2.5.31.4 не позволяет выводить данные в нужном формате ?
(17)
Позволяет. 🙂
Однако:
1) не все ведут учет в ЗУП, а данная обработка не привязана к конфигурации.
2) даже если в ЗУП, то не все еще обновлены на текущую версию. Некоторые еще на очень старых сидят.
3) в релизе 31.4 официально признанная ошибка обработки вычетов к доходам с кодами 1530. Собственно, последнее обновление этой обработки к этим вычетам тоже относится.
(18) Ок . Спасибо.
У нас теряется ссылка на 503-вычет(Аналогично 203 у пользователя Shtyr).Как выйти из этой ситуации?
(20) Можете пример файла в личку?
Вообще такого не должно быть, привязки на коды нет. Только всё по структуре файла…
(7)(10) Это ко мне.
Добрый день,
Большое спасибо за конвертер.
Огромная человеческая благодарность разработчику! Дай бог Вам всего самого лучшего!
(24) Спасибо конечно. Приятно что пригодилось, для этого и выкладывалось.
Только мне непонятно что действительно еще актуально? 🙂
Делалось именно потому что другими средствами не было возможности сделать на тот момент. Сейчас же есть несколько различных вариантов…
Актуально. В 1С 8.1 ещё нет обновления, чтоб сдать отчетность, а ждать не охота, охота сдать и забыть до след. года….:)
Что-то обработка кушает <АдрИНО> (Адрес проживания за пределами РФ). Не кто не проверял?
(27) Не должна. Проверялась на своих файлах (такие тоже есть) — было всё нормально. Если адрес пропал, то значит структура исходного файла чем-то отличается.
Арчибальд,
Пожалуйста, конвертацию для 7-ки… уже сдавать пора, не хочется тянуть до последнего.
Ваша обработка ещё актуальна 🙂
Есть сторонняя программа, которая умеет выгружать лишь в формате 2009 года, и к тому же без разбивки на ОКАТО и КПП.
Дак вот, если в одном файле разные ОКАТО и КПП, то после конвертации Вашей обработкой они во всех справках становятся одинаковыми. По-моему берет из первой справки и везде такие коды и ставит.
Т.к. код закрыт, обращаюсь к разработчику, можно поправить ?
Налогоплательщик-2010 может загрузить файлы старого формата, разбив по ОКАТО и КПП. Но файл у нас огромный и налогоплательщик часа 2 его обрабатывает, а потом не меньше выгружает. К тому же хотелось бы иметь один файл на выходе, только в новом формате. А на ОКАТО и КПП разобем другим способом.
(30) Вы можете приложить пример такого файла?
Могу сделать и разбивку сразу на несколько файлов…
Кстати, будь даже код открыт, изменить достаточно сложно. Код усложняется минимум на 30% 🙂
(31) Ну если код усложняется на 30%, то не буду напрягать. Тем более что в таком Вашем варианте тоже есть свои плюсы.
После Вашей обработки можно сделать проверку в налогоплательщике одного файла, это удобнее и быстрее, чем 100 штук проверять 🙂
А если в файле будут разные коды, то проверка в налогоплательщике не пройдет.
Спасибо!
(32) 😀
Ну почему же, если очень надо, то сделаю 🙂
Если в личку файл примера сегодня — завтра утром будет переделанная обработка, с разбивкой по кодам и файлам.
Увы, просто под рукой файлов похожих сейчас нет.
(33) Если Вам не трудно, то сделайте.
К сожалению, пример не могу выслать, конфиденциально 🙂
Но суть примера лишь в том, что в справках разные ОКАТО и КПП.
Т.е. в любом своем файле поставьте в какой-нибудь справке ОКАТО и/или КПП от «фонаря», вот и всё.
После обработки эти коды должны сохраниться.
Сейчас же они все становятся одинаковыми, по-моему по кодам первой справки.
Т.е. ОКАТО и КПП нужно переносить в новый формат точно также, как и ФИО например, а не приравнивать к одному значению.
А разбивку на разные файлы можно и не делать, ведь суть обработки в конвертации в новый формат. И если в старом коды переплетаются, то пусть и в новом так будет.
(34) Поскольку файл не предоставили, тогда и тестировать Вам 🙂
«От фонаря» не получится, поскольку коды формируются по определенному алгоритму.
Новый вариант пока прикрепляю к этому сообщению.
Люди! Ну неужели нет для 7-ки? Помогите, пжлста, уже очень хочется!
а на 8.2 не работает? горююююююююююююююююю
(37) Работает. Сначала откройте её в конфигураторе, сконвертируйте и дальше заускайте как обычно.
А у нас не приняли, из протокола:
Путь к реквизиту: СвНА /СвНАФЛ / @Имя
Значение элемента:
Текст ошибки: Недопустимое значение элемента
И в сконвертированном файле: <ФИО Фамилия=»» Имя=»» />
(39) А вы уверены что в исходном файле всё нормально?
Скорее всего этих данных там и не было…
В исходном файле есть, но выглядит иначе:
<ФИОФЛ>
<Фамилия>Иванов</Фамилия>
<Имя>Иван</Имя>
<Отчество>Иванович</Отчество>
</ФИОФЛ>
Я ссылка на исходный файл в личке.
Ошибка исправлена. + добавлен новый функционал.
Файл в налоговой приняли, спасибо за оперативную помощь ! 🙂
Конвертер2НДФЛ.epf
Реестр, файл хорошо, а как сами справки 2-НДФЛ распечатать? Если есть бесплатная программу, чтобы файл распечатывала, пожалуйста, дайте ссылочку
(44)
А в чем проблема?
Старые периоды в типовой нормально работают. Для новой формы тут же бесплатная поя обработка выложена (типовая с ошибками пока)… Или что-то другое в виду имелось?
А нельзя ли галочку в форму добавить, чтобы в
<СГДНалПер СумДохОбщ=»89982.59″ НалБаза=»63982.59″ НалИсчисл=»8318″ НалУдерж=»8318″ НалПеречисл=»0″ НалУдержЛиш=»0″ НалНеУдерж=»0″/>
БЫЛО
НалУдерж=»8318″ НалПеречисл=»8318″
совпадали по суммам, т.е. что удержано, то и перечислено
Сорри, Только заметил, что это не актуально и надо заполнять с 2011 года
Исчезает АдрИНО… Приложил исходный файл и файл-результат
(48) Разобрался, исправлено.
Работает. Сначала откройте её в конфигураторе, сконвертируйте и дальше заускайте как обычно.
А как обычно?
Объясните для «особо одаренных»?
В Конфигураторе открываем папку через файл-открыть, а дальше? Действия?
(50) Добавил этапы конвертации в версию 8.2 пошагово, в описание.
Все сделала как написали…
Дошла до пункта 5., открываю, а меня спрашивает программа с помощью чего открыть… если нажимаю, то что предлагается , то открывается обычная 1с… что не так у меня происходит?
Все, спасибо, уже не надо… 😀
В 1С вышло обновление, уже скачала, все работает!
Сергей, добрый день!
Обнаружил ошибку в обработке:
не всегда переносятся имущественные вычеты.
А именно, если нет стандартных вычетов, а только имущественные, то они не переносятся.
Если стандартные есть, то все нормально.
Т.е. если есть блок <СтандВыч>, а после него идет блок <ИмущВыч>, то всё переносится.
Если же блока <СтандВыч> нет, то и <ИмущВыч> пропускается.
Может ошибка не совсем в этом, но я такую закономерность уловил.
Посмотрите пожалуйста, очень надо.
Прилагаю файл, в котором не переносится имущ. вычет.
Спасибо!
(54) Не встречал такого в практике, исправил.
(55) Спасибо, проверю.
У меня тоже изначально такого не попадалось.
Я же Вашу обработку своей обработкой проверял :), всё правильно переносило.
А тут новый файл подкинули огромный, и вылезли расхождения по 5-ти справкам 🙂
(55) Проверил, все нормально.
Больше ошибок не обнаружено, спасибо!
У меня вопрос: я скачал обработку и проверил её до того, как в описании к обновлению появился пункт 2:
«2. Мелкие косметические исправления модуля.»
Я так понимаю на правильность работы не влияет ?
(57) Необязательно.
Там просто кое-в чем поправил модуль для подготовки к возможным изменениям в дальнейшем (пока не решил делать ли их) и обкатка паранойи 😀
Кстати, to all:
Если закачивали обработку между 17 часами вчера и сейчас — перекачайте, выкладывал не ту версию. Поправил 😳
Сергей, приветствую!
Ещё нашел ошибку в обработке, опять по имущественным вычетам.
Теперь, насколько я понял, если более одного имущественного вычета, то конвертируется только один из них, самый первый.
Но может и в другом причина: в моих файлах несколько таких примеров с 2-мя имущ.вычетами, сначала идет код 311, потом 312.
Т.е. либо 312 не переносится, либо от кода не зависит, а переносится просто один первый вычет.
Посмотрите пожалуйста.
Файл прилагаю.
(59) Да ставится только первый.
Насколько я знаю, на один налоговый период одному физическому лицу может быть предоставлен только один имущественный вычет.
Кроме того, в соответствии с Приказом ФНС РФ от 17.11.2010 N ММВ-7-3/611@ «Об утверждении формы сведений о доходах физических лиц и рекомендаций по ее заполнению, формата сведений о доходах физических лиц в электронном виде, справочников» , в разделе 4, указано о подаче сведений об имущественном вычете в единственном числе.
Так что, делать этот момент не вижу смысла. Либо у вас не правильные данные, либо какая-то специфика, с которой я не знаком.
Разве только что для вас отдельно…
(60) Спасибо за разъяснения.
Почему-то мне дали такой файл 2009 года, буду разбираться.
Спасибо, что поделились. Удобно.
Благодаря этой утилите я сэкономил как минимум один рабочий день.
СергейКа,
Спасибо за обработку, но у меня с ней есть проблемы.
при конвертации с галкой разделять по ОКАТО — формируется 4 файла в новом формате. 2 из них проверку не проходят с формулировкой Ошибка в элементе верхнего уровня документа. В обоих этих файлах НЕрезиденты РФ, соответственно вижу проблему в этом, но пока не понимаю — проблема в исходном файле или в обработке. В общем, подскажите куда копать.
(64) Если не боитесь, пришлите в личку проблемный файл. Можно через любой обменник.
Отличный конвертор! Спасибо автору 🙂
(65)всё, разобрались, нашли ошибки. Всё как обычно — косяк бухгалтера, а я на этот файл трачу времени больше, чем она. Пойду завтра, придушу. Ещё раз спасибо за обработку.
Спасибо!
хорошая прога
Спасибо за обработку!
Спасибо за обработку! Помогла