<?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.3
Реально, выглядит очень круто!
Если кто не видел советую посмотреть доклад по УНФ 16
УНФ 1.6
Мне очень понравилась подача материала.
(1) orfos, (5) masterkio,
Да, идея и часть реализации взято именно из УНФ 1.6.
Они придумывают прикольные штуки.
Поэтому захотел их задумки реализовать и в БП3.
(3) mkostya, (4) the1,
Спасибо!
Выглядит симпотично! 🙂
Хочу такую для Розницы
Похож на UI/UX Яндекс.Маркета, и это здорово!
Будет ли работать в УТ 11?
(11) ako,
Нет. Это расширение для БП3.0
Планы по другим конфигурациям есть, но сроки не определены.
(12) Жаль! Самое то для УТ 11.
Хорошая идея. У меня все юзеры всегда хотят в одном окне видеть остатки по каждому складу. Я бы добавил на эту форму две колонки с остатками: «Остаток» и «Остаток общий по компании». А также снизу нужно добавить табличную часть со складам, где будут отображаться остатки по всем складам при активизации товара в основной таблице.
Полезное расширение. Если сильно не привязываться к существующим формам, то совместимо со многими конфигурациями.
Сделал расширение для УТ 11, чтобы как в УТ 10.3 отображались бы картинки и остатки в форме списка номенклатуры. Но расширение зависит от версии конфигурации.
(15) MaxS, Где можно посмотреть? Публикация есть?
А чем эта форма отличается от формы номенклатуры в УНФ? Ну кроме того. что ее вынесли в обработку?
* имеется в виду есть ли какие то дополнительные плюшки?
(17) _KaA,
Функциональность как в УНФ.
Новые плюшки пока не добавлял.
(17) _KaA
Очень
Мне нравится!
Разработка хорошая, но есть пару пожеланий:
1. Добавить на форму выбор организации, по которой показываются остатки
У нас в конфигурации несколько организаций, а склад для них один.
Когда открываем справочник Номенклатуры, то видим остатки по организации, которая установлена как основная.
Намного удобнее было бы выбрать организацию на форме, а не менять каждый раз признак «использовать как основную» в справочнике Организации.
2. Очень не хватает отбора документов по конкретной номенклатуре
Выбрал товар, нажал на кнопку и появился список документов, в которых фигурирует данный товар.
(22) OlegBog1971,
Спасибо за отзыв.
Первое пожелание хорошее — постараюсь реализовать.
По второму можно чуть больше и подробнее?
Что-то типа списка документов, в котором присутствует данная номенклатура? Кажется, это будет очень тяжелый отбор для списка. Отчет такой сделать проще.
по второму … предлагаю сделать так же как вы сделали в «Контрагенты (расширенная форма списка)», где есть кнопка в виде гиперссылки «Документы»
(12) +100 за такую же для УТ 11!!!
Друзья!
Я планирую начать заниматься расширением для УТ11.
Помочь автору с расширением .
Кто хочет помочь, то как бы вот.
(26) «помог». 🙂 Когда примерно ожидать расширения?
(27) hotey, спасибо!
Всем остальным кто помог тоже спасибо!
Сроки пока назвать не готов. Начать разрабатывать прототип планирую в эти выходные. А там как пойдёт.
Добавил в расширение управление отбором по организации.
Остатки по номенклатуре теперь можно смотреть в разрезе организаций.
Также, выбранная организация передается в документ, созданный через корзину.
Добавить в панель документ Требование-Накладная так же просто как и в расширение Контрагента?
СоздатьДокумент(«СчетНаОплатуПокупателю»);
В эту процедуру передаете имя документа, а дальше все работает автоматически.
Или есть особенность?
(30) webresurs,
Здесь немного сложнее.
Посмотрите как сделано в форме документа СчетНаОплатуПокупателю()
В расширении переопределено событие ПриСозданииНаСервере(), где загружается переданная номенклатура.
Также, для того, чтобы правильно установились счета учета и другие служебные реквизиты можно использовать код, который вызывается при интерактивном изменении номенклатуры в табличной части.
(31) не понял, но попробую.. )))
(28) Привет. Подскажи пожалуйста, ты еще не сделал расширение для УТ 11?
(33) kentman,
Я в процессе. Думаю, скоро будет готово.
(1) orfos, (11) ako, (16) AndyKKKK, (25) hotey, (33) kentman,
Расширение для УТ 11 готово!
На выходных планирую оформить публикацию и вначале следующей недели опубликовать.
(35) А для Розницы 2.2 ждать?
(36) brrart,
Пока не знаю.
Расширения для УТ11, ERP и КА2
Обновил расширение до версии 1.3
Исправлена ошибка — использовалась неправильная дата для определения остатков номенклатуры.
Обновил расширение.
В новой версии поддерживается работа с Бухгалтерия 3.0.44
Спасибо большущее за работу.
Очень нравится работать с корзиной, производительность повышается. Печалит только одно: нет возможности создать из Корзины счёт от Поставщика.
Зачастую сначала создаётся Счёт от Поставщика, уже на его основании — Поступление от Поставщика. Тем, кто ведёт в программе счета от Поставщиков, было бы очень удобно заполнять их из Корзины.
(41) wumka,
Спасибо за оценку! Очень приятно.
Про счет поставщику записал пожелание.
Здравствуйте. Очень полезное расширение! Но вот незадача, при обновлении с ERP 2.2.2.x на 2.2.3.x перестали открываться счета и создаваться заказы клиентов, пришлось удалить расширение. Прикладываю ошибку.
(43)
http://infostart.ru/public/517821/
Добрый день, Ярослав.
Эта ошибка исправлена в новой версии расширения.
Кстати, это публикация расширения для Бухгалтерии.
А Вам нужно —
А ЭТО РАСШИРЕНИЕ ДЛЯ КАКОЙ 1С?!?!?!? МОЖНО БЫЛО И НА НАЗВАНИЕ ОБ ЭТОМ НАПИСАТЬ!
Здравствуйте я купил вашу обработку но при подключение выдает вот такой ошибку
НоменклатураРасширенный (1.11): Критичная: Не найден объект ФункциональнаяОпция.ИспользоватьУчетНДС
(46) Добрый день, в ближайшее время выпущу обновление
(46) Добрый день.
https://infostart.ru/public/517821/
Подскажите, пожалуйста, Вашу версию конфигурации?
Вероятно речь идет об Управлении торговли?
Если это так, то лучше вести обсуждение в этой публикации —