БГУ 8: Перевод основных средств с КФО 5 на КФО 4 в соответствии с письмом министерства финансов №02-06-07/3798 от 18.09.2012




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

11 Comments

  1. strig_85

    Не понял? Вели вели учет неправильно потом бац! Одним днем исправили, но учет в течение периода до ДАТЫ ОПЕРАЦИИ остался неправильным! Не лучше ли воспользоваться моей? http://infostart.ru/public/161802/

    Reply
  2. ZHPN24

    Я бы сформулировал иначе: Девять месяцев мы вели учет в соответствии с действующими нормативно-правовыми документами,при этом распечатывали первичные документы, бухгалтерские справки, журналы операций, главную книгу, сдавали квартальные отчеты, а 18.09.2012 появился новый нормативный документ, и мы строго в соответствии с инструкцией 157н где сказано «ошибка, обнаруженная до момента представления бухгалтерской отчетности и требующая внесения изменений в регистр бухгалтерского учета (Журнал операций), в зависимости от ее характера, отражается последним днем отчетного периода дополнительной бухгалтерской записью, либо бухгалтерской записью, оформленной по способу «Красное сторно», и дополнительной бухгалтерской записью» исправляем допущенные ошибки при помощи бухгалтерской справки («дополнительные бухгалтерские записи по исправлению ошибок, а также исправления способом «Красное сторно» оформляются первичным учетным документом, составленным субъектом учета — Справкой, содержащей информацию по обоснованию внесения исправлений» см. 157н).

    Меня больше удивляет ваша обработка http://infostart.ru/public/161802/. Исправление учета задним числом на мой взгляд не лучшая идея потому, что:

    1. Это противоречит иструкции.

    2. Потребуется перепроводить документы «Начисление амортизации».

    3. Потребуется исправлять и перепроводить «Внутреннее перемещение ОС», «Списание ОС».

    4. Нужно будет перепечатать все журналы операций и главную книгу.

    5. Нужно будет открыть доступ бухгалтерам к уже закрытым периодам, а они могут изменить не только документы по учету ОС. Это не маловажно для централизованных бухгалтерий и крупных учреждений.

    6. Сил, времени и ручного труда будет затрачено немало.

    Reply
  3. timurhv

    Странно, в ЦБ письмо раньше приходило, еще где-то в апреле.

    Reply
  4. ZHPN24

    Как письмо от 18.09.2012 могло прийти в апреле и почему только в ЦБ — не знаю. Если какие-то письма и были в апреле, то скорее всего внутриведомственные, и проводки наверняка там были другие. Нам тоже писали (не в апреле, позже), рекомендовали делать так: 5.304.06-5.101.хх, 5.104.хх-5.304.06, а потом 4.101.хх-4.304.06, 4.304.06-104.хх, по аналогии с переводом в особоценное, причем до этого были и другии варианты проводок (через 401 счет).

    Reply
  5. FlexL

    Интересно но прямо о том, что необходимо перевести все ОС с 5 на 4 в письме №02-06-07/3798 не сказано.

    В приложение пункт 2.2.4 гласит:

    2.2¦Принятие учреждением к учету ¦ 5 304 06 830 ¦ 5 106 хх 4 x 0 ¦

    ¦.4 ¦по виду деятельности «4» ¦ 4 106 хх 3 x 0 ¦ 4 304 06 730 ¦

    ¦ ¦вложений в особо ценное ¦ ¦ ¦

    ¦ ¦имущество, произведенных за ¦ ¦ ¦

    ¦ ¦счет субсидий на иные цели (на¦ ¦ ¦

    ¦ ¦основании Справки (ф. 0504833)

    т.е. здесь указаны проводки ОСЦИ, а не все ОС по 5. Было какое-то уточнение данного письма, где прямо указано что необходимо перевести ОС с 5 на 4 ?

    Reply
  6. ZHPN24

    Про уточнения данного письма не знаю. По-моему в минфине сами уже запутались в своих приказах и инструкциях, если додумывают их на ходу.

    Я исхожу из следующих соображений: «в субсидиях на иные цели не учитываются расходы по содержанию имущества (ремонту, уплате налога на имущества и т. п.), приобретенного за счет данного источника финансирования. Именно поэтому основные средства, приобретаемые учреждением за счет средств субсидий на иные цели и отражаемые в учете по коду вида деятельности 5 «Субсидии на иные цели», переводятся на код вида деятельности 4 «Субсидии на выполнение государственного (муниципального) задания»». Например: купили принтер по кфо 5, а средств на его заправку и ремонт на кфо 5 нет, поэтому чтобы нормально его эксплуатировать должны перевести на кфо 4.

    Reply
  7. FlexL

    Благоадрю за ответ.

    Учредитель, которому сдаем отчетность тоже сказал все средства по 5 на 4 переносить, им так минфин указал. А так же уточнил пускай на 4 переводят, а если умными окажутся то и не ставят их на ОСЦИ, ставят их как иное движимое имущество

    Reply
  8. IgorYan

    А кто нибудь делал перевод ОС с 5 КФО на 4, потом закрытие года? Я все сделал как тут описано!!!Но!

    Вот какая ошибка при проверке контроля соотношений в регламентной отчетности!!!! Что только не делал,как только не перепроводил…

    0503730,0503721 Ошибка

    Номер соотношения: 37 Код соотношения: 1С0000337

    -412 615,09 = -321 615,09 -91 000,00

    «[ф.0503730стр. 490гр. 8]

    ЭТО НОРМАЛЬНО!

    Reply
  9. ZHPN24

    КС 1С0000337

    [Ф730_стр490_гр8]

    -[Ф730_стр490_гр4]

    +[Ф730_стр510_гр8]

    -[Ф730_стр510_гр4]

    +[Ф730_стр530_гр8]

    -[Ф730_стр530_гр4]=[Ф721_стр540_гр5]

    -[Б0503725_стр000_гр7]

    +[Б0503725_стр000_гр6]

    1. Контрольные соотношения 1с работают не идеально, бывают косяки, например не видит существующие формы или видит не существующие.

    2. В указанном соотношении участвует форма 0503725, возможно вы про нее забыли, или заполнили неправильно.

    3. В указанном соотношении участвует Ф721_стр540_гр5 Чистое увеличение прочей кредиторской задолженности которая содержит достаточно большой объем информации и целое раздолье для бухгалтерских ошибок, скорее всего вы не там ищете. Сделайте анализ субконто КОСГУ 730 и 830. Анализ счета 304.04. Анализ счета 304.06.

    4. -412 615,09 = -321 615,09 -91 000,00 «[ф.0503730стр. 490гр. 8] слишком мало информации чтобы сказать НОРМАЛЬНО ЭТО или НЕТ.

    5. Обработка скрытых действий не выполняет, все проводки налицо, если нашли ошибку и считаете их неправильными — напишите как надо — исправлю.

    Reply
  10. IgorYan

    Всем спасибо!!! Выгрузили в программу «Свод Веб» — там нет никаких ошибок….

    Reply
  11. Razlagutt

    Здравствуйте! Мы использовали штатную обработку 1с, но мой бухгалтер недоволен тем, что амортизация не переводится на кфо 4. Ваша обработка учитывает амортизацию или мой бухгалтер что-то нет так понял/объяснил?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *