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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2024-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='\

82 Comments

  1. victuan

    Скриншот давай!

    Reply
  2. valent

    В ячейке (2,6) «Продавец: [?(ДатаДок>=’09.06.2009′,….» поменять Контроль строки

    Reply
  3. Antia

    (2) Зачем? Специально поменял на «переносить по выделенным столбцам». Теперь используется полное название и одной страки может не хватить.

    (1) ?

    Reply
  4. Antia

    (3+) «одной строки», конечно…

    Reply
  5. Димча

    Спасибо за своевременную информацию

    Reply
  6. victuan

    (3) Скриншот образца печатаемой с/ф. Чтобы видеть, что качаю.

    Reply
  7. dummy

    (7) а ты просто не качай?

    Reply
  8. MegaMouse

    Нафига скрин? этож .mxl-ка (там даже ни 1 кнопочки нет-)))

    Спасибо что предупредил про СФ новую!

    Reply
  9. alexbuh2

    скачиваю а файлик получается php — что делать?

    Reply
  10. Altair777

    (10) Чем скачиваете? У меня все нормально

    Reply
  11. ron1

    Спасибо.

    Reply
  12. AKV77

    Спасибо

    Reply
  13. Арчибальд

    ДорогА ложка к обеду

    ВооооОооот…..

    Reply
  14. ValeraH

    Во внешней печатной форме SF_451.epf упоминания о новом приказе нет, только в скобках краткое наименование.

    Reply
  15. Antia

    Убрал номер и дату нового постановления из шапки счет-фактуры.

    Reply
  16. Antia

    Вернул номер и дату нового постановления в шапку счет-фактуры. Считаю, что так будет более правильно, чем в варианте от фирмы 1С.

    Reply
  17. x-lota

    Спасибо, что вернули строку с номером Постановления.

    Reply
  18. paul509

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

    Reply
  19. Ёпрст

    (19) в консультанте форма с исправленной шапкой…

    Reply
  20. paul509

    согласен, консультант прав, 1С нет

    Reply
  21. manan

    не судьба что ли было дождаться 1с-ной формы? сегодня вот вышло, преспокойно поставил

    Reply
  22. Antia

    Фирма 1С выпустила новую счет-фактуру в виде внешней печатной формы (пара файлов .ert и .efd) для всех конфигураций 7.7 ( http://www.buh.ru/newsDescr-4858 ). Номера нового приказа в шапке в них нет.

    Reply
  23. Antia

    (22) Ну, если в день полторы счет-фактуры, то можно и дождаться. А если в день их сотня, то можно и пораньше минуту времени потратить, чтобы потом не перепечатывать.

    Reply
  24. KosmosMars

    дайте для комплексной ссылку на новую форму. Есть где нибудь?

    Reply
  25. logdog

    1с: Бухгалтерия, Пр-во+услуги, Комплексная, Торговля и склад, Платежные документы, Аспект

    http://rapidshare.com/files/245243109/forms.rar

    Reply
  26. KosmosMars

    для комплексной есть где нибудь?

    Reply
  27. Olyunchik

    Спасибо, актуально…

    Reply
  28. alex231273

    Извините но это же постановление по ведению книги покупок и продаж, и мало ли что они там написали по форме счф. В кодекс в ст.169 (форма и показатели счф) изменения не внесены. А не получится обратная ситуация что мне потом налоговая скажет что у вас лишние показатели не предусмотренные НК РФ и к вычету не примем.

    Reply
  29. Арчибальд

    (29) Основания для неприема — только ОТСУТСТВИЕ показателей, предусмотренных НК. И общее правило: показатель добавить всегда можно.

    Reply
  30. alex231273

    (30) ок. но все же изменения в 169 не внесены, смысл тогда этого постановления в части формы счф.

    Reply
  31. Sara3

    HELP !!!! ?(ДатаДок<<?>>>=’09.06.2009′,СокрЛП(Константа.ОфициальноеНазваниеОрганизации)+» («+СокрЛП(Константа.НазваниеОрганизации)+»)»,СокрЛП(Константа.НазваниеОрганизации))

    Переменная не определена (ДатаДок)

    Reply
  32. Арчибальд

    (32)Шо, без документа печатаете?

    Reply
  33. Altair777

    (33) Из операции?

    Reply
  34. Sara3

    Нет, я заменил файл на свой. Открыл документ С/Ф выбрал печать как и всегда и выпала такая табличка снизу. Индификатор ДатаДок соответствует ДатаДок С/Ф

    Reply
  35. Looking

    Наличие/отсутствие надписи в шапке

    «,от 26 мая 2009 г. N 451»

    влияет на принятие НДС к вычету?

    Если я эту надпись сам допишу — это может быть проблемой и клиентов могут потом заставить счета-фактуры перепечатывать?

    Кстати в Консультанте в тексте есть упоминание, а в шаблоне Excel нет, вот скриншот из Консультанта

    http://i077.radikal.ru/0906/bb/8e15e433c977.jpg

    может нам Консультантовцы шаблоны Excel не обновили? или они автоматом обновляются?

    Reply
  36. Looking

    у кого-нибудь в шаблоне Excel из Консультанта есть надпись «,от 26 мая 2009 г. N 451» ?

    Reply
  37. Looking

    Сохранил из Консультанта в формате rtf

    «ПОСТАНОВЛЕНИЕ

    от 2 декабря 2000 г. N 914

    ОБ УТВЕРЖДЕНИИ ПРАВИЛ ВЕДЕНИЯ ЖУРНАЛОВ

    УЧЕТА ПОЛУЧЕННЫХ И ВЫСТАВЛЕННЫХ СЧЕТОВ-ФАКТУР,

    КНИГ ПОКУПОК И КНИГ ПРОДАЖ ПРИ РАСЧЕТАХ

    ПО НАЛОГУ НА ДОБАВЛЕННУЮ СТОИМОСТЬ

    (в ред. Постановлений Правительства РФ от 15.03.2001 N 189,

    от 27.07.2002 N 575, от 16.02.2004 N 84,

    от 11.05.2006 N 283, от 26.05.2009 N 451,

    с изм., внесенными решением Верховного Суда РФ

    от 10.07.2002 N ГКПИ2001-916)»

    в нём в приложениях в счёте-фактуре, и в Книге покупок и в Книге продаж, в доп.листах написано следующее

    (в ред. Постановлений Правительства РФ от 15.03.2001 N 189,

    от 27.07.2002 N 575, от 16.02.2004 N 84,

    от 11.05.2006 N 283, от 26.05.2009 N 451)

    Reply
  38. Looking

    Может отсутствия комментария вызвано тем что в форме счета-фактуры ничего не изменилось, то есть форма осталась той же (не появилось ни новых граф, ни столбцов, ни строк, ни текста), только изменились правила заполнения?

    Reply
  39. Looking

    В Приложении 1 в Консультанте шапка выглядит так:

    (в ред. Постановлений Правительства РФ от 15.03.2001 N 189,

    от 27.07.2002 N 575, от 16.02.2004 N 84,

    от 11.05.2006 N 283, от 26.05.2009 N 451)

    В Приложении 1 в Системе Главбух так:

    (в редакции постановления Правительства Российской Федерации от 11.05.2006 N 283)

    до Гаранта пока не добрался 🙂

    Reply
  40. Igor-san

    У кого возникает ошибка «Значение не представляет агрегатный объект (Вид)» на 88 строке Товар.Вид() = «Номенклатура», добавьте выше Товар = Докум.Товар; (например, после СтранаПроисхождения = Докум.СтранаПроисхождения; )

    Reply
  41. Igor-san

    Блин, извините, предыдущий мой комментарий к теме http://www.new.infostart.ru/projects/4466/ относится 🙁

    Reply
  42. alexgood

    Минфин утверждает, что опечатки нет, но для налоговых агентов написано «или» в этом поле можно указать или полное или краткое наименование из этого же постановления и никакого «и» — так что надо это в счет-фактуре предусмотреть (отдельно для налоговых агентов).

    А в целом видно что у них опечатка (т.к. либо в первом случае с «и» либо во втором с «или» — неувязка форма должна быть одинаковой для всех, а они ошиблись). Никто не хочет признавать своих ошибок!

    Reply
  43. Sofia_E

    У меня выдает ошибку, пишет,

    ПечКоличество<<?>>

    Переменная не определена (ПечКоличество)

    ПечЦена<<?>>

    Переменная не определена (ПечЦена)

    ПечСумма<<?>>

    Переменная не определена (ПечСумма)

    ПечАкциз<<?>>

    Переменная не определена (ПечАкциз)

    ПечНДС<<?>>

    Переменная не определена (ПечНДС)

    ПечВсего<<?>>

    Переменная не определена (ПечВсего)

    ПечИтогНДС<<?>>

    Переменная не определена (ПечИтогНДС)

    ПечИтогВсего<<?>>

    Переменная не определена (ПечИтогВсего)

    Reply
  44. Sofia_E

    Обновила до 504 релиза-все нормально стало

    Reply
  45. Antia

    Вчера уже 507 вышел с новой формой счет-фактуры.

    Reply
  46. Дашка

    А у меня тоже пишет такую же ошибку как у Sofia_E что значит обновила до 504 релиза?

    я только начала заниматься 1С , помогите мне:)

    Reply
  47. drool

    ребят она для 1с предприятия пойдёт? а то я только вникаю…

    там просто ert и efd файлы, mxl там не пахнет(

    Reply
  48. Дашка

    что такое релиз я поняла,а как обновить его?((

    Reply
  49. Vit aka proger

    нужно менять не только накладную но торг12.

    я к тому что не нужно вобще заморачиваться, а можно просто поменять название организации 🙂

    Reply
  50. Looking

    В вышедшем 155 релизе Предпринимателя 7.7 нет изменений с двумя наименованиями, в описании тоже нет никакой информации об изменениях

    Релиз 7.70.155 от 23.06.2009 г.

    Новое в релизе:

    1. Добавлен комплект регламентированной отчетности за 2 кв. 2009 года.

    2. Исправлены выявленные ошибки.

    Значит ПБОЮЛ не нужно эти изменения делать? Т.к. у них сокращённого наименования нет?

    Reply
  51. Дашка

    а что нужно прописать если не вставлять этот файл?

    Reply
  52. nadiaramazanova

    Подскажите а как скопировать этот файл со счет фактурой в 1С.Спасибо

    Reply
  53. dgv

    Спасибо, все хорошо, для своей организации доработал

    Reply
  54. Antia

    26 числа фирма 1С выпустила исправленные внешние печатные формы СФ для Бух507 и УСН163, у которых в шапке добавлены дата и номер нового постановления.

    Reply
  55. VeRkA

    Файл скачала в указанную папку, а в списке печатных форм в конфигурации «1С предпринимател» новая форма так и не появилась? как загрузить?

    Reply
  56. Antia

    (56) Этот файл предназначен только для Бухгалтерии и не подходит для Предпринимателя. И новая печатная форма в списке печатных форм не появляется.

    Reply
  57. VeRkA

    Спасибо, я уже поняла, даже как внешнюю обработку использовать не получается.

    Reply
  58. IP43

    Все установили новую СФ, и многие с опозданием, а теперь контрагенты просят заменить старую на новую, если СФ выписано много, то можете воспользоываться групповой печатью СФ http://infostart.ru/projects/4746/

    Reply
  59. TOsya

    СПАСИБО БОЛЬШОЕ!!!!

    Reply
  60. Loo

    «Инструкция. Скопируйте файл 1csf283_.mxl в папку ExtFormsPrnForms информационной базы.»

    Ну и чего!? СФ не меняется!

    Reply
  61. Antia

    (61) У всех меняется… Поэтому вопросы:

    1. Конфигурация — типовая бухгалтерия?

    2. Ее релиз — 506?

    3. Дата печатаемого документа позже 08.06.09?

    Reply
  62. gamlet_33

    А если релиз 493??? чегой-то ничего не меняется

    Reply
  63. Antia

    (63) Должно меняться.

    Reply
  64. msam

    У меня 1С:Предприятие 7.7

    Типовая конфигурация «Торговля+Склад», редакция 9.2

    Релиз 7.70.942 от 14.07.2006 г. Понимаю, что это не релиз — 506)))))))))))) Как быть? Подскажите пожалуйста

    Reply
  65. Antia

    (65) На инфостарте этих счет-фактур — как в улье мёду…

    Может быть, эта поможет http://infostart.ru/projects/4627/ ?

    Reply
  66. msam@list.ru

    Antia, я какие-то файлики скачал, а второй раз не позволяет сегодня скачивать)) А можете на мыло переслать эти два чудесных файлика? пожалуйста))))))))))

    Reply
  67. msam@list.ru

    спасибо))))

    Reply
  68. Altair777

    (69) Почему не получается? Ссылка битая?

    Reply
  69. msam

    не знаю, пишет что превышено количество скачиваний в сутки, а сутки уже прошли))

    Reply
  70. osavvon

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

    Reply
  71. alba

    Спасибо!

    Reply
  72. vlad.com

    Пожалуйста скиньте релиз 507 на мыло, буду признателен.

    Reply
  73. stalker52rus

    ПОМОГИТЕ !! комплексная 1С 7.7 R770492 , как в ней поменять счет фактуру ?

    Reply
  74. poppy

    (73) Что ты хочешь поменять?

    Reply
  75. stalker52rus

    сделал все обновления, а в счет фактуре один черт как прописывалось по старому строка 2 так и осталось , кас сделат по новому то ?

    Reply
  76. poppy

    (77) Может не до конца обновил?

    Для определения необходимости печати по-новому используется глобальная переменная глДатаПостановления451.

    Reply
  77. mol

    НЕ работает,,,, а собственно что мешало .ert приложить если он есть ?? 🙁

    Reply
  78. Antia

    (79) У всех работает, а у одного не работает? Так не бывает. Релиз, скорее всего, старый.

    А .ert фирма 1С раздает.

    Reply
  79. mol

    Усёёё могу извинится с моей стороны клевета —все работает, просто ошибка какая то в базе была, ну повозившись удалось устранить, у меня заведомо почему то очень много версий счет-фактур висело они и мешали данной работать (видимо полянка от компании 1с попалась).. 🙂

    Reply
  80. spryn

    ПечКоличество<<?>>

    Переменная не определена (ПечКоличество)

    ПечЦена<<?>>

    Переменная не определена (ПечЦена)

    ПечСумма<<?>>

    Переменная не определена (ПечСумма)

    ПечАкциз<<?>>

    Переменная не определена (ПечАкциз)

    ПечНДС<<?>>

    Переменная не определена (ПечНДС)

    ПечВсего<<?>>

    Переменная не определена (ПечВсего)

    ПечИтогНДС<<?>>

    Переменная не определена (ПечИтогНДС)

    ПечИтогВсего<<?>>

    Переменная не определена (ПечИтогВсего)

    Reply
  81. Antia

    (82) Релиз какой? Я для 506 делал.

    Reply
  82. spryn

    RE:

    ПечКоличество<<?>>

    Переменная не определена (ПечКоличество)

    ПечЦена<<?>>

    Переменная не определена (ПечЦена)

    ПечСумма<<?>>

    Переменная не определена (ПечСумма)

    ПечАкциз<<?>>

    Переменная не определена (ПечАкциз)

    ПечНДС<<?>>

    Переменная не определена (ПечНДС)

    ПечВсего<<?>>

    Переменная не определена (ПечВсего)

    ПечИтогНДС<<?>>

    Переменная не определена (ПечИтогНДС)

    ПечИтогВсего<<?>>

    Переменная не определена (ПечИтогВсего)

    Моя ошибка. Извините, все работает.

    Reply

Leave a Comment

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