УСН в типовой бухгалтерии




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

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

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

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

87 Comments

  1. +1

    Reply ↓
  2. victuan

    В соответствии с приказом Минфина РФ от 27.11.2006 г. № 152н внесены изменения в форму раздела I «Доходы и расходы» книги учета доходов и расходов и титульный лист

    Reply ↓
  3. Dolly_EV

    Автору — РЕСПЕКТ и УВАЖУХА!!! Как раз бухгалтерия напрягла с подобным вопросом, а тут практически готовенькое! ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!

    Reply ↓
  4. Musaa

    у меня не пошла

    Reply ↓
  5. victuan

    (4) Не могу прокомментировать — слишко мало вводных.

    Reply ↓
  6. kiparis@mail.ru

    Не очень ясное описание процесса апдейта… никак не пойму, как в глобальном модуле добавить функции?

    туплю…

    Reply ↓
  7. victuan

    (6) Описание ориентировано для программистов, как и сама обработка. Для рядовых пользователей не рекомендована: можно «наломать дров» по незнанию.

    Reply ↓
  8. kiparis@mail.ru

    «наломать дров» в копии базы не страшно… а помочь сможете?

    Reply ↓
  9. victuan

    (6),(8) Заходим в 1С в режиме конфигуратора — Конфигурация — Открыть конфигурацию — Действия — глобальный модуль. Находим в тексте модуля самую последнюю строчку «КонецФункции» или «КонецПроцедуры», послее нее добавляем функции из моей обработки (используя Копировать — Вставить)

    Reply ↓
  10. svsrus

    Спасибо. Сэкономил уйму времени мне. Как раз перешли с нового года на смешанный режим налогообложения и я уже сам начал писать подобную приблуду. Вовремя заметил ). Изменил функцию глНУ(конт), добавив проверку на пустое значение НУ, если пустое проставляется НЕТ. Чтобы если пользователь забыл проставить не относилось у УСН.

    Функция глНУ(конт) Экспорт //тщи

    Если ПустоеЗначение(Конт.НУ) = 1 Тогда

    конт.НУ = Перечисление.Булево.Нет;

    КонецЕсли;

    возврат ?(Конт.НУ=Перечисление.Булево.Нет,»@ «,»»)

    конецфункции

    Reply ↓
  11. victuan

    (10) На этой «приблуде» у меня две организации ведут учет много лет. Проблем нет.

    Все прозрачно и легко (в отличии от типовой УСН)

    Reply ↓
  12. Buhgalter

    К сожалению, не могу выложить весь md, дабы не затрагивать авторские права фирмы 1С.

    А что у 1С уже есть права на md-файлы? 🙂

    Ладно уж… скажи, что не хотел выкладывать «за спасибо».

    Спасибо и на этом.

    Удачи, камрад!

    Reply ↓
  13. victuan

    (12) Если выложить мд ТИПОВОЙ бухгалтерии, то это будет нарушением авторских прав фирмы 1С.

    Недаром она упорно борется с свободными файлобменниками своих продуктов.

    Мои доработки лишь косметически меняют код мд типовой, поэтому если его я выложу, это будет варезом.

    Reply ↓
  14. Buhgalter

    (13) Выложите файл и обзовите его мдд-файл.

    Я к тому, что не сможет 1С свои права заявить на название или структуру файла.

    usn_buh_20_04_07.rar — открыл… там вообще по тексту ТТНка должна печататься.

    Reply ↓
  15. Buhgalter

    (13) ваша прога работает, респект!

    Reply ↓
  16. victuan

    (14) Не хочу такими сомнительными действиями портить репутацию сайта.

    Насчет ТТНки не понял.

    (15) Еще бы, она у меня в промышленной эксплуатации несколько лет.

    Reply ↓
  17. victuan

    (15) И все-таки я не понял за что «минус» ((. Достойной агрументации я так и не увиделл.

    Особенно в сочетании с «ваша прога работает, респект!».

    Если минус оставлен по ошибке, то его можно убрать, «плюсанув» обработку.

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

    Reply ↓
  18. toni

    Обновление по приказу 154н будет?

    Reply ↓
  19. victuan

    (18) Конечно будет.

    Reply ↓
  20. 9AU

    Спасибо огромное за Вашу работу. Пока еще не пробовал

    но думаю разберусь

    и не буду перетаскивать все данные в упрощенку

    СПАСИБО

    очень толково

    Reply ↓
  21. toni

    обновления нету… (

    Reply ↓
  22. victuan

    (21) Оно обязательно будет. Книга сдается в начале года, следующего за отчетным, поэтому торопиться не надо.

    Reply ↓
  23. svsrus

    Ошибочка, по которой не попадали Авансовые отчеты в КНДиР. В процедуру передаем РасходыНУ, а сравниваем РасходыПоНУ.

    ПолучитьАтрибутыПроводки(БухИт.Операция, НомерСтрокиДок, ДатаД, НомерД, ДатаНомерДок, СодержОперации,-1, РасходыНУ);

    Если (РасходыПоНУ = 0) Тогда

    Продолжить;

    КонецЕсли;

    ПолучитьАтрибутыПроводки(БухИт.Операция, НомерСтрокиДок, ДатаД, НомерД, ДатаНомерДок, СодержОперации,-1, РасходыПоНУ);

    Если (РасходыПоНУ = 0) Тогда

    Продолжить;

    КонецЕсли;

    Reply ↓
  24. svsrus

    +(23) ну и далее идет так же.

    Reply ↓
  25. victuan

    (23) Хм. Спасибо, проверю, исправлю.

    Reply ↓
  26. Artur88

    Пожалуйста отправь мне полный mdшник полдня мучался никак в свою базу немогу её впендюрить

    Reply ↓
  27. victuan

    (26) У меня нет готового мд-шника на базе последнего релиза бухгалтерии. Есть на базе релиза 488

    Reply ↓
  28. Artur88

    Мне полный мд-шник хотя бы релиза 488 можешь скинуть,очень надо KrupZavDurt@mail.ru

    Reply ↓
  29. victuan

    (28) Могу, но скоро, т.к. он на работе, на которой я редко появляюсь.

    Reply ↓
  30. victuan

    *но не скоро

    Reply ↓
  31. Irina_B

    Про обновления. Про начало года верно, но при подаче документов на возмещение в ФСС у нас требуют книгу доходов и расходов заверенную в ИФНС, поэтому нужно позарез.

    Reply ↓
  32. victuan

    (31) Понял. Постараюсь обновить на следующей неделе

    Reply ↓
  33. all10215

    Спасибо! оченно нужная штучка!!!

    Reply ↓
  34. Artur88

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

    Reply ↓
  35. victuan

    (34) Делал давно, сейчас, наверное, по-другому сделал бы. Но у моего подхода есть преимущества: данные хранятся в документе, который удобно редактировать; в первичных документах непосредственно можно выбирать признак отношения к НУ (чем настраивать где-то «сбоку»); учет НУ по ОС встроен в конфигурацию.

    А если делать на внешних обработках, то это уже сделано за нас: http://kamin.kaluga.ru/products/simpl6/ и http://kamin.kaluga.ru/products/simpl15/

    Помочь переделать не смогу, времени практически свободного нет.

    Reply ↓
  36. Artur88

    Ну так не интересно это же платные.Просто не удобно наверно с мдшником обновлять.Хотя вам виднее

    Reply ↓
  37. inddex

    Спасибо за прекрасную работу.

    Одного не могу понять .Как в Индивидуальной карточке по ОПС(ЕСН) заставить заполняться 2-ой раздел ? Ведь именно его заполняют при УСН.

    Возможно приходилось сталкиваться с этой проблемой ? Может есть решение ?

    Reply ↓
  38. meffistofell

    Плиз. Мне тоже отправьте md файл. опыта пока не хватает, а очень нужно… elita.salekhard@ya.ru

    Reply ↓
  39. dachka4

    Не подскажете, а обновление к приказу 154 н будет?

    Reply ↓
  40. victuan

    Очень большая занятость на работе. Но обещаю, что выполню до 30 июля просьбы следующих участников: toni, Artur88, Irina_B, inddex, meffistofell, dachka4.

    Reply ↓
  41. Irina_B

    А сегодня уже 1 августа….

    Reply ↓
  42. victuan

    В соответствии с приказом Минфина РФ от 31.12.2008 г. № 154н внесены изменения в форму раздела 3 «Расчет суммы убытка…» книги учета доходов и расходов и «Титульный лист»

    Reply ↓
  43. Artur88

    полный мдшник пожалуйста отправь на KrupZavDurt@mail.ru

    Reply ↓
  44. victuan

    (43) В письме дал ссылку, где лежит полный мд-шник

    Reply ↓
  45. Artur88

    спасибо попробую попользоваться

    Reply ↓
  46. Irina_B

    Можно тоже попросить ссылку на полный МД (irina-b@list.ru). Спасибо.

    Reply ↓
  47. victuan

    (46) +1

    Reply ↓
  48. victuan

    (37) Вот, кстати, в виде обработки: http://infostart.ru/projects/5346/

    Reply ↓
  49. inddex

    Спасибо.Правда я спрашивал :Как в Индивидуальной карточке по ОПС(ЕСН) заставить заполняться 2-ой раздел ?

    Reply ↓
  50. victuan

    (49) Ошибся ссылкой, я пытался ответить на:

    (34)

    Artur88 22.05.2009 07:15:43

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

    Reply ↓
  51. fialka_night

    можно и мне готовый мд-шник на fialka_night@mail.ru

    Reply ↓
  52. exo

    Неплохо, но полный каламбур внутри. Немного попинаю, однако, возможно, вы мне объясните где я не прав.

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

    Во-вторых: Посмотрите как выглядит отчет в УСН, где точно аргументировано назначение платежа в колонке «Содержание операции»… Под датой операции стоит четко номер этой операции, а не куча непонятных выписок!!!

    В-третьих: НЕ могу определить никак откуда у вас берутся данные в журнале, если документ ДоходыРасходы не встает в проводки????

    Reply ↓
  53. Irina_B

    Пожалуйста, можно получить мд-шник на на irina-b@list.ru

    Reply ↓
  54. victuan

    (52) По-моему, каламбур не внутри обработки, а внутри ваших вопросов.

    Но попробую понять, о чем Вы.

    1) «Если провести документ задним числом [Какой именно документ?] и составить опять же 1й лист прихода расхода [Что такое 1й лист прихода расхода?], то этот документ не появляется в журнале [в каком журнал?]. Нивкакую»

    Если честно, ничего не понял, поэтому не могу ответить. Попробуйте использовать терминологию программы 1С в вопросе.

    2) «Посмотрите как выглядит отчет в УСН, где точно аргументировано назначение платежа в колонке «Содержание операции»… » Наверное, имеется в виду Раздел I книги учета доходов и расходов. Но вопроса в этой части нет, поэтому отвечать нечего.

    «Под датой операции стоит четко номер этой операции, а не куча непонятных выписок!!!» Тут тоже вопроса нет, только не понятно почему Вы номера выписок, которые и являются номерами тех операции, из которой появилась строки в Разделе I Книги называете «куча непонятных выписок»

    3) «НЕ могу определить никак откуда у вас берутся данные в журнале, если документ ДоходыРасходы не встает в проводки????» Опять идет речь о каком-то журнале. Да, документ ДоходыИРасходы не создает проводок, Раздел I Книги формируется из строк табличной части оного документа.

    Reply ↓
  55. victuan

    (53) Выполнил просьбу.

    Reply ↓
  56. Марита Х

    (53) Я с такойже просьбой скинуть на marita2810@mail.ru

    Спасибо заранее

    Reply ↓
  57. requin

    Спасибо огромное за нужную и качественно проделанную разработку!

    Reply ↓
  58. bvk1

    Спасибо! А я собрался конвертацию делать.

    Reply ↓
  59. svsrus

    (52)

    Для того чтобы увидеть изменения в книге ДиР, после каких-то изменений в базе(появление документов задним числом и других), нужно заново зайти в документ Доходы и Расходы и нажать кнопку заполнить, а лучше добавить в ручную и сохранить документ.

    При работе нескольких пользователей, а точнее 2-ух бухгалтеров с документом «Доходы и Расходы» стала возникать путаница. Один бухгалтер что-то исправляет, второй потом заходит и нажимает заполнить. Все исправления, естественно, летят к чертям )) Добавлять в документ исправления только в ручную, так и не добился. Пришлось дополнить документ реквизитом «Фиксировать», где пользователь может зафиксировать изменение записи, от дальнейшего затирания при нажатии кнопки «Заполнить». Теперь работают с документом одновременно вдвоем и довольны )

    Reply ↓
  60. alnik

    Спасибо и главное за то, что бесплатно! Надеюсь заработает! Автору респект!

    Reply ↓
  61. alnik

    Работает неплохо при минимуме трудозатрат на установку. Единственное, что пришлось изменить так это убрать свертку итоговой таблицы по просьбе бухгалтера (ей хотелось видеть вывод выписки банка не целым документом, а построчно). Спасибо за реально работающий продукт.

    Reply ↓
  62. Swetik*

    Здорово! Обалдела от подробной инструкции, как говорится, снимаю шляпу…

    У меня только два маленьких вопроса :

    1. при обновлении 1С Бух 7.7 ваш документ в конфигурации останется, а манипуляции с глобальным модулем заново придется повторять?

    2. почему в доходы не попадает сумма поступления от покупателей ,если в этой строке в выписке заполнен «Назначение платежа»?

    Reply ↓
  63. victuan

    (62)

    1. Да, все именно так. При обновлении придется внести изменения только глобальный модуль и в модули ТИПОВЫХ документов, в которых используется вызов функции глНУ.

    2. Сумма поступления от покупателей должна попадать независимо от заполнения поля «Назначение платежа». Нужно обратить внимание на корр.счет в выписке (62.1 или др.). Этот же счет должен быть упомянут в поле «Строка счетов» документа «Доходы и Расходы»

    Reply ↓
  64. Swetik*

    Все получилось, идея классная, но хочется через внешнюю обработку… Попробывала http://infostart.ru/projects/5346/ ( у меня Бух 7.7 508) , она у меня вообще ничего не формирует…

    Reply ↓
  65. victuan

    (64) Автор той внешней обработки не я, нужно обратиться к автору.

    Reply ↓
  66. MexxaVolt

    Пожалуйста не оставьте без внимания ещё одну просьбу на полный мд-шник

    MexxaVolt@yandex.ru Спасибо огромное!!!!

    Reply ↓
  67. victuan

    (66) Не оставил.

    Reply ↓
  68. WIR

    Супер!

    Поставила на 510 релиз Все получилось.

    Огромное Спасибо!!

    Reply ↓
  69. toni

    Отчет КнигаУчетаДоходовИРасходов выдет ошибку.

    надо заменить …

    Иначе

    // ПечОстаточнаяСтоимость = «»;

    ПечОстаточнаяСтоимость = 0; //

    КонецЕсли;

    и это…

    // ПечОстаточнаяСтоимость = «»;

    и еще интересно копать в Usn_Get.ert и USN0903.ert… почти работает… )

    Reply ↓
  70. victuan

    (69) Да, есть такая ошибка при формировании Раздела 2.

    На рабочих базах она у меня исправлена. Но когда дело доходит до выкладывания обработки на ИС, эта правка почему-то выпадает. 😥

    Постараюсь не забыть учесть при следующем обновлении разработки.

    > и еще интересно копать в Usn_Get.ert и USN0903.ert… почти работает… )

    Рег. отчеты править дело не благодарное, поэтому их я не рассматриваю.

    Reply ↓
  71. breech

    Люди добрые!

    поделитесь полным мд на epe@yandex.ru плиз….

    Заранее спасибо.

    Reply ↓
  72. skwskw

    А можно полный md на kalugini@ya.ru

    Reply ↓
  73. rych

    И мне! Поделитесь пожалуйста, полным мд. Если есть, для релиза 522. eneev@mail.ru

    Спасибо!

    Reply ↓
  74. Marina1111

    поделитесь, пжт, полным мд. Если есть, для релиза 523. stepano-mas@yandex.ru

    Reply ↓
  75. Lord_feSS

    Поделитесь пожалуйста, полным MD. Если можно, для релиза 507 или выше. lord_fess@list.ru

    Reply ↓
  76. andronis1

    Вопрос по процедуре ВыделитьНДС()

    Выделяет но не всегда! Например в выписке №1 5 строк на 2 строки нет ссылки на ПлатПор. на 3 строки есть, Одно ПлатПор без НДС, 2 с ну скажем по 145 и 150 р.

    Вопрос :)) почему процедура их пропускает (по 145 и 150 р) понять не могу.

    В целом супер большое спасибо!

    Как или где взять платную версию?

    Reply ↓
  77. 111pro

    описание и правда для тех кто в этом разбирается))

    программа замечательная ( еще бы столько времени мне сэкономит) только чувствую мне здесь без программиста не обойтись

    Reply ↓
  78. victuan

    (76)Платные версии здесь:

    http://www.kaminsoft.ru/products/kamin/account/simpl15.html

    http://www.kaminsoft.ru/products/kamin/account/simpl6.html

    (77)Нужны минимальные навыки конфигурирования.

    Reply ↓
  79. vlk2010

    Спасибо

    Reply ↓
  80. Fanil

    Ошибку выдает(((

    Reply ↓
  81. Fanil
    Reply ↓
  82. victuan

    (82)Прочтите инструкцию.

    Reply ↓
  83. nick_krsk

    Спасибо! Буду пробовать! 🙂

    Reply ↓
  84. Доня

    СПАСИБО !!!

    Я встроила, попробовала, мне жутко нравиться.

    Еще раз СПАСИБО.

    P.S.

    Можно в глобальном модуле ничего не добавлять,

    подкорректировать модуль самой встроенной обработки, и все будет работать.

    А то с глобальным при обновлении лишние хлопоты.

    Reply ↓
  85. Irina_B

    Здравствуйте, А будут ли изменения в соответствии с приказом 135н? особенно раздел 4.

    Reply ↓
  86. Evgeniy470

    Здравствуйте! Сделал все по инструкции но не вышло 🙁

    Пожалуйста, можно получить MD-шник на kapitan470@mail.ru

    Reply ↓
  87. victuan

    (86) Не планировал обновлять разработку

    (88) У меня нет его для последнего релиза бухгалтерии. Высылаю какой есть.

    Reply ↓

Leave a Comment

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