Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Обмен с сайтом не выгружает количество по отбору

Обмен с сайтом не выгружает количество по отбору
Я
   seregapplk
 
05.08.21 - 15:40
Обмен с сайтом не выгружает количество по отбору, отбор работает только если установить конкретную номенклатуру, но если поставить остаток больше 0, выгружает все равно и если есть остаток и если нет. Почему?
выборка формируется в процедуре ПолучитьДанныеДляВыгрузкиПакетаПредложений
   seregapplk
 
1 - 05.08.21 - 15:41
Процедура ПолучитьДанныеДляВыгрузкиПакетаПредложений(ПрикладныеПараметры,Знач КомпоновщикНастроек, ТаблицаДанныеПакетаПредложений,
                                          ОписаниеОшибки)
        
    ТекстыЗапросов = Новый Структура("Цены, Остатки");
    ОбменССайтомПереопределяемый.ПолучитьТекстыЗапросовПакетаПредложений(ТекстыЗапросов);
    ЕстьОшибка = Ложь;
    Для Каждого КлючЗначение Из ТекстыЗапросов Цикл
        Если Не ЗначениеЗаполнено(КлючЗначение.Значение) Тогда
            ОписаниеОшибки = ОписаниеОшибки + НСтр("ru='Не заполнен текст запроса для получения данных:';uk='Не заповнений текст запиту для отримання даних:'")+ КлючЗначение.Ключ
                + Символы.ПС;
            ЕстьОшибка = Истина;
        КонецЕсли;
    КонецЦикла;
    
    Если ЕстьОшибка Тогда
        Возврат;
    КонецЕсли;
    
    ПоляИсточниковДанных = Новый Структура;
    ЗаполнитьПоляИсточниковДанных(ПоляИсточниковДанных, Истина);
    
    ТаблицаЦены = РезультатВыполненияСхемы(КомпоновщикНастроек, ТекстыЗапросов.Цены, ПоляИсточниковДанных.Цены,
        ПрикладныеПараметры, "ПакетПредложений");
    ТаблицаЦены.Индексы.Добавить("Номенклатура");
    
    
    ТаблицаОстатки = РезультатВыполненияСхемы(КомпоновщикНастроек, ТекстыЗапросов.Остатки, ПоляИсточниковДанных.Остатки,
        ПрикладныеПараметры, "ПакетПредложений");
    ТаблицаОстатки.Индексы.Добавить("Номенклатура");

    // Полученные в результате выполнения СКД таблицы значений поместим в новую СКД,

    // чтобы можно было применить отбор по количеству на складе

    
    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
        
    ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); 
    ИсточникДанных.Имя                = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных = "Local";

    ОбъектЦены = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    ОбъектЦены.Имя = "Цены";
    ОбъектЦены.ИмяОбъекта = "Цены";
    ОбъектЦены.ИсточникДанных = "ИсточникДанных1";
    
    ОбъектОстатки = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    ОбъектОстатки.Имя = "Остатки";
    ОбъектОстатки.ИмяОбъекта = "Остатки";
    ОбъектОстатки.ИсточникДанных = "ИсточникДанных1";
    
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("Цены", ТаблицаЦены);
    ВнешниеНаборыДанных.Вставить("Остатки", ТаблицаОстатки);
    
    ПоляИсточниковДанных = Новый Структура;
    ЗаполнитьПоляИсточниковДанных(ПоляИсточниковДанных, Истина, Ложь);
    ЗаполнитьПоляСхемыКомпоновки(ПоляИсточниковДанных, СхемаКомпоновкиДанных);
    
    СвязиНаборов = СхемаКомпоновкиДанных.СвязиНаборовДанных;
    
    НоваяСвязь = СвязиНаборов.Добавить();
    НоваяСвязь.НаборДанныхИсточник  = "Цены";
    НоваяСвязь.НаборДанныхПриемник  = "Остатки";
    НоваяСвязь.ВыражениеИсточник    = "Номенклатура";
    НоваяСвязь.ВыражениеПриемник    = "Номенклатура";
    
    НоваяСвязь = СвязиНаборов.Добавить();
    НоваяСвязь.НаборДанныхИсточник  = "Цены";
    НоваяСвязь.НаборДанныхПриемник  = "Остатки";
    НоваяСвязь.ВыражениеИсточник    = "Характеристика";
    НоваяСвязь.ВыражениеПриемник    = "Характеристика";

    НоваяСвязь = СвязиНаборов.Добавить();
    НоваяСвязь.НаборДанныхИсточник  = "Цены";
    НоваяСвязь.НаборДанныхПриемник  = "Остатки";
    НоваяСвязь.ВыражениеИсточник    = "ЕдиницаИзмерения";
    НоваяСвязь.ВыражениеПриемник    = "ЕдиницаИзмерения";
    
    Идентификатор = Новый УникальныйИдентификатор;
    
    АдресСхемыКомпоновкиДанных = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Идентификатор);
    
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновкиДанных);
    
    КомпоновщикНастроек1 = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек1.Инициализировать(ИсточникНастроек);
    
    Настройки = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
    КомпоновщикНастроек1.ЗагрузитьНастройки(Настройки.Получить());
    
    ОбщийМассив = ПоляИсточниковДанных.Цены;
    ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОбщийМассив, ПоляИсточниковДанных.Остатки, Истина);
    
    УдалитьПоляДругихНаборовДанных(ОбщийМассив, КомпоновщикНастроек1.Настройки);
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек1.Настройки,,,
                                                Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,,);
        
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ТаблицаДанныеПакетаПредложений = Новый ТаблицаЗначений;
    
    ПроцессорВывода.УстановитьОбъект(ТаблицаДанныеПакетаПредложений);
    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    ТаблицаДанныеПакетаПредложений.Индексы.Добавить("Номенклатура");

