Имя: Пароль:
1C
1С v8
Выгрузка на сайт УТ 11.2
,
0 zerat
 
23.08.16
09:00
Всем привет! Есть доработанная выгрузка на сайт из УТ 11.2. Выгружаются товары со своими доработанными свойствами, выгружается файл import.xml и добавлялся дополнительный файл для выгрузки на сайт  import2.xml. Дело в том что выгрузка import проходит нормально, когда начинается выгрузка import2 то через какое то время выгрузки останавливается и в 1С "Ошибка при выполнении запроса POST к ресурсу". Код выгрузки несколько раз пересматривал, никаких супермега запросов нет, зацикливаний нет. Товаров выгружается в файл import порядка 10000. Еще в этот же файл выгружаются доработанные свойства которые хранятся в непериодическом и независимом регистре сведений. В файл import2 выгружаются те же самые свойства товаров но только для сортировки их на сайте. В import2 выгружается около 392000 свойств...Бьюсь на этой проблемой уже несколько дней, базу тестировал средствами SQL...
1 zerat
 
23.08.16
09:10
Может есть какое то ограничение в xml файле?
2 mkalimulin
 
23.08.16
09:27
(0) Передаешь 392000 одним POST запросом?
3 zerat
 
23.08.16
09:30
Для Каждого ТекСтрока из ДанныеСортировкиНоменклатуры.Строки Цикл
            
            Текст.ДобавитьСтроку(Строка(НомерСтроки) +" ;"+ТекСтрока.Объект.Код+";"+Строка(ТекСтрока.Объект));
            Текст.Записать("D:"+"\log.txt");
            
            Сортировка = 1;
            
            Для Каждого ТекСвойство из ТекСтрока.Строки Цикл
                
                Если НЕ ЗначениеЗаполнено(ТекСвойство.Характеристики) Тогда
                    Продолжить;
                КонецЕсли;
                
                ТоварТип = ПакетCML.Получить("Товар");
                ТоварXDTO = ФабрикаXDTO.Создать(ТоварТип);
                
                Ид = Строка(ТекСвойство.КлючУникальности);
                
                ТоварXDTO.Ид = Ид;
                
                ТоварXDTO.Артикул = "-";
                ТоварXDTO.Наименование = Ид;
                ТоварXDTO.БазоваяЕдиница = bsБазоваяЕдиницаXDTO(ТоварXDTO, ТекСтрока.Объект);
                
                // Ставка НДС
                Если ЗначениеЗаполнено(ТекСтрока.Объект.СтавкаНДС) Тогда
                    
                    СтавкиНалоговТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ТоварТип, "СтавкиНалогов");
                    СтавкаНалогаТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(СтавкиНалоговТип, "СтавкаНалога");
                    
                    СтавкаНалога = ФабрикаXDTO.Создать(СтавкаНалогаТип);
                    СтавкаНалога.Наименование = НСтр("ru = 'НДС'");
                    СтавкаНалога.Ставка = СтрЗаменить(Строка(ТекСтрока.Объект.СтавкаНДС), "%","");
                    
                    СтавкиНалогов = ФабрикаXDTO.Создать(СтавкиНалоговТип);
                    СтавкиНалогов.СтавкаНалога.Добавить(СтавкаНалога);
                    
                    ТоварXDTO.СтавкиНалогов = СтавкиНалогов;
                    
                КонецЕсли;
                
                //ЗначенияСвойств    
                ЗначенияСвойствТип = ТоварXDTO.Свойства().Получить("ЗначенияСвойств").Тип;
                ЗначенияСвойствXDTO = ФабрикаXDTO.Создать(ЗначенияСвойствТип);
                
                //СОРТИРОВКА
                //ЗначенияСвойства
                ЗначенияСвойстваXDTO = ФабрикаXDTO.Создать(ПакетCML.Получить("ЗначенияСвойства"));
                ЗначенияСвойстваXDTO.Ид = Строка("c88b133d-855b-461a-884a-854b1de31fb5");
                ЗначениеСвойства = Строка((Сортировка)*10);
                ЗначенияСвойстваXDTO.Значение.Добавить(ЗначениеСвойства);                      
                
                //ЗначениеСвойства
                ЗначениеСвойстваXDTO  =  ФабрикаXDTO.Создать(ПакетCML.Получить("ЗначениеСвойства"));
                ЗначениеСвойстваXDTO.Значение.Добавить(Строка((Сортировка)*10));
                ЗначениеСвойстваXDTO.Описание = Строка((Сортировка)*10);
                
                //ЗначенияСвойства добавление
                ЗначенияСвойстваXDTO.ЗначениеСвойства.Добавить(ЗначениеСвойстваXDTO);
                ЗначенияСвойствXDTO.ЗначенияСвойства.Добавить(ЗначенияСвойстваXDTO);
                
                //ПОДСКАЗКА
                Подсказка = ТекСвойство.Подсказка;
                
                //ЗначенияСвойства
                ЗначенияСвойстваXDTO = ФабрикаXDTO.Создать(ПакетCML.Получить("ЗначенияСвойства"));
                ЗначенияСвойстваXDTO.Ид = Строка("d46b858b-bee2-47b8-988f-fdb654abe45e");
                ЗначениеСвойства = Подсказка;
                ЗначенияСвойстваXDTO.Значение.Добавить(ЗначениеСвойства);                      
                
                //ЗначениеСвойства
                ЗначениеСвойстваXDTO  =  ФабрикаXDTO.Создать(ПакетCML.Получить("ЗначениеСвойства"));
                ЗначениеСвойстваXDTO.Значение.Добавить(Подсказка);
                ЗначениеСвойстваXDTO.Описание = Подсказка;
                
                //ЗначенияСвойства добавление
                ЗначенияСвойстваXDTO.ЗначениеСвойства.Добавить(ЗначениеСвойстваXDTO);
                ЗначенияСвойствXDTO.ЗначенияСвойства.Добавить(ЗначенияСвойстваXDTO);
                
                ТоварXDTO.ЗначенияСвойств = ЗначенияСвойствXDTO;
                
                ТоварыXDTO.Товар.Добавить(ТоварXDTO);
                
                Сортировка = Сортировка + 1;
            КонецЦикла;
            
            НомерСтроки = НомерСтроки + 1;
        КонецЦикла;
4 zerat
 
23.08.16
09:32
Вот этот кусок кода.  
ДанныеСортировкиНоменклатуры.Строки - здесь только товары около 9200
Для Каждого ТекСвойство из ТекСтрока.Строки Цикл
здесь выгружаются уже свойства каждого товара
около 392000
5 zerat
 
23.08.16
09:33
(2) я записываю эти данные в xml
6 mkalimulin
 
23.08.16
09:34
(4) POST запрос не резиновый.
7 mkalimulin
 
23.08.16
09:34
Дели на части.
8 zerat
 
23.08.16
10:05
(7) а можешь подробнее рассказать про POST запрос? и какое ограничение на нем? делить на части имеешь ввиду сам xml файлик?
9 zerat
 
23.08.16
13:41
ну не фига....разбил сейчас файл на 4 части, все равно ошибка таже самая
10 zerat
 
23.08.16
17:01
ап ап
11 vicof
 
23.08.16
17:06
Ещё дели. Методом дихотомии сможешь достаточно быстро найти оптимальное число кусков
12 zerat
 
23.08.16
17:38
(11) где можно прочитать про размер xml файла или post запроса, я просто не пойму в чем прикол....
13 Зая Бусечка
 
23.08.16
18:19
(12) Зависит от настроек сервера и качества связи.
14 Злопчинский
 
23.08.16
18:33
Положить н а фтп а оттуда уже сайт сам заберет - не вариант?
15 mkalimulin
 
23.08.16
21:25
(12) Нигде. Как сервер настроят так и будет. Это ж интернет. Сам подумай, что будет если запросы не ограничивать.
16 zerat
 
24.08.16
07:03
У меня не выгружается локально на диск даже!!!
Он не может сформировать xml файл
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший