Таблица номенклатура не выгружается ошибка 500

Выгрузка справочника номенклатуры является в большинстве случаев первоочередной задачей при интеграции Mobile SMARTS с внешней учетной системой.

Выгрузка необходима, чтобы иметь возможность на терминале идентифицировать товар (находить по сканированному штрихкоду, выбирать из списка, находить по наименованию). Если просто сканировать штрихкоды без идентификации товара, то у оператора не будет возможности прямо на месте узнать: известен ли этот штрихкод учетной системе? верно ли заведена карточка товара? верная ли цена?

Сидя у компьютера будет очень трудно понять, к чему относятся ошибки загрузки результатов в учетную систему. Ошибки надо выдавать прямо на ТСД еще во время сканирования. Иначе на большом экране  ПК будет список ошибок и будет написано “неизвестный штрихкод 1234567890”. А как понять, что это был за товар в торговом зале? Мы целые пол часа ходили сканировали собирали штрихкоды.

Кроме того, в каждой строке выгружаемых на терминал документов-заданий должен быть указан идентификатор товара и упаковки, которые обязаны соответствовать идентификаторам позиций выгруженного в базу Mobile SMARTS справочника номенклатуры.

В каждой учетной системе справочник номенклатуры имеет свою структуру. В общем случае из учетной системы может выгружаться не обязательно “номенклатура”, это могут быть “основные средства”, “инвентарные позиции”, “детали” и т.п. Любой большой список позиций, для которых требуется идентификация и быстрый поиск с занесением в строку документа. Перед написанием кода для выгрузки номенклатуры из учетной системы в Mobile SMARTS необходимо решить, как отобразится структура данных из учетной системы на объекты Mobile SMARTS.

Для «1С:Предприятия» выгрузку номенклатуры лучше всего проводить через методы TerminalConnector, которые не только принимают таблицы значений, но и поддерживают самые последние стандарты 1С для драйверов торгового оборудования.

Для остальных систем необходимо работать с ComConnector и объектами номенклатуры, которые в нем представлены.

Объектом, представляющим товар в Mobile SMARTS является Product [Товар], каждый товар содержит коллекцию упаковок Packing [Упаковка] (у товара должна быть хотя бы одна упаковка). У товара должна быть установлена базовая упаковка при помощи свойства BasePackingId [ИдБазовойУпаковки]. Базовая упаковка должна содержатся в коллекции упаковок Packings [Упаковки]. Базовая упаковка обычно имеет коэффициент (количество единиц UnitsQuantity [КоличествоБазовыхЕдиниц]) равный 1. Для остальных упаковок (например, коробки, палеты) UnitsQuantity [КоличествоБазовыхЕдиниц] определяет, сколько базовых упаковок содержится в данной (например, в коробке 10 шт, в палете 500 шт).

Если товар весовой и упаковок в действительности нет, при выгрузке в Mobile SMARTS должна быть создана одна упаковка (например, Килограммы (кг)) и она же назначена базовой.

Если различать упаковки товара нет необходимости (в учетной системе есть только сущность “Товар”), также нужно создать одну упаковку (например, “шт”) и назначить ее базовой.

В учетной системе могут быть различные сущности, связанные с товаром отношением “один ко многим” и идентифицируемые по штрихкоду, но не являющиеся упаковками. Например, серии и характеристики товара. Эти сущности в Mobile SMARTS также могут быть отражены как упаковки товара. (Примечание: можно использовать и дополнительные таблицы, которые определяются разработчиком конфигурации Mobile SMARTS, и связь с номенклатурой через ключ связи (Идентификатор товара), но при использовании упаковок уже будут работать все готовые механизмы по выбору номенклатуры, быстрому поиску по штрихкоду, записи в документ).

Объекты Product [Товар] и Packing [Упаковка] содержат как основные свойства, такие как Id [Ид], Name [Имя], Barcode [Штрихкод], Marking [Артикул], которые есть всегда в объектах данного типа, так и дополнительные, определяемые разработчиком конкретной конфигурации Mobile SMARTS. См. ниже Дополнительные поля.

Основные свойства и методы

Product [Товар]

Свойства

Наименование

Тип

Описание

Id [Ид]

Строка

Уникальный идентификатор товара.

Name [Имя]

Строка

Наименование товара.

Barcode [Штрихкод]

Строка

Основной штрихкод товара.

Определяет только товар, без конкретной упаковки. Поиск при сканировании на терминале в

первую очередь осуществляется по этому штрихкоду. Если товар найден и имеет несколько

упаковок — то пользователю будет предложен выбор из списка, в какой упаковке сканирован штрихкод. Штрихкодов может быть задано несколько, с помощью разделителя ‘|’.

Marking [Артикул]

Строка

Общий артикул товара (без указания конкретной упаковки). Если необходимо, чтобы один и тот же товар в разных упаковках имел разные артикулы

используйте такое же свойство у упаковки: Marking [Артикул].

BasePackingId

[ИдБазовойУпаковки]

Строка

Идентификатор основного типа упаковки. Упаковка с данным идентификатором должна быть в коллекции упаковок товара Packings [Упаковки]. Подробнее см. Packing [Упаковка].

Packings [Упаковки]

PackingCollection

[КоллекцияУпаковок]

Коллекция типов упаковок для товара. Подробнее см. Packing

[Упаковка].

Методы

Наименование

Параметры и возвращаемое значение

Описание

GetField [ПолучитьПоле]

Параметр: string (имя поля) Возвращаемое значение: object (значение поля)

Возвращает значение дополнительного поля. Если поля с переданным именем в объекте нет, вернется null.

Пример:

var  value  =

product.GetField(«ИмяПоля»);

значПоля =

товар.ПолучитьПоле(«ИмяПоля»);

SetField [УстановитьПоле]

Параметры: string (имя поля),

object (значение) Возвращаемое значение: нет

Устанавливает значение

дополнительного поля. Пример:

product.SetField(«ИмяПоля»,  value);

товар.УстановитьПоле(«ИмяПоля»,

значение);

Packing [Упаковка]


Свойства

Наименование

Тип

Описание

Id [Ид]

Строка

Уникальный идентификатор типа упаковки. Уникальность в

пределах упаковок одного товара.

Barcode [Штрихкод]

Строка

Штрихкод упаковки. Определяет товар в конкретной упаковке. При сканировании после поиска по основному штрихкоду товара, начинается поиск по этому штрихкоду. Если штрихкод найден, то выбирает товар сразу в конкретной упаковке. Кроме обычного задания в виде строки из цифр и букв, может задаваться в виде шаблона из комбинации символов и блоков {Template}. Такие блоки служат для вставки в штрихкод количества, срока годности и так далее. Подробнее про применение шаблонов штрихкодов см. тут. Штрихкодов и шаблонов может быть задано несколько, с помощью разделителя ‘|’.

Marking [Артикул]

Строка

Артикул товара в данной

упаковке. Заполняется, если для упаковок товара используются артикулы, отличные от артикула товара.

Name [Имя]

Строка

Наименование упаковки.

UnitsQuantity

[КоличествоБазовыхЕдиниц]

Число

Количество единиц товара в упаковке.

Методы

Наименование

Параметры и возвращаемое значение

Описание

GetField [ПолучитьПоле]

Параметр: string (имя поля) Возвращаемое значение: object (значение поля)

Возвращает значение дополнительного поля. Если поля с переданным именем в объекте нет, вернется null.

Пример:

var value  =
pack.GetField(«ИмяПоля»);
значПоля =
упаковка.ПолучитьПоле(«ИмяПоля»)

SetField [УстановитьПоле] Параметры: string (имя поля), object (значение)
Возвращаемое значение: нет
Устанавливает значение дополнительного поля.
Пример:
pack.SetField(«ИмяПоля», value);
упаковка.УстановитьПоле(«ИмяПоля»,
значение);

Дополнительные поля

При разработке конфигурации Mobile SMARTS могут быть определены произвольные дополнительные поля номенклатуры. Например, поле “Производитель”, в которое можно записывать при выгрузке номенклатуры наименование производителя товара или поле “Остаток”, в которое будет выгружаться количество данного товара на складе. Дополнительные поля задаются в Панеле управления Mobile SMARTS (см. Панель управления) в разделе Структура номенклатуры:

Заданные поля могут использоваться как для объектов Product [Товар], так и для Packing [Упаковка].

Для упаковки, например, могут выгружаться поля “Серия” и “Характеристика”, в которых будут наименование серии и характеристики товара (в случае, если упаковки определяют серии и характеристики товара).

Для выгрузки используются следующие функции объекта Cleverence.Warehouse.StorageConnector:

StorageConnector [Соединение]

Методы

Наименование

Параметры и возвращаемое значение

Описание

BeginUploadProducts

[НачатьПорционнуюВыгрузкуНом енклатуры]

Параметры: bool anyway,

bool overwriteExisting,

bool generateFullTextSearch

anyway

Начать новую выгрузку даже если какая-то другая выгрузка была открыта.

overwriteExisting

Флаг, задающий надо ли полностью заменить

номенклатуру в базе Mobile SMARTS или слить с существующей.

generateFullTextSearch

Флаг, задающий нужно ли генерировать индекс для полнотекстового поиска номенклатуры по наименованию.

Возвращаемое значение: нет

Функция открывает выгрузку номенклатуры в базу Mobile SMARTS.

UploadProducts

[ВыгрузитьПорциюНоменклатуры]

Параметры: ProductCollection products

products

Коллекция позиций номенклатуры, которые должны быть добавлены в текущую выгрузку.

Возвращаемое значение: нет

Выгружает номенклатуру в базу Mobile SMARTS в порционном режиме.

Учитывайте, что справочник номенклатуры реально изменится ТОЛЬКО после вызова EndUploadProducts [ЗавершитьПорционнуюВыгрузку Номенклатуры].

EndUploadProducts [ЗавершитьПорционнуюВыгрузку Номенклатуры]

Параметры: нет Возвращаемое значение: нет

Завершение порционной выгрузки номенклатуры. После этого вызова вся накопленная с помощью вызовов UploadProducts[ВыгрузитьПорци юНоменклатуры] номенклатура будет сохранена в базе Mobile SMARTS.

ResetUploadProducts

Параметры: нет

Сброс режима порционной

[СброситьПорционнуюВыгрузкуНоменклатуры]

Возвращаемое значение: нет

выгрузки. Имеет смысл использовать для серверной базы Mobile SMARTS. Все выгруженные, но не подтвержденные завершающим вызовом EndUploadProducts [ЗавершитьПорционнуюВыгрузкуНоменклатуры] товары не сохранятся в базе Mobile SMARTS на сервере. Если база не серверная, функция ничего не делает. Функцию нужно использовать, если выгрузка началась с BeginUploadProducts [НачатьПорционнуюВыгрузкуНоменклатуры] и далее в процессе выгрузки возникли ошибки. Функция сообщает серверу, что выгрузку нужно прервать (чтобы можно было впоследствии начать следующую выгрузку). Для несерверной базы прерывание выгрузки не требуется, данные в любом случае не сохранятся без вызова EndUploadProducts [ЗавершитьПорционнуюВыгрузкуНоменклатуры].

Выгрузка называется “порционной”, т.к. нет необходимости формировать весь список выгружаемых товаров сразу и передавать его в выгрузку целиком. Можно набрать некоторое количество товаров в коллекцию ProductCollection products, выполнить вызов UploadProducts [ВыгрузитьПорциюНоменклатуры], набрать еще и т.д. до обхода всех товаров, которые нужно выгрузить.

Общий алгоритм выгрузки номенклатуры. В общем виде алгоритм выгрузки выглядит следующим образом:

1.    Создаем объект Cleverence.Warehouse.StorageConnector и устанавливаем подключение к нужной базе Mobile SMARTS при помощи вызова SelectCurrentApp

[УстановитьПодключениеСБазойСМАРТС];

2.    Начинаем выгрузку с помощью вызова BeginUploadProducts

