Импорт из 1с предприятие

Статус
В этой теме нельзя размещать новые ответы.
3-й действенный способ(медленный или нет - не знаю, меня устраивает). подключение к базе через COM-объект

Сначала установка и настройка по мануалу Для просмотра ссылки Войди или Зарегистрируйся
У меня 1с версии 7.7, база на файлах, поэтому использую COM-объект V77.Application

PHP:
<?php
set_time_limit(300);
$app=new COM("V77.Application");
$res=$app->Initialize(
$app->RMTrade(),
'ENTERPRISE /D "C:\test_base" /N root /P password',  //  C:\test_base - путь к базе, root - юзер, password - пароль
'NO_SPLASH_SHOW' // экран заставки не нужен
) or die('cannot connect');
$ost=$app->CreateObject("Регистр.ОстаткиТМЦ") or die('cannot make registr'); // создаем объект Регистр.ОстаткиТМЦ(как раз то, что нужно ТС - товары, где кол-во больше нуля)
$ost->ВыбратьИтоги();
$i=0;
while($ost->ПолучитьИтог()==1){ // здесь, в цикле выводим все нужные значения
   ++$i;
   echo "".$ost->Номенклатура->Наименование."\r\n";
   echo "".$ost->Номенклатура->ПолнНаименование."\r\n";
   echo "Группа4: ".$ost->Номенклатура->Родитель->Родитель->Родитель->Родитель->Наименование."\r\n";
   echo "Группа3: ".$ost->Номенклатура->Родитель->Родитель->Родитель->Наименование."\r\n";
   echo "Группа2: ".$ost->Номенклатура->Родитель->Родитель->Наименование."\r\n";
   echo "Группа: ".$ost->Номенклатура->Родитель->Наименование."\r\n";
   echo "Код: ".$ost->Номенклатура->Код."\r\n";
   echo "Вес: ".$ost->Номенклатура->БазоваяЕдиница->Вес."\r\n";
   echo "На складе: ".$ost->Склад->Наименование."\r\n";
   echo "Кол-во: ".$ost->Количество."\r\n";
   echo "Цена: ".$ost->ЦенаПрод."\r\n\r\n";
   if($i==10)  // заглушка на вывод
      break;    // только 10 первых товаров
}
?>

мой вывод, для примера
Салфетки влажные чистящие в пластиковой тубе (100)
Салфетки влажные чистящие в пластиковой тубе (100 шт.)
Группа4:
Группа3: 1. Компьютерная техника
Группа2: 1.2. Мониторы
Группа: 1.2.3. Аксессуары для оргтехники
Код: 270222
Вес: 0
На складе: Склад номер раз
Кол-во: 4
Цена: 90

Цифровое устройство Flash 4GB USB 2.0 Kingston 109
Цифровое устройство Flash 4GB USB 2.0 Kingston Data Traveler 109
Группа4: 1. Компьютерная техника
Группа3: 1.4. Комплектующие к компьютерам
Группа2: 1.4.4. Модули памяти
Группа: 1.4.4.1. Flash
Код: И-004880
Вес: 0
На складе: Склад номер раз
Кол-во: 1
Цена: 250

Диск оптический DVD-R Verbatim 4.7 Gb
Диск оптический DVD-R Verbatim 4.7 Gb
Группа4: 1. Компьютерная техника
Группа3: 1.4. Комплектующие к компьютерам
Группа2: 1.4.8. CD
Группа: 1.4.8.5. CD / DVD Диски
Код: И-005877
Вес: 0
На складе: Склад номер раз
Кол-во: 38
Цена: 15

Диск оптический DVD+RW Verbatim 4.7 Gb 16x,
Диск оптический DVD+RW Verbatim 4.7 Gb 16x, Slim Case
Группа4: 1. Компьютерная техника
Группа3: 1.4. Комплектующие к компьютерам
Группа2: 1.4.8. CD
Группа: 1.4.8.5. CD / DVD Диски
Код: И-003804
Вес: 0
На складе: Склад номер раз
Кол-во: 4
Цена: 42

Конверт для CD пластик.
Конверт для CD пластиковый
Группа4: 1. Компьютерная техника
Группа3: 1.4. Комплектующие к компьютерам
Группа2: 1.4.8. CD
Группа: 1.4.8.5. CD / DVD Диски
Код: И-007346
Вес: 0
На складе: Склад номер раз
Кол-во: 45
Цена: 3.5
Вес везде по нулям, у нас он не нужен. Это просто вывод. Можно формировать в массив, потом упаковать в gz или другой архив с паролем и отправлять на сайт.

выгрузка 5000+ товаров выполняется примерно 1,5 минуты.

с 1с версии 8+ не работал, так что там могут быть другие методы/значения
 
4-ый способ передавать данные в php скрипт из 1С по протоколу http:// . DLL-либы для 1С 7.7. и 8.1. можно нагуглить, либо использовать существующие 1с-ые.

В 3-ем способе есть некая подковырка. Каждое COM подключение является отдельным пользователем системы 1С. Если у вас 1С на 3-х пользователей, то одновременном могут быть 3 COM подключения и ни одного пользователя в системе или, например 1 пользователь + 2 COM подключения и т.д.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху