<?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='\
Можно установить Константу «ВестиУчетПоПодразделениям» в «Истина».
Для счета «50.01» установить «УчетПоПодразделениям».
Настроить обособленные подразделения в Справочнике «Подразделения».
Тогда будут доступен имеющийся реквизит — «ПодразделениеОрганизации» в ПКО и РКО.
Попробуйте.
Пробовала, может что не так делала, но у меня реквизит то появился в РКО и ПКО, только проводок по подразделениям не было(((
п.3 подписка на событие это лишнее мне кажется. плюс в подписке в том, что один раз описали движения для обеих документов.
еще подумайте, что будет, если вы отмените проведение? из регистра запись уйдет?
правильнее и проще делать в свойствах документа. там указываете, что документ является регистратором для вашего регистра и указываете в конструкторе движения по регистру.
если свойство «удаление движений» = автоматически, то при отмене проведения записи будут удаляться.
при отмене и пометки на удаление документов, запись из регистра уходит)
«…и указываете в конструкторе движения по регистру» вот тут я не поняла, если я вызову конструктор движений у документа в процедуре ОбработкаПроведения все написанное сотрется же?
На самом деле, не всегда следует делать то, что можете сделать. Дело в том, что бухучет запрещает в одной организации вести несколько кассовых книг. Она должна быть одной по определению. Такими доработками вы подводите ваше предприятие под штраф за нарушение правил ведения кассовых операций по административному кодексу. Гипотетически вы можете заявить на предприятии несколько операционных касс, то только в этом случае придется в налоговой регистрировать несколько лимитов кассовых остатков. Это вряд ли устроит гл.буха. Хотя я встречал учителей русского языка, которые пишут с ошибками, наверно есть и гл.бухи, которые не знакомы с бухучетом…
(4) все равно делается это именно так.
обычно регистр подчиняется документу (-ам) — регистратору, который двигает этот самый регистр.
если процедура ОбработкаПроведения уже есть, просто перед вызовом конструктора скопируйте ее, потом сделайте движение через конструктор и добавьте туда то, что было удалено конструктором..
ну или создание движений вставьте в эту процедуру — неважно в каком порядке.
на ютубе куча клипов про регистры наклопления и их создание. посмотрите.
(5) copti, ну опять философия… считайте эту книгу упр. отчетом. если ставят задачу 1снику, его дело сделать. а про нюансы юридической стороны пусть думают те, кому положено.
(6) при создании регистра я указала каким документам он подчиняется, и в документах ПКо и РКО в движениях автоматом появляется данный регистр, обновляет базу сис админ, и ему проще будет с подпиской, чтобы каждый раз при изменении модуля объекта не вставлять дописанный кусок
з.ы. для себя я всегда пользуюсь способом о котором вы говорите, так проще дописать процедуру ОбработкуПроведения)))
спасибо за комментарии
(5)я не писала что данная кассовая книга ведется для бух. учета. кассовая книга по всей организации никуда не делась и также функционирует
это просто решение которое было необходимо предприятию, для внутренних нужд, и почему я подвожу под штраф? я исполнитель, и выполняю это не потому что мне взбрело в голову)
Какой релиз платформы 8.3 использовали и какой релиз Бухгалтерии Предприятия 3.0 ?
(8) 1С:Предприятие 8.3 (8.3.5.1088)
Бухгалтерия предприятия, редакция 3.0 (3.0.34.10)
(1) ага, и еще разбанить установку значения в менеджере константы, а то там принудительно сбрасывается в «ложь». И ведь работает, только по головному и обособленному отдельно, а это же вроде не то, что нужно автору. А нашим бухам вообще не совсем понятно, что нужно, они и сами не знают 🙂
В общем модуле процедура вся на экран не поместилась, поправьте, пожалуйста
Отчеты.сКассоваяКнигаПоПодразделениям.СформироватьОтчет(ПараметрыОтчета, АдресХранилища);
сам метод СформироватьОтчет от типовой книги взят и переписан? а то ругается что нету метода..т.к отчёт внешний..
(11), попробую отредактировать чтоб все поместилось
(12), да все взято из стандартной типовой книги и переписано немного для внесенных изменений
Если не сложно выложите полный текст обработки общего модуля, т.к. не влез полностью на экран
Если не сложно выложите текст процедуры в общем модуле … не вошел весь
Повторюсь комментарием, выложите пож-та текс процедуры Процедура сПКОПроведениеОбработкаПроведения полностью
Есть более простой способ, сохранение поддержки конфигурацииhttp://forum.infostart.ru/forum8/topic80906/message1759131/#message1759131
Большая просьба (качал обработку — большое спасибо), Пвыложите пож-та текс процедуры Процедура сПКОПроведениеОбработкаПроведения полностью или на почту mov031274@yandex.ru
Для сохранения нумерации листов кассовой книги головного подразделения без доработки, можно сделать так:http://infostart.ru/public/645791/