<?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='\
А подскажите, как можно отобрать в заказ, заказы только определенной группы по мин. остатку?
Удобная вещь, но нужен бы отбор по поставщикам до полного счастья
В новой рознице не работает. Так как пропал тип значения реквизита — «значения свойств обьектов»
(3) Alex3691,
Спасибо за отзыв, постараюсь исправить в ближайшее время.
И если возможно сделайте разбивку по поставщикам…
(4) Здравствуйте, еще можно надеяться на обновление? Ваша обработка очень нужная вещь
(6) Alex441,
Да, обновление будет.
Что-то в новой рознице не позволяет допилить, или просто руки не доходят?
Очень бы пригодилось
не работает на новой рознице… к сожалению..
Здравствуйте, жаль не почитала сообщения перед покупкой (, в Розница, редакция 2.2 (2.2.5.26) действительно что-то изменилось, при попытке сформировать Заказ пишет: Значение не является значением объектного типа (Наименование), Alex441, может подправите, хорошая же штука…
Здравствуйте! Розница 2.0.3.4, платформа 8.3.9.1818
Все сделал как в инструкции, выходит следующее:
{ВнешняяОбработка.ЗаполнитьЗаказПоставщикуПоМинОстаткам.МодульОбъекта(115)}: Значение не является значением объектного типа (Наименование) СвойствоМинОстаток = ПолучитьПВХизСтроки(СвойствоМинЗапас.Наименование);
(12) Добрый день! возможно, тоже проблема в версии конфигурации. Постараюсь разобраться и ответить в течение завтрашнего дня.
есть результат? иначе качать нет смысла.
Нет, все без изменений…
1С:Предприятие 8.3 (8.3.9.2170)
Розница, редакция 2.2 (2.2.5.22)
Отчет не работает
ИТЕРАТОР для значения не определен!
(13) Все еще нужно! Жду от вас ответа!
Alex441 а как же настраивается минимальный остаток в версии 2.2.5.27 ?
Старая не работает с новыми изменениями написал свою все работает проверял на версии 2.2.5.27, если есть вопросы пишите zamok2012@mail.ru
Добрый день!
Работает ли обработка в релизе 2.2.4?
(20) Нет. Сроки выпуска версии для 2.2 пока уточнить не могу.
Добрый день, очень ждем обновления
(22) В течение недели появится для 2.2.
Доступна для скачивания версия обработки для Розница 2.1 — 2.2.
Подскажите пожалуйста — сделана разбивку по поставщикам???
(25) Есть заполнение с отбором по номенклатуре:
(25) То есть можно номенклатуру по поставщикам разбить и выбирать.
Господа, а как вывести колонку «Минимальный остаток» в справочник «Номенклатура», чтобы наглядно было видно, какие остатки проставлены, а какие нет? Розница 2.0.
(28) Можно через консоль СКД сделать отчет где будут колонки «Номенклатура», «Минимальный остаток Склад 1», «Минимальный остаток Склад 2» и т.д.
Подскажите чайнику, где в конструкторе запроса искать «Минимальный остаток Склад 1»?
(30) не найдете (.
А) свойство номенклатуры «Мин. остаток….» указываете в параметрах отчета и тогда видите Номенклатура и мин. остатки по одному складу.
Б) Делаете таблицу где по вертикали -Номенклатура, по горизонтали — Свойства. Тогда свойства «Мин. остаток» тоже можно засунуть в параметры с условием «В списке».
Выдает ошибку при открытии
Розница 2.2.7.32
(32) Уточните пожалуйста момент появления ошибки.
Можно ссылку на обработку для розницы 2.2. на grinlawyer@yandex.ru
Добрый день! Будет ли работать на 2.2.9.20?
(35) Да, будет. Проверено.
Здравствуйте, раз «заработала», может отправите тогда мне Рабочий вариант? А то купила, а так и не смогла даже посмотреть… мое сообщение по №11… firml@ya.ru
Спасибо!
Спасибо автору. Прекрасная и очень продуманная обработка.
Отбора по поставщикам конечно не хватает, но доработать не долго.
В том числе к ней будет не лишнем сделать обработку заполнения мин остатков.
Спасибо!
(39) постараюсь выбрать время для обработки заполнения мин. Остатков.
Как-то круто взлетели цены на ресурсе!
Как можно приобрести данную обработку за деньги, а не за SM?
зарабатывать и исправлять свои, как приобрести обращайтесь
Полез тут код посомтреть, а там……
(43), я добавлю в описание что текст программы 16+. На 18+ не дотягивает. Надеюсь, вас не сильно расстроило.
программирование — это только для взрослых)
(44)С чем связана ошибка?
Значение не является значением объектного типа (Наименование)
(46) Добрый день! пришлите пожалуйста скриншот ошибки и описание ваших действий, после которых возникает ошибка.
Если в окне ошибки есть кнопка «Подробно…», нажмите ее и пришлите скриншот или текст из окна «Подробно…». Можно в личку.
(47)
Текст
{ВнешняяОбработка.ЗаполнитьЗаказПоставщикуПоМинОстаткам.МодульОбъекта(115)}: Значение не является значением объектного типа (Наименование)
СвойствоМинОстаток = ПолучитьПВХизСтроки(СвойствоМинЗапас.Наименование);
Захожу в заказ поставщику — созадать — записываю документ(выбираю поставщика и дату ) — потом заполнить заказ пост. по миним. остаткам и ошибка
Скажите, а по какому он принципу заполнит количество товара в табличную чаcть?
(48) У вас не совпадают наименования:
Свойство номенклатуры «Минимальный остаток Магазин 1» и значение свойства склада «Свойство — минимальный остаток на складе» «Минимальный остаток Магазин 1» должны быть одинаковыми.
Еще раз пройдитесь по инструкции, проверьте наименования свойств и значений.
(48)
В Заказ попадают позиции, количество которых меньше установленного минимального остатка.
(50)а нужно количество для заказа я им сам буду прописывать? Хорошо я проверю свойства и вам отпишусь
(49)такую же ошибку выдает
(50)А что вместо Значения свойств объектов теперь указывать?
(49)
(11)Не подскажете вы решили данную ошибку?
(53) Вам просто нужно сделать все по инструкции. Пришлите мне в личные сообщения скриншоты из вашей программы как в инструкции.
(55) Все по инструкции, У меня нету «Значения свойств объектов» только число, дополнительное значение и т .д
Добрый день!
Подскажите, работает ли на Розница, редакция 2.2.11.24 ?
Тип значения реквизита — «значения свойств обьектов» в Дополнительных реквизитах отсутствует.
(57) Добрый день! Я не видел изменений механизма доп. реквизитов в 2.2.11.24 относительно ранее протестированных версий, но проверю и напишу ответ. К сожалению, отвечу не раньше среды.
(57) Возможно, ваш вопрос связан с тем, что в тексте публикации размещена инструкция для старой версии Розница 2.0. В архиве с обработкой для 2.2 идет инструкция, где все описано для Розницы 2.2.
Скажите как добавить свои условия отбора в обработку ?
обработка удобная. «+».
интересует расширение функционала.
есть «магазин 1»
есть «магазин 2»
есть «магазин 3»
есть организация (магазины 1+2+3, т.е. остаток итого по всем магазинам (складам))
(магазин 1+2+3) = остаток товаров «итого»
У товара есть минимальный остаток = 100. т.е. если товара осталось 20, то в заказе поставщику количество = 80.
Задача:
у товара должно быть :
1. организация. минимальный остаток = 20 (нижний порог остатка на складе. Товар попадает в заказ только если остаток ниже минимального)
2. организация. остаток для заказа. = 100.
3. Товар попадает в заказ только если на остатке меньше 20. т.е. если по факту остаток = 15, то в заказ должно попасть кол-во = 85.
4. и реализовать заказ с учетом итоговых остатков по предприятию. где фактический остаток для заказа, это суммарный остаток по всем магазинам, т.е. по организации
Здравствуйте, не получается скачать вашу обработку. Нет стартмани. Есть какие нибудь способы с вами связаться, что бы получить обработку?
(61) Задача очень актуальна ! Автор выйди на связь
(61) Это уже есть в нашей разработке «Помощник закупок».
https://infostart.ru/public/612868/
Посмотрите
День добрый! Все хорошо но для небольших магазинчиков, для крупных торговых точек толку будет мало так как нет функции формирования заявки по поставщикам. Получается что особой разницы между копированием из отчета по складу и копированием из отчета сформированного данной обработкой нет….. Добавьте разбивку по поставщикам и будет незаменимая обработка.