[НачатьПорционнуюВыгрузкуНоменклатуры];

3.    Создаем объект ProductCollection [КоллекцияТоваров];

4.    Получаем в учетной системе выборку записей, содержащую нужные поля для заполнения объектов

Product [Товар] и Packing [Упаковка];

5.    Обходим в цикле выборку записей, создаем объекты Product [Товар] и Packing [Упаковка], упаковки добавляем в коллекцию упаковок Packings [Упаковки] объекта Product, обязательно указываем базовую упаковку (BasePackingId [ИдБазовойУпаковки]), добавляем объекты Product [Товар] в коллекцию товаров productCollection;

6.    Если в коллекции товаров набралось достаточно много записей (например, 1000), вызываем выгрузку порции товаров UploadProducts [ВыгрузитьПорциюНоменклатуры]. Создаем новый объект

ProductCollection [КоллекцияТоваров], в который на следующих итерациях цикла будем накапливать товары;

7.    После завершения цикла, если в коллекции товаров есть записи, вызываем UploadProducts [ВыгрузитьПорциюНоменклатуры];

8.    Завершаем выгрузку, вызвав EndUploadProducts [ЗавершитьПорционнуюВыгрузкуНоменклатуры].

Пример

Допустим в результате некоторого отбора из различных таблиц в учетной системе мы получили выборку со следующими полями:

itemId (Идентификатор позиции номенклатуры)

name (наименование позиции номенклатуры)

marking (артикул)

unit (наименование единицы измерения, “шт”, “кг” и т.д.)

factor (коэффициент пересчета в базовые для данной единицы)

barcode (штрихкод)

descr (наименование характеристики номенклатуры)

qty (количество на складе)

price (цена)


В результате выборки получаем:

itemId

name

marking

unit

factor

barcode

descrl

qty

price

0001213

Джемпер

Д-0920

шт

1

0001213

Джемпер

Д-0920

шт

1

2500001780331

26/92, красный

5

359,00

0001213

Джемпер

Д-0920

шт

1

2500001780263

24/80, красный

7

359,00

0001213

Джемпер

Д-0920

шт

1

2500001780347

26/92, голубой

1

400,00

00000049

Бренди

шт

1

2200007761321

10

1200,00

00000049

Бренди

упак

6

2200007761321

7000,00

00000097

Крупа

Арт-8900

кг

1

10055

20

51,00

00000070

Печенье

Арт-4444

упак

1

2000020577788

8

62,00

00000070

Печенье

Арт-4444

упак

1

4607038271677

8

62,00

В выборке для одного и того же товара может быть несколько строк, т.к. может быть несколько характеристик, упаковок или штрихкодов одного товара.

Выгрузка:

C#:

	var connector  = new Cleverence.Warehouse.StorageConnector(); // Создаем экземпляр  объекта  соединения   
// Выполняем подключение  к базе Mobile  SMARTS
connector.SelectCurrentApp("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5"); try
{
connector.BeginUploadProducts(true, true, true); //Начинаем выгрузку, в параметрах указываем, что
//справочник перезаписываем и  создаем  индекс для  поиска по  наименованию
var products = new Cleverence.Warehouse.ProductCollection(); //Создаем коллекцию для накопления
//выгружаемых товаров
SqlCommand command  = new SqlCommand();
command.CommandText = query; //Запрос к  БД для  чтения данных
  using (SqlConnection connection  = new SqlConnection(connectionString)) //Устанавливаем  соединение  с  //БД, из которой будем читать данные
{
connection.Open(); command.Connection = connection;
SqlDataReader reader  = command.ExecuteReader(); while (reader.Read()) //Читаем данные
{
string itemId  = reader.GetString(0); string name = reader.GetString(1); string marking  = reader.GetString(2); string unit = reader.GetString(3); decimal factor  = reader.GetDecimal(4); string barcode  = reader.GetString(5); string descr = reader.GetString(6); decimal qty = reader.GetDecimal(7); decimal price  = reader.GetDecimal(8);
//Получили все поля одной записи
Cleverence.Warehouse.Product uploadProduct  = products.FindById(itemId); //Ищем товар по id  //среди набранных к выгрузке товаров
if(uploadProduct == null)
{
//Если  товара  нет,  нужно  будет  создать  новый объект и  добавить  его  в коллекцию.
//Перед этим проверяем, не набрали  ли  мы уже достаточное количество товаров. if(products.Count >= 1000)
{
//Если  набрали  достаточно, выгружаем порцию товаров и  создаем  новый объект коллекции,  чтобы
//набирать  товары  дальше  в пустую  коллекцию. сonnector.UploadProducts(products);
products = new Cleverence.Warehouse.ProductCollection();
}
uploadProduct  = new Cleverence.Warehouse.Product();
uploadProduct.Id = itemId; uploadProduct.Name = name; uploadProduct.Marking = marking;
products.Add(uploadProduct);
}
}
Cleverence.Warehouse.Packing uploadPacking  = null;
//Проверяем, если  упаковка с той же единицей, характеристикой  и ценой есть в упаковках  данного
//товара,  добавлять новую упаковку  не  нужно, нужно будет только добавить  в эту  же  упаковку  //штрихкод. foreach(Cleverence.Warehouse.Packing pack  in uploadProduct.Packings)
{
if(pack.Name == unit && pack.GetField("Характеристика") ==  descr && pack.GetField("Цена") == price)
{
uploadPacking  = pack; break;
}
}
if(uploadPacking == null)
{
//Такой упаковки нет, создаем новую
uploadPacking  = new Cleverence.Warehouse.Packing();
//Для  упаковки  нужно использовать  уникальный идентификатор  в пределах упаковок  данного  товара string packId  = unit;
if(uploadProduct.Packings.FindById(unit) != null)
{
//Оказалось, что упаковка с Ид. равным  единице  измерения уже есть  (могли  быть  разные
//характеристики товара с одной единицей).
//Генерируем  новый  Ид.  вида  [unit]_[номер]  (например,  "шт_1",  "шт_2"  и  т.д.) int cnt = 0;
foreach (Packing p  in uploadProduct.Packings) if (p.Id.StartsWith(unit + "_"))
cnt++;
packId = String.Format("{0}_{1}", unit, cnt + 1);
}
uploadPacking.Id = packId;
uploadPacking.Name = unit; //Имя равно единице измерения uploadPacking.UnitsQuantity = factor; //Коэффициент пересчета в базовые единицы uploadPacking.Barcode = barcode; //Штрихкод uploadPacking.SetField("Характеристика", descr); //Устанавливаем доп. поля uploadPacking.SetField("КоличествоНаСкладе", qty); uploadPacking.SetField("Цена", price);
  if(factor  == 1.0 && uploadProduct.BasePackingId == null)
{
//Если  коэффициент  равен  1 и базовую упаковку еще не установили, считаем  данную упаковку //базовой. uploadProduct.BasePackingId = packId;
}
  uploadProduct.Packings.Add(uploadPacking); //Добавляем  упаковку в  коллекцию упаковок товара
}
else
{
//Если  такая упаковка уже есть, добавляем  к ней новый  штрихкод  (если он не пустой) if(!string.IsNullOrEmpty(barcode))
uploadPacking.Barcode = uploadPacking.Barcode + "|"  + barcode;
}
  }
  if(products.Count > 0)
{
//Если  остались невыгруженные  товары,  их нужно  выгрузить сonnector.UploadProducts(products);
}
  сonnector.EndUploadProducts(); //Завершаем  выгрузку товаров.
}
catch
{
// При выгрузке  возникла ошибка,  обрабатываем исключение  и сбрасываем начавшуюся  выгрузку.
// В реальном  приложении  нужна  отдельная обработка исключений,  связанных  с чтением  данных  из базы SQL  // и с выгрузкой в  Mobile SMARTS.
connector.ResetUploadProducts();
}

«1С:Предприятие 8»:

	connector  = новый  COMОбъект("Cleverence.Warehouse.StorageConnector"); //  Создаем экземпляр  объекта 
//соединения Попытка
connector.УстановитьПодключениеСБазойСМАРТС("михаил-пк:10501/d7c15f54-fd05-4811-8f6d-c7c7003887c5");
//Выполняем подключение
  Запрос = Новый Запрос(ТекстЗапроса);
ТаблицаТоваров  = Запрос.Выполнить().Выгрузить(); //Выполняем запрос
  connector.BeginUploadProducts(Истина, Истина, Истина); //Начинаем  выгрузку,  в  параметрах  указываем, //что справочник перезаписываем и создаем индекс для поиска по наименованию
products = новый COMОбъект("Cleverence.Warehouse.ProductCollection"); //Создаем коллекцию  для //накопления выгружаемых товаров
  Для Каждого СтрокаТаблицы из ТаблицаТоваров Цикл
ИдНоменклатуры  = XMLСтрока(СтрокаТаблицы.НоменклатураСсылка); //В  качестве идентификатора  товара  //будем выгружать  Guid  позиции  номенклатуры
Наименование = СтрокаТаблицы.НоменклатураНаименование; Артикул =  СтрокаТаблицы.Артикул;
ЕдиницаИзмерения =  СтрокаТаблицы.УпаковкаНаименование; Коэффициент =  СтрокаТаблицы.УпаковкаКоэффициент; Штрихкод =  СтрокаТаблицы.Штрихкод;
Характеристика  = СтрокаТаблицы.ХарактеристикаНаименование; Остаток =  СтрокаТаблицы.ОстатокНаСкладе;
Цена =  СтрокаТаблицы.Цена;
  uploadProduct  = products.НайтиПоИд(ИдНоменклатуры); //Ищем  товар по id  среди набранных  к выгрузке
//товаров
Если uploadProduct  = Неопределено  Тогда
//Если товара  нет, нужно будет создать новый объект и  добавить его в коллекцию.
//Перед этим проверяем, не набрали  ли  мы уже достаточное количество товаров.
Если products.Количество >= 1000 Тогда
//Если  набрали  достаточно, выгружаем порцию товаров и  создаем  новый объект коллекции,  чтобы
//набирать  товары  дальше  в пустую  коллекцию. сonnector.ВыгрузитьПорциюНоменклатуры(products);
products = новый COMОбъект("Cleverence.Warehouse.ProductCollection"); КонецЕсли;

  uploadProduct  = новый COMОбъект("Cleverence.Warehouse.Product");

uploadProduct.Ид = ИдНоменклатуры; 
uploadProduct.Имя = Наименование; 
uploadProduct.Артикул = Артикул;
products.Добавить(uploadProduct); КонецЕсли;
  uploadPacking  = Неопределено;
//Проверяем, если  упаковка с той же единицей, характеристикой  и ценой есть в упаковках  данного
//товара,  добавлять новую упаковку  не  нужно, нужно будет только добавить  в эту  же  упаковку  //штрихкод.
Для Инд=0  По uploadProduct.Упаковки.Количество-1  Цикл pack =  uploadProduct.Упаковки.Элемент(Инд);
Если pack.Name = unit И pack.ПолучитьПоле("Характеристика") ==  Характеристика И pack.ПолучитьПоле("Цена") == Цена Тогда
uploadPacking = pack; Прервать;
КонецЕсли; КонецЦикла;
  Если uploadPacking  = Неопределено  Тогда
//Такой упаковки нет, создаем  новую
uploadPacking  = новый COMОбъект(“Cleverence.Warehouse.Packing”);
//Для  упаковки  нужно использовать  уникальный идентификатор  в пределах упаковок  данного  товара packId  = ЕдиницаИзмерения;
Если uploadProduct.Упаковки.НайтиПоИд(ЕдиницаИзмерения) <>  Неопределено Тогда
//Оказалось, что упаковка с Ид. равным  единице  измерения уже есть  (могли  быть  разные
//характеристики товара с одной единицей).
//Генерируем  новый  Ид.  вида  [ЕдиницаИзмерения]_[номер]  (например,  "шт_1",  "шт_2"  и  т.д.) Сч = 0;
Для Инд=0 По uploadProduct.Упаковки.Количество-1  Цикл p = uploadProduct.Упаковки.Элемент(Инд);
Если (p.Ид.СтрНачинаетсяС(ЕдиницаИзмерения  + "_"))  Тогда Сч++;
КонецЕсли; КонецЦикла;
packId = ЕдиницаИзмерения + “_” +  (Сч  + 1); КонецЕсли;
  uploadPacking.Ид = packId;
uploadPacking.Имя = ЕдиницаИзмерения; //Имя равно единице  измерения uploadPacking.КоличествоБазовыхЕдиниц = Коэффициент; //Коэффициент  пересчета в  базовые  единицы uploadPacking.Штрихкод = Штрихкод;
uploadPacking.УстановитьПоле("Характеристика",  Характеристика); //Устанавливаем доп. поля uploadPacking.УстановитьПоле("КоличествоНаСкладе", Остаток); uploadPacking.УстановитьПоле("Цена", Цена);
  Если Коэффициент = 1.0 И uploadProduct.ИдБазовойУпаковки = Неопределено Тогда
//Если  коэффициент  равен  1 и базовую упаковку еще не установили, считаем  данную упаковку //базовой. uploadProduct.ИдБазовойУпаковки = packId;
КонецЕсли;
  uploadProduct.Упаковки.Добавить(uploadPacking); //Добавляем  упаковку  в  коллекцию  упаковок  //товара Иначе
//Если  такая упаковка уже есть, добавляем  к ней новый  штрихкод  (если он не пустой)
Если ЗначениеЗаполнено(Штрихкод) Тогда
uploadPacking.Штрихкод  = uploadPacking.Штрихкод + "|" +  Штрихкод; КонецЕсли;
КонецЕсли; КонецЦикла;
  Если products.Количество > 0 Тогда
 //Если  остались невыгруженные  товары,  их нужно  выгрузить сonnector.ВыгрузитьПорциюНоменклатуры(products);
КонецЕсли;
  сonnector.EndUploadProducts (); //Завершаем выгрузку товаров.
  Исключение
// При  выгрузке возникли  ошибки, обрабатываем исключение сonnector.СброситьПорционнуюВыгрузкуНоменклатуры();
КонецПопытки;

Дата обновления: 28.06.2022

Ошибка возникает как при попытке отправить приглашение контрагенту, так и при попытке принять его от контрагента. 

Полный текст ошибки:

 Выполнение операции: Получение ЭД.

{ОбщийМодуль.ОбменСКонтрагентамиВнутренний.Модуль(3262)}: Ошибка при вызове метода контекста (Получить)


   Соединение.Получить(АдресРесурса, ИмяФайлаРезультата, Заголовки);


по причине:


Ошибка при выполнении файловой операции  ‘AcceptContact?id=2AED83AF80B-87F3-4A2C-950D-E7CCE2B6CE34’


по причине:


Ошибка работы с Интернет:  внутренняя ошибка сервера (500). {


«Details»: «Неизвестная ошибка»,


«AdditionalData»: «Неизвестная ошибка»,


«ApiErrorCode»: 0,


«CommonDescription»: «Неизвестная ошибка сервиса. Попробуйте позже или обратитесь в службу поддержки»,


«StatusCode»: 500


}


по причине:


Ошибка работы с Интернет:  внутренняя ошибка сервера (500) 

Для решения проблемы необходимо:
1. В разделе «Настройки ЭДО» пометить настройку на удаление.
2. Зайти в Профиль настроек ЭДО (для 1С 8.3 Администрирование — Обмен электронными документами — Обмен с контрагентами — Профили настроек ЭДО — открыть «Профиль» — Ещё — Начальная дата запроса данных у оператора; для 1С 8.2 Сервис — Обмен электронными документами — Профили настроек ЭДО — открыть «Профиль» — Все действия — Начальная дата запроса данных у оператора) и очистить поле для даты запроса данных по приглашениям, см. Рис 1.


Рис. 1

3. Вернуться в раздел «Настройки ЭДО» и нажать на кнопку «Обновить статусы подключения» — статус подключения настройки изменится на «Присоединен».

Мы описывали как настраивать веб-публикацию на IIS в инструкции.

Но после настройки веб-публикации при подключении к базе может возникать ошибка “Ошибка HTTP 500.0 — Internal Server Error”.

Если модуль был установлен с 32-битного клиента, то требуется это указать в пуле приложений. Для этого мы делаем следующую настройку:

  • Заходим в Панель управления → Администрирование → Диспетчер служб IIS.
  • Выбираем Пулы приложения которые задействованы в веб-публикации, в нашем случае DefaultAppPool.
  • Нажимаем ПКМ Дополнительные параметры.
  • В строке Разрешены 32-разрядные приложения мы указываем True как на Рисунке 1.
  • Нажимаем ОК.

главная страница

Рисунок 1 — Дополнительные параметры пула приложений

Если не сработало, есть следующие возможные решения:

  1. Убедитесь, что разрешения NTFS для файла web.config верны и обеспечивают доступ к учетной записи компьютера веб-сервера. Заходим в директорию, где размещена публикация (по умолчанию — C:inetpubwwwrootИМЯ_БАЗЫ). Нажимаем ПКМ на web.config → Свойства → Безопасность. Убедитесь в том, что у группы IIS_USERS есть права на чтение, выполнение, запись и изменение файла. Если нет — нажмите кнопку Изменить, в появившемся окне Добавить → Дополнительно и найдите в списке IIS_USERS. Добавьте эту группу и назначьте соответствующие права.
  2. Проверьте журналы событий, чтобы посмотреть, была ли зафиксирована какая-либо дополнительная информация. Открываем Выполнить (ПКМ на кнопку меню пуск или сочетанием клавиш Win+R), вводим “eventvwr.msc”, нажимаем Enter. Возможно, журнал даст подсказку какой компонент может сбоить.
  3. Переустановите компонент IIS на сервере. В диспетчере серверов удалите роль Веб-сервера IIS, перезагрузите сервер, а затем установите заново через оснастку Добавить роли и компоненты.
  4. Установите компонент расширения .NET, если запрос сопоставлен управляемому обработчику.

В Windows Server 2012 и младше: заходим в Диспетчер серверов → Добавить роли и компоненты → Роли сервера → Веб-сервер (IIS) → Веб-сервер → Разработка приложений → Расширяемость .NET. Далее идём далее по указаниям системы.

После применения настроек, мы можем подключаться к настроенной веб-публикации без ошибок.

Нужна готовая настройка веб-доступа к 1С? Попробуйте наш сервер 1С в аренду, в услугу включены все настройки и обслуживание.



Что это?
Ошибка 500 – это то, что препятствует открытию той или иной страницы сайта. Вместо ожидаемой, например, статьи, перед пользователем возникает фраза Internal Server Error 500. Она сообщает о проблемах ресурса с подключением к серверу.



Как исправить?
Устранить ошибку можно как со стороны пользователя сайта, так и его владельца. В первом случае способы не гарантируют на 100 %, что Error 500 моментально пропадает, но попробовать стоит. Больше возможностей в этом плане у собственника ресурса.

В статье рассказывается:

  1. Что значит код ошибки 500
  2. Основные причины возникновения ошибки 500
  3. Текст и внешний вид ошибки
  4. Советы по исправлению ошибки 500 для пользователя
  5. Рекомендации по исправлению ошибки 500 для владельца сайта
  6. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.

    Бесплатно от Geekbrains

Значение 500 является кодом положения протокола НТТР. Из-за чего появляется ошибка 500? Происходит это потому, что случилась неисправность конфигурации сервера или пришёл сигнал о том, что компонент отказал. Когда возникает эта ошибка, программное обеспечение продолжает работать, но из-за серьёзных внутренних нарушений запросы обрабатываются некорректно.

Ошибка 500 значит, что пользовательский запрос неправильно переводится в действие. По этой причине возникают проблемы во время работы с сайтом. Нужно как можно скорее понять, из-за чего именно появилась ошибка, и устранить её.

Что значит код ошибки 500

Что значит код ошибки 500

Оповещение о том, что произошла ошибка 500, имеет текстовое описание. Наиболее частые варианты:

  • Ошибка 500.
  • Внутренняя ошибка сервера 500.
  • Ошибка 500 Internal Server Error.
  • Временная ошибка (500).
  • Внутренняя ошибка сервера.
  • 500 ошибка сервера.
  • Внутренняя ошибка HTTP 500.
  • Произошла непредвиденная ошибка.
  • HTTP status 500 internal server error (перевод ― HTTP статус 500 внутренняя ошибка сервера).

Скачать файл

Визуальный вид и текстовое сопровождение ошибки могут отличаться у каждого пользователя, потому что версии страницы могут быть разными.

Вероятность столкнуться с такой неприятностью есть при работе с любым веб-ресурсом, браузером или устройством. Главное, понимать, что эта ошибка, как и другие, которые начинаются на цифру 5, является промахом разработчиков или администратора сайта и вашей вины в этом нет.

Основные причины возникновения ошибки 500

Мы уже выяснили, что данная ошибка появляется, когда сервер не смог обработать запрос, совершённый пользователем, в результате чего человек не может открыть ресурс, а поисковые системы с ним взаимодействовать. Проблему обязательно нужно устранить, но для начала следует найти причину её появления, среди которых может быть:

  • Неправильный синтаксис файла .htaccess – это файл, в котором можно менять настройки при работе с веб-сервером Apache и корректировать его функционирование (управлять различными перенаправлениями, правами доступа к данным, опциями PHP, задавать собственные страницы ошибок и прочее).

Основные причины возникновения ошибки 500

Основные причины возникновения ошибки 500
  • Неполадки в сценариях сайта, которые отвечают за дополнительные возможности и визуальные эффекты.
  • Недостаточно оперативной памяти, чтобы выполнить скрипт.
  • Ошибки в коде CMS, системы управления наполнением ресурса. В большинстве случаев (80 %) причиной являются конфликтующие плагины.

Текст и внешний вид ошибки

Вы узнали, что означает ошибка 500, теперь пришло время перейти к более подробному разбору возможных причин её появления. Иногда разобраться с этим вопросом можно и без помощи специалиста.

Вид ошибки может отличаться. Это зависит от того, из-за чего она возникла. Наиболее распространенные причины можно узнать по тому, как отображается ошибка и какой текст её сопровождает.

Internal Server Error

Данный вид ошибки – сигнал о том, что есть проблемы с файлом .htaccess (к примеру, он был неправильно настроен). Чтобы понять, действительно ли дело в .htaccess, добавьте к его названию в конце цифру один. Сделать это поможет FTP-клиент (например, FileZilla) или файловый менеджер на вашем хостинге (в Timeweb есть подобный, и он очень простой в использовании). После этой манипуляции попробуйте заново открыть сайт. Если ошибка не выскочила, значит, вы нашли, из-за чего она появилась.

pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2022

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

pdf иконка

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

Уже скачали 18515
pdf иконка

HTTP ERROR 500 или пустая страница

Подобное означает, что причина в сценариях сайта. Но надо уточнить насчёт пустой страницы, что это не только признак внутренней ошибки 500 в сервере.

Предлагаем детальнее разобраться с пустой страницей, обращаясь к инструментам разработчика. Через браузерную панель пользователь получает уведомления об ошибках и другую информацию (время запуска сайта, html-элементы и прочее).

Каким образом открывается панель разработчика? Для начала нажмите F12 (это подходит для большинства браузеров на Windows). Если вы пользуетесь Google Chrome на macOS, то вам нужно использовать сочетание кнопок Cmd+Opt+J. В случае Safari на macOS нужна комбинация Cmd+Opt+C, но перед тем, как её нажать, включите «Меню разработки» в разделе «Настройки» -> «Продвинутые».

