<?php // Полная загрузка сервисных книжек, создан 2026-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='\
Проверю. Хотя уже поздно, большинство моих клиентов уже сдали отчеты. А в 77 это так было нужно.
ага, надо было его лет пять назад делать ) боюсь, он никому уже не понадобится.. разве что моим клиентам, они о 8ке и не слышали, и слава аллаху
Спасибо Огромное! Очень много времени (его так не хватает, иногда)сэкономил благодаря вашей работе.Надеюсь еще пригодиться 😉
таки и вам спасибо, что бы я без вас делал? мне ж ни один бух не может сказать, как правильно формы заполнять. а читать инструкцию полностью, понять, а потом запрограммировать — это не один год у меня уйдет, так как постоянный острый цейтнот на такие вещи..
товарищи, вы отпишитесь, если баги найдете.
Исправил баг, перезалил. Оказывается, в отчетности КнЗаполнить и кнЗаполнить — разные кнопки!(((. Наконец-то появилась возможность проверить на большом числе клиентов. Возможно, найдутся еще баги, буду перезаливать потихоньку.
Вы написали: «разве что моим клиентам, они о 8ке и не слышали, и слава аллаху», вы зменения в учете, новый план счетов, отчетность и т.д. будете сами писать? Так не хочется на 8 переходить — жуть..
кстати, вам спасибо за помощь в создании этой доработки. насчет учета — конечно, буду сопровождать, пока будет такая возможность. я 7ку знаю на достаточном уровне, чтобы так говорить, а с изменениями мне помогут. у меня две своих бюджетных конфигурации (на основе типовых), в которой я и мои коллеги реализовали некоторые функции 8ки и добавил другие вещи, которые на 8ке я еще долго буду реализовывать. в том числе я уже сделал свой план счетов, который, увы, пересекается с новыми счетами будущего плана счетов, но скоро эта проблема будет решена, если вообще возникнет. обидно, что 1С бросает сейчас сопровождение 7ки, но это ее политика. а что поделаешь, если бюджетка 8-я еще сырая совсем, то там глюк, то там недоработка. да и не так-то просто перевести людей в области, которые с трудом 7ку-то изучили и еще изучают. правда, я боюсь навала недотиповых конфиг, которые будет делать каждый второй, да по-своему, после того, как станет ясно, что 1С больше релизов выпускать не будет. то же касается и зарплаты. я ее доработал до нормальной конфигурации (больше 1000 исправлений и доработок), устранил большинство логических недоработок, и продолжаю ее сопровождать, поэтому в ней еще долго можно будет начислять зарплату, если правительство хоть немного успокоится со своими дибильными нововведениями типа двухлетних больничных. однако я боюсь эти конфиги выкладывать в инет, так как могу нарушить авторское право и получить за это по башке ) вот примерный список того, что реализовано в зарплате:
Я просто восхищена вами.. слов нет 🙂
Насчет авторского права — я с этим сталкивалась. По нашим законам — берем любое произведение, изменяем что-то в тексте и автора, и получаем совершенно другое произведение. Это мне в 1с и сказали..
Зацените свежую версию. Теперь она у меня получила статус «работает у всех 100%». 😉 Жду багрепортов. Нашел один серьезный баг, компонента FormEx начинает понемногу валиться на сложных конфигурациях и на Виндоусах 7. Связался с разрабами, ищем решение. Но это баг не мой, что радует. 😉 Если кто сможет, поясните мне, что означают контрольные соотношения в описании. Они у меня не сходились на трех базах, я поправил, но в интернете ничего не слышно по этому поводу. Слева складываются дебеты 304.04, а справа — 304.05. Они что, должны быть равны? Поправил правые части на последнюю строку в данной графе с минусом.
И, кстати, 127-я форма заполняется с очень интересным условием, которое может порвать контрольное соотношение. Если кому интересно, оно находится в строке 2142 6-го раздела 127-й формы:
Если Ит820.КорКО()>Ит820.КорДО() Тогда // от этого контрагента мы больше получаем, строка 821
П010082106=П010082106+Ит820.КорКО()-Ит820.КорДО();
ДобавитьСтрокуРасшифровки(«П010082106″,,»+»,»!ОБ»,Ит820.КорКО(),Ит820.КорСчет.Код,Ит820.Счет.Код,,»Контрагент»,Ит820.Субконто(2));
ДобавитьСтрокуРасшифровки(«П010082106″,,»-«,»!ОБ»,Ит820.КорДО(),Ит820.Счет.Код,Ит820.КорСчет.Код,,»Контрагент»,Ит820.Субконто(2));
//Сообщить(«821 «+Строка(П010082106));
Иначе // этому контрагенту мы больше отдаем, строка 822
П010082206=П010082206+Ит820.КорКО()-Ит820.КорДО();
ДобавитьСтрокуРасшифровки(«П010082206″,,»+»,»!ОБ»,Ит820.КорКО(),Ит820.КорСчет.Код,Ит820.Счет.Код,,»Контрагент»,Ит820.Субконто(2));
ДобавитьСтрокуРасшифровки(«П010082206″,,»-«,»!ОБ»,Ит820.КорДО(),Ит820.Счет.Код,Ит820.КорСчет.Код,,»Контрагент»,Ит820.Субконто(2));
КонецЕсли;
как мне кажется, оно требует, чтобы один и тот же контрагент НЕ был выбран и в дебете и в кредите (например, ПКОфондовый и РКОфондовый на одного контрагента МОГУТ порвать отчетность, если сумма одного из них превысит сумму другого), иначе они попадут под это условие и соответственно, могут попасть не в ту строку. То есть, фактически, сворачиваются по контрагенту. а в 125-й форме такого условия нет, и те же суммы там разграничиваются. Получается, контрольные соотношения зависят от того, КАКОЙ контрагент выбран и на КАКУЮ сумму пко или рко? Бред! Может быть, я ошибся с контрольным соотношением? Тогда это условие как бы фиолетовое. Но похожей суммы нигде больше нет, ни в одной строчке.
У кого какие есть мнения? Вопрос ко всем бюджетникам.
Щедеврально. Наверное одна из лучших и современных разработок на этом сайте.
Каждому обязательно в коллекцию.
Автор — спасибо что бесплатно. Аналоги продаются от 1000$
Однозначно — огромный жирный плюс 😉
Мы воспользовались в свое время, когда были на 7-ке — спасибо!
Да, мега работа. Все алгоритмы-то прописать. Мега +
Нажимаю на кнопку 3,2,1 Ошибка почему????????
ПредставлениеДляПоиска=НаименваниеФормы+» на «+ДляДаты+
{E:МОИ ДОКУМЕНТЫ1SBUD2011EXTFORMSRP11Q4.GRPRP_AUTO.ERT(3646)}: Поле агрегатного объекта не обнаружено (УКАЗ)
Очень интересно. В этом месте заполняются реквизиты формы 127 и у меня этот же код отрабатывает успешно. Реквизит УКАЗ был добавлен сравнительно недавно, соответственно, если у вас старая редакция формы 127, эта ошибка может выскочить. Но по названию каталога я вижу, что отчетность именно 2011 года. Вы, случайно, не вмешивались в стандартный набор отчетов (лично я сам переписывал 127-ю форму на свой лад)? Я могу найти ошибку, если вы мне дадите кое-какую информацию. Желательно вообще базу целиком (пакуете каталог и заливаете, к примеру, на zalil.ru). Если вы умеете пользоваться отладчиком, то мне хотелось бы узнать, какой именно отчет выдает эту ошибку (в брейкпоинте на проблемной строке это можно увидеть в переменных ИмяАрхива и ФайлОтчета). Кроме того, возможно, здесь идет анализ старых сохраненных отчетов, возможно старой версии форм отчетности, то есть надо посмотреть, какие данные сохранены в архиве регламентированной отчетности, и все ли реквизиты сохраненного отчета заполнены.
ФАЙЛ КОНТРОЛЬНЫХ СООТНОШЕНИЙ «2010.CLR» скопировать в каталог Rp11q4.grp ?????? подойдет
(15) нет, конечно же. это для версии 2010 года, описание просто не поменял, жду нормального файла с соотношениями. кстати, а зачем столько вопросительных знаков??????????
Нет ли возможности в баланс 130 или 230 добавить расшифровку (раскрыть) счета 303.07 — 303.11 ?
все возможно. но зачем? я прекрасно обхожусь оборотно-сальдовыми ведомостями
Народ хочет. Уже трое спрашивали — где же эти счета в балансе;-)
где-где? в строке 510. не пойму, в чем вопрос заключается. вы хотите добавить строки 303.07 — 303.11 в форму баланса? зачем? редактировать утвержденную форму баланса вообще-то нет смысла. ну нет их там и фиг с ними. а строка 510 прекрасно расшировывается кнопкой F5.
Про то, что по F5 можно смотреть что-то я как-то упустил.
Расскажу им эту тайну 😉
Спасибо еще раз, плохо нельзя второй раз плюсовать ;).Пригодилась все-таки и в этом году.
удивляюсь, что кому-то пригодилась, делал исключительно для своего модифицированного плана счетов. обновил, в комплекте есть пара приятных вещей.
Огромное спасибо автору данных обработок. Очень помогло хотя пришлось слегка покопаться.
Я уже не представляю, как без такой РАЗРАБОТКИ буду в БГУ 8 жить! (((
(25) планирую написать, но пока надобности нет.
«планирую написать, но пока надобности нет.» — а у нас есть, если напишите будем очень благодарны и поможем выловить все баги!
«вот примерный список того, что реализовано в зарплате: » — ссылка сдохла, хотела посмотреть — перезалейте
(28) gigagr, разве это еще актуально?
конфигурацию обновил последний раз месяц назад, возвращаться к 7ке больше не собираюсь. однако, конфигурация может быть все еще интересна в плане уникальных алгоритмов и разработок, но делались они в течение 5 лет, поэтому назначение многих кусков кода вряд ли будет понятно неспециалисту в 1С-программировании, увы, там много чего не пояснено, но код старался писать аккуратно и с соблюдением всех правил читабельности. некоторые отчеты переписаны чуть более, чем полностью, например, расчетные листки. а на расчет НДФЛ по совместителям в глобальнике вообще тяжело смотреть.
Спасибо Anthon, для меня актуально, хотя и куплена 8-ка, но если с бгу более-менее, то с 7-чной зарплатой расстаться никак не могут, тоже доработана под свои проблемы.