<?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='\
Без заполнения измерения «ПроведенВХронологическойПоследовательности», ваша обработка бесполезна 🙁
Ну мне она пригодилась по любому, чесно говоря… я просто меняла границы при уже имеющихся… но явно Вы правы, постараюсь исправить, чтоб имерения тоже можно менять…
Изменила обработку для 82. Появилась возможность менять измерения в выбранных строчках последовательности
Подскажите, а как скачать обработку — что то не получается.
(4) isn2, Кликаешь на посмотреть и скачать все файлы или на большую синию папку с зеленой стрелкой… Должно получится.
Спасибо за обработку.
Хочу заметить, что Ваша обработка будет работать не только со стандартными конфигурациями, если сделать непринципиальную корректировку
//РД = ОбщегоНазначения.ПолучитьРабочуюДату();
РД = ТекущаяДата();
Спасибо!
(6) Исправлю 🙂
Немного не поняла, для каких случаев границу надо изменить, а документы не трогать. Как гарантировать, что все станет, как надо?
(8) ну например, поправить комментарий в документе, который влияет на границу. Да, бывает и такое… А еще когда ты приходишь в контору, а про границу последовательности никто не слышал и этим никто никогда не увлекался. Вот тогда правишь регистры на определенную дату, делаешь границу с нее и вперед уже правильно вести учет. И такое бывает… И опять таки — это крайние случаи, редкие. Так, конечно, желательно следить за ней 🙂
Спасибо! Очень помогла
(0) Срочно понадобилась обработка для изменения границ последовательностей в УПП. Писать самому — просто не было времени. Перебрал на Инфостарте штук шесть обработок.
Из всех опробованных — только эта обработка работает корректно с границами последовательностей!
Спасибо за обработку. Качественная работа.
Скачал обработку. Хотел использовать под УТ11.1
Не смог воспользоваться 🙁
Как отметить все товары (у меня в табличной части их тысячи)? Зачем они там? Как вообще менять границу последовательности?
Прошу помощи автора. Заранее спасибо.
(12) acuta, наверное прежде чем что-то использовать такое, как изменение границ, удаление объектов, нужно знать немного теории, дабы не навредить еще больше.
Объясняю: граница последовательности может иметь свои разрезы, например, по организациям. И тогда Вы увидите в границе вместо одной строки несколько по организациям, то есть для каждой организации будет определена своя дата этой границы последовательности. Это хорошо тем, что восстанавливая сбитую границу по документами проводятся не все документы, а только те, которые относятся к данной организации. Разрезы могут быть различны, их может быть несколько. Например, по последовательности взаимозачетов могут быть разрезы по организации и контрагентам. Соответственно, изменяя границу, вы не можете написать что общая граница будет на эту дату. По какому разрезу, как вообще потом считать в различных разрезах данных?
Обработка тестилась в свое время на УПП. Там с разрезами было легче. У Вас судя по всему разрез идет по номенклатуре. Можно конечно допилить на автоматическое замещение даты границы во всех строках на указанную, но тогда надо подумать какой регистратор присваивать границам… да и замещение во всех строках даты скорей всего будет не верным.
А теперь простой вопрос: а зачем Вы решили переместить границу? Тем более как выяснилось Вы не совсем понимаете что это такое.
(13) в описании обработки сказано «Конфигурации: Все на 1С8». Думаю логичнее было бы указать УПП.
С интересующей меня границей нужно было работать в разрезе номенклатуры и характеристик. Поэтому вопрос у меня и возник: как выделить все записи и поставить для них одну дату? Или почему нет возможности выбора сразу всех записей? Логика была непонятна.
(14) acuta, не логично указывать что только для УПП, тк она отработает на на других конфигурациях. Выделив любой Ваш разрез и обработка перенесет этот разрез на нужную дату. А вот групповая обработка разрезов — да, не поставила выбор сразу всех записей. Можно поставить конечно. Но вопрос на какой регистратор передвигать при групповом установлении остается открытым.
Забавно. Опять понадобилось двинуть границу. Ищу инструмент на Инфостарт. Открываю, эту обработку, вижу свой комментарий.
Это не оффтоп. Это опять Спасибо!
Из нескольких обработок отлично подошла только Ваша. Спасибо. 🙂
Спасибо! На мой взгляд самая грамотная и удобная обработка корректировки последовательностей на сайте.
Подскажите, предполагается написание аналогичной обработки только на управляемых формах?
(19) alex_davydov, навели на мысль, что пора сделать усилие и переписать.
Не работает для 8.3 на последней БП 3.0:
Недопустимое значение параметра (Параметр номер ‘2’)
Пытался сдвинуть последовательность Документы организаций
(21) А на какой платформе. Только вчера двигала последовательность «Документы организаций» Бухгалтерии 3.0, но у меня платформа пока 8.3.8.2054.
Ошибок не было, все прошло норм. Напиши мне подробней где чего выбрал и как. Можно в личку.
Нужно было срочно, поэтому наваял по-быстрому свою обработку. При чём сразу же наткнулся на ту же ошибку. Разбор показал, что в той последовательности 2 измерения и вторым параметром ОБЯЗАТЕЛЬНО нужно указать структуру-отбор по этим 2-м измерениям. А в обработке она дала на редактирование только 1-е измерение (организация), а 2-е было недоступно для редактирования в таблице.
Но когда моя обработка всё-таки заработала выяснилось, что в БП 3 вообще по-другому организована работа с последовательностью. Там граница вообще не смотрится, только движения. Так что пришлось совсем другой код писать, чтобы при закрытии месяца он не просил перепровести все документы с 2007 года.
О, собственно, об этом комментарий (1)
(23) Ну да, по идее таблица последовательности у тебя пустая должна выходить. Я поэтому и не поняла где у тебя ошибка выходит. Для движений есть вкладка моей обработки «Набор последовательности» где и двигаются движения. Там достаточно на нужном документе поставить «Проведен в последовательности». У меня при этом ошибок не возникало )))))
Кстати странно что у тебя вышла таблица последовательности, у меня во всех базах она пустая для Бухгалтерии 3.0. А насчет параметра все равно гляну, надо подправить.
Не, она у меня была пустая. Я просто подумал: «Что за фигня?» и добавил строку 🙂
В общем, может, просто не разобрался в функционале
Отлична обработка, то что искал для БП 3.0, начал уже свое писать — но это полностью подошла (чтобы пометить «сбитый с последовательности» документ на нормальный)!
Очень часто пользуюсь этой обработкой в БП 3.0 когда звонят бухгалтеры и говорят «Ой, мы закрываем ноябрь, а просит перепровести документы с 1 октября!».
Интуитивно понятный интерфейс, все замечательно.
Жирный плюс разработчику!
Обработка классс
Бухгалтерия предприятия, редакция 3.0 (3.0.59.54) (http://v8.1c.ru/buhv8/)
http://www.1c.ru)
Copyright (С) ООО «1C-Софт», 2009 — 2018. Все права защищены
(
Не работает зря скачал.
Да работает все, надо просто знать что в бухгалтерии с границами
Почитай переписку выше
Проверил на УПП 1.3.106.2 (1С 8.3.11.3034). Передвинул границу по реализации. СПАСИБО!!!
В бухгалтерии 3.0 все сработало, знаю про то что можно типовым методом, но обработкой красивее)) Спасибо!