<?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='\
«Извините, Вам нельзя!»))))
а так работает, спасибо
Извини забыл убрать это была комерческая версия
Там есть строки кторые проверяют название организации которая её приобрела если обработку унесли в другое место она работать не будет
Если сами не разберетесь напиши куда послать на Email пришлю без защиты
(2) так обновите файл
(3)А я с удовольствием но не как не найду где это сделать если подскажите буду признателен
(3)Ну вроде бы всё исправил
(4) тут, под вашим ником есть кнопка «Редактировать»; далее идете
-> Файл -> тут можно удалить старый файл, и/или добавить новый файл (имхо лучше с добавкой, типа «версия-0002»).
В крайнем случае, можете все удалить и загрузит все заново.
Или пишите суппорту 🙂
(6) Большое спасибо за ответ и за труды как видите я уже нашел
(5) Пожелание: сделайте возможность формировать(типа поставить «галку» = формировать отчет по всем складам)
+(8) имхо включая розничные склады
(8) Акак вы себе это представляете? Каждый отчет имеет свой номер. Каждый склад имеет свои начальные и конечные остатки. Каждый склад имеет своего ответственного.
Или же по этой галке должно формироваться столько отчетов сколько у Вас складов
(9) Посмтрите мой ответ (10) и ответь в какои виде это должно быть
Имхо я представлял, что остатки на начало и конец суммируются. Но т.к. у меня все делается по складам, то пожелание отменяется.
(11) Можно вопрос:
Ситуатция: я обратил внимание, что в настройках розничного склада стоит:
Вид склада = Неавтоматизированная торговая точка
тип цен = Розничная
Счета доходов и расходов от реализации = стоит «галка»= определять по учетной политике(организация на УСН).
Деньги мы получаем по кассе и терминалу(пластиковые карты).
Вопрос: ТОРГ-29 из стандартной конфигурации не формирует отчет. В чем засада?
——
Спасибо за ответ.
(13) Для формирования стандартного отчета товар долже учитываться 41.11 , 41.12 и 41.03 (для тары) счетах тогда он формируется,если счета учета склада другие стандартный отчет не формруется и не важно как вы получаете деньги и где учитываете доходы и расходы
Всем большое спасибо за плюсы
(14) понятно, 41.11 , 41.12 = учет на складе ведется по продажной цене. У меня бухгалтер учет ведет на 41.02(учет по закупочной цене) а реализацию проводит документом «Отчет о розничных продажах».
Замечания:
-Обратил внимание, что при формировании отчета вместо «остаток на конец 31.05.2009» отчет выдает «Остаток на ПолеВвода»
-ИМХО не ошибка(просто обращаю внимание, когда мой бухгалтер придет из отпуска, я спрошу у него об этом) Документ «Возврат от покупателя» попадает в раздел Расход со знаком минус.
—
Пожелание к отчету: буду Вам очень признателен, если доработаете вашу обработку с возможностью выбора розничных складов(настройки розничного склада см. ответ(13).
(16) Попробуй второй отчет должен работать, если нет пиши переделаем
(17) нет во втором отчете не совсем складов не видно.
Я в первом отчете я сделал так(и меня более всего устроило):
«Перечисления.ВидыСкладов.Оптовый» везде заменил на «Перечисления.ВидыСкладов.НеавтоматизированнаяТорговаяТочка»
Получилось два отчета для розничного и оптового склада.
Имхо в отчете нужен алгоритм типа «ИЛИ»(Оптовый или Розничный или НеавтоматизированнаяТорговаяТочка)
Но я только бухгалтер, а не программист.
—
ИМХО В моем конкретном случае, сопоставляя данных бухгалтерского учета и отчета ТОРГ-29, бухгалтер применять не захотела, т.к. она учет на счете 41.02 и/или 41.01 ведет только по оптовым ценам.
Т.е. Почти получился отчет «ТОРГ-31», но повторюсь — это мой личный случай 🙂
Ура!
А можно сделать, чтобы Возвраты от покупателей попадали в приход, а возвраты поставщикам в расход?
(20) Сделать конечно же можно, но нужно ли?
Возвраты попадают таким образом лишь потому, что формируют сторнирующие проводки, отсюда всё наоборот
(21) хоть так и правильно, но во всех типовых конфах они попадают наоборот со знаком плюс. Бухи просто так уже привыкли.
(21) Хорошо я посмотрю сделаю и выложу
(22) На какой вариант делать?
На вариант, когда возвраты от покупателя попадают в приход, а возвраты поставщику в расход. Все со знаком плюс.
(25) Я выложил здесь 3 файла какой из трёх Вас надо переделать?
Понял, в принципе без разницы. Можно вот этот «ТОРГ-29 Любой склад Счета оптовые».
(27) Сделал и выложил, можешь тестировать, если что пиши исправим
Всем большое спасибо за плюсы которые поставили и которые ещё поставят
только подумали бухи что надо такой отчет — бумс и уже выложен!
огромное спасибо за заботу о нас! 😎
За всегда пожалуйста, и Вам спасибо за плюс и за то что Вы оценили труд проделанный программистом
Обработка полезная, просьба большая сделайте для УТ 8,1
(32) Хорошо у меня сейчас некоторые технические проблемы, как их решу рассмотрю Ваше предложение
а на каком релизе тестировалось? на Бухгалтерия предприятия, редакция 1.6 (1.6.22.4) не работает, отключаю в коде фильтр по складу, начинает заполнять.
А можно сделать такой же отчет для 8.2 Бухгалтерия предприятия?? Очень надо…. 🙁
Здравствуйте, а у Вас есть такая обработка, только для УТ 10.3 ТОРГ-29 по оптовому складу по себестоимости без НДС, с отбором по поставщику в приходной части. Буду признателен. Спасибо
tchsn, здравствуйте. в вашей обработке не удается получить результат в разрезе складов в УПП. в консоле запросов к запросу добавил
| ХозрасчетныйОстаткиИОбороты.КоличествоОборот,
| ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
| ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт
и всё заработало почему то…можно добавить одну строку из этих и начинает всё работать. однако, в предприятии уже не работает, выдает пустую таблицу если оставить выбор по складу. если убрать все «СУММА», то выборка производиться по складам… можете помочь разобраться?
сам справился… на дату последнего сообщения не обратил внимания. немного дописать пришлось для наших бухов. спасибо за отчет.=)
Почти то же самое, что и стандартная обработка от БП 2.0, только новые счета добавлены в список. Ну и фильтр подправлен. Но все равно спасибо, т.к. я сомневался, достаточно ли для такого отчета простого добавления счетов. Теперь вижу, что достаточно 🙂
Спасибо!
Помогло разобраться=)
Тоже эксперементировал со стандартным отчетом. Теперь вижу где была ошибка. Огромное спасибо. Помогло.
Подскажите: в отчете отображается одна сумма документа, а в документе, когда его открываешь, другая. В чем может быть причина? Что не так? Конфа типовая
То, что нужно! Спасибо!
Спасибо!
Спасибо!
работает «+»
Под 8.2 если конвертнуть — будет работать?
никто не пробовал?
да, под 8.2 все работает. Только открыть его в конфигураторе 8.2 и сконвертировать. специально ничего переписывать не надо
а под УТ такое будет?
для УТ:http://infostart.ru/public/86070/
Использую под 8.2 после конвертации все работает как надо, спасибо автору.
Благодарю !!!
Если кто-то ищет для УТ 10.3:https://infostart.ru/public/905359/