<?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='\
Если выбрать способ закрытия регистра приход, то вылетает с ошибкой
http://v8.1c.ru/buhv8/)
http://www.1c.ru)
Платформа: 1С:Предприятие 8.3 (8.3.6.2152)
Конфигурация: Бухгалтерия предприятия, редакция 3.0 (3.0.42.33) (
Copyright (С) ООО «1C», 2009 — 2015. Все права защищены
(
Режим: Серверный (сжатие: усиленное)
Приложение: Тонкий клиент
Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
Вариант интерфейса: Такси
Ошибки:
———————————————————————————
21.10.2015 12:11:47
Ошибка создания источника доступных настроек компоновки данных
(1) amigo667, Исправлено
В обработке косяк. Выбираю регистр накопления. Указываю отбор. Нажимаю получить остатки. Нажимаю «Ввести корректировку записей регистров». Открывается документ в котором регистр закрывается полностью без учета наложенного фильтра.
Фильтр по огранизации то же не накладывается. Конфигурация БП 3.0 (Почти)
(3) Doomer, спасибо за замечание. Ошибка исправлена. Отборы работают.
Спасибо за обработку, очень пригодилась.
Использовал обработку для закрытия регистров накопления в конфигурации ЗУП 3.0 (3.0.25.69). При формировании документа для некоторых регистров, например «Взаиморасчеты с сотрудниками» выдается ошибка: «Поле объекта не обнаружено (Статья финансирования)». Добавил проверку и документ сформировался.
Не работает на ЗУП 3.0. «Переменная не определена (Бухгалтерский учет переопределяемый)». Зря потратила 2 стартмани. Уберите из описания, что поддерживается ЗУП 3.0
(7) kalaratra, даже если закомментировать эту строку, то все равно не работает в ЗУП для тех регистров, использование измерений которых завязано на функциональных опциях. Например, если попытаться закрыть регистр ВзаиморасчетыССотрудниками, у которого использование измерения СтатьяФинансирования выключено через ФО, то при попытке создать документ вываливается ошибка
{Форма.ФормаУпр.Форма(372)}: Поле объекта не обнаружено (СтатьяФинансирования)
НоваяЗапись[Измерение.Имя] = СтрокаТаблицы[Измерение.Имя];
подозреваю что эта ошибка актуальная не только для ЗУП
(8) chea06,
Первая строка с ошибкой при получении организации, заменила
на
А статью финансирования решила так:
Знаю, что костыль, но мне надо было быстро решить)
Спасибо! Обработка супер!
Слушайте, ну это ж вообще ужас. Если вы не знаете, как в запросе задавать период, чтобы получить правильные остатки на конец периода при использовании таблицы .Остатки, то выкладывать такие обработки просто безответственно.
Для тех, кто захочет воспользоваться данной обработкой советую исправить код обработки.
Исправить (в 3х местах):
На
И
На
(9)
Если НЕ Измерение.Имя = «СтатьяФинансирования» И НЕ Измерение.Имя = «СтатьяРасходов» Тогда
НоваяЗапись[Измерение.Имя] = СтрокаТаблицы[Измерение.Имя];
КонецЕсли;
КонецЦикла;
А куда это вставить в код? А то у меня выходит такая запись:
{ВнешняяОбработка.ЗакрытиеРегистровНакопления.Форма.ФормаУпр.Форма(301,17)}: Переменная не определена (НоваяЗапись)
<<?>>НоваяЗапись[Измерение.Имя] = СтрокаТаблицы[Измерение.Имя]; (Проверка: Сервер)
{ВнешняяОбработка.ЗакрытиеРегистровНакопления.Форма.ФормаУпр.Форма(301,46)}: Переменная не определена (СтрокаТаблицы)
НоваяЗапись[Измерение.Имя] = <<?>>СтрокаТаблицы[Измерение.Имя]; (Проверка: Сервер)
Помогите, а то там таких делов по остаткам в ЗУП 3.0 наворотили, за три предыдущих года НДФЛ не отражали на удержание, не уволили сотрудников, а по уволенным вообще суммы к оплате вылазят.
(13)
Это нужно вставлять в процедуру ЗаполнитьНовыйДокументКорректировки для конфигураций отличных от Бух3.0 (ниже текста «Иначе //Если НЕ БП 3.0»)
в ERP кто-нибудь тестировал?
УТ 11.1
необходимо было закрыть регистр Товары к оформлению излишков и недостач
Выходит следующая ошибка:
{ВнешняяОбработка.ЗакрытиеРегистровНакопления.Форма.ФормаУпр.Форма(372)}: Поле объекта не обнаружено (Характеристика)
НоваяЗапись[Измерение.Имя] = СтрокаТаблицы[Измерение.Имя];
Пожалуйста посоветуйте как исправить, очень нужно до понедельника.
Бухгалтерия предприятия, редакция 3.0 (3.0.64.34)
Платформа 1С:Предприятие 8.3 (8.3.12.1469)
При попытке закрыть РН Прочие расчеты, сообщение об ошибке, что значение поля Организация не может быть пустым.
Добрый день, на ЗУП3.1 не работает. Можно исправить ошибку?
ЗУП 3.1 не работает.