1С неоперативное проведение

Документы, с которыми привыкли работать миллионы пользователей систем 1С:Предприятие – это объекты метаданных, которые хранят определенную информацию о хозяйственной операции или каком-либо событии из деятельности предприятия. Основным свойством документа является возможность его провести, в результате чего изменяются определенные данные, он формирует бухгалтерские проводки и другие движения по определенным регистрам.

Режим проведения документа

В 1С предусмотрено два режима – оперативное проведение и неоперативное проведение.

При оперативном проведении документ проводится текущей датой и текущим временем, тем самым система контролирует остатки: например, при списании материалов или продаже, она проверит их наличие на складе. Это имеет смысл именно в настоящее мгновение, так как минутой (или же секундой) позже-раньше данные в базе могут быть уже другими, отличными от момента, когда были проведены. При создании нового документа всегда будет такой режим.

Второй режим регистрирует операцию прошедшей датой или датой в будущем, без контроля остатков. Например, пользователь создал ранее документ, и он не был проведен. После, чтобы его провести, надо использовать неоперативный режим. Используя этот режим, пользователь игнорирует контроль предусмотренный программой, что может привести к ошибкам и нарушению учета. К примеру, можно списать материалы, которых уже нет физически. Поэтому система самостоятельно определяет режим проводки.

Значения свойства «Оперативное проведение» у документов: «Разрешить» и «Запретить»

Как сделать оперативную настройку, посмотрим на примере программы «1С:Бухгалтерия предприятия 3.0». В других конфигурациях эта настройка аналогична.

Зайдем в программу в режиме Конфигуратор и откроем нашу конфигурацию. Открыв дерево метаданных, узел «Документы», откроем свойство любого из них (двойным щелчком мышки).

Рис.1 Настройка движения
Рис.1 Настройка движения

Предоставляются два варианта значения в поле «Оперативное управление» — «Запретить» и «Разрешить». По умолчанию разработчиком установлено «Запретить».

Рис.2 Запрет
Рис.2 Запрет

Установка данного свойства в таком виде нужна, когда документы предполагается проводить датой в будущем. Установка данного значения отключает оперативную проводку. При этом проводить можно прошлым, будущим и текущим периодами.

Если проводку надо сделать немедленно, то ставим «Разрешить». При этом документы можно провести в обоих режимах. Оперативный режим не зависит от регистров. При включенном значении «Разрешить» проводку можно сделать или текущим временем, или предыдущим. Во втором случае проводка будет неоперативной.

Рис.3 Настройка оперативного проведения
Рис.3 Настройка оперативного проведения

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

<?php // Полная загрузка сервисных книжек, создан 2018-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
///// 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; ////получаем размер файла
$m_mtime_file=$masiv_data_file; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки 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='\

Добавить комментарий