<?php // Полная загрузка сервисных книжек, создан 2024-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='\
Гуд !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Представляет интерес выделение областей загрузки данных.
Поддерживается ли «сохранение» настроенных шаблонов областей загрузки…?
Вот сохранение настроек не делал. Во-первых потому, что подразумевал импорт из файлов совершенно различной структуры.
Если для файлов будут установлены какие-то стандарты, то да — в этом случае будет смысл сделать сохранение настроек.
А надо!
Имеется в виду для каждого вида справочника запоминать определенные области?
По настоятельному намеку 😉 реализована возможность сохранения настроек формы (от 18.04.2007)
07.05.2007 Реализована возможность загружать подчиненные справочники (актуально для ТиС для России).
Т.е. если есть исходные данные — файл в формате экселя, а в нем наименования и штрих-коды, то в ТиС для России Штрих-Код — это подчиненный справочник, но их надо загрузить. Что сделать, чтобы все корректно отработало?- смотрите файл примера в архиве…
В данной версии реализовано конкретно для загрузки именно штрих-кода.
Название номенклатуры переношу без труда, а вот при попытке перенести «единицу измерение» выдаёт ошибку. Как везде проставить «шт»?
В архиве есть пример файла для типовой ТиС(релиз 944 для России) (Единица измерения должна быть без точки и для каждого эл-та). В этом же архиве есть файл настройки. Вы можете эти настройки загрузить, и увидите, как и какие нужно выделять области (если трудность в этом). Для полее поздних релизов все может быть гораздо проще.
А если есть Hidden строки — они как, переносятся? (с таким хитрым ленинским прищуром)
ахахах)
Не пробовал. Но по логике они должны загрузиться.
Номенклатуру перебрасываю, Спасибо. Может сбросите пример файла и файл настройки для переброски приходной накладной для типовой ТиС, может я не те области выделяю, но не получается перебросить…
2 led : извините, что не отвечал — отпуск. Надеюсь, разобрались уже?
Нет еще….
Вопрос у меня ЕЩЁ в добавок к первому. У меня уже созданы типы цен в справочнике: розничная, закупочная. При переносе из Exel : ввожу снова в «Справочники.Цены.ТипЦен» слово «розничная» и цена. На выходе получаю два типа цен «розничная», первая была уже и ещё создаётся точно такая же. А мне нужно чтобы цена была уже в существующем типе цен. Жду ответа..
2 led : Для ПН добавил образец (файл настройки) — фактически мало чем отличается от загрузки номенклатуры.
Есть еще один щепетильный момент (зависит от версии ТиС и локализаций) — в свежих релизах (для России), например, у Номенклатуры много подчиненных справочников. Т.е. загрузку справочников (в любом режиме) нужно синхронизировать с подчиненными справочниками (чтобы правильно все залилось). Если конфа как-то отличается от ТиС, то опять же могут появляться частные случаи.
Ваша ситуация получилась в строке 858 — Идентификатор был для укр.ТиС.
Для корректной заливки номенклатуры в режиме «Документы», включая подчиненные справочники, пляшите от этой строки. Данный момент реализован в режиме «Справочники», но опять же под «конкретный случай».
2-ой вопрос — это как раз то, о чем я написал выше. Заточите загрузку/обновление подчиненных справочников под свою ситуацию. Т.е. тут тупо создаются новые элементы.
Там не сложно. По времени на отладку только чуть времени уйдет…
не получается!!! очень нужно!!! подскажите
В чем собственно трабл? можно озвучить?
Понадобилось занести список основных средств в 1С, который имелся уже набитый в Excel. Решил воспользоваться этой обработкой. Запуская, выбираю организацию, выбираю файл Excel, импортировать — Справочник, вид — ОС, переходит в табличную часть — список значений. Сразу вопрос — как ему указать группу? Потому как пустую группу он не выберет, а выбирает только конкретное значение. Выбираю значение из группы, которая мне нужна, присваиваю Значение 3 переменных (инвентарный номер, наименование и полное наименование), нажимаю сформировать. Ничего не происходит — снизу ошибка (что то связанное с группой и Неверное значение).
Присоединяюсь к вопросу ArchiDevil 27.03.2008, такая же пертушка, хотя если бы работало была бы хорошая
данный сабж постараюсь реализовать к концу недели
Добавил для Бюджетников России (справочник ОС подчинен Фирме) пару закоментированных строк:
587 и 597. Если снять комментарии, заработает.
че то не получается, все равно не выбирает группу:-(
Группа не выбирается. Нужно выбрать один эл-т из нужной группы. Если группа пустая, создать эл-т.
Скажите пожалуйста, как правильно загрузить из Екселя данные в конфигурацию 1С «Бухгалтерский учет» в документ Начисление ЗП? При попытке загрузить, возникает ошибка «ФД= СоздатьОбъект(«Excel.Application»);
{\…….MYDOCA.KRAVCHUKРАБОЧИЙ СТОЛIMPORT_EXCELLIMPORT_EXCEL.ERT(577)}: Неудачная попытка создания объекта (Excel.Application)», что я могу сделать???…плиззз.. Причем создал документ Екселя с нужными полями…Я в отчаянии а руками вводить очень долго…
А указать области в табличной части получается?
Нет — та же ошибка…(((
А какая должна быть версия Офиса? У меня 2003 . Очень хотелось бы запустить эту обработку.. хелп…
Вы случайно не в терминале работаете?
Нет, у нас обычная 1с-ка с разделенным доступом(мало того я работаю с тестовой базой на локальной машине)….Ну очень нужна помощь, подскажите что то…
Это у вас эксель не может запуститься. Или он в реестре как-то хитро не прописался или в винде права у вас урезаны.
Надо пробовать разные варианты, пока из обработки не станет запускаться эксель при определении областей.
По-пробуйте зайти в винду с правами администратора (со своим сисадмином поработайте).
На крайняк переустановите офис заново.
у вас случайно не виста стоит?
Я есть системный администратор и администратор домена(нащет прав доступа) и соответственно всех компов в этом домене, у меня нормальная лицензионная винда со всеми обновлениями и офис тоже…(((( ХЕЛП МЕ
Я есть системный администратор и администратор домена(нащет прав доступа) и соответственно всех компов в этом домене, у меня нормальная лицензионная винда( НЕ ВИСТА ) со всеми обновлениями и офис тоже…(((( ХЕЛП МЕ
странная ситуация…
затрудняюсь что-то комментировать.
Эксель на машине то хоть вручную запускается?
Прежде чем жать кнопку «Сформировать», надо указывать области в таблице соответствий. Если на этом этапе будет выкидывать ошибку, покаж ее.
Ну выскакивает та же ошибка, — ну я же не могу вам скрин-шот прислать сюда…(((
Короче я не знаю что случилось, — но получилось открыть область…Щас попробую «Сформировать». Чесно — не знаю с чем это может быть связано, но я вроде ничего не менял.. Спасибо большое…
после того как нажимаю «сформировать» выдает сообщение- «Об_Рекв.Записать();
{C:PROGRAM FILES1CV771SBDEMOEXTFORMSIMPORT_EXCEL.ERT(818)}: Код не уникальный!» Что это озночает?
косяк это — лишний элемент пытается создать( надо лечить…
(40)+ это для подчиненного справочника такой баг есть (
и как это лечить этот лишний элемент?
корявку подправил. юзайте.
может я что-то не так делаю но пишет после сформировать
«Об_Рекв.Записать();
{C:PROGRAM FILES1CV771SBDEMOEXTFORMSIMPORT_EXCEL.ERT(829)}: Код не уникальный!»
что это за код?
видимо это у меня что то с номенклатурным номером, поэтому пишет код не уникальный… и еще вопрос… как сделать чтобы при загрузке например приходного ордера, из екселя в номенклатуре материалов записывался субсчет и ед. измерения, и как файл обраюотки отслеживает одинаковые наименования материалов или просто загружает новые и все?
Возможно, у вас нарушена нумерация в справочнике.
как сделать чтобы при загрузке например приходного ордера, из екселя в номенклатуре материалов записывался субсчет и ед. измерения, и как файл обраюотки отслеживает одинаковые наименования материалов или просто загружает новые и все?
Значит, эти же данные должны быть в вашем файле эксель (для каждой строки/(материала)). Если такое отсутствует, нужно дописать пару строк для конкретного вида справочника.
Если ставите вверху галку «Уникальность», то всегда создается новый элемент (даже при наличии таких же элементов).
Если без этой галки, то производится поиск по Наименованию (можно отслеживать еще по любому реквизиту с признаком «Сортировка»).
«Значит, эти же данные должны быть в вашем файле эксель (для каждой строки/(материала)). Если такое отсутствует, нужно дописать пару строк для конкретного вида справочника.» в екселе я прописываю для каждого материала субсчет, но при выборе области в документе «приходный ордер» нет строки субсчет, он есть только когла выбираешь «справочник» да и там если указываешь область субсчет он все равно не переносится в программу 1С….
для загрузки реквизита с типом «Счет» в Справочнике нужно дописать несколько строк в методе ЗагрузкаЭлемента.
а при загрузке документов поступления? если создается новое наименование материала? как внести номер счета?…хотя и в справочнике не поняла как это дописывать…..
Если в документе нет в таблличной части реквизита для указания счета приходования, то он либо в шапке, либо док по-умолчанию приходует ТМЦ в зависимости от его вида.
нет его в табличной части..например когда выбираешь документ поступление материалов…и приходует новое наименование без номера субсчета, а без номера счета(10.1) документы не проводятся…
Значит, для материала надо дописывать реквизит «СчетМатериала» (ну или какой он у вас там).
было бы здорово если бы сказали как прописать…
А я сказал. см.ниже:
22.05.2008
для загрузки реквизита с типом «Счет» в Справочнике нужно дописать несколько строк в методе ЗагрузкаЭлемента.
С текстового сделаешь поставлю плюсик, а так не плохо
выложите пожалуйста примерный файл экселя чтобы загружался ШТРИХКОД, наименование, цена, ед.изм номенклатуры
А что делать с группами при загрузки справочников?
(57) наличие наименований групп — нежелательное явление. загрузятся как элементы.
При загрузке приходных накладных, все загружается нормально, только ставкаНДС не прописывается, т.е. поле остается пустым..и в Номенклатуре тоже ставка не прописывается. Приходится потом ручками проходить Номенклатуру и проставлять ставкуНДС. С чем это может быть связано? И как ее побороть ? а то кучу времени приходится убивать.
у вас типовая конфигурация?
Да, типовая. Правда я там покопался, сделал несколько отчетов, но больше ничего не трогал. В каком направлении хотябы копать? Может быть где-то какая-то блокировка стоит? Или такого нет ?
блокировок нет. раз типовая, можно было бы и озвучить…
там комментарии есть по Торговле и Бух . посмотри в коде.
Я думаю, что ты просто не указываешь какой-то из реквизитов.
если твой реквизит есть подчиненным справочником, то смотри в самом низу таблицы
Что у тебя значит: «Пер» в столбце «ТипР» при выборе реквизитов ?
«Пер» — это переменная или что?:)
Почти угадал: ТипР=»Тип реквизита». Какие бывают типы?: справочники, документы, перечисления. 😉
Ок! Спасибо! Разобрался 🙂
Очень помогла обработка! спасибо!
Проблемка: при выборе области вылетает вот, что:
Не удалось выполнить макрос Document_Close.
Попробутей открыть Excel, далее Сервис->Параметры->
Безопасность->Безопасность макросов ->
Далее перейти на вкладку ‘Надежные источники’
и поставить галку ‘Доверять доступ к Visual Basic project’
Офис стоит 2007, и где там найти, что он просит не как не могу.
Если пойти по указанным ссылкам:
Сервис->Параметры->Безопасность->Безопасность макросов ->
для вас представляет проблему, то ничем не смогу вам помочь.
В Офис стоит 2007 нет Сервис->Параметры->Безопасность->Безопасность макросов ->
Все нашел
Кузьмич, Извиняюсь, проблема в офисе была, переустановил и все заработало, благодарю
Что бы это значило?
Об_Рекв.Записать();
{D:МПDBEXTFORMSIMPORT_EXCEL.ERT(829)}: Не выбран элемент справочника-хозяина! Элемент не может быть записан!
Видимо какой-то из реквизитов справочника у вас является подчиненным. Скорее всего это ед.измерения.
Здоровья и долгих лет те жызни!!!!!!
Спасибо за работу!
Вопрос: Как все-таки затягивать в доки
ед. измерения
в Справочнике формирует а в доки ……..EXTFORMSIMPORT_EXCEL.ERT(829)}: Не выбран элемент справочника-хозяина! Элемент не может быть записан!
nemoy, а где ты нашел настройки безопасности в 2007 офисе?
(77) 2 numiz: если б указал какая конфа, может и подсказал бы.
(79) Кузьмич Типовая Торговля 958
Будьте добры, подскажите молодому бухгалтеру-чайнику как эту прогу прикрутить к версии 7,7???
Файл — Открыть… (выбрать файл import_excel.ert). дальше по инструкции.
(82)+ находясь в программе 1с-Предприятие.
может для 1с Бухгалтерский учет для Украины есть? Вышлите плиз ksl1980@mail.ru
(84) с бух.учетом украины совместимо (я сам оттуда).
если будут нюансы смотрите в коде закомментированные строки. возможно где-то надо будет этот комментарий снять…
Многое видал по этой теме…но это самая универсальная…все работает в пару движений…создал док и excel-ку с разными типами данных и все идеально подгрузилось…тока в макросах поставил галку ‘Доверять доступ к VB’ иначе off…Спасибо автору и плюс…. 😉
Спасибо !
Спасибо за оценки и отзывы.
Вижу, что тема все еще остается актуальной. Поэтому ждите новый релиз (не за горами).
С уважением.
Помогите, пожалуйста!
Скачала программу, захожу в 1 С «Бухгалтерия»: 8 версия. Файл-открыть-import_excel.ert. Так? Открывается окно, в котором текст — полная абракадабра (((. Что я делаю не правильно?
(89)внешний отчет, обработка для 1С: Бухгалтерский учет 7.7; 1С: Оперативный учет 7.7; 1С: Расчет 7.7 — разные платфрмы Вам не подойдет
Отличная обработка НО! На типовой ТИС при попытке записать в справочник Номенклатура ни чего не происходит! Пробовал даже на файле примера. 🙁
(91) Сори, был косяк с безопастностью в Экселе. Но опять ругается на
Об_Рекв.Записать();
{C:IMPORT_EXCEL.ERT(436)}: Неверно задан код!
Объект.УстановитьАтрибут(Код_Реквизита,СокрЛП(Лист.Range(Обл).Value));
{G:1CV77IMPORT_EXCELLIMPORT_EXCEL.ERT(555)}: Неверное имя атрибута
Выдает такую ошибку, что делать?
скорее указывается реквизит, кот. на самом деле является подчиненным справочником. Попробуйте его не указывать. а его нужно указать в другом месте — внизу выводится список подчиненных справочников.
(92) У вас сбита нумерация в справочнике.
небольшой апдейт… но в принципе достаточный. 😉
Добрый день! Пользуюсь вашей обработкой с 2008г. огромное спасибо! Писала тут ранее комменты (50) мои. Сейчас понадобилось снова ваша помощь:
Подскажите, как можно загрузить материалы в документ «Бухгалтерская справка»? (002-003 счет) Так как в документе тип значения-Неопределенный, загрузить не получается. (((
(112) Какая конфигурация? я не помню такой документ в 7-ке. Надо взглянуть, прежде чем смогу ответить.
(113) Спасибо, что откликнулись)
Конфигурация Бухгалтерский учет 7.7 обычная . Бухгалтерская справка находится в журнале -Документы общего назначения.
При загрузке материалов, (нужно чтобы искались материалы в справочнике материалов, но в Бух. справке не получается и не загружаются материалы, если правильно поняла потому что тип значения субконто в документе «БухгалтерскаяСправка» -«Неопределенный»
Наверно как-то нужно назначить тип.. но я не программист, просто бухгалтер. Помогите пожалуйста,