Счет-фактура с 02.09.2010 (Бух 7.7)




Принцип обмена данными из 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='\

48 Comments

  1. Хряк

    хмм, а почему колонка валюты в ТЧ

    Неужто СФ м.б. в разной валюте? Это те, кто внес изменения в НК бредит или…

    Reply
  2. iov

    заставь дурака … Это не к автору. Но действительно если разрешили делать документ с разными позициями в разных валютах то 1С просто порвется от заплаток на полуфабрикаты свои… А если в одной валюте то дописать в итого- строку типа 100 руб. и расшифровку сто рублей то наверно будет проще чем засирать и так не резиновую ТЧ

    Reply
  3. IamAlexy

    чисто уточнить: а то что во всех типовых СФ над табличной частью справа написано «Валюта: руб.» это типа не указание валюты счета фактуры ?

    Reply
  4. victuan

    В шапке с/ф в углу должно быть указание на нормативный документ, изменивший форму с/ф

    Reply
  5. dmitish

    А не должно ли название внешней таблицы быть вместо 1csf283_.mxl 1cbsf451.mxl?

    Reply
  6. Звездочет

    Из текста изменений не следует, что валюту необходимо указывать по каждой строке счета-фактуры. Это просто домыслы.

    В типовой бухии валюта выбирается в реквизитах договора.

    Поэтому на один договор (и на один документ) может быть только одна валюта. Поэтому указание валюты в шапке вполне достаточно.

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

    Но предлагаемая форма ничего такого не использует.

    Поэтому для типовой конфигурации это не нужно.

    (4) Виктуан, указание в тексте счета-фактуры ссылки на нормативный документ об утверждении формы не предусмотрено НК РФ.

    Поэтому она не нужна.

    В постановлениях Правительства- это техническая ссылка в тексте постановления, а вовсе не часть формы счета-фактуры.

    Цепочка ссылок не упоминается ни в одном из постановлений.

    Одно поставноление- одна ссылка.

    В версии же написания «ссылки», практикуемой 1С и составителями справочных баз, тупо перечисляются все постановления, в том числе утратившие силу (от которых ничего не осталось).

    Согласитесь, что бессмысленно ссылаться на редакцию, прекратившую действие полностью. Зачем?

    Reply
  7. victuan

    (6) Я это знаю, но ссылку требуют покупатели, а клиент, как говорится, всегда прав.

    Во-вторых, такую ссылку всегда желают видеть НалОрги, а уж с ними лучше не спорить, а навести необходимую косметику.

    Reply
  8. softpanorama

    а ссылу можно на само постановление или чего там у нас

    Reply
  9. softpanorama

    ссылу я сам нашел (http://www.buh.ru/document-1671),

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

    Reply
  10. coredump

    Спасибо за проявленный интерес к обработке.

    Обращаю внимание на изменение состава и качества разработки.

    1. Добавлена внешняя форма счет-фактуры

    2. Добавлен файл 1csf451_.mxl

    3. В шапку счет-фактуры внесены данные о новой редакции.

    Следите за дальнейшими изменениями.

    Reply
  11. makaorel

    две колонки с номером 4 в ТЧ

    Reply
  12. mad_maksim

    ВАЖНО! Автор, надеюсь без обид, но думаю собществу будет полезно знать правду.

    Данное постановление касается только лишь ЭЛЕКТРОННОГО документооборота и речь идет о реквизите файла обмена. Никаких изменений печатных форм не будет.

    http://www.consultant.ru/law/hotdocs/9856.html

    Reply
  13. dummy

    (12) вообще-то из текста по вашей ссылке это совсем не очевидно. В качестве одного из реквизитов счета-фактуры добавлено указание наименования валюты. больше там на эту тему ничего нет… собственно, валюта там и раньше была. как я понял, она не была обязательным реквизитом, а теперь стала обязательным.

    однако, мне кажется автор формы рановато «засуетился»… пока никакой ясности нет — нет смысла и форму переделывать…

    Reply
  14. mad_maksim

    (13) Сегодня ночью нашел еще один материал, где явно написано, что речь идет об электронном документообороте (пролистать до «Часть вторая НК РФ»)

    http://www.buh.ru/document-1671

    Reply
  15. poslegg

    Для торговли 7.7 печатную форму никто не реализовывал????

    Reply
  16. akmid1

    Тоже очень нужна внешняя печатная форма для торговли 7.7. 1С-ники вообще еще даже и не обещают их. Позвонил им так они о 229 законе то ни чего особо не слышали, так мельком 😀 Еще нужна такая же обработка для 1С 8 бухгалтерия. Иначе меня бухи в понедельник 😮

    Reply
  17. anig99

    (16) посылай бухов ЛЕСОМ! НЕТ новой утвержденной формы счет-фактуры! Пока не будет утверждена новая форма — действуют старые. А валюта счет-фактуры и так есть в шапке — закон выполняется

    Reply
  18. anig99

    http://www.consultant.ru/online/base/?req=doc;base=LAW;n=103118;p=3#p771

    (16) статья 10, пункт 4.

    4. До утверждения Правительством Российской Федерации документов, предусмотренных пунктом 8 статьи 169 Налогового кодекса Российской Федерации (в редакции настоящего Федерального закона), составление и выставление счетов-фактур, ведение журнала учета полученных и выставленных счетов-фактур, книг покупок и книг продаж осуществляются с учетом требований, установленных до дня вступления в силу настоящего Федерального закона.

    пункт 8.

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

    таким образом данный закон сам по себе НИЧЕГО в счет-фактурах не меняет (валюта и так уже давно проставляется в правом углу)

    Reply
  19. mad_maksim

    (18) подтверждаю, формы не нужны.

    Reply
  20. Timesoft

    (14) Да нет, там явно ничего не сказано, даже наоборот.

    Reply
  21. Helga_love

    а для ТиС 7.7 есть новый счет*фактура?

    Reply
  22. taina_tania

    Читаем в консультанте.

    2.3. В счете-фактуре обязательно указывается наименование валюты

    В ст. 169 НК РФ перечислены обязательные реквизиты, которые должен содержать счет-фактура. С 2 сентября 2010 г. в счете-фактуре должно указываться наименование валюты (пп. 6.1 п. 5 и пп. 4.1 п. 5.1 ст. 169 НК РФ ).Соответственно, до утверждения Правительством РФ обязательной формы счета-фактуры налогоплательщики должны САМОСТОЯТЕЛЬНО вносить данный реквизит в счет-фактуру

    Reply
  23. Cobranet123

    (15)(16)(21) Здесь http://infostart.ru/public/74974/ Новая счет-фактура для ТИС 7.7 !!!

    Reply
  24. anig99

    (22) наименование валюты УЖЕ присутствует в используемых 1с формах. Это раз.

    Во вторых, в статье 10, пункт 4 ФЗ №229 указано, что до утверждения новой формы счет-фактуры заполняются в соответствии с требованиями действующими ДО вступления в силу закона. Т.е. пока новая форма утверждена пункт о валюте НЕ ДЕЙСТВУЕТ.

    Так что опять возвращаемся…Новой формы счет-фактуры НЕ ТРЕБУЕТСЯ.

    Reply
  25. anig99

    (22) откуда конкретно пункт 2.3

    Reply
  26. tolick

    (16) вот для вас: http://infostart.ru/public/74979/

    (25) это статья на сайте консультант-плюс.

    правы и (22) и (24) на самом деле НЕ ТРЕБУЕТСЯ но некоторые могут захотеть САМОСТОЯТЕЛЬНО.

    у нас пара крупных клиентов написали что с 02.09.2010 будут принимать ТОЛЬКО новые СФ, посылать лесом таких клиентов нельзя 🙂 поэтому решили тоже специально для них сделать новые формы.

    а слова «посылай бухов лесом» по моему пишут лентяи…

    Reply
  27. valanord

    Согласна с victuan, на каком основании??? Правительством форма еще не утверждена.

    Reply
  28. anig99

    (26) странно…а мы убедили единственного крупняка, кто сообщил о «новой» счет-фактуре, что ничего пока менять не надо…

    Ссылку на конкретную статью можно? или она в закрытом разделе?

    Reply
  29. anig99

    (26) есть разница между ленью и рациональностью.

    мне лично не лень добавить новый столбец с надписью «руб.» в макет, что удовлетворит большинство компаний… Но вот обновлять конфу потом… ну нерационально это вносить изменения в конфигурацию или писать внешнюю обработку из-за чьих-то домыслов. В 1с мощная юридическая служба и http://www.v8.1c.ru/lawmonitor ничего о новой форме нет.

    Reply
  30. tolick

    (28) у нас крупняк не один 🙂 и они очень упрямые… проще добавить колонку чем с ними возиться — на согласование может неделя уйти. ссылку — каюсь, не сохранил, только копию страницы — могу выслать если интересно.

    (29) у нас УТ итак жутко переписаная так что для меня было не проблема 😉 а для Бухи я внешнюю ПФ сделал — даже ссылку давал тут. на лавмониторе упоминается 229 ФЗ но по всем конфам версия реализации — «не определена» т.е. ждут постановления.

    Reply
  31. tolick

    +(30) и кстати с мисты:

    http://users.v8.1c.ru/News.aspx

    02.09.2010 12:40

    Опубли

    Reply
  32. a_titeev

    (31) ага, там даже макета нет в обработке… 🙂

    походу во второй БП раньше в шапке валюта не показывалась, теперь показывается…

    Reply
  33. anig99

    (31) действительно…вышедшие внешние печатные формы от 1с НИКАКОЙ НОВОЙ КОЛОНКИ НЕ ДОБАВЛЯЮТ, а лишь выводят валюту в шапке…как это уже реализовано в других конфах…Так что 1с пока подтверждает мои размышления.

    Reply
  34. alfanika

    Ребята не спешите вперед батьки (1С). Читайте http://www.buh.ru

    Reply
  35. akmid1

    А я дописал и в восьмерке и в семерке у себя,Лишним думаю не будет. Тем более в консультанте была рекомендованная форма. Хотя могу сказать на 100% процентов что до утверждения новой формы можно без проблем работать в старой так как там есть реквизит валюта.

    Reply
  36. akmid1

    Версия от фирмы 1С как быть с счет фактурами.

    Внесены изменения в гл. 21 <Налог на добавленную стоимость> НК РФ, которые вступают в силу со 2 сентября 2010 г.( Федеральный закон от 27.07.2010 ? 229-ФЗ)

    Согласно этому закону произошли изменения в заполнении счета-фактуры:

    В ст. 169 НК РФ перечислены обязательные реквизиты, которые должен содержать счет-фактура. Со 2 сентября 2010 г. в счете-фактуре должно указываться наименование валюты в качестве обязательного реквизита(пп. 6.1 п. 5 и пп. 4.1 п. 5.1 ст. 169 НК РФ ).

    Унифицированной или типовой формы счета-фактуры по действующему законодательству не существует. Дело в том, что в главе 21 Налогового кодекса РФ счет-фактура не утвержден, а полномочия на его разработку и утверждение какому либо государственному органу не делегированы. В пункте 8 статьи 169 Налогового кодекса РФ Правительство РФ может лишь устанавливать порядок ведения журнала учета полученных и выставленных счетов-фактур, книг покупок и книг продаж. Новой редакцией п.8 ст.169 НК РФ предусмотрено, что форма счета-фактуры теперь утверждается Правительством РФ. До утверждения Правительством Российской Федерации новой формы , составление и выставление счетов-фактур осуществляются с учетом требований, установленных до дня вступления в силу настоящего Федерального закона.

    Соответственно, до утверждения Правительством РФ обязательной формы счета-фактуры налогоплательщики должны самостоятельно вносить данный реквизит в счет-фактуру.

    Счета-фактуры, которые печатаются из программ 1С, в настоящее время уже содержат реквизит <валюта>(см. рисунок ниже). Так как в ФЗ не указано, в каком формате и где указывать этот реквизит, то можно использовать эту форму до утверждения новой формы Правительством РФ.

    Reply
  37. wladimir55

    У меня не работает, комп пишет: Если Докум.ВидОперации <> Перечисление.ВидыОперацийСчетаФактурыВыданного.Аванс Тогда

    {C:PROGRAM FILES1CV77BINMARIN-ZLEXTFORMSPRNFORMSSF_229.ERT(24)}: Поле агрегатного объекта не обнаружено (ВидОперации) 😥 😳

    lz62@mail.ru

    Reply
  38. MegaMouse

    Внесу свой мааленький вклад(кирпич в огород автора -)) Файл редми — в досовской кодировке. Мне не критично, но кто-то может и не прочесть. А в остольном — внешнюю форму сделал, и молодец, а бухи пускай думают — использовать ее или нет.

    Reply
  39. celenaa

    Подскажите, пожалуйста.

    я бухгалтер. Закачала форму с сайта. По инструкции положила в нужную папку. В с.ф. нажимаю новую форму и получаю ошибку

    Продавец = СокрЛП(Константа.ОфициальноеНазваниеОрганизации) + «(» + СокрЛП(Константа.НазваниеОрганизации) + «)»;

    {\\PRNFORMSSF_229.ERT(17)}: Поле агрегатного объекта не обнаружено (ОфициальноеНазваниеОрганизации)

    в чем может быть дело? как мне добавить все же эту форму?

    Reply
  40. vladimir_makarov

    Ещё раз убеждаюсь, что Кудрину не хрена делать, кроме как всякую херню изобретать! Только всем своим обновил релизы по ПФР-у, теперь ещё и эта напасть. Благодарю!

    Reply
  41. anig99

    (40) забей… это необязательно обновлять. Если в форме есть строчка с валютой, то всё ок…Никаких новых колонок не надо

    Reply
  42. Марина Викторовна

    А где можно скачать эти файлы! Спасибо заранее

    Reply
  43. alexandr_astafiev

    а где колонка с валютой 😥

    Reply
  44. Хакимова-бухгалтер

    Спасибо

    Reply
  45. Attest

    Спасибо

    Reply
  46. slavik27

    к сожалению не пригодилась, в 1с это уже по умолчанию было реализовано Валюта:руб, но непонятно кто-то сделал Российский рубль

    Reply
  47. user82user

    Спасибо!

    Reply
  48. Smart77

    Поменяйте кодировку в описании. Спасибо.

    Reply

Leave a Comment

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