<?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='\
и так бывает?
Что так бывает?
Если, о тех данных, что в окошке, то это просто от балды информация, а вообще в реалиях организаций, может быть всякое. У нас к примеру есть счет 10.00 «Заготовление и приобретение МЦ» (да, скажите есть счет 15, но предлагаю вам самим поспорить с бухией что к чему). Так вот этот 10.00 плавнеханько закрывается специально созданным для этой цели документом на указанный счет и определенной аналитикой, как правило счет 26.
+ авансом, в надежде, что Автор исправит все баги в обработке и т.к. впервые увидел что-то нужное для себя из серии «закрытие счетов для бух-2.0».
———
А теперь по существу:
Попробовал закрыть «обороты» 26(25)-счета в дебет
вместо того, чтобы учет по уму поставить, лепим костыли??? за обработку минус
Не вам судить костыли это или нет, задачи могут быть совершенно не типовые и на не типовых счетах, для этого и сделана эта обработка еще до меня, а я уже просто ее допилил под БП 2.0. Бака.
Было бы супер, если бы в шапке обработке указывалась регламентная операция и действия обработки (по закрытия счета) ЗАМЕЩАЛИ/добавляли операции в выбранном документе.
(6)
это сосвсем не к чему, т.к. регламентные операциии, если счет уже закрыт — не выполняются.
Было бы супер, если бы в шапке обработке указывалась регламентная операция и действия обработки (по закрытия счета) ЗАМЕЩАЛИ/добавляли операции в выбранном документе.
В принципе это возможно. У документов регламентная операция есть реквизит «ручная корректировка» и установив его можно спокойно дописать еще проводок в документ и не боятся, что его перепроведут, так как доки с установленным реквизитом не перепроводятся.
Попробую реализовать как будет время. Нужно разгрестись с другими задачами.
+ авансом, в надежде, что Автор исправит все баги в обработке и т.к. впервые увидел что-то нужное для себя из серии «закрытие счетов для бух-2.0».
———
А теперь по существу:
Попробовал закрыть «обороты» 26(25)-счета в дебет 20.01.На закладке «Набор записей», обработка сделала сумма проводок задвоенную, например:
-счета в дебет 20.01.На закладке «Набор записей», обработка сделала сумма проводок задвоенную, например:
д.20.01 к.26 амортизация НМА =100руб
д.26 к.20.01 амортизация НМА =100руб
Итого имеем 200руб, вместо 100руб.
Резюме: сейчас обработка сырая и даже не проверенная автором в простейших условиях 🙁
Ну изначально обработка не моя и полагал, что там все должно быть нормально, а нехватало только поддержки БП 2.0.
Буду смотреть, так как все равно задача стоит не создавать отдельных документов в типовой, а закрывать обработкой нужные счета.
Попробовал, о к сожалению результат не утешительный. Но все равно плюс поскольку автор надеюсь после того как проверит сам исправит недочеты.
(8)
Имхо нельзя это делать(ну в кранем случае предусмотреть вариант «создать операцию» или «внести коррективы в регламентную операцию»). Лучше в саму операцию внести коомментарий, типа «Дополнительно/взамен регламентной операции по закрытию счетов 20,23,25,26 за ИЮНЬ 2011г».
Так как при составлении баланса и допроведения «забытых сумм» на закрываемые счета, бывает нужно/можно закрыть автоматически, как это делает Бух-2.0
—-
Примечание: в бух.и налоговом учете суммы <= 5%, в основном, считается не существенными и тратить на них дополнительное время = не рациоенально. И лично я, оставляю «дополнительныо внесенные суммы» для автоматического закрытия счетов…
+ авансом, в надежде, что Автор исправит все баги в обработке и т.к. впервые увидел что-то нужное для себя из серии «закрытие счетов для бух-2.0».
———
А теперь по существу:
Попробовал закрыть «обороты» 26(25)-счета в дебет 20.01. На закладке «Набор записей», обработка сделала сумма проводок задвоенную, например:
д.20.01 к.26 амортизация НМА =100руб
д.26 к.20.01 амортизация НМА =100руб
Итого имеем 200руб, вместо 100руб.
Резюме: сейчас обработка сырая и даже не проверенная автором в простейших условиях 🙁
Попробовал создать аналогичную ситуацию. В периоде, где нет ничего, создал две ручные проводки Дт25-Кт70 на сумму 1000 и 2000 рублей, ну и аналитика произвольная. Указал, что хочу закрыть обороты 25 счета из периода, где сделаны проводки. Указал счет приемник Дт20.01, указал аналитику куда отнести. Нажал сформировать проводки и получил на выходе как и должно было быть в теории, две проводки Дт20.01-Кт25 на суммы 1000 и 2000 руб. аналитика тоже правильная (то чего и хотел получить).
В принципе это возможно. У документов регламентная операция есть реквизит «ручная корректировка» и установив его можно спокойно дописать еще проводок в документ и не боятся, что его перепроведут, так как доки с установленным реквизитом не перепроводятся.
Попробую реализовать как будет время. Нужно разгрестись с другими задачами.
Хорошо подумав, решил ничего не делать ибо если не нужны проводки сформированные самой регламентной операцией, то ее не надо выполнять, а во временной промежуток всегда можно втулить документ «Операция бух». Да и потом всякие неявные явности всегда сбивают с толку. Сейчас этой параши у меня в базе столько… и бухи не хотят обновляться до 2.0 с 1.5, сетуя на «уникальный» бух учет в конторе.
(11) наверное я чтото не так сделал :-/
буду разбираться в выходные дни….
Вообще в БП 2.0 и Корп и так можно закрывать счета, сделав не хитрые операции.Так то собирался статью написать, может и напишу. В двух словах, для закрытия 26 счета ( если не дерикт костинг), создается обычная операция 20/20 (допустим на копейку), с подразделением по которому не закрывается 26 счет. Для 25 аналогично. Для закрытия 20 счета в операции — корректировка регистров -регистр «Реализация услуг» — новая запись ; Счет затрат 90.02 — нужные подразделения/номенклатурные группы — любая сумма . Все это будет базой для распределения 20 счета.Счета затрат закрыты,90-е закрыты . Все счастливы.
P.S. Если бухгалтерам пох, то мне тем-более.
(14)Ну это хитрости конечно, а вообще потребность в этой обработке у меня появилась в следствии «уникального» бух учета в конторе и это никак не связано напрямую с закрытием 25 и 26 счета. Тут наоборот на счет 26 кочуют суммы с 10.00 счета, не типового. Сути сам до конца не понимаю, почему они ведут счет 10.00, но раз он есть и закрывается по одной аналитике, то эта обработка, то что нужно. Городить в новой конфигурации документ «ЗакрытиеСчета10.00» не хочется.
P.S. Да прибудет сила у бухов сдавать налоговую отчетность
Вообще если с Кт 10 списывается материал, то это списание в производство (затраты).Значит нужен печатный документ,о том что подотчетник списал с себя материалы (например М-11). Это стандартный документ «Требование накладная». Бухи сами выбирают, что, с кого, когда, с какого счета списать.
(16)Там долго рассказывать, в общем там материалов нет. По сути как 15 счет, но с нюансами.
А можно скрин двух первых закладок? Никак не могу решить полезная вещь или нет, качать или нет
Попробуйте мою обработку 🙂
(18)Добавил
Скачал попробую. Помню переделывал под себя их 8.1, для 8.1. А сейчас как-то лень переделывать под 8.2 тем более велосипед уже изобретен
Скачала. Попробую. Думаю, пригодится.
Спасибо за обработку.
Спасибо!
очень пригодилась ваша обработка, как образец для новой обработки закрытия остатков НЗП сч 20 на 90.02, в случае когда выручки не будет
(23) nikavilk,
Если ваша обработка для типовой конфигурации, тогда выложите ее пожалуйста на сайте. Это обязательно многим пригодится как для 20-счета, так и 44-счета
Скачал. Вываливается с ошибкой при попытке развернуть по субконто или сформировать проводки:
{ВнешняяОбработка.ЗакрытиеБухгалтерскихСчетов.МодульОбъекта(611)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если Параметры.Отрицательные = ИСТИНА
Здравствуйте. Скажите , я могу закрывать на любой счет. Мне нужно все на 86
Спасибо
(26) sps02, теории да.
На практике у меня на работе бухгалтерия не применяла эту обработку вообще.
Убил время за зря переделывая найденную обработку, на просторах инета, под БП 2.0.
1. Группировать в запросе необязательно. Остатки по бух регистру и так сгруппированные.
2. Получать значения из выборки по индексу — жуть.
Выборка[индекс] = плохой код.
Выборка[«Субконто»+Номер] — хороший код.
еще надо отбор по количеству и сумме чтобы избавиться от зависших копеек при нулевых количественных остатках ТМЦ на складе.
(28) kwazi, сойдет:
1. обработка взята чужая и только допилена под БП 2.0 (рефакторинг не осуществлялся)
2. см пункт 1.
3. Развитием обработки не занимаюсь, как спилил ее для своих хитрых бухов у которых была до этого кнопочка в операции ручной, еще в БП 1.5, так ей этой обработкой и не пользовались, важности больше нагоняли при переходе с 1.5 на 2.0