<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Документ не проводится.
Пишет: «ВНИМАНИЕ! Проведение документа невозможно!
не указан счет учета затрат.
заполните справочник и повторите проведение документа.»
хотя я все заполнила.
Обратите внимание, что нужно дозаполнить в «Справочники»-«Прочие»-«Тарифы квартплаты» счет учета для той из услуг, которая фигурирует в вашем документе: обычно 76.7 86.1 или 96.2
А точнее 96.2 — для резерва на капремонт
86.1 — для целевых сборов
76.7 -остальных комунальных платежей.
Еще вопрос:
В справочнике «Список контрагентов» — «Сведения о контрагенте» есть вкладка «Показания счетчиков».
Как эти данные влияют при начислении квартплаты?
В справочнике «Список контрагентов» — «Сведения о контрагенте» есть вкладка «Показания счетчиков».
Как эти данные влияют при начислении квартплаты?
Это периодические реквизиты, которые используются для фиксирования показаний за каждый месяц.
Они заполняются автоматически из документа «квартплата».
Для первого месяца показания текущего периода вносятся в документ вручную, так же вручную вносится разница между показаниями текущего и прошлого месяцев, для последующих месяцев вносятся только данные текущего м-ца, разницу система посчитает сама.
Помогите, что-то не могу разобраться.
Например, рассчитываю эл.энергию со следующими данными:
показания счетчика на 31.05 — конечные 17, начальные 10, итого за месяц 7;
показания счетчика на 30.06 — конечные 22, начальные 17, итого за месяц 5;
показания счетчика на 31.07 — конечные 33, начальные 22, итого за месяц 11;
В «Сведениях о контрагенте» в «Показаниях счетчиков» в «счетчик №1» ставлю 10 (начальные на 31.05)
Заполняю документ «квартплата» на 31.05:
услуги: эл.энергия, по счетчику 17, общее 7, тариф 3,08, начислено 21,56
Как заполнить на 30.05, чтобы разница посчиталась сама?
Например, рассчитываю эл.энергию со следующими данными:
показания счетчика на 31.05 — конечные 17, начальные 10, итого за месяц 7;
показания счетчика на 30.06 — конечные 22, начальные 17, итого за месяц 5;
показания счетчика на 31.07 — конечные 33, начальные 22, итого за месяц 11;
В «Сведениях о контрагенте» в «Показаниях счетчиков» в «счетчик №1» ставлю 10 (начальные на 31.05)
Заполняю документ «квартплата» на 31.05:
услуги: эл.энергия, по счетчику 17, общее 7, тариф 3,08, начислено 21,56
Как заполнить на 30.05, чтобы разница посчиталась сама?
В справочнике заполните на 30.04 значением 10
Далее в документе от 31.05 повторите ввод значения (17) и система должна сделать пересчет.
Если значением 10 заполнить через «Справочник» — «Контрагенты», то данные сохраняются на текущую дату, а не на 30.04.
А если заполнить значением 10 через документ «квартплата» на 31.04, и в документе на 31.05 в колонке «по счетчику» поставить 17, автоматически ничего не считает.
Для установки значения на конкретную дату есть специальная кнопка возле надписи «Значение периодических реквизитов установлены на ДД/ММ/ГГГГ». Установите с помощью этой кнопки на 30/04 и внесите значение.
Для контроля воспользуйтесь кнопкой «История»
На 30.04 установила.
Делаю документ «квартплата» на 31.05:
в колонку услуги: эл.энергия, в колонку по счетчику: 17, в в колонке тариф: автоматически поставилось 3,08,
в колонке «общее» и в колонке «начислено» автоматически не посчиталось не посчиталось.
Есть подозрения, что вы внесли новую услугу, т.е. которой не было в системе.
Между справочником «ТарифыКвартплаты» и Значениями «Показания счетчиков» в справочнике контрагентов есть связь и она жесткая.
Так услуга с кодом
«3» привязана «Счетчик_Хол»
«7» Счетчик_Горячей воды
«11» Счетчик_Электроинергии
«16» Счетчик_Гор2
«17» Счетчик_Хол2
«18» Счетчик_Элект2
«28» Счетчик_Гор3
«29» Счетчик_Хол3
«30» Счетчик_Элект3
«44» Счетчик_Элект4.
Только по этим элементам справочника будет вестись учет показаний счетчиков. Попробуйте…
Спасибо. Все отлично считает.
Для удобства в следующем, устанавливаете новые расценки расценки, в ТарифыКвартплаты, а далее путем копирования старых документов создаете новые.
Расценки в документах обновляются, а так как набор для каждой квартиры индивидуален и из месяца в месяц меняется редко, то процесс упрощается.
Для анализа есть отчет и плюс ОСВ с аналитикой, которые покрывают потребности почти на 100%
Еще вопрос:
В «Сведениях о контрагенте» во вкладке «Показаниях счетчиков» есть «Площадь» и «Количество прописанных».
А как эти данные участвуют в расчете квартплаты?
Нет. Эта информация только отражается в отчете
Спасибо, все поняла.