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




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

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