<?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='\
А я создаю один общий договор, и с помощью типовой обработкой с итс «замена реквизитов» проставляю его в нужные мне документы (в частности в документы списания и поступления с лицевого счета, иначе эти документы без договора вообще не переносятся). Но с этой обработкой думаю будет удобнее, надо попробовать.
Добавил заполнение в документах «КассовоеВыбытие» и «КассовоеПоступление», «УслугиСтороннихОрганизаций»
(1). Поступал аналогично. Но обработке +. Полезна особенно тем, кто только начал выполнять перенос
В БГУ можно отключить обязательность заполнения договоров, тогда все будет проводится. И не надо создавать ненужные объекты, или проставлять первый попавшийся договор в документах!
P.S. В обработке V77Exp.ert необходимо поправить 2 строчки кода, чтобы выгрузка шла и без договоров в документах… Я думаю — это быстрее нежели написать обработку по установке договоров!
(4) Все равно их лучше проставлять — вести учет, так вести. Пусть бухи привыкнут что договора обязательно надо проставлять. Иначе и бюджетные обязательства толком не сделаешь, зачет авансов по всему контру пойдет. Ну и развернутый анализ будет,.. ну не неверный
(1)(3) Не понял, договоры подчинены контрагентам, как можно заменой реквизитов пользоваться.
Вы что одно значение (один договор) документам по ВСЕМ контрагентам проставляете?
(6) нет, не «ВСЕМ» контрагентам, а тем, где возможно. Здесь речь больше идет о начислении родительской платы. В 7-ке к «детям» можно было не проставлять договор, и поэтому в документах «Списание с л/с» договора не проставлялись и, как уже известно, такие документы без договоров в 8-ку не переносятся. Поэтому я заводил общий договор «родительская плата», без подчинения конкретному контрагенту и проставлял их обработкой в документы и операции. Но….. в 8-ке, в документах по родительской плате тоже нужно «пошаманить», там нет понятия «общий договор». Если интересно, могу выложить кусок исправленной процедуры НачисленияДоговорНачалоВыбора
(4) а вот такого делать не надо, отключать обязательность заполнения и так бухи делают кучу ошибок. Пущай привыкают правильно вести учет, а не рисовать потом отчеты с потолка
(8)(5) У нас бюджетники ведут учет договоров в Комита-Курьер (регистрируют, определяют графики финансирования, предметы контрактов и т. д.). Заявки на расход бьют в АЦК Финансы — (там регистрируются бюджетные обязательства автоматом). Объясните мне ЗАЧЕМ им еще вести учет договоров и в 1С по всем контрагентам? Если им нужно разбить взаиморасчеты по договорам (например, тел. связь и интернет) — они их заносят и выбирают, если не нужно, то обязательный договор — этот лишняя нагрузка на бухгалтеров и ненужная инфа в системе!
(9) А зачет авансов?
(9)(10) а формирование отчетов тоже делают в АЦК Финансы? Той же 128 формы. 😀 видел я этого «монстра» АЦК Финансы
(11) 128 форму можно легко заполнить на основании данных о бюджетных обязательствах из АЦК (или занести в 1С итоговые суммы принятых БО по статьям) — по временным затратам куда меньше, нежели проставлять договора при перечислении з/п, в подотчет, регистрировать обязательства на каждый договор.
(10)А что у нас авансы без договоров не засчитываются?
(12)вообще то обязательство должно регистрироваться при заключении договора. Но если и этого мало, то тогда такой вопрос. А как же реестр закупок и ст. 73 Бюджетного кодекса, плюс 94-ФЗ? Тоже в АЦК делать? 😀
(12) Мои бухгалтера немножко избалованны программой СБиС++, поэтому, я по их просьбе, добавляю модуль автоматического формирования БО (по факту несения затрат), так что они заполняют основания — сейчас добавились новые клиенты, я им предложил автоформирование БО, значит и они будут заполнять договора.
(13) Зачитываются, но по всему контру, а не по конкретному договору, что не совсем верно
Спасибо за обработку. Актуально для детских садов, можно ли сделать так чтобы и в документах НачислениеРП и ПоступлениеРП основной договор проставлялся каждому ребёнку.
(16) Добавил документы РП_Начисление, РП_ВводОстатков, РП_ВыпКвитанций и РП_ПостОплаты. Поскольку детсадов у меня нет — проверять толком не на чем. Для теста создал один документ с пустым основание — вроде заполнилось. Проверьте и если не трудно отпишитесь о результате, пожалуйста.
(17) Идеально! Всё как надо. Ещё раз большое спасибо за оперативность.
Спасибо большое!Все отлично работает!Очень актуально! 😀 До этого переносила в 8-ку как есть (без договоров),а там уже групповой обработкой заполняла по каждому виду документов отдельно!
ПКО и РКО еще бы добавить а так всё отлично работает, огромное спасибо
Спасибо автору! Думает не только осебе, актуальной обраьоткой помог другим!
Спасибо, за обработку! Очень помогла.
Я как (1) делаю. Уж лучше один общий договор, чем миллион «основных»… Ну хотя это кому как 😉
(17) Проверил Вашу обработку на д/садах. Документ поступление РП связан с документом Поступление на лицевой счёт. Там тоже нужно вставить договор. Без него не правильно формируется ОСВ по счёту 205.03.2 в разрезе договоров, выписываются квитанции.
Большое спасибо за обработку! В синтаксисе семерки не силен. Немного доработал обработку, попалась ситуация, где в документах «Поступление на л/с» не проставлены договора. Просто скопировал процедуру СозданиеДоговоровВДокахСписанияхЛС() и поменял название документа, и всё пошло как по маслу)
Часто пользуюсь. Большое спасибо
а в РКО и ПКО зачем? вроде бы они нормально переносятся даже без договоров =) ну если только для своей «избалованности» )
Обработка по сути и правда экономит время, что очень важно) спасибо
Еще бы знаете, что добавить — возможность выбора периода. За какой промежуток времени подставлять договора. Конечно так то и надо тока за 2011 г, но были базы где ведение шло с 2007 г. И поэтому с того времени и заполнялись договора), опять же небольшая экономия времени не помешает никогда)
(28) Вообще-то у меня там нет органичения по периоду — документы просматриваются все что есть в базе (проведенные)…
Интересно откуда у вас в базе документы с 2007 года… (1С почти каждый год рекомендовала начинать остатками)
Я бы на Вашем месте моей обработкой пользоваться не стал — она перепроведет все документы, начиная с 2007 года 🙁
П.С. 1С рекомендует переход с ББУ7 на БГУ8 осуществлять после свертки базы на начало 2011 года — я лично так и делаю — меньше косяков возникает. Так вот, обработку я и писал, подразумевая что у нас есть документы ввода остатков и движения 2011 года — в этом случае обработка перепроведет доки только отчетного периода…
Для медицинских учреждений ваша обработка подойдет?
Подойдет для любого учреждения — главное чтобы база была ББУ7
Только что проверила. Действительно заполнились по Контрагентам все пустые договора на «ОСНОВНОЙ».
Вопрос .документы, по которым заполнились договора, перед выгрузкой в БГУ нужно перепровдить или они при заполнении договора сразу и перепроводятся?
(32) Перепроводить не надо — они перепровелись моей обработков
(25) wealth, спасибо ОГРОМНОЕ! Сама в коде не сильна, но Вы очень доходчиво объяснили) Полезная обработочка!
Спасибо Большое!!!
Спасибо большое обработка сильно помогла.
Однозначно + за обработку. Проверил. Работает без ошибок. Спасибо
Спасибо автору за данную обработку, очень помогла. Работает без ошибок. Большое спасибо +
Я то же за бух учет если полностьлю то полностью а что бюджетники без договора даже карандаши не могут купить и как быть в таком случае ?
Спасибо большое! Мучались сами вбивали договора(