Есть ещё один способ открыть панель разработчика: кликнуть правой кнопкой мыши в любом месте сайта и в открывшемся контекстном меню выбрать «Посмотреть код». После этого откройте вкладку «Сеть» (или Network) и посмотрите, какое значение указано в строке «Статус». Если дело в ошибке 500, то будет стоять эта цифра.

Советы по исправлению ошибки 500 для пользователя

Для начала расскажем, на что лучше не тратить своё время. Данная ошибка связана с сервером, поэтому делать что-то со стороны клиента (перезагружать роутер, менять браузер, переустанавливать программу) смысла нет.

  • Заново откройте сайт

Ошибка 500 может появиться не только из-за серьёзных проблем с сервером, но и по причине временной перегрузки сайта. Перезагрузить страницу можно с помощью клавиш: на ПК — F5, ноутбуке — Fn + F5, на устройствах от Apple — Cmd + R.

Ошибка 400: причины и способы устранения

Читайте также

  • Очистите кэш и cookies браузера

Кэш и cookies нужны для того, чтобы при повторном открытии страницы не нужно было заново прогружать все данные, то есть они сохраняют информацию с первого посещения, за счёт чего в следующий раз сайт открывается быстрее.

Советы по исправлению ошибки 500 для пользователя

Советы по исправлению ошибки 500 для пользователя

Если на сервере была ошибка, то даже если её уже устранили, из-за кэша может открываться старая версия страницы с этой неполадкой.

Если ничего из этого вам не помогло, то остаётся ждать, когда владелец решит эту проблему, и вернуться на сайт позже.

  • Обратитесь к владельцу сайта

Когда, например, в интернет-магазине часто всплывает ошибка 500, можно связаться с его владельцем. Информация с контактными данными, как правило, находится либо внизу страницы, либо в разделе «Контакты».

Чаще всего информация закрытая, но есть форма для обратной связи. Однако не факт, что вы получите ответ. Если нужные данные вы не нашли или ответа так и нет, можно воспользоваться такими вариантами: через Whois, хостинг-провайдера или регистратора домена, с помощью сторонних сервисов.

Рекомендации по исправлению ошибки 500 для владельца сайта

Стоит учитывать большое количество факторов: движок, на котором работает ваш сайт, на каком он хостинге расположен, какие недавние изменения были внесены. Как бы там ни было, зачастую универсальные методы убирают ошибку 500. Желательно попробовать все варианты, которые подойдут под специфику вашего ресурса.

  • Устраните неполадки в синтаксисе файла .htaccess

Выше мы уже рассказывали, как понять, в нём ошибка или нет. Попробуйте изменить имя документа, к примеру, на .htaccess_, и заново открыть сайт. Если ошибка не вылезла, значит, дело всё-таки в .htaccess. Проанализируйте синтаксис документа на наличие лишних символов или опечаток. Если вы сохраняли прошлую версию настроек, то надо попробовать её вернуть, чтобы проверить, будет ли ошибка.

В некоторых случаях может помочь закомментирование строки Options в .htaccess – вставить # в её начале. Если ничего не поменялось, проделайте то же самое с другими строками, а потом по очереди убирайте # и смотрите на результат.

После изменения файла .htaccess надо проверить, сохранилось ли оно. Иногда хостер может выставить на документ права, которые мешают его менять. В этой ситуации вы можете скачать файл .htaccess к себе на устройство, открыть и отредактировать его в любом текстовом документе и залить обратно, заменив старую версию.

pdf иконка

Точный инструмент «Колесо компетенций»

Для детального самоанализа по выбору IT-профессии

pdf иконка

Список грубых ошибок в IT, из-за которых сразу увольняют

Об этом мало кто рассказывает, но это должен знать каждый

doc иконка

Мини-тест из 11 вопросов от нашего личного психолога

Вы сразу поймете, что в данный момент тормозит ваш успех

Регистрируйтесь на бесплатный интенсив, чтобы за 3 часа начать разбираться в IT лучше 90% новичков.

Только до 2 февраля

Осталось 17 мест

  • Обновите РНР

Версии РНР, которые уже устарели, не поддерживают обновления безопасности, хуже работают и из-за них может быть некорректная работа плагинов и сценариев.

Обновите РНР

Обновите РНР

Может, для того, чтобы ваш сайт работал без перебоев, вам надо просто обновить РНР.

  • Настройте права для CGL-скриптов

Одним из методов устранения ошибки 500 на сайте является выставление прав для CGL-скриптов. Если такие сценарии у вас есть, то их папки и файлы должны иметь такое право доступа: 0755 (drwxr-xr-x), которое даёт возможность менять их только владельцу, а остальные могут их лишь открывать и активировать. Когда на скриптах стоит другое право доступа, это может привести к появлению ошибки 500.

  • Проверьте файлы CGL-скриптов

У правильных сценариев окончание строк в формате Unix (n), а не Windows (rn). Для сохранения корректного варианта нужно загружать код (в большинстве хостингов) по FTP в режиме ASCII. Если вы не помните, какие ранее были настройки, заново добавьте сценарии и посмотрите, появится или нет ошибка 500. К тому же CGL-скрипты могут быть причиной неправильных HTTP‑заголовков ответа. В данном варианте вы сможете заметить ошибку в логах.

  • Проверьте плагины

Причина может скрываться в плагинах, которые вы недавно установили.

Проверьте плагины

Проверьте плагины

Нередко встречается такое, что отдельные элементы сайта или плагины не могут работать совместно друг с другом. Данная проблема становится причиной не только того, что сайт выдаёт ошибку 500, но и возникновения других неполадок на сервере. Если модели были установлены или обновлены не так давно, то можно попробовать их отключить через панель администратора. Есть вероятность, что после этого могут всплыть другие неполадки, но если ошибка 500 исчезла, значит, дело было в конфликте плагинов или компонентов.

  • Проверьте лог ошибок

Более точный анализ проводится с помощью логов. Если объяснять простым языком, то лог – это своеобразный журнал, в котором хранится информация об ошибках, направленных запросах, подключениях, действий с документами и так далее. Так как данных в логах очень много, они делятся на категории, чтобы было проще найти то, что нужно.

Если в последнее время вы как-то меняли сайт, то это могло стать причиной появления ошибки с кодом состояния 500. Зайдите в логи и проверьте, нет ли там информации о проблемах. Если ошибки высветились, то надо их изучить и отменить последние изменения.

Как правило, хостеры предоставляют информацию о том, где найти логи и как их открыть с панели управления. Данные об этом есть в разделе помощи FAQ (frequently asked questions — часто задаваемые вопросы) на сайте хостинга.

  • Оптимизируйте сценарии

Если написанные сценарии долго грузятся или вообще не могут запуститься из-за нехватки ресурсов, проанализируйте их содержимое. Может, код надо оптимизировать, чтобы он стал легче и быстрее загружался. Нередко сценариям недостаточно ресурсов при работе с виртуальным хостингом. У них есть жёсткий лимит на память, чтобы каждый пользователь имел равные возможности во время пребывания на выбранном сайте.

Разделите скрипты на части и проверьте каждый на эффективность их деятельности. Если вы обнаружили в коде много ненужных вызовов либо необходимый объём памяти постоянно растёт, нужно обязательно проработать эти моменты.

  • Увеличьте объём оперативной памяти сервера

Встречаются ситуации, когда даже после оптимизации сценариев они продолжают занимать много памяти. Чтобы решить эту проблему, придётся начать пользоваться более дорогим пакетом обслуживания, который предлагает хостинг.

Объём оперативной памяти сервера

Объём оперативной памяти сервера

Либо, если есть вариант увеличить объём памяти, прибегнуть к нему. К тому же вы не будете платить за те функции, которые не нужны вашему ресурсу.

Если вы испробовали все возможные варианты, но ничего не помогло, лучше обратиться за помощью к службе технической поддержки. Укажите время, когда вылезла ошибка, и подробно расскажите, что пытались предпринять для её устранения. Специалисты подробно изучат настройки сайта и, если потребуется, обратятся к управляющим сервера на стороне хостинг-провайдера.

Что такое скрипт: применение, языки написания

Читайте также

Ошибка выполнения запроса 500 является обобщенным кодом состояния НТТР, который говорит о том, что на сервере произошла какая-то неполадка, но более точно описать проблему сервер не может. Так что первым делом нужно узнать, что послужило причиной возникновения ошибки, и только после этого заниматься её устранением.

Пользователи интернета и владельцы сайтов периодически сталкиваются с различными ошибками на веб-страницах. Одной из самых распространенных ошибок является error 500 (ошибка 500). Поговорим в нашей статье о том, что это за ошибка и как ее исправить.

Где и когда можно встретить ошибку 500

Вы можете увидеть ошибку на любом веб-ресурсе, браузере и устройстве. Она не связана с отсутствием интернет-соединения, устаревшей версией операционной системы или браузера. Кроме того, эта ошибка не указывает на то, что сайта не существует или он больше не работает.

Ошибка 500 говорит о том, что сервер не может обработать запрос к сайту, на странице которого вы находитесь. При этом браузер не может точно сообщить, что именно пошло не так. 

Отображаться ошибка может по-разному. Вот пример:

Ошибка 500

Если вы решили купить что-то в любимом интернет-магазине, но увидели на сайте ошибку 500, не стоит сильно огорчаться – она лишь сообщает о том, что вам нужно подождать, пока она будет исправлена.

Если ошибка появилась на вашем сайте, то нужно скорее ее исправлять. Далее я расскажу, как это можно сделать.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Причины возникновения ошибки

Итак, ошибка 500 возникает, когда серверу не удается обработать запрос к сайту. Из-за этого пользователи не могут попасть на сайт, а поисковые системы полноценно с ним работать. Очевидно, что ошибка нуждается в исправлении. В первую очередь необходимо найти проблему.

Основной причиной ошибки 500 может быть:

  1. Неверный синтаксис файла .htaccesshtaccess – это файл, в котором можно задавать настройки для работы с веб-сервером Apache и вносить изменения в работу сайта (управлять различными перенаправлениями, правами доступа к файлам, опциями PHP, задавать собственные страницы ошибок и т.д.). 
    Узнать больше о файле .htaccess можно в статье «Создание и настройка .htaccess».
  2. Ошибки в скриптах сайта, то есть сценариях, созданных для автоматического выполнения задач или для расширения функционала сайта.
  3. Нехватка оперативной памяти при выполнении скрипта.
  4. Ошибки в коде CMS, системы управления содержимым сайта. В 80% случаев виноваты конфликтующие плагины. 

Год хостинга в подарок при заказе лицензии 1С-Битрикс

Выбирайте надежную CMS с регулярными обновлениями системы и профессиональной поддержкой.

Заказать

Как получить больше данных о причине ошибки 

Что означает ошибка 500, мы теперь знаем. Когда она перестала быть таким загадочным персонажем, не страшно копнуть глубже — научиться определять причину ошибки. В некоторых случаях это можно сделать самостоятельно, так что обращаться за помощью к профильному специалисту не понадобится.

Отображение ошибки бывает разным. Ее внешний облик зависит от того, чем она вызвана.

Самые частые причины ошибки 500 можно распознать по тексту ошибки или внешнему виду страницы. 

  1. Сообщение Internal Server Error говорит о том, что есть проблемы с файлом .htaccess (например, виновата некорректная настройка файла). Убедиться, что .htaccess является корнем проблемы, поможет следующий прием: переименуйте файл .htaccess, добавив единицу в конце названия. Это можно сделать с помощью FTP-клиента (например, FileZilla) или файлового менеджера на вашем хостинге (в Timeweb такой есть, с ним довольно удобно работать). После изменения проверьте доступность сайта. Если ошибка больше не наблюдается, вы нашли причину.
  2. Сообщение HTTP ERROR 500 или пустая страница говорит о проблемах со скриптами сайта. В случае с пустой страницей стоит учесть, что отсутствие содержимого сайта не всегда указывает на внутреннюю ошибку сервера 500.