КонецПроцедуры
   vicof
 
2 - 05.08.21 - 16:21
Надо посмотреть тексты запросов, которые получаются при разных отборах.
   PuhUfa
 
3 - 05.08.21 - 16:48
(0) Моделирую:
У тебя в 1С: Товар1 - 5шт.
Делаем обмен.
На сайте появляется: Товар1 - 5шт.
В 1С продаем Товар1 и получаем остаток 0шт.
Делаем обмен.

Вопрос: какое количество Товар1 будет на сайте если в обмен не попадает товар с нулевым остатком?
   seregapplk
 
4 - 05.08.21 - 17:01
нет, у меня в 1с товар старый с остатком - 0, нет его три года, а он выгружается на сайт
   seregapplk
 
5 - 05.08.21 - 17:28
Простите,
ответ на вопрос,
если после продажи делать выгрузку в режиме изменения, то количество как было так и есть,
если полный то все равно с остатком 1
если поставить в отборе больше или равно 1 
то все равно выгружает с остатком 1
то есть отбор по остатку вообще не работает
   seregapplk
 
6 - 06.08.21 - 08:40
пробовал
   seregapplk
 
7 - 06.08.21 - 08:40
ОстатокВсего = 0;
        Для Каждого СтрокаОстаткиПоСкладам Из ТекСтрока.Остатки Цикл
////


             Если СтрокаОстаткиПоСкладам.ОстатокНаСкладе <= 0 ТОгда
  Продолжить;
КонецЕсли
////

                Если Не ЗначениеЗаполнено(СтрокаОстаткиПоСкладам.Склад) Тогда
                Продолжить;
            КонецЕсли;
            
            ОстаткиПоСкладамXDTO = ФабрикаXDTO.Создать(ОстаткиПоСкладамТип);
            ОстаткиПоСкладамXDTO.ИдСклада = УникальныйИдентификаторОбъекта(СтрокаОстаткиПоСкладам.Склад);
            ОстаткиПоСкладамXDTO.КоличествоНаСкладе = СтрокаОстаткиПоСкладам.ОстатокНаСкладе;
            
            ПредложениеXDTO.Склады.Добавить(ОстаткиПоСкладамXDTO);
            
            ОстатокВсего = ОстатокВсего + СтрокаОстаткиПоСкладам.ОстатокНаСкладе;
            
        КонецЦикла;
        
        ПредложениеXDTO.Количество = ОстатокВсего;
        
        ПредложенияXDTO.Предложение.Добавить(ПредложениеXDTO);
        
    КонецЦикла;
    
    ИзмененияПакетаПредложенийXDTO.Предложения = ПредложенияXDTO;
    
    КоммерческаяИнформацияXDTO.ИзмененияПакетаПредложений.Добавить(ИзмененияПакетаПредложенийXDTO);
   seregapplk
 
8 - 06.08.21 - 08:40
ничего не выходит
   Галахад
 
9 - 06.08.21 - 09:05
ИМХО, там два типа обмена "полный" и "только изменения".
В первом случае отбор должен срабатывать.
Во-втором, пофиг на отбор по количеству. Выгружает то чьи данные изменились.
   PuhUfa
 
10 - 06.08.21 - 09:46
(7) Так не взлетит. Выгрузка представляет из себя 2 пакета (а если с заказами то 3). Сначала формируются пакеты с данными номенклатуры import*.xml и они отправляются на сайт (плюсом идут картинки). Потом формируются пакеты предложений offers*.xml (в них как раз отправляются остатки и цены). То что ты написал, если я правильно могу судить, убирает из пакетов предложений товары с остатком = 0, но информация о самом товаре уже ушла на сайт и она там есть. Да у товара не будет данных по ценам и остаткам, но сам он уже там и скорее всего отображается на сайте.
   seregapplk
 
11 - 06.08.21 - 16:31
если делать только изменения то вігружает только номенклатуру затронутую, то есть всю удалят и выгружает в клве 1 ту что я только что продал, хотя ее на складе ноль уже
   seregapplk
 
12 - 06.08.21 - 16:33
да два пакета, отбор не срабатывает, как удалить ее из пакета с данными?
   seregapplk
 
13 - 07.08.21 - 11:19

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.