<?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='\
А как бы в полное наименование добавить объем в литрах?
(1) stsv12006, спасибо за рацпредложение! На самом деле очень важная вещь, так как в ЕГАИС все на одно лицо. Добавлю в течение пары дней.
(2) спасибо. Предложение №2, надо бы переносить производителя в стандратное поле производителя номенклатуры, а не только в «сведения об алкогольной продукции». Почему? Потому что при формировании «Отчет по расхождениям реквизитов ЕГАИС» данные о производителе читаются из поля производителя номенклатуры а не алкопродукции. Это не совсем правильно, потому что логично чтобы 1с читала их из «сведений алкогольной продукции», но заполнение стандартного поля лишним не будет.
(2) Предпложение №3http://infostart.ru/public/338984/ для розницы. Только заполнять при этом не только код и наименование, но и «вид лицензии» и признак «маркируемый». Декларант можно взять здесь http://www.fsrar.ru/files/DeclarantSetup.zip
(2) Предложение №4, 2 настройки(заполнять полное наименование, заполнять короткое».
(3) stsv12006, (5) stsv12006, добавил! Спасибо за пожелания.
(4) stsv12006, не совсем понятен сценарий использования справочника. При работе с ЕГАИС он заполняется автоматически.
..
Неплохо было бы добавить автоматическое создание недостающих контрагентов производителей и импортёров из справочника ЕГАИС, при их отсутствии в справочнике Контрагенты.
(8) modeus666, хорошее предложение. Добавлю в ближайшее время.
1с Розница 2.2.2.15 Базовая выдает ошибку при установке обработки:\r
Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
Что делать?
(10) 5404250, Воспользуйтесь меню Файл -> Открыть.
Есть возможность доработать обработку?
Необходимо подтянуть реквизиты,
Вид алк. продукции. объём в декалитрах, и крепость.
А как скоро добавите добавление контрагентов, а то декларацию сдавать уже на днях, а контрагенты не заполнены?
(13) modeus666, есть стандартная обработка в конфигурации
При нажатии на кнопку выходит ошибка «Индекс находится за границами массива».
Пробовал на 2.2.4.12 и на последней 2.2.4.30
(15) sancho86, проверено на многих релизах. Скорее всего что-то не так с данными в ИБ. Проверьте, пожалуйста, что у вас заполнен регистр сведений Соответствие номенклатуры ЕГАИС.
(16) заполнен. Может обработка не любит когда несколько егаисовских номенклатур с разными производителями сопоставлены с одной нашей? Не плохо бы предусмотреть такую ситуацию и не воспринимать это так фатально.
(17) sancho86, в таком случае должно работать . Возможно, у вас есть записи в регистре сведений Соответствие номенклатуры ЕГАИС, где не заполнена Алкогольная продукция. Если это так, то удалите их.
(18)Забыл отписаться что в этом и была проблема.
Плохо что обработка не умеет об этом говорить и пропускать такие записи.
Также очень не хватает предупреждалки о нескольких карточках номенклатуры ошибочно сопоставленных с одной АП.
Ведь в этом случае обработка тоже порядка не добавляет, хоть и обрабатывает всю остальную
Можно свои пять копеек? Хорошо бы по документу Остатков из ЕГАИС заполнить номенклатуру.. Вот ситуация — создали базу, она чистая, загрузили остатки, нажали кнопку и по остаткам документа появилась номенклатура и контрагенты… мечты… Однако попробую.
Всем доброго дня! При нажатии кнопки «Заполнить реквизиты» выдается ошибка: «Недопустимое значение параметра (параметр номер ‘1’). что можно с этим сделать? Конфигурация 2.2.5.22
(21) Протестировал на двух базах релиза 2.2.5.23 — работает. Попробуйте проверить содержимое регистра сведений Соответствие номенклатуры ЕГАИС на наличие пустых полей.
В классификаторе ЕГАИС бывает Краткое наименование = Полному наименованию. Для примера (100 зн.): Вино защищенного наименования места происхождения региона Кахетия красное полусладкое «Киндзмараули»
Исходя из ограничения на 100 символов в «кратком наименовании» мы не сможем добавить литраж и прочее, производителя для примера.
1. Может стоит использовать общепонятные сокращения как это использовано на марках и удалять из краткого названия не критичные данные? Для примера: «сух. кр. п/сл п/сх и т.д.» Выше указанный пример тогда станет таким (52 зн.): Вино региона Кахетия кр. п/сл. «Киндзмараули» 0,75л.
0,75
2. Объем в литрах к наименованию номенклатуры добавлять не только в краткое наименование но и в полное.
3. Добавлять в наименование производителя т.к. часто с разными алкокодами есть одинаковые наименования. Для примера: Вино столовое белое сухое «Ркацители» производится несколькими десятками фирм.
p.s. Предложения 2 и 3 добавлять не только в краткое наименование но и в полное.
на 2.2.6.22 перестало работать
Присоединяюсь к Олегу Пастухову (tulapc) — на 2.2.6.22 перестало работать
Вообще беда с обновлениями на 2.2.6…
Сейчас клиент как обычно все делал, работая с ТТН, при нажатии на кнопку <требуется оформить>, начала ругаться «в документе найдены несопоставленные элементы классификаторов ЕГАИС. сопоставить классификаторы?», нажимаешь сопоставить, а все сопоставлено, заходишь в ттн, а там на всех позициях горит красным <не сопоставлено>, вот думал обработка поможет….
(25)
Для Розницы 2.2.6.22 зарегистрирована ошибка:
Код ошибки: 00-00122112
Статус: Принята к исправлению Зарегистрирована: 06.07.2017
Описание:
Во входящих ТТН сопоставленная номенклатура отображается как несопоставленная, если в документе заполнен идентификатор упаковки, а в сопоставлении упаковка не указана.
Способ обхода:
В сопоставлении заполнить идентификатор упаковки
Вопрос разработчику у меня версия я думаю последняя розницу ( 2.2 (2.2.6.33)). На ней будет работать.??
Не работает для последней версии розницы 2.2 (2.2.7.32) на свежей платформе 1С:Предприятие 8.3 (8.3.11.2867) . Пишет «Таблица не найдена регистр соответствия орган ЕГАИС. Левое соединение …. » скриншот приложен. Просьба исправить. Уже заплатил чтобы скачать это приложение.
Здравствуйте, я тоже приобрел, но на 2.2.7.42 не работает. Пишет «Таблица не найдена регистр соответствия орган ЕГАИС. Левое соединение …. Как в предыдущем посте.
(29)
(28)
(24)
Вышла новая версия обработки 1.4 с поддержкой Розницы 2.2.6, 2.2.7, 2.2.8
Добрый день. Приобретал старую версию данное обработки, теперь после обновления она не работает, как можно получить актуальную версию?
(31) Можно скачать версию 1.4 на текущей странице.
Розница 2.2.9.20. Ошибка:
{ВнешняяОбработка.ЗаполнениеРеквизитовАП.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
ЗаполнитьЗначенияСвойств(НоменклатураОбъект, РеквизитыАлкогольнойПродукции,, СтрокаПереносимыхРеквизитов);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
Проблема была в регистре сведений Соответствие номенклатуры егаис. Все работает отлично. Полезная обработка.
Добрый день! Куплю за рубли.
Доброго времени суток! Работает ли данная обработка с последней рознице 2.2.13.12?!