<?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='\
Желательно бы расшифровку для данного отчета, потому что, сами понимаете, бухгалтерам нужно знать что и откуда, а эти формы новые, толком как они заполняются никто не знает, существующие разъяснения мутны и не информативны.
Полностью с Вами согласен. Мало того, разные документы по разному толкуют алгоритм заполнения отчётов. И, с одной стороны, Вы правильно назвали эти формы новыми, но, с другой стороны, они уже, можно сказать, старые, потому что со следующего года вместе с новой инструкцией придут и новые формы.
Поэтому если в будущем году эти формы сохранятся, расшифровку постараюсь сделать обязательно (уже сейчас этим занимаюсь).
Спасибо.
Добрый день! Скачала файл, мне нужна только 128 форма, но автоматического заполнения не получилось. Может что-то не так сделала?
Добрый день. Файлы находятся в архиве. Их (или любой из них) нужно извлечь их архива и переписать в папку ExtFormsRpYYqK.grp Вашей Информационной базы, где YY — год регламентироанной отчётности, а K — квартал (в настоящий момент RP10q3.grp).
В крайнем случае извлечённые их архива отчёты (отчёт) можно запустить на выполнение из Главного меню «Файл/Открыть». Имена файлов: F128_1CR.ERT для формы 0503128 и F138CR.ERT для формы 0503138.
Здравствуйте. С файлами все понятно. С автозаполнением все туманно. По крайней мере при проверке на базах своих клиентов нажатие кнопки «Заполнить» ничего не инициирует. Или цель обработки включать/отключать выведение сумм в столцах 7,9,11,12?
И еще вопрос. На основании каких документов Ваша обработка производит Автозаполнение форм? Может их е нас просто нет?
Здравствуйте, у меня тоже не заполняет ничего, посмотрела отладчиком — вылетает на списке счетов, он возвращается пустым, не пойму , в чем дело
Не собираюсь проводить ликбез, отвечу только что методика заполнения отчётных форм изложена в Руководстве пользователя фирмы 1С, а алгоритм заполнения отчетных форм в Приказе Минфина от 09.11.2009 № 115н. Читайте.
По поводу методики заполнения. Автозаполнение форм ведётся на основе ПРОВОДОК, а не документов. То есть совершенно всё равно заводите Вы, например, ЛБО через документы или ручными проводками.
И ничего туманного с автозаполнением нет (кроме некоторых разночтений алгоритма заполнения Минфина, Федерального казначейства и местных ФКУ, для чего и сделаны альтернативы заполнения граф 7, 9, 11, 12).
У меня отчёт работает в полутора десятков организаций уже несколько месяцев и никаких замечаний нет. Наоборот, автозаполнение выявило множество ошибок ведения учёта в конкретных организациях, которые и были исправлены благодаря автозаполнению.
Когда будет сделана функция расшифровки ячеек, я думаю, многие вопросы решатся сами собой.
Зря Вы так ругаетесь. Ликбеза никто не просил. Проверил еще на пяти базах. Результат тот же. Таблица девственно чиста. Пошел по самому простому пути. Развернул Демо-релиз бюджетки 642. Запустил обработку там. Увы. Безрезультатно. Может файлики не те выложены? Или в базах Ваших клиентов что-то подкручено? (Ведь Вы же их всех обслуживаете).
Прошу прощения, погорячился. Отчёт проверял тип конфигурации. Проверку убрал, заполнил как и Вы в стандартном демо-релизе 642 — всё работает!
Пользуйтесь на здоровье!
Еще раз прошу извинить за резкость.
128 заработала. Спасибо.
Со 138 что-то не выходит.
Таблица.Область («R» + Вывод + «C4»).Значение = Ит.Субконто(1).Классификатор.Код;
{C:TEMPF138CR.ERT(3905)}: Не задан вид.
У Вас в КБК не заполнен код «Раздел и подраздел». Желательно также заполнение кодов «Целевая статья» и «Вид расхода».
Прогрессор, напишите, пожалуйста, как у Вас 128 форма «заработала». У меня так и не заполняется.
Скачайте обновление. Там я всё исправил.
Можно ли собрать сводный отчет по нескольким учреждениям. У нас учет ведется в разрезе учреждений (их 132)?
Для получения сводного отчёта очистите поле «Учреждение» (Shift-F4). Произвольную выборку получить нельзя (как и во всех Регламентированных отчётах).
Спасибо, выручили. Заметила, что если учет ведется по КБК с дополнительной классификацией, то при «печати без итогов» выводится только одно значение по ЭКР, а при «печати с итогами» сумма выводится правильно.
Обратила внимание, что при подсчете гр.8, когда вычисляется обороты (Д 401.01.1 200 К 303.**), в форму попадают только обороты (Д 401.01.1 200 К 303.11.1). Суммы по остальным счетам: 303.02 303.05 303.06 303.07 и т.д. не учитываются. Правильно ли?
Конечно, неправильно. Спасибо, проверю и исправлю.
Исправлено!
Глянул алгоритм 128. Заполнение графы 8. Не учтено: возврат дебиторской задолженности прошлых лет по счету 206; погашение кредиторской задолженности пр. лет по счету 302; возврат подотчетных сумм по счету 208; кредитовый остаток (перерасход) по счету 208; в инструкции не прописано, но включать не советую выдача денежных документов подотчет (Дт 208 Кт 20105); зачет переплаты налогов прошлых лет 303, погашение кредиторской задолженности по налогам прошлых лет 303. Вроде все (301 не разбирал). Так же считаю необходимым при подсчете разворачивать по аналитике контрагенты, договоры, налоги (что и сделал в своем алгоритме 🙂 ).