<?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='\
«Граница последовательности (ГП) – позиция, последнего введённого документа в последовательность.»
Однако не совсем правильно: дата последнего введенного документа может быть больше ГП.
(1)принято!
читаем так:
«Граница последовательности (ГП) – позиция, последнего проведённого документа в последовательности не нарушившим её. С т.з. временной оси, ГП — обозначает самую раннюю позицию (момент времени) нарушения последовательности.»
воОотТакБудетПравиЛьНО…?…!
пс: Механизм последовательностей (был) задуман для некоей автоматизации отслеживания корректности отображения бизнес-процесса во времени.
Например, если передать материалы в эксплуатацию и провести, а потом на основе передачи сформировать поступление, поставить дату поступления до передачи и провести, то себестоимости передачи не получим, хотя оба документа проведены и поступление отображено ранее передачи.
«Продвинутый» бух, не увидев себестоимости в передаче просто перепроведет все документы. Суперпродвинутый — сначала проверит ГП.
прикольно, поинтересовался, что у нас, оказалось
Партионный учет (бухгалтерский): 03.07.2007 17:17:54
спасибо, Шепот, если б не ты, так и не поинтересовался б 🙂
(3) tango уважаю ваше мнение…
и к вашему мнению хочется добавить следующие свои соображения:
пс: механизм последовательностей был придуман для чисто «р»оссийского юридического и хозяйственного разгильдяйства…
когда механизм сторнирования документов как юридический аспект полностью отсутствует…
когда количество ошибок наших бухгалтеров и операторов превосходит все мыслимые и не мыслимые пределы… и тогда проще скрыться за постоянным перепроведением документов… или уволить … но придут такие же … у нас других не бывает…
когда ни на одном предприятии (за редким исключением) нет оперативного документооборота, т.е. реальный факт введения документа как хозяйственной операции отсутствует… «бог» с ним с оперативным… лишь бы просто была зафиксирована хоз.опреция в порядке их возникновения и то хорошо…
… и много-много ещё чего…
и вот тогда:
и решили если нет возможности бороться с «неправильностью» то пусть эта неправильность станет «правильностью» и будет зарегистрирован сам факт возникновения «неправильности»…
воооооттакоемоЁмнение…..
Насколько помню смутные времена обсчения с SAP-ом и прочими буржуйскими бухгалтериями, больше всего возни было именно с отсутсвием возможности нормально реализовать «работу задним числом», ну нигде не видел чтоб бухи работали как-надо. На днях глав. бух. перепровел ИЮЛЬ ПРОШЛОГО ГОДА ! Отт це веселуха в базе образовалась…. нАрод неделю руками регистры чистили 🙂 Имхо 1Ц тут рулит как учетка однозначно !
P.S. По собственному опыту зачастую после ручной установки границ последовательности перестает нормально работать обработка проведения по партиям. Глюк наблюдался на УПП 1.2 с включенным режимом быстрого проведения. Поэтому ОЧЕНЬ не советую так делать.
солидарен с halushka в (6)…
весь, прошлый 2008 год проработал в R3… за ЧТОООО там такие деньги платят непонятно… видимо очередная мода…
и
сделал вывод, что 1С это лучшая учётная система для России …
и
следующий вывод:
ЕВРОбухгалтерия — предназначены быть основой для последующих экономических расчётов… и они, эти евроБухии, ими, этими расчётами, и напичканы…
наша РАШАбухгалтерия не служит экономике, а является полем для сдачи отчётности…
отсюда и появляются противоречия в нашем бухгалтерском учёте…
для бухгалтерии показателем работы является внешняя отчетность, а привычка всё укрывать и подгонять воспитывает соответствующую психологию и методы работы соответственно…
1С, пишет ПО для бухгалтерии являющейся основой экономического анализа, а надо писать ПО для сдачи внешних отчетов… всё одно – себестоимость продукции мы можем получать раньше, чем 1-2 месяца спустя, и это в самом лучшем случае, и зачем же тогда заморачиваться с LIFO & FIFO…
у буржуев с их Директ-Костинг-ом и условно постоянными/переменными затратами и при условии их налогообложения получают себестоимость день в день … а нам за счастье получать хотя бы актуальные остатки на складах… какая уж тут себестоимость – всё одно всё перепроведётся ещё 100 раз…
ВОоооотТакОООеМнениЕуОптимиста…
Толковое и внятное изложение материала встречается редко ,поэтому всегда полезно.
Понравились Ваши комментарии. На мой вкус ,правда, если комментарий верен и точен
то «молодежные довески» в конце излишни.
(8) …можно по поводу «то «молодежные довески» в конце излишни» подробнее…
уточните… не «прочитал»
спасибоВоОот…
На мой вкус (возможно , придирчивый) , как-то странно :
«спасибоВоОот…»
«ВОоооотТакОООеМнениЕуОптимиста…»
(10) есть хорошая мысль от великих:
хочешь, чтобы тебя заметили — удиви
хочешь, чтобы тебя помнили — оскорби
хочешь, чтобы тебя ждали — будь нужным…
…
если честно то наверное… это наверное крайняя степень индивидуализма + детские комплексы… или так: это детские комплексы которые выражаются в форме крйнего индивидуализма.
….
но и встречный вопрос-рассуждение: почему «мы» не любим подписываться и всегда скрываем о себе всё… поясню: например на нашем сайте у большей половины нет никаких данных в личках уж хотябы ФИО и ДМГ рождения…
что это…? лень или страх…
П.С. кстати поздравляю с вашим началом… первый «выход» и сразу же >80 плюсов… удачи!
воОотТакоеМнение…
Прочитал, почесал в затылке ,полистал свой цитатник — ничего не нашел подходящего. Жаль.
» у большей половины нет никаких данных в личках уж хотябы ФИО и ДМГ рождения…
что это…? лень или страх… »
— Конечно,страх. Глупость явная и глупость инкогнито. Почувствуйте разницу.
(12) спасибо ish..!
вОт!…
Вот и расплата. Такое именованное спасибо придется принять .
восхищён и благодарен…
удачи во всём…
воооООООооооотОтчистОгОсердца…
спасибо, очень понравилось
Очень актуальная тема, особенно для УПП с рабочей производственной частью….
частенько перепроводится период от недели до месяца для рассчета себестоимости…
(6) Не совсем понимаю. В западных системах нельзя ничего «перепровести задним числом». Можно только сторнировать и ввести заново. По правилам бухучета сторно вносится в периоде в котором были выявлены расхождения. Соответственно это у них гемора меньше, а не у нас. Я сейчас правда с не с SAP’ом завязан, а с Axapta, но принципы те же.
Китаец, учился здесь, жена русская, торгует по-малу. Рассказывал, что на исторической родине его просто не понимают, когда он пытается им объяснить, зачем ему здесь 1с. Не понимают. Просто.
(16) спасибо….
(17) именно это наверное и имелось ввиду в (6)
(19) …. tango, и почему его никто не понимает..? зачем китайцу 1С в китае…?
«зачем ему здесь 1с»
здесь — это на ВДНХ
зачем, я и сам не знаю, но денег он мне давал
«почему его никто не»
у китайцев не было Луки Пачиолли.
точнее, европейцы пытались там миссии всякие, но мандарины их периодически аккуратненько вырезали
(22) и какой же у китайцев, бедных, учёт-то без двойной записи… ошибаются наверное…?
воОотведьКитайцыВсеНеКакуЛюдей…
(18)
«Соответственно это у них гемора меньше, а не у нас.»
Многие даже не представляют насколько. Хотя продвигать учет реальным временем в окружении «классических», «заднепроводных» контор очень тяжко, но на круг окупается.
(24) да-ужжжж… спорить на эту тему бесполезно в обе стороны… и,что «заднее число» вещь отрицательная но везде так и работают за редким исключением… и, что кто хоть раз наладил учёт и получили «реальный» учёт начинают понимать как это хорошо, удобно, практично икак ни странно «дёшево»…
… но реальность такова какова она есть…
воооооОООоооооотЧтоТакНеХочетсяЭтоКонстатировать….
потому что РАБОТАТАЬ (главбуху, буху, менеджеру, кладовщику) — надо постоянно, а не тогда когда припрет
ГлавБух — это уже давно фигура политическая… а политика и дело вещи несовместимые…
и …. главное — А зачем…? (в смысле работать…)
ведь мы работаем «сверху» от идеи… а если главная идея «не работать» тогда эффективной работой считается не «результат» а «процесс»…
и.. ещё… фактор АТ, так сказать… раньше сам бухгалтер искал свою ошибку… и ещё на стадии введения документов он был вынужден был быть очень аккуратным… т.е. именно на нём лежала ответственность за ведение БД.. а теперь этим занимается ПК, ПО и программист… пусть они этим и занимаются… разделение труда… воообщем-то где-то так…
воооОооотЧтоХочетсяКонстатировать…
Добрый день!
Вот вопрос из сертификационного экзамена про последовательность.
Мне не понятно,почему этот документ не повлияет на границу последовательности?
13 Каким образом изменится состав списка последовательности «СебестоимостьПродаж» и ее границы при проведении документа «Приходная накладная 00002 от 13.02.2002 12:00:00»? Измерения в последовательности не используются, таблица последовательности приведена полностью.
Состав списка последовательности не изменится, а граница последовательности установится на документ «Приходная накладная 00002 от 13.02.2002 12:00:00» 1 ложь
Документ зарегистрируется в списке последовательности, но не повлияет на границу последовательности 2 ложь
Ни состав списка последовательности, ни значение границы не изменятся 3 истина
Документ зарегистрируется и в списке последовательности, и в качестве границы последовательности 4 ложь
Венгер или Венгеровщина … ?
Доколе можно терпеть и не иметь возможность либо избежать общения с некоторыми товарищами …
Доколе будем терпеть и не иметь возможности отвечать на хамство, откровенные оскорбления, матершину …
Предлагаю на ИС организовать «черные список» пользователя … ТоварищЪЧи в него попадающие не смогут остАвлять свои комментарии в ветках пользователей отказавшихся от их мнения …
У нас же есть списки друзей … Пусть бУдут списки Нежелательных лиц …
Прошу организовать модераторство «своихВеток» …
Официально прошу товарищЪЧа ВЕНГЕРА не посещать мои вЕтки и не оставлять свои комментарии …
Прошу администрАцию, если есть техническая вОзможность оградить меня от общения с ним в моих «ветках» … я в его не «полезу» …
Также прошу удАлить все его «+» выставленные в моих работах, статьях и комментариях …
… ВОТ …
Вот у меня последовательность есть, когда дергаю документы посреди кучи других, вроде граница нормально меняется, а когда делаю документ первым (самым ранним), то граница остается на его прежней дате. Почему-у-у-у? Не понимаю, прочитав статью, продолжаю не понимать почему.
ГП стоит на точке отсчета (время):
слева — документы входящие в последовательность
справа — документы НЕ входящие в последовательность
если вы «дёргает» левые документы — изменится ГП если с права то нет (они там уже дернутые) …
… вот …
Вообще если говорить о самой последовательности, то можно провести некоторую аналогию с проектированием в 3D. Например, в solidwork’e можно сделать некоторую базовую деталь или поверхность, потом применить к ней некоторые операции (вырезать отверстие, скруглить кромки…). Если потребуется, то можно изменить базовую деталь и все последующие операции пересчитаются. Как бы люди жили без этого представить сложно. Отсюда можно сделать один веселый вывод, бухгалтеры в европе тупо регистрируют события, наши же бухгалтеры «моделируют» свой учет :)) согласно налогам и прочему… А если серьезно, то не совсем понятно зачем последовательности в бухгалтерии (в типовых их по моему и нет), но кто сказал, что 1С можно использовать только для бухгалтерии?
(31) Это понятный случай. У меня изначально в обоих вариантах последовательность восстановлена полностью (на 30.04). Когда перемещаю документ от 29.04 на один, два документа назад, ГП сдвигается, ок. Возвращаю документ на 29.04 и полностью восстанавливаю последовательность, теперь ставлю документ самым первым (27.04). Документ проводиться, в консоли запросов последовательность документов такая как есть и периоды и регистраторы. Мой документ как и полагается в ней первый, запрос по ГП возвращает регистратором мой документ от 27.04, но период остается на 29.04.
(33) … хм … вы же перенесли документ с 27 на 29 … ГП останется 27 … всЁ правильно … теперь надо перепроводить … тогда ГП сдвинется на последний (поздний) документ …
… вот …
(32) … нуууу …. ))) столько копий сломано — надо/НЕнадо … ужжж ….
Не так, ГП остается на 29, хотя документ проводиться 27 числом. У Радченко не нашел инфы как именно вычисляется дата сдвигаемой назад даты. Есть догадка. Когда я ставлю документ первым в последовательности (в моем случае) записи наблюдаемого последовательностью регистра становятся пустыми (ну так надо по задаче). Так вот, последовательность как написано у Радченко определяет дату не из даты документа и даже не из периода набора записей последовательности, а по периоду именно наблюдаемого регистра. Видимо, когда 1С сравнивает старый набор по регистру и новый пустой, то ГП определяется как наименьшая из этих, но не пустая (из нового пустого набора). И получается что это 29, а не 27.
Из новых конф смотрел УТ на 8.2, там никаких «приседаний» из-за возможно пустого нового набора в регистре расчетов с клиентами нет. Я думаю, по расчетам с клиентами пустой записи не может быть, долг ест долг, может быть только нарушения закрытий по измерениям регистра, поэтому они и не парятся.
(35) … хм … может быть … вот …
Извините, я тут позанудствую 🙂
Нашел в коде вложенной обработки неувязочку при выводе границ по измерениям —
строку (62) «новСтр.Значения = строкаТГ.Организация;», по идее, надо бы заменить на «новСтр.Значения = строкаТГ[Строка(кол)];», иначе вывод границ работает только по измерению «Организация»
(38) … СпасиБО ЗА занудстВО … вот …
Кто знает, в режиме РАУЗ нужно следить за Последовательностью?
(40) Прелесть РАУЗ в том, что не нужно следить за последовательностью для расчета себестоимости.
хорошая статья!
спасибо, полезно в работе.
Спасибо, полезная статья
Очень актуальная статья
Утверждение что ТГ устанавливается при проведении документов, не совсем верно для типовых конфигураций. В 1с бузгалтерии предприятия 8.2 граница устанавливается, например, программно в полписке на событие призаписирегистрабухгалтерии.
Мда, самая подробная информация которую я пока нашел, но может плохо искал, а все равно мало…нюансов то там на порядок больше.
А по поводу обработки:
1. Сделано под 8.1 поэтому под 8.2 после конвертации будет вылетать ошибка связанная с перебором подсистем — изменился способ работы с ними на уровне платформы
2. Интерфейс у обработки не совсем очевидный — лучше было бы на каждой странице разместить свои реквизиты чем их блокировать, да и названия закладок как-то вводит в ступор, не поймешь пока не потыкаешь, может я туплю?
3. При заполнении ТР несмотря на вопрос «Таблица будет очищена. Продолжить.? она не очищается 🙂
4. Вместо документов в ТР выводятся представления — это уже совсем никуда не годится, даже открыть нельзя, в ТГ кстати тоже
5. Непонятно зачем на закладке «Последовательности» выводить ГП если есть измерения у последовательности для каждого из них, а если нет то выводить на закладке «Таблица границ», тут явно нужно что-то одно
Дальше уже в качестве развития:
6. И если уж выводятся Измерения и ГП к ним то почему нельзя ТР получить по этим измерениям? Есть фильтр только по датам
7. В статье зашла речь о том что программист может установить ГП ручками, но в обработке об этом как то ни слова — думаю не помешало бы раз тянет на универсальную, да и нет смысла писать каждый раз — лучше пользоваться готовым.
А так ничего обработка если допилить ее…
+(48) Честно говоря после изучения обработки подробнее там нашлось еще больше ошибок и неточностей, так что за образец разработки лучше ее не брать. Но идея бесспорно очень хорошая!
На первом скриншоте — граница последовательности партионного учета(БУ) с измерением организация = ПустаяСсылка. Кто-нибудь может объяснить как такое получилось и как с этим бороться? Вопрос не теоретический — у меня в базе такая же беда