Корректировка регистров накопления и расчета в документах "Перенос данных" по: "КОСГУ", "Статье расходов", "Статье финансирования", а также сведения остатков на нуль. ОБНОВЛЕНО 06.12.11 (читать описание)




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

61 Comments

  1. Mihandr

    Не судите строго

    Reply
  2. bkn_oktava

    Охо-хо! Скоро мне тоже придется разбираться с этим вопросом. Надеюсь, найду у кого совета попросить.

    Reply
  3. Valdis_KH

    подскажи как с ней работать. Мне надо исправить начальные остатки по сотрудникам

    Reply
  4. Mihandr

    (3) Valdis_KH,

    1) Сделать копию базы!

    2)Запускай обработку. Установи новые показатели. Скорее всего если ты не особо в этом рубишь, выстави только «статью финансирования» должна быть «бюджетная». Проставь все галочки «Что корректируем». Заполни ТЧ всеми документами кроме кадровых. Выполнить.

    3) Проверяй сальдо. В лучшем случае всё будет чисто. Некоторые суммы могут остаться. в скором приложу к этой теме ещё удну обработку которая подчищает до конца взаиморасчеты, она кстате есть на этом ресурсе, сегодня искал не нашел. Я лишь её немного доработаю для регистра накопления «Зарплата за месяц организации».

    Reply
  5. Valdis_KH

    в 7 ведомость на выплату формируется общая, т.е. туда входят выплаты по разным КСГУ общей суммой и при переносе ставится одно КСГУ, а в начислении стоят разные. тогда как мне сделать замену по КСГУ?

    Reply
  6. Mihandr

    (6)

    Извините, я не понел что Вы написали! Пора научится конкретно писать! Что смотрим… где смотрим… с чем сравниваем (здесь 7-ка меня вообще не интересует)… Предварительно, непонятно как вы базу переносили и лучше очистить шаблоны проводок в семёрке перед выгрузкой(есть обработки)! И что вам мешает выставить всем ВР один КОСГУ?

    Reply
  7. Valdis_KH

    базу переносил с помощью правил и обработки, которая поставляется вместе с 8-ой. А если я везде поставлю одинаковый КОСГУ, у меня потом отпускные или больничные будут правильно считаться?

    Reply
  8. Mihandr

    А вы попробуйте! Сделайте эти операции в 77 и в 8. Чего точно не будет первый год, так это разбития среднего заработка пропорционально «косгу» и «счтатье финансирования» в БУ. Важно это Вам или нет, должны знать сами. Иначе нужно дорабатывать обработку, расширять список коректируемых «измерений» в этих регистрах. Всё!

    Reply
  9. Valdis_KH

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

    Reply
  10. Valdis_KH

    заменил статью финансирования, но остались суммы по КОСГУ, т.е. начисление по 211, 213 и 226, а выплаты по 211, можно как-то это учесть в обработке. При начислении больничных суммы по зарплате удваивает.

    Reply
  11. Mihandr

    (9) да.

    Reply
  12. Valdis_KH

    (11)после загрузки в 1С 8 я рассчитал больничный лист и посмотрел правильные ли суммы он мне ставит для расчета среднего заработка. Все поставил верно. Затем я сделал замену статьи финансирования, где поставил все галочки, нажал кнопку заполнить, выбрал все и нажал выполнить. Открыл бол. лист и перезаполнил его. Суммы для расчета среднего заработка удвоились. Я что-то сделал не верно или есть косяк в обработке?

    Reply
  13. Mihandr

    (12) есть такое ты прав, буду исправлять. публикация снята…

    Reply
  14. Mihandr

    Можете только регистры накопления использовать, с РР ошибка.

    Reply
  15. Valdis_KH

    (14)

    не понял

    Reply
  16. Valdis_KH

    вот отличная обработка для замены статьи финансирования и сведения остатков в ноль

    http://infostart.ru/public/61340/

    Reply
  17. Mihandr

    (15) т.е. не ставьте галки для РегистровРасчета

    Reply
  18. Valdis_KH

    все получается супер все считает нормально, но у меня в остатках выходят люди с пустыми КОСГУ и статьей финансирования и не могу найти откуда это берется

    Reply
  19. bkn_oktava

    Прошу прощения за глупый вопрос (в ЗиК 7.7 работаю давно, там как рыба в воде, а вот восьмерку ЗБУ знаю еще слабо, а у меня несколько клиентов с нового года переходят): Зачем надо очищать шаблоны проводок в семёрке перед выгрузкой? Что это дает?

    (13) когда выложите обработку с исправлениями? Хочу на пробной выгрузке потренироваться.

    Reply
  20. dexis

    Скажите, почему публикацию закрыли?

    Мне сейчас очень помогла бы эта обработка. Никак не могу побороть регистры расчета. Регистры накоплений исправил с помощью обработки

    вот отличная обработка для замены статьи финансирования и сведения остатков в ноль

    http://infostart.ru/public/61340/

    Но с регистрами расчета она, к сожалению, работать не позволяет.

    Reply
  21. Mihandr

    Наконец-то исправил… спасибо Valdis_KH за то что это увидел.

    Reply
  22. Valdis_KH

    сначала надо делать первой обработкой, а затем второй?

    Reply
  23. bkn_oktava

    (21) выложите, пожалуйста, обработку.

    И насчет шаблонов скажите, пожалуйста, зачем их очищать при переносе надо?

    Reply
  24. Mihandr

    Да

    Reply
  25. Valdis_KH

    при первой обработке все галочки ставить или только кроме РР

    Reply
  26. Mihandr

    (23) bkn_oktava, 1-ое, обработки я выложел, не?

    2-ое, про чистку шаблонов, скажу так, данным обработкам не важно на те шаблоны что перенесется. Лично я не вижу смысла тащить если они есть в ЗиК7.7 непонятные статьи финансирования и статьи расходов в новую базу (одна всеже перенесется), все равно все нужные настройки будут происходить при настройке обмена с БГУ(простите за тафтологию).

    Reply
  27. bkn_oktava

    (26) Спасибочки огромное!!!

    Скачаю обязательно. Очень надо. Спасибо!

    Да, про шаблоны глупый вопрос был. Просто с ЗУП (вернее, ЗБУ) только начинаю работать, трушу немного, вот и протупила :))).

    Reply
  28. Mihandr

    (25) Valdis_KH, мы же уже это проходили:). Да ставь все.

    Для ВСЕХ добавлю, криво из 7.7 переносятся (типовыми правилами) в принцепе только «статья финансирования», поэтому меняйте только её. Остальные доступные измерения по желанию для экспериментов.

    ЗЫ: пожлст, смотрите, какие регистры и для чего они в ЗиК БУ 8, в соответствующей литературе.

    Reply
  29. bkn_oktava

    (28)

    Спасибо огромное, все получилось, остатки очистились!

    Reply
  30. Mihandr

    (29) bkn_oktava, незачто…

    Reply
  31. MYRZILKA123

    вопрос: после переноса данных в восьмерку, делаю свод начислений и удержаний по организации. Там стоит долг за работниками и долг за организацией на начало месяца, причем сумма одинаковая. Эта обработка сможет мне помочь или нет?

    Reply
  32. Mihandr

    (31) MYRZILKA123, да

    Reply
  33. MYRZILKA123

    может я что-то неправильно делаю, но у меня не выходит…(((

    Reply
  34. Mihandr

    (33) MYRZILKA123, Если надо убрать сальдо на начало месяца, для этого нужно убрать сальдо на конец предыдущего, это очевидно, не?

    Reply
  35. MYRZILKA123

    это очевидно! но когда корректируешь регистры накопления (взаиморасчеты с сотрудниками и з/п за месяц), то изменяются данные в расчетной ведомости, а в своде начисленной зарплаты долг за работником и организации остается… (((

    Reply
  36. bkn_oktava

    А вы галочку убираете с регистров расчета? У меня все без проблем получилось.

    Reply
  37. Mihandr

    (35) MYRZILKA123, при всем уважении к тебе, прочитай ещё раз в (28) p.s.

    Reply
  38. MYRZILKA123

    спасибо конечно за советы, попробую еще раз. если не получится отпишусь…

    Reply
  39. vera3101

    (29) bkn_oktava, Добрый день!

    Вот и я столкнулась с остатками решила попробовать и ни чего не получилось.

    Не понимаю, что сделала не так.1.Запустила обработку «Корректировка регистров» выбрала новые показатели

    только «бюджетное финансирование» регистры накопления отметила все, а регистры расчета не выбирала и выполнила данную обработку.2.Запустила на выполнение «правка задолженности».3.сформировала свод за сентябрь т.е. по сентябрь включительно данные были перенесены из ЗИК , а октябрь был сформирован уже в ЗБУ и остатки не обнулились?

    Reply
  40. bkn_oktava

    (39) vera3101, здравствуйте!

    Я остатки обнуляла на 01.01.2011. А Вы на 01.09.11 хотите обнулить?

    Reply
  41. vera3101

    (40) bkn_oktava, Да спасибо это я ,что -то не подумала мы делаем паралельно зарплату и в 7 и в 8 пытаемся накопить данные ,а т.к. из 7 были перенесены все данные по сентябрь поэтому и решила ,что на начало октября обнулить все остатки , чтобы свод за октябрь был без долгов.

    Reply
  42. bkn_oktava

    (41) vera3101,

    Очень ценный совет, кстати — обнуление шаблонов.

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

    Reply
  43. vera3101

    (42) bkn_oktava, да спасибо можно попробовать.

    Reply
  44. smooth

    Если вопрос в сальдо, то http://infostart.ru/public/90194/ и http://infostart.ru/public/90376/ — не плохие обработки переноса сальдо. Их можно немного подпелить и они замечательно заработают под ЗБУ!

    Но если вопрос стоит о корректности переноса статей, КОСГУ и пр. по начислениям/удержаниям за период переноса, то простой заменой данных в РР, не стоит делать ИМХО

    Reply
  45. bkn_oktava

    (45) smooth, конечно, нет.

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

    Reply
  46. xaker1C

    Да из 1с 7.7 все переноситься коряво приходиться писать в ручную

    Reply
  47. romao

    Тоже пробовал переносить из 1с 7.7, после корявого переноса приходится все править в ручную, самому переносить начисления, удержания и выплаты на правильные КОСГУ и статьи.

    Reply
  48. Ola_z

    Очень полезная обработка. После переноса остатков столкнулась с такой же проблемой. Попробую эту обработку на своей базе.

    Reply
  49. fidg

    При автоматическом переносе данных в ЗиКБУ аналогичная проблема меня не миновала 🙁

    Эта вторая распространенная ошибка возникающая при автопереносе.

    Первая была по стажу за выслугу. По ней тоже можно найти обработку http://forum.infostart.ru/forum24/topic47275/

    Обратился в ИТС, по поводу остатков, молчат. Попробую вашу обработку.

    Reply
  50. fidg

    Проблема решена обработкой http://infostart.ru/public/60837/

    Обнулил только регистры ВзаиморасчетыСРаботникамиОрганизаций.

    Reply
  51. 1996oks

    очень на нее надеюсь…

    Reply
  52. 1996oks

    (51) fidg,

    а как Вы обнаружили ошибку по стажу? где она вылезла?

    Reply
  53. fidg

    Если идет речь о поиске ошибки при переносе, то в справочнике физ лиц просто отсутствовал стаж работников.

    Если про поиск названия реквизита, то обработку нужно выполнять пошагово поставив точку останова на строке реквизита.

    Reply
  54. 1996oks

    Со стажем вроде бы все норм. (Это я ищу к чему придраться…):).

    А разработчику вышепреведенных обработок — огромное человеческое СПАСИБО!!!. Дай Вам БОГ «Светлой» головы и доброй памяти.

    Спасибо, очень четко и без загогулин. Вы — Гений!!!

    Reply
  55. Mihandr

    (56) 1996oks, спасибо и тебе тавоже)!

    Кстате в (6)

    здесь я погоречился, лучше не надо всем ВидамРасчта выставлять одно КОСГУ!

    ————————————————————————-\r

    И ещё! Большое спасибо, колеги и вот этому перцу:

    http://infostart.ru/public/81763/

    Reply
  56. post279

    Спасибо автору за обработку!!!

    Reply
  57. vera4ka

    спасибо. мне тоже очень помогла эта обработка. обнулила все в 0. урра!))

    Reply
  58. Loader_1C

    Спасибо! Тоже надеюсь, что косяки 7-ки вычистит.

    Reply
  59. pampage

    При открытии ошибку пишет:

    Ошибка при выполнении файловой операции

    по причине:

    Неверный формат хранилища данных

    Reply
  60. Душечка

    Спасибо за решение чужих проблем !!!

    Reply
  61. uralcentr

    вторая обработка «PravkaZadolzhennostiZUP» создает документ с незаполненными КОСГУ и «Статье расходов», «Статье финансирования» , результат становится еще хуже , чем было.

    Reply

Leave a Comment

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