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




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

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 не будет опубликован. Обязательные поля помечены *