Давайте узнаем, что скрывается за пустой страницей, обратившись к инструментам разработчика. Эта браузерная панель позволяет получить информацию об ошибках и другие данные (время загрузки страницы, html-элементы и т.д.). 

Как открыть панель разработчика

  • Нажмите клавишу F12 (способ актуален для большинства браузеров на Windows). Используйте сочетание клавиш Cmd+Opt+J, если используете Google Chrome на macOS. Или примените комбинацию Cmd+Opt+C в случае Safari на macOS (но перед этим включите «Меню разработки» в разделе «Настройки» -> «Продвинутые»). Открыть инструменты разработчика также можно, если кликнуть правой кнопкой мыши в любом месте веб-страницы и выбрать «Просмотреть код» в контекстном меню. 
  • Откройте вкладку «Сеть» (или «Network») и взгляните на число в поле «Статус». Код ответа об ошибке 500 — это соответствующая цифра.

Причины ошибки 500Более детальную диагностику можно провести с помощью логов.

Простыми словами: лог — это журнал, в который записывается информация об ошибках, запросах к серверу, подключениях к серверу, действиях с файлами и т.д.

Как вы видите, данных в логи записывается немало, поэтому они разделены по типам. За сведениями о нашей ошибке можно обратиться к логам ошибок (error_log). Обычно такие логи предоставляет служба поддержки хостинга, на котором размещен сайт. В Timeweb вы можете включить ведение логов и заказать необходимые данные в панели управления. Разобраться в полученных логах поможет статья «Чтение логов».

Как устранить ошибку

Теперь поговорим о том, как исправить ошибку 500. Вернемся к популярным причинам этой проблемы и рассмотрим наиболее эффективные способы решения.

Ошибки в файле .htaccess

У этого файла довольно строгий синтаксис, поэтому неверно написанные директивы (команды) могут привести к ошибке. Попробуйте поочередно удалить команды, добавленные последними, и проверьте работу сайта. 
Также найти проблемную директиву можно с помощью логов ошибок (через те же инструменты разработчика в браузере). На ошибку в директиве обычно указывает фраза «Invalid command». Информацию о верном написании директивы или способе исправления ошибок в .htaccess вы можете найти в интернете. Не нужно искать, почему сервер выдает ошибку 500, просто введите в строку поиска название нужной команды или текст ошибки из логов.

Ошибки в скриптах сайта

Скрипт не запускается

Обычно это происходит, когда существует ошибка в скрипте или функция, которая не выполняется. Для успешного запуска скрипта функция должна быть верно прописана, поддерживаться сервером и выполняться от используемой версии PHP. Бывают ситуации, когда функция несовместима с определенными версиями PHP. Получить более подробную информацию о той или иной функции можно в интернете. 

Не хватает оперативной памяти

Если в логах вы видите ошибку «Allowed memory size», для устранения ошибки 500 стоит оптимизировать работу скрипта. Вы можете воспользоваться специальными расширениями для анализа производительности скрипта или обратиться за помощью к специалисту, который поработает над его оптимизацией.

Если ваш сайт размещен на отдельном физическом или виртуальном сервере, можно попробовать увеличить максимальное использование оперативной памяти на процесс (memory_limit). На шаред хостинге этот параметр обычно не изменяется, но есть возможность купить хостинг помощнее.

Ошибки в CMS

Если код CMS содержит неверный синтаксис, это может вывести сайт из строя. В таком случае логи сообщат вам об ошибке 500 текстом «PHP Parse error: syntax error, unexpected». Так происходит, когда некорректно работает плагин (или тема, используемая в CMS, но реже) либо есть ошибки в коде. Ошибка может быть допущена случайно, произойти при обновлении плагина или версии CMS.

При чтении логов обратите внимание на путь, который следует за сообщением об ошибке, ведь он может указать на проблемную часть кода или плагин. Если проблема в плагине, для восстановления работы сайта переименуйте на время папку, в которой он расположен. Попробуйте обновить плагин или откатить его до прежней версии. Если ситуацию не удается исправить, от расширения стоит отказаться либо заменить его аналогом.

Ошибка 500 из-за плагинов ВордпрессТакже в большинстве случаев подобные проблемы помогает решить поддержка CMS.

Информацию о других распространенных ошибках вы можете найти в статье «6 наиболее часто возникающих ошибок HTTP и способы их устранения».

Удачи! 

Это штатная функция, которая уже давно присутствует начиная с версии программных продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.

Торговля в интернете не имеет никаких отличий от обычного ритейла в плане ведения бухгалтерской отчетности. В связи с этим возникает вопрос согласования продаж через интернет-магазин и проводки их по системе учета «1С». Для «1С-Битрикс: Управление сайтом» интеграция с «1С» – не проблема. Это штатная функция, которая уже давно присутствует начиная с версии продуктов «1С:Предприятие 8.1», редакция Управление торговлей (версия 10.3.4) и «1С-Битрикс: Управление сайтом» версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.

Несмотря на существующую документацию по продукту, у многих разработчиков сайтов возникают сложности с обменом данными в этих двух программах. Сложности интеграции бывают разные. Рассмотрим некоторые, самые типовые, которые возникают у многих пользователей.

Типовые проблемы можно сгруппировать примерно таким образом:

  • Ошибки с производительностью на стороне сервера
  • Ошибки при работе с файлами данных
  • Проблемы авторизации
  • Ошибки MySQL
  • Логические ошибки

Начнем по порядку.

Ошибки на стороне сервера

Ошибки на стороне сервера происходят в силу целого ряда причин, но общее у них то, что виноваты не столько настройки программ «1С-Битрикс: Управление сайтом» или «1С:Предприятие«, сколько настройки сервера или проблемы в линиях связи. В основном они «лечатся» соответствующей настройкой серверного оборудования и программного обеспечения. И только при невозможности этого – путем единовременного снижения объемов выгрузки. Для решения большинства этих проблем вам не избежать обращения к службе технической поддержки хостинговой компании, где размещен ваш сайт.

Наиболее частые проявления этих ошибок:

  • Ошибка работы с Интернет, выводится сообщение: failed sending data to the peer (no headers, no data)‏;
  • Получен пустой ответ сервера;
  • Ошибки 502, 500 или ошибка 404 уже в процессе обмена;
  • Ошибка нехватки памяти, например выводится сообщение: Fatal error : Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…)‏
  • Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.

Общие методы решения – это изменение настроек сервера. Во-первых, можно увеличить лимит времени и памяти в настройках PHP.

  • Откройте для редактирования файл php.ini.oci, расположенный в папке /apache.
  • Найдите в файле группу параметров Resource Limits.
  • Увеличьте значения параметров max_execution_time и memory_limit.
  • Перезагрузите сервер.

Во-вторых, часто помогает увеличение таймаута сервера. С этим лучше обратиться к хостеру, так как у вас, скорее всего, не будет на это прав доступа. Но если есть возможность сделать это самому, то нужно произвести следующую последовательность действий:

  • Откройте для редактирования файл httpd.conf, размещенный в папке /apache/conf/
  • Измените значение параметра Timeout.
  • Перезагрузите сервер.

Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) — сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом» (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах). В этом случае пошаговое выполнение будет идти синхронно.

Если указанные меры не помогли или указанные параметры невозможно изменить, то, в крайнем случае, можно сделать следующее:

Наконец, можно уменьшить объем выгрузки товаров за 1 раз. Настройте фильтр по номенклатуре на стороне «1С»:

  • Запустите мастер настройки обмена данными (Сервисы > Обмен данными с WEB-сайтом > Настроить обмен данными с WEB-сайтом)
  • На первом шаге мастера выберите Изменить существующую настройку обмена данными и нажмите кнопку Далее.
  • Выберите настройку для редактирования и дважды кликните по ней.
  • В закладке Выгрузка товаров (Или Обмен заказами, в зависимости от ситуации) измените значения фильтра.
  • Сохраните изменения и повторите синхронизацию.

Ошибки при работе с файлами данных

Ошибки при работе с файлами вызваны в основном неправильной настройкой прав доступа к файлам. Типовые сообщения при этом выглядят следующим образом: «Ошибка открытия файла» и «Ошибка записи файла». Способы решения проблемы, естественно, — настройка прав доступа на уровне операционной системы.

Обратим внимание на фразу «на уровне операционной системы». Права на уровне «1С-Битрикс: Управление сайтом», как правило, выставлены всегда правильно. Тем не менее, проверить права на осуществление импорта/экспорта не помешает. Делается это на странице Магазин > Настройки магазина > Интеграция с 1С.

Наиболее вероятные причины:

  • У пользователя, от которого ведется обмен данными, нет прав на запись в папку /upload .
  • Файл создается с правами, которые не позволяют чтение файла.
  • Файл также может быть передан на сервер в zip-архиве, но по определённым причинам не удалось распаковать архив, например, некорректно работает функция zip_open на сервере.

Решения данных проблем довольно просты и понятны из самих проблем и решаются обращением к хостеру, который установит нужные права.

Выставление корректных прав на создаваемые файлы в рамках «1С-Битрикс: Управление сайтом» производится следующим образом:

  • Откройте для редактирования файл dbconn.php из папки /bitrix/ php_interface.
  • В строке define(«BX_FILE_PERMISSIONS», 0644); установите значения, которые порекомендовал хостер вместо 0644 выставленных по умолчанию.

Точно также нужно проверить выставить права на создаваемые папки. Только это делается уже в строке define(«BX_DIR_PERMISSIONS», 0755);.

Вот так выглядит проверка наличия расширения ZIP в настройках PHP:

  • Откройте в браузере страницу http://<ваш_сайт>//bitrix/admin/phpinfo.php. (Либо выполните команду if (exist_function (“zip_open”)) echo “OK”;). В браузере отобразится таблица:

    Таблица свойств PHP
    Таблица свойств PHP

  • В области ZIP посмотрите настройки. Для строки ZIP должно стоять «enabled».

Заметим, что ошибки при работе с файлами данных могут возникать и из-за того, что на компьютере, где установлена учетная система от 1С, имеется файрволл или антивирус, препятствующий корректной передаче файла или блокирующий отправку файла на сервер.

Проблемы авторизации

1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом».

«1С» может получать некорректный ответ при попытке авторизации на сайте. Это может быть ошибкой разработчика вашего сайта. Дело в том, что при авторизации первой строчкой ответа «1С» ждет «success». Но в ходе создания сайта разработчики могли в процессе разработки случайно оставить вывод в файлах тестовые строки.

Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др.
Таким образом, 1С может получить ответ не «success», а «testsuccess» хотя данный авторизации отправлены корректные.

Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С.

Перейдите на указанную страницу и произведите следующие действия:

  • В поле Разрешить загрузку группам пользователей посмотрите, каким пользователям разрешен импорт/экспорт данных.
  • В зависимости от вашей конкретной ситуации или измените права доступа на импорт для нужных групп или включите нужного пользователя в группу, которой разрешен импорт из «1С».

Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test.php, как мы это делали при проверке свойств ZIP. В свойства сервера Apache в строке Server API в таком случае стоит CGI. Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга.

Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:

    RewriteEngine on
    RewriteRule .* — [E=REMOTE_USER:%{HTTP:Authorization},L]

  • Закоментируйте следующие строки в файле .htaccess папки bitrix/admin/, которые отключают mod_rewrite:

    #

    # RewriteEngine Off

    #

  • В файл dbconn.php папки bitrix/php_interface/ добавьте строки:

    $remote_user = $_SERVER[«REMOTE_USER»]

    ? $_SERVER[«REMOTE_USER»] : $_SERVER[«REDIRECT_REMOTE_USER»];

    $strTmp = base64_decode(substr($remote_user,6));

    if ($strTmp)

    list($_SERVER[‘PHP_AUTH_USER’], $_SERVER[‘PHP_AUTH_PW’]) = explode(‘:’, $strTmp);

Ошибки MySQL

Ошибки базы данных могут иметь много причин, равно как и решений. Самые очевидные из них сводятся к следующим:

  • Выводится сообщение: Lost connection to MySQL server during query. Ошибка, скорее всего здесь в таймауте.

Возможное решение проблемы: $DB->Query(«SET wait_timeout=28800»);

Если это не помогает, то необходимо обратиться к службе поддержки хостинговой компании для увеличения таймаута.

  • Конфликт кодировок. Например, выводится сообщение:

[Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation ‘=’]

Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1.

Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру.

Логические ошибки

Логические ошибки происходят, если пользователем неверно понимается процесс обмена данными и, соответственно, им неверно выполняются какие-то действия.

Наиболее частая ошибка при выгрузке каталога товаров появляется вместе сообщением: «Изменения товаров не зарегистрированы. Выгрузка товаров не произведена». Как правило, в этом случае неверно настроен фильтр товаров. Нужно проверить эти настройки. Как правило, там выбраны параметры, которые не позволяют правильно отфильтровать параметры для выгрузки.

Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена.

Другая ошибка при выгрузке каталога товаров — сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры.

Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков.

Резюме

Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом» и «1С:Предприятие» позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. Купить Битрикс можно у партнеров 1Софт.

Роберт Басыров

Все права защищены. По вопросам использования статьи обращайтесь к администраторам сайта

#1 2009-07-04 07:39

При импорте из CSV «ошибка 500 «Internal Server Error»»

Подскажите, кто сталкивался: при импорте товаров из CSV (выгружаю из 1С), проходит первый этап, с указанием соответствий колонок, далее нажимаю «ОК» чтобы приступить к загрузке товаров, и после полуминутного молчания выдает «ошибка 500 «Internal Server Error», размер CSV файла 500 кб.
Режу его на 2-е части (по 250 кб.), порезанные части прекрасно импортируется! Как бороться?

Отредактировано GRiM (2009-07-04 07:46)

Неактивен

#2 2009-07-04 13:48

Re: При импорте из CSV «ошибка 500 «Internal Server Error»»

На лицо серверное ограничение. Бороться можно либо улучшением параметров хостинга, либо делить файлы на логичные куски. Импорт — самая ресурсоемкая операция, её несколько раз улучшали, но прирост был не в разы а на некоторые проценты. В следующих обновления это будет решаться радикально и позволит увеличить как скорость, так и удобство — ограничение по времени выполнения будет не существенным

Неактивен

#3 2009-12-29 00:36

Re: При импорте из CSV «ошибка 500 «Internal Server Error»»

Добавлюсь к теме, у меня сейчаз проблема что файлы размером 100 кб даже не грузятся — хотя хостер поставил таймаут на 3 минуты

Неактивен

#4 2009-12-29 02:20

Re: При импорте из CSV «ошибка 500 «Internal Server Error»»

Vladislav написал:

На лицо серверное ограничение. Бороться можно либо улучшением параметров хостинга, либо делить файлы на логичные куски. Импорт — самая ресурсоемкая операция, её несколько раз улучшали, но прирост был не в разы а на некоторые проценты. В следующих обновления это будет решаться радикально и позволит увеличить как скорость, так и удобство — ограничение по времени выполнения будет не существенным

Владислав, а как промежуточный вариант, нельзя ли сделать галку типа того «Включить таймаум для большого файла» и рядом с ним поле (текстовое для ввода либо выпадающий список из предустановленных значений) в секундах или в килобайтах, чтобы у кого большие файлы (много наименований продукции) смогли не деля (не подготавливая дополнительно) загружать один большой файл?
Соответственно логика работы галки проста — при установке, ну например 30 сек или 500 Кб, скрипт будет имортировать часть файла соответственно 30 секунд или первые 500 кб, делать соответственно паузу, а затем далее так же продолжать?
В таком случае можно будет запустить импорт и пойти курить (ну тем кто куритsmile или по своим делам, а когда он вернется импорт будет успешно произведен.

Неактивен

#5 2009-12-29 03:17

Re: При импорте из CSV «ошибка 500 «Internal Server Error»»

для экспорта данных уже есть механизмы, позволяющие импортировать практически любые объемы данных (с живым прогрессбаром и полным пофигизмом на серверные «30 секунд»)
для импорта будут аналогичные алгоритмы (обработка файла для импорта в несколько проходов, для более щадящего использования бд), но это еще в очереди.
«Промежуточный» вариант сейчас никак не выйдет, потому как это будет адаптацией нового кода под старые условия — это потребует время, уж лучше мы будем приближать само обновление.

Неактивен

#6 2009-12-29 09:43

Re: При импорте из CSV «ошибка 500 «Internal Server Error»»

а, ну тоже верно, будем с нетерпением ждать обновления тогда…
(и пока что будем делить большие файлы на маленькие для импортаsmile)

Неактивен

#7 2009-12-29 23:51

Re: При импорте из CSV «ошибка 500 «Internal Server Error»»

Продолжаю эксперименты по уменьшению размера файла для загрузки — сейчаз уже 48 кб — эффект: ошибка 500!!!

Неактивен

Ошибка 405 и 500 в HTTP сервисе 1С. Поиск и устранение.

Добрый день, хотел поделиться с вами результатом преодоления этих ошибок при работе с http сервисами 1С. С данной ошибкой мне пришлось столкнуться при переписывании мобильного приложения с web сервисов на http. Ошибка возникала при отправке http сервису POST запроса.

Ошибка 405

При работе с некорректным HTTP сервисом из мобильного приложения возвращалась ошибка 405, которая указывает на конкретную проблему. «405 Method Not Allowed — указанный клиентом метод нельзя применить к текущему ресурсу.» Долго не мог разобраться с данной ошибкой, так как в сервисе запрос был разрешен и шаблоны были настроены корректно.

Ошибка 500

При работе с некорректным HTTP сервисом из внешних программ возвращалась ошибка 500, которая ни о чем конкретном не говорит. «500 Internal Server Error — любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса».

Ошибка 500

Ошибка 405

Вроде HTTP сервис один, а при использовании запросов к нему из разных программ возвращались разные ошибки.

Расследование ошибок 405 и 500 в HTTP сервисе 1С

Времени на выяснение причин ушло очень много. За несколько дней до этой задачи мною были проведены десятки экспериментов по сборке и настройке web сервера apache 2.4 x64 SSL для работы с 1С. Все настройки в основном были связаны с кросс доменными запросами из web приложения на javascript. Столкнувшись с ошибками 405 и 500 на другом проекте я сразу полез в дебри конфигурации apache. После полного удаления apache поставил IIS и на нем вышла такая же ошибка. Поднял на виртуальной машине чистую систему, попробовал apache и iss, но ошибка так и проявлялась. Потом я вспомнил, что одна функция мобильного приложения уже давно использует http сервис и там все прекрасно работает. Создал http сервис с базовыми настройками и все заработало.

Ошибка 405

Как только я переносил код из web сервиса в функции http сервиса, сразу появлялись ошибки. Самое интересное, что отладка не срабатывала, т.е. POST запрос в пустую функцию приходил и отрабатывал, а в функцию с кодом нет.

Ошибка 405

На многих форумах ошибку 405 описывают как ошибку доступа, либо не корректную настройку http сервиса.

Итог разбора ошибок 405 и 500 в HTTP сервисе 1С.

В итоге все оказалось довольно просто. Функция, которая вызывалась внутри функции http сервиса 1с не могла быть вызвана из данного модуля. Странно, что при сохранении конфигурации никакой ошибки на вызов отсутствующей функции не было. Возможно это глюк версии платформы и будет доработан. При использовании web сервисов, даже если код внутри функции был не корректный, отладка работала. В http сервисе сразу идет возврат с ошибками 405 или 500.

P.S. В последней версии платформы ошибка 405 перестала выходить.

Обновление 12.01.2019

В процессе работы часто приходится сталкиваться с ошибками 405 и 500 в HTTP сервисах. Но проблема в 99% случаев в коде сервиса. Возможно это не явно, код вас может уводить глубоко в другие модули, но решение надо искать именно там.

Сейчас у меня такие ошибки начинают и в рабочих проектах. Стоит только внести небольшое изменение которое вызывает исключительную ситуацию, как вы получите ошибку 500. Мобильный клиент ведет себя еще более странно и отловить реальную ошибку очень тяжело, особенно когда переделывает чужие формы под мобильный клиент.

В данный момент я начинаю с того, что отключаю вызов всех функций и процедур начиная со входа в обработчики HTTP сервиса и смотрю как проходят запросы. Если все хорошо, то я начинаю включать код небольшими кусочками и проверять работу сервиса. Данный метод не самый быстрый, но дает 100% результат.

Если у вас остались вопросы, то вы можете задать мне их в социальных сетях или оставить комментарий ниже.

Выгрузка номенклатуры

Последние изменения: 18.05.2017

ПРОФ версия драйвера позволяет пользователю работать с терминалом, совсем не выгружая номенклатуру. Процессы на терминале сконфигурированы так, что если отсканированный штрихкод не будет найден среди выгруженной номенклатуры, его поиск будет проведен непосредственно в 1С, с помощью онлайн вызова.

Однако к такому варианту следует прибегать только в случае необходимости, например, когда справочник номенклатуры очень большой и часто изменяется, так что его постоянная перевыгрузка становится трудно решаемой задачей.

Это связано с тем, что прямой поиск номенклатуры по штрихкоду в 1С будет проходить гораздо дольше, чем в заранее выгруженном справочнике, так как Mobile SMARTS имеет специальные оптимизированные алгоритмы для этой задачи. Рекомендуется провести выгрузку номенклатуры хотя бы при первом применении драйвера, и повторять выгрузку периодически, по мере накопления в ней изменений и по мере возможности.

Начиная с версии 2.7.1.49 появилась возможность умной частичной «довыгрузки» справочника номенклатуры, которая позволяет ускорить процесс обновления справочника.

Начиная с версии 2.6.7.6 драйвера при выгрузке номенклатуры, вместо кода номенклатуры из 1С выгружается уникальный идентификатор. Стандартная функция из промежуточной базы: НайтиЭлементСправочникаНоменклатура(ИД), находит номенклатуру и по коду 1С и по уникальному идентификатору.

Стандартная выгрузка номенклатуры в «Управление торговлей» 10.3, «Управление производственным предприятием» и «Розница» для 1С 8.1 и 8.2

Стандартная обработка выгрузки номенклатуры не выгружает товары и единицы измерения, у которых нет штрихкодов.  Т.е. их никак нельзя будет идентифицировать на ТСД.  Для решения этой проблемы см. ниже «Нестандартная выгрузка номенклатуры».

Для стандартной выгрузки номенклатуры следует выбрать пункт меню «Сервис->Торговое оборудование->Работа с терминалами сбора данных->Выгрузка данных в терминал»:

По кнопке «Заполнить» выполняется выборка номенклатуры и штрихкодов (при этом могут быть заданы условия отбора), а по кнопке «Выгрузить» — выгрузка.

Выгружаемая номенклатура попадает на сервер терминалов.  По умолчанию при сканировании штрихкода ТСД обращается к серверу терминалов, чтобы узнать, какая номенклатура соответствует этому штрихкоду.  Т.е. при выходе из зоны действия Wi-Fi терминал теряет возможность распознавать штрихкоды.  Однако этого можно избежать.  Для этого в «Панели управления» нужно снять галочку «Справочник номенклатуры на севере» для общей группы пользователей Mobile SMARTS на ТСД и затем сохранить конфигурацию:

После нажатия «Обмен данными» на ТСД, находящемся в онлайн соединении с сервером терминалов, он закачает с сервера справочник номенклатуры и начнет в этом плане работать независимо.  Номенклатура обновляется каждый раз при нажатии «Обмен данными» или автоматическом выполнении обмена данными, например, по завершении обработки документа и отправки его на сервер.

ПРЕДУПРЕЖДЕНИЕ: все замечательные свойства обновления номенклатуры и поиска по штрихкоду работают/активируются только при наличии связи с сервером терминалов.  Если значок севера на ТСД перечеркнут красным, терминал никогда не узнает ни о появлении новых номенклатур, ни о штрихкодах, ни о любых других изменениях.

Нестандартная выгрузка номенклатуры для:

«Управление торговлей» 10.3»

«Управление торговлей» 11» для 1С  8.2

«Розница»

«Штрих-М»

«ДАЛИОН»

«Управление производственным предприятием»

Стандартная обработка выгрузки номенклатуры не выгружает товары и единицы измерения, у которых нет штрихкодов. Т.е. их никак нельзя будет идентифицировать на ТСД. Драйвер от Клеверенс Софт предоставляет функцию выгрузки документов на ТСД, причем в документах могут быть указаны товары без штрихкодов, что не позволит выгрузить такой документ. Для решения этой проблемы в поставку драйвера входит модифицированная обработка выгрузки «Выгрузка номенклатуры.epf», которая выгружает все отобранные товары.

Нестандартная выгрузка выглядит и работает в точности так же, как стандартная, за тем исключением, что из выборки не удаляются номенклатура и единицы измерения без штрихкодов. Для выгрузки следует открыть обработку «Выгрузка номенклатуры.epf» через меню Файл->Открыть.

В окне обработки можно задать параметры отбора номенклатуры.  

По кнопке «Заполнить» происходит заполнение таблицы «Выгружаемые товары» в соответствии с установленным отбором. Товары, имеющие серийные номера, отмечены в таблице специальной иконкой  («Управление торговлей» 10.3, «Управление производственным предприятием» и «Розница» для 1С 8.1 и 8.2). По кнопке «Выгрузить» происходит выгрузка выбранных позиций номенклатуры на сервер Mobile SMARTS.

Все настройки, касаемые весового товара, префиксов штрихкодов, а так также использования промежуточной папки для обмена (вместо прямой выгрузки на ТСД) следует искать в обработке «Клеверенс Софт терминалы сбора данных Wi-Fi ПРОФ.epf».

Если всё прошло успешно и выбран тип связи «Соединение с сервером», то в Панели управления Mobile SMARTS (устанавливается вместе с драйвером и доступна через «Пуск») можно открыть узел «ДанныеНоменклатура» и увидеть выгруженную на сервер номенклатуру.

Начиная с версии 2.6.7.15 для работы со справочником номенклатуры, загруженным на ТСД при выгрузке номенклатуры можно включить поиск по наименованию и артикулу на ТСД.

Если проставлен флаг «Включить поиск по наименованию и артикулу на ТСД», то в окне просмотра номенклатуры появляется поле поиска.

Поиск может вестись по артикулу или наименованию (части артикула или наименования), включая транслитерацию (написания русских слов латинскими буквами).

При размере справочника до 40 тыс. позиций поиск производится сразу по мере ввода.  Для больших справочников — по нажатию Enter.  Возможен ввод сразу нескольких условий через пробел (например, «кар пин» найдет «картины Репина»)

                               

УТ 11.0.7.9 и Розница 2.0.4.5

В УТ11 начиная с версии 11.0.7.9 номенклатура может быть выгружена на терминал с учетом серий.

Чтобы номенклатура выгружалась с сериями и появилась колонка «Серии», необходимо чтобы в конфигурации велся учет по сериям.

Для настройки выгрузки серий в обработке «Выгрузка номенклатуры.epf» необходимо настроить форму.

В настройке формы, необходимо проставить флаг в «ПараметрыДанных».

После этого у номенклатуры появится поле с указанием параметров. У параметра «Выводить серии» нужно поставить флаг использования и выбрать значение «Да».

Торговля и склад «1С:Предприятие 7.7»

Выгрузка номенклатуры выполняется на сервер терминалов Mobile SMARTS.  ТСД обращается к ней по Wi-Fi.  Также возможно хранение номенклатуры на ТСД целиком.

В «1С:Предприятие» нужно выбрать пункт меню «Сервис->Дополнительные возможности», откроется окно со списком дополнительных обработок, двойным щелчком левой кнопки мыши открываем обработку «Выгрузка номенклатуры на ТСД (Выгрузка номенклатуры.ert)». Откроется окно выгрузки номенклатуры.

Окно содержит следующие закладки:

  • Основная — основные фильтры отбора номенклатуры, кнопка «Выбрать» для выбора номенклатуры для выгрузки, таблица выгружаемой номенклатуры;
  • Множественный фильтр — позволяет фильтровать номенклатуру по нескольким группам, позициям;
  • Настройки выгрузки — позволяет поменять настройки выгрузки весового товара;
  • Терминал — здесь можно посмотреть идентификатор ТСД, версию драйвера, информацию о том демонстрационная или полная версия драйвера используется;
  • Настройки соединения — содержит настройки подключения к серверу терминалов Mobile SMARTS.

Выгруженная номенклатура попадает на сервер терминалов.  По умолчанию при сканировании штрихкода ТСД обращается к серверу терминалов, чтобы узнать, какая номенклатура соответствует этому штрихкоду.  Т.е. при выходе из зоны действия Wi-Fi терминал теряет возможность распознавать штрихкоды.  Однако этого можно избежать.  Для этого в «Панели управления» нужно снять галочку «Справочник номенклатуры на севере» для общей группы пользователей Mobile SMARTS на ТСД и затем сохранить конфигурацию:

После нажатия «Обмен данными» на ТСД, находящемся в Online соединении с сервером терминалов, он закачает с сервера справочник номенклатуры и начнет в этом плане работать независимо.  Номенклатура обновляется каждый раз при нажатии «Обмен данными» или автоматическом выполнении обмена данными, например по завершении обработки документа и отправки его на сервер.

ПРЕДУПРЕЖДЕНИЕ:  все замечательные свойства обновления номенклатуры и поиска по штрихкоду работают/активируются только при наличии связи с сервером терминалов.  Если значок севера на ТСД перечеркнут красным, терминал никогда не узнает ни о появлении новых номенклатур, ни о штрихкодах, ни о любых других изменениях.

В простом случае (если требуется выгрузить весь справочник номенклатуры) на закладке Основная нужно нажать кнопку «Выбрать», таблица номенклатуры внизу окна заполнится, после чего нужно нажать на кнопку «Выгрузить».  В панели сообщений появится надпись «Начало выгрузки…», дождитесь появления надписи «Выгрузка завершена», после этого ТСД готов к работе.

Если требуется выгрузка не всего справочника, а только определенных позиций, следует использовать фильтры отбора.  После установок фильтра нужно нажать кнопку «Выбрать» и затем «Выгрузить».

Если в качестве фильтра был задан склад и/или проверка наличия остатков ТМЦ, выборка будет выполняться не из справочника Номенклатура, а из регистров ОстаткиТМЦ, РезервыТМЦ. 

При использовании удаленного терминального доступа (RDP) данные следует выгружать не прямо в ТСД, а в промежуточную папку обмена (см. «Терминальный режим и удаленный доступ (RDP)»):

Выгружаемые поля

На закладке Настройки выгрузки находится список полей номенклатуры, выгружаемые поля отмечены галочкой. Для задания поля ТСД, в которое должно выгружаться то или иное поле номенклатуры, нужно выбрать это поле в списке и нажать кнопку «Редактировать поле…»:

 

По умолчанию выгружаются следующие поля:

Поле номенклатуры Поле ТСД
Код Код
Наименование Наименование
Артикул Артикул
Единицы.ОКЕИ ЕдиницаИзмерения
Единицы.ШтрихКод Штрихкод

При выгрузке на ТСД поддерживаются следующие значения Поле ТСД:

  • Код
  • Наименование
  • Артикул
  • ЕдиницаИзмерения
  • Штрихкод
  • Описание
  • Серия
  • Качество
  • Цена
  • Количество
 

Пользователь 188714

Заглянувший

Сообщений: 6
Регистрация: 13.05.2013

#1

07.11.2013 17:29:58

У меня не выгружались правильно остатки и картинки к номенклатуре!

Код
Версия конфигурации 1С: "Управление торговлей", редакция 10.3 (10.3.22.2) 
Версия модуля интеграции на стороне 1С: 2.9.22.2

После рекомендаций техподдержки я обновил свое ПО до

Код
Версия конфигурации 1С: "Управление торговлей", редакция 10.3 (10.3.23.3)
Версия модуля интеграции на стороне 1С: 2.9.23.3

В итоге у меня есть 4 блока с товарами… 3 блока в которых меньше 1000 позиций выгрузились нормально, один в котором более 5000 штук позиций, не выгружается при соединении с сервером выдает ошибку 500 или 504

Код
Выгружено товаров: 5 026
Выгружено картинок: 4 944
Выгружено файлов: 0
Выгружено предложений: 5 026
 Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции  'bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=import_files/9c/9cb87a63-d0df-11e2-92c1-50465d7118ef_cb81951e-d4f8-11e2-8333-001731d24346.jpeg': Ошибка работы с Интернет:  произошел таймаут при ожидании ответа шлюзу (504). <html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
: Ошибка работы с Интернет:  произошел таймаут при ожидании ответа шлюзу (504)
Произошла ошибка: . По причине:
Произошла ошибка на стороне сервера. Не получен статус завершения операции. Файл не отправлен (C:WINDOWSTemp1cbitriximport_files9c9cb87a63-d0df-11e2-92c1-50465d7118ef_cb81951e-d4f8-11e2-8333-001731d24346.jpeg).
Обмен не выполнен
Ответ сервера:
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
Выгрузка товаров завершена с ошибками!!!

Техническая информация:
Выгружено товаров: 5 026
Выгружено картинок: 4 944
Выгружено файлов: 0
Выгружено предложений: 5 026
{Обработка.ОбменССайтом.МодульОбъекта(347)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка при выполнении файловой операции  'bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=import_files/9c/9cb87a63-d0df-11e2-92c1-50465d7118ef_cb81951e-d4f8-11e2-8333-001731d24346.jpeg': Ошибка работы с Интернет:  произошел таймаут при ожидании ответа шлюзу (504). <html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
: Ошибка работы с Интернет:  произошел таймаут при ожидании ответа шлюзу (504)
Произошла ошибка: . По причине:
Произошла ошибка на стороне сервера. Не получен статус завершения операции. Файл не отправлен (C:WINDOWSTemp1cbitriximport_files9c9cb87a63-d0df-11e2-92c1-50465d7118ef_cb81951e-d4f8-11e2-8333-001731d24346.jpeg).
Обмен не выполнен
Ответ сервера:
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
Выгрузка товаров завершена с ошибками!!!
 

После долгих переписок с тех поддержкой хостинга и битрикса и всех рекомендаций проблема не решена, я установил на локальную машину битрикс и выгрузил туда товар выскачила новая ошибка

 

У меня такая же проблема возникла, когда много позиций в каталоге. Если выгружаю скажем 50 товаров, то проходит без ошибок. Хотя раньше все работало. При этом, когда вручную удаляю раздел с товарами на сайте целиком, зависает и вылетает с ошибкой «500 internal server error».
Возможно это из-за недостаточно мощного сервера, где лежит сайт. Не понятно.  

 

Увеличение таймаутов ни к чему не приводит?

 

О каких таймаутах идёт речь? Кто-нибудь решил данную проблему. У меня то же самое — больше 5000товаров, и ошибка-500. Если меньше 5000 товаров выгружаю, то нормально проходит. Видимо, для Битрикса это предел. Подскажите, как быть???

 

Анатолий, это не предел Битрикса. Это, возможно, предел вашего хостинга. На дешевых shared-хостингах, где на одном физическом сервере живет много сайтов, часто ставят ограничение на количество операций.

Посмотрите в маркетплейсе решения. Вдруг вам поможет.

 

Таймуты — это прежде всего настройка PHP: time_limit

Во вторую очередь настройки nginx (если у вас стоит),

Но интеграция с 1С должна работать даже на 64 мегабайтах памяти и 60 секундах time_limit.

Битрикс написал обмен очень грамотно, разбивает его не шаги (не более 30 секунд, но можете уменьшить в настройках обмена на сайте) и пишет всё через временную таблицу,

Если вы не используете каких-то собственных тяжелых обработчиков всё должно и так работать. Что за хостинг у вас? Какой тариф?

 

Пользователь 23748

Гуру

Сообщений: 2755
Баллов: 447
Регистрация: 20.04.2008

АКРИТ Веб-студия

#7

07.03.2014 12:57:41

Цитата
Артемий Зайцев пишет:
Битрикс написал обмен очень грамотно

однако с загрузкой каталога из 1 млн товаров он не справляется, ни сам ни с помощью ваших модулей отказоустойчивого обмена с 1С. на отдельном сервере с ВМ и с 32 гигами памяти, и всеми шаманствами какими только возможно.

Веб-студия АКРИТ Увеличьте продажи трансформировав сайт в сеть торговых точек в интернете

 

Александр, я понятия не имею о вашей ситуации и какие там настройки сервера. Я не нанимался читать и изучать ваши логи. Вы мне заплатили или купили модуль?

Миллион товаров — это особая песня. Не грех написать и собственный обмен. Он будет быстрее стандартного в 10 раз. А если каталог на собственных таблицах организовать, то еще быстрее.

Человек описал классическую ситуацию. До 5000 хорошо. После 5000 плохо. Это определенно либо ограничение хостинга, либо очень тяжелый обработчик на каком-то товаре. Тут надо замедлить обмен — проверить, пойдет ли дальше 5000. Ну и по логу посмотреть, где он прервался, если прервется.

 

Пользователь 23748

Гуру

Сообщений: 2755
Баллов: 447
Регистрация: 20.04.2008

АКРИТ Веб-студия

#9

07.03.2014 13:50:45

Цитата
Артемий Зайцев пишет:
Он будет быстрее стандартного в 10 раз.

ну вы сами же и подтверждаете мои слова.

я собственно о том же и говорю что битрикс для больших нагрузок  слабоват все таки и надо делать свое решение, вот собственно о чем разговор, мы делали свои варианты которые работали на виртуальном хостинге с каталогами в 100 тыс товаров, стандартно битрикс на  виртуальном хостинге может не справиться и с 1000 товаров и даже с 500 ми.

и это не потому что я не люблю или люблю битрикс, это просто факты, которые кому то могут нравиться  а кому то нет, лично мне такие факты очень не нравятся….

Веб-студия АКРИТ Увеличьте продажи трансформировав сайт в сеть торговых точек в интернете

 

Пользователь 107930

Постоянный посетитель

Сообщений: 111
Баллов: 18
Регистрация: 04.01.2012

#10

07.03.2014 13:51:10

Цитата
Артемий Зайцев пишет:
Битрикс написал обмен очень грамотно, разбивает его не шаги (не более 30 секунд,

Вот-вот, точно! Вот это время я по незнанию когда-то исправил в настройках на 0 (Магазин > Настройки > Интеграция с 1С).  Исправил, т.к. у меня очень мощный сервер (выделенный, 16GB оперативки, 4 физических ядра, 8 потоков и т.д.) и всё работало до какого-то предела.
Теперь исправил снова на 30сек, и всё ок!
Получается, что мой сервер за один шаг тянет до 5000товаров, что, наверное, круто. Значит, здесь Битрикс рулит. Дело было в настройках.

 

Пользователь 107930

Постоянный посетитель

Сообщений: 111
Баллов: 18
Регистрация: 04.01.2012

#11

07.03.2014 13:58:11

Цитата
Александр Панишев пишет:
однако с загрузкой каталога из 1 млн товаров…

А разве под такие проекты ставят типовые CMS? Я думал, там по-любому сидит не один программист. Я даже удивлён, что у Вас в 1С столько товаров. Тоже наверняка не файловый вариант, а доработанный серверный.
 Я это к тому, что любая CMS — это для продвинутых пользователей, а Вы описываете проект уровнем выше, для которого CMS — это стартовый набор, не больше (чтобы админку не писать с нуля, вроде того).

 

я это все к тому что битрикс обещает что он выдержит, а на деле совсем не так. Заставить можно конечно но с танцами с бубном, а вот на мадженто подобное работает даже без обещаний оного, правда там конечно товары прутся не из 1С а из SAP но все же обещания работоспособности даже не требуются, а тут сплошное разочарование, что в обещаниях что в обновлениях, запарили косяки с этим переходом на новое ядро и т.п.

Еще при обсуждении ввода нового ядра обсуждали отказ от совместимости и это было бы наиболее правильно, так нет же, битрикс решил всем старым клиентам устроить гемор, вместо того чтобы в параллели делать стабильное старое и новое ядро независимое от старого.  Все вендоры при подобных кардинальных изменениях отказываются от совместимости со старым…

но это уже совсем другая тема извините отошел от вопроса из-за наболевшего.

 

Добрый день, проблема такого же характера. Выгружается из 1с ~15000 товаров. В итоге выдается ошибка 504. Шаманства с сервером пока не помогли, тайминги выполнения php скриптов увеличивали, проблема сохраняется.
504 ошибка выдается в момент когда временная таблица уже сформирована и начинается запись в реальные таблицы.
С таймингами мог ошибиться, в данном случае, какие настройки должны отвечать за ожидание выполнение запроса к таблице? только
max_execution_time?
В общей сложности слияние таблиц идет около 3х минут.

Или тут надо обращаться к программистам по битриксу, чтобы переписывали этот запрос?

 

Александр Денисюк

Администратор

Сообщений: 5160
Баллов: 869
Регистрация: 16.10.2013

#14

17.06.2014 12:32:23

Цитата
Иван Петренко пишет:
Добрый день, проблема такого же характера. Выгружается из 1с ~15000 товаров. В итоге выдается ошибка 504. Шаманства с сервером пока не помогли, тайминги выполнения php скриптов увеличивали, проблема сохраняется.
504 ошибка выдается в момент когда временная таблица уже сформирована и начинается запись в реальные таблицы.
С таймингами мог ошибиться, в данном случае, какие настройки должны отвечать за ожидание выполнение запроса к таблице? только
max_execution_time?
В общей сложности слияние таблиц идет около 3х минут.

Или тут надо обращаться к программистам по битриксу, чтобы переписывали этот запрос?

Вам поможет пакетная выгрузка данных. Чтобы сразу не 15К товаров выгружалось, а по 1К..

 

В таком случае, вопрос как обновить модуль обмена, а так же как посмотреть его текущую версию? В текущей версии нет больших красных цифр версии, как на картинках.

 

Пользователь 107930

Постоянный посетитель

Сообщений: 111
Баллов: 18
Регистрация: 04.01.2012

#16

25.06.2014 08:53:07

Цитата
Иван Петренко пишет:
Шаманства с сервером пока не помогли

Так почему сервер падает? Во время шаманства специалисты должны были сказать, в чём конкретно причина (много процессов, мало памяти для одного процесса, мало оперативки, не хватает времени для завершения процесса….).
По моему опыту, обращение с подобным вопросом в компанию «systemintegra» всегда приводит к конкретным ответам, ссылкам на логи сервера. Не «битрикс виноват», а почему и где нужно копать в битриксе или как настроить сервер.

 

Пользователь 470195

Заглянувший

Сообщений: 1
Регистрация: 25.01.2016

#17

27.01.2016 15:32:54

Цитата
Александр Денисюк написал:
Вам поможет пакетная выгрузка данных. Чтобы сразу не 15К товаров выгружалось, а по 1К..

Можно подробнее ?

 

Пользователь 1158791

Заглянувший

Сообщений: 1
Регистрация: 01.06.2017

#18

21.06.2017 20:10:38

Цитата
Анатолий Левшенков написал:
О каких таймаутах идёт речь? Кто-нибудь решил данную проблему. У меня то же самое — больше 5000товаров, и ошибка-500. Если меньше 5000 товаров выгружаю, то нормально проходит. Видимо, для Битрикса это предел. Подскажите, как быть???

нет

Мы описывали как настраивать веб-публикацию на IIS в инструкции.

Но после настройки веб-публикации при подключении к базе может возникать ошибка “Ошибка HTTP 500.0 — Internal Server Error”.

Если модуль был установлен с 32-битного клиента, то требуется это указать в пуле приложений. Для этого мы делаем следующую настройку:

  • Заходим в Панель управления → Администрирование → Диспетчер служб IIS.
  • Выбираем Пулы приложения которые задействованы в веб-публикации, в нашем случае DefaultAppPool.
  • Нажимаем ПКМ Дополнительные параметры.
  • В строке Разрешены 32-разрядные приложения мы указываем True как на Рисунке 1.
  • Нажимаем ОК.

главная страница

Рисунок 1 — Дополнительные параметры пула приложений

Если не сработало, есть следующие возможные решения:

  1. Убедитесь, что разрешения NTFS для файла web.config верны и обеспечивают доступ к учетной записи компьютера веб-сервера. Заходим в директорию, где размещена публикация (по умолчанию — C:inetpubwwwrootИМЯ_БАЗЫ). Нажимаем ПКМ на web.config → Свойства → Безопасность. Убедитесь в том, что у группы IIS_USERS есть права на чтение, выполнение, запись и изменение файла. Если нет — нажмите кнопку Изменить, в появившемся окне Добавить → Дополнительно и найдите в списке IIS_USERS. Добавьте эту группу и назначьте соответствующие права.
  2. Проверьте журналы событий, чтобы посмотреть, была ли зафиксирована какая-либо дополнительная информация. Открываем Выполнить (ПКМ на кнопку меню пуск или сочетанием клавиш Win+R), вводим “eventvwr.msc”, нажимаем Enter. Возможно, журнал даст подсказку какой компонент может сбоить.
  3. Переустановите компонент IIS на сервере. В диспетчере серверов удалите роль Веб-сервера IIS, перезагрузите сервер, а затем установите заново через оснастку Добавить роли и компоненты.
  4. Установите компонент расширения .NET, если запрос сопоставлен управляемому обработчику.

В Windows Server 2012 и младше: заходим в Диспетчер серверов → Добавить роли и компоненты → Роли сервера → Веб-сервер (IIS) → Веб-сервер → Разработка приложений → Расширяемость .NET. Далее идём далее по указаниям системы.

После применения настроек, мы можем подключаться к настроенной веб-публикации без ошибок.

Нужна готовая настройка веб-доступа к 1С? Попробуйте наш сервер 1С в аренду, в услугу включены все настройки и обслуживание.

Проблема

Эта ошибка возникает после того как Вы опубликуете информационную базу на IIS. Вот она:

500 Error IIS

Причина и устранение ошибки

Вообще, надо понимать, что ошибка: Ошибка HTTP 500.0 — Internal Server Error говорит нам о том, что дело в самом web-сервере, а не в 1С. Это первое.
Второе. Сама ошибка в купе с 1С скорее всего означает, что Internet Information Services (оно же IIS) в 64-разрядной среде запрещен запуск 32-разрядных приложений. Чтобы успешно выполнить публикацию баз 1С на сервере IIS, необходимо в настройках диспетчера служб IIS разрешить запуск таких приложений.

Для этого выполните Win+R > inetmgr.exe. Далее, разверните «Локальный компьютер», в нем «Пулы приложений», щелкните правой кнопкой мыши по DefaultAppPool «Дополнительные параметры».

Разрешены 32-разрядные приложения

Изменив эту настройку и нажав «ОК» 1С начнет нормально работать.

Изображение автора статьи

Основатель и директор по развитию Софтонит. Практикующий руководитель разработки. Эксперт в области автоматизации техподдержки

Понравилась статья? Поделить с друзьями:
  • Таблица неисправностей пжд 14 тс 10 коды ошибок
  • Таблица медицинские ошибки
  • Таблица кодов ошибок штат
  • Таблица кодов ошибок шкода октавия
  • Таблица кодов ошибок шевроле кобальт