Имя: Пароль:
1C
1С v8
Проблема с выгрузкой товаров на сайт. Сайт на wordpress
0 seregapplk
 
31.07.21
17:03
Доброго времени суток.
Проблема с выгрузкой товаров на сайт. Сайт на wordpress плагин
Вот https://ru.wordpress.org/plugins/woocommerce-and-1centerprise-data-exchange/#description
В ут 10.3 работал как часы
В 11 промучился с договором,
Потом международный формат единицы измерения должен быть 3 символа, в настройках галочки
Выгружать
Катало товаров
Цены по соглашениям и остатки по складам ( в соглашении разрешение внешним пользователям).
Режим выгрузки все
Таблица как логов
Каталог "такой то" группа соответствует названию " такая то"
Идентификатор "программа автоматически подставляет"
Отбор " остаток на складе больше 0"
И все равно весь список шарашит туда
Убился, не понимаю в чём дело.
скрин настроек https://drive.google.com/file/d/1wKeKTFCO_3uKNntacLDnauNjVelSpAge/view?usp=sharing
1 seregapplk
 
01.08.21
13:11
каталог один оставил (все),
группы в списке,
остаток больше 0,
все равно пустую номенклатуру загоняет.
2 vde69
 
01.08.21
13:32
Так в 1с трассировка есть
3 seregapplk
 
01.08.21
13:38
как только это сделать
4 ДенисЧ
 
01.08.21
14:05
(3) Есть волшебная кнопка F11.
Правда, чтобы ей пользоваться - нужно программистом быть..
5 seregapplk
 
01.08.21
14:08
я не пойму в какой процедуре происходит заполнение, и почему она не обращает внимания на "количество больше 0"
6 seregapplk
 
01.08.21
14:12
Нашел,
Процедура ЗаполнитьТаблицуФормированияПакетаПредложений(МассивНоменклатуры, ТаблицаИсточник, ТаблицаПриемник)
    
        
    Для Каждого ЭлементМассива Из МассивНоменклатуры Цикл
        
        Отбор = Новый Структура;
        Отбор.Вставить("Номенклатура", ЭлементМассива);
        
        ТаблицаТипыЦен = ТаблицаИсточник.Скопировать(Отбор);
        
        ТаблицаТипыЦен.Свернуть("ТипЦены,
                                    |ТипЦеныЦенаВключаетНДС,
                                    |ТипЦеныНаименование,
                                    |ТипЦеныВалютаКод,
                                    |ТипЦеныЕдиницаЦеныНаименованиеСокращенное,
                                    |ТипЦеныЕдиницаЦеныКоэффициент,
                                    |ЦенаЗаЕдиницу,
                                    |Номенклатура,
                                    |Характеристика, ЕдиницаИзмерения");
                                    
        УдалитьПустыеСтроки(ТаблицаТипыЦен, "ТипЦены");
        
        ТаблицаОстаткиПоСкладам = ТаблицаИсточник.Скопировать(Отбор);
        ТаблицаОстаткиПоСкладам.Свернуть("Склад, СкладНаименование, ОстатокНаСкладе,
                                    |Номенклатура, Характеристика, ЕдиницаИзмерения");
        
        УдалитьПустыеСтроки(ТаблицаОстаткиПоСкладам, "Склад");
        
        ПромежуточнаяТаблицаНоменклатуры = ТаблицаИсточник.Скопировать(Отбор);
        ПромежуточнаяТаблицаНоменклатуры.Свернуть("Номенклатура, НоменклатураНаименование,
                                    |НоменклатураАртикул,
                                    |НоменклатураПометкаУдаления,
                                    |Характеристика,
                                    |ЕдиницаИзмерения,
                                    |ЕдиницаИзмеренияКод,
                                    |ЕдиницаИзмеренияНаименованиеПолное,
                                    |ЕдиницаИзмеренияМеждународноеСокращение,
                                    |ЕдиницаИзмеренияПересчетКоэф,
                                    |ЕдиницаИзмеренияПересчетЕдиница,
                                    |ЕдиницаИзмеренияПересчетЕдиница");
    
        УдалитьПустыеСтроки(ПромежуточнаяТаблицаНоменклатуры, "НоменклатураНаименование");
        
        Для Каждого ТекСтрока Из ПромежуточнаяТаблицаНоменклатуры Цикл
            НоваяСтрока = ТаблицаПриемник.Добавить();
            ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
            
            ОтборНоменклатураХарактеристика = Новый Структура;
            ОтборНоменклатураХарактеристика.Вставить("Номенклатура", ТекСтрока.Номенклатура);
            ОтборНоменклатураХарактеристика.Вставить("Характеристика", ТекСтрока.Характеристика);
            ОтборНоменклатураХарактеристика.Вставить("ЕдиницаИзмерения", ТекСтрока.ЕдиницаИзмерения);
            
            Остатки = ТаблицаОстаткиПоСкладам.Скопировать(ОтборНоменклатураХарактеристика);
            НоваяСтрока.ОстаткиПоСкладам = Остатки;
            
            ТаблицаЦен = ТаблицаТипыЦен.Скопировать(ОтборНоменклатураХарактеристика);
            НоваяСтрока.Цены = ТаблицаЦен;
            
        КонецЦикла;
        
    КонецЦикла;
        
КонецПроцедуры
7 seregapplk
 
01.08.21
14:28
помогите, что поправить чтобы с нулевым остатком не лезло в таблицу
Процедура ЗаполнитьИзменияПакета(СтрокаТаблицыКаталога, ТаблицаОбновленияПакета, КоммерческаяИнформацияXDTO)
    
    ПакетCML =  ПакетCML();
    ИзмененияПакетаПредложенийТип = ПакетCML.Получить("ИзмененияПакетаПредложений");
    ИзмененияПакетаПредложенийXDTO = ФабрикаXDTO.Создать(ИзмененияПакетаПредложенийТип);
    
    ИзмененияПакетаПредложенийXDTO.Ид = СтрокаТаблицыКаталога.ИдентификаторКаталога+"#";
    ИзмененияПакетаПредложенийXDTO.ИдКаталога = СтрокаТаблицыКаталога.ИдентификаторКаталога;
    
    ПредложенияТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ИзмененияПакетаПредложенийТип, "Предложения");
    ПредложенияXDTO = ФабрикаXDTO.Создать(ПредложенияТип);
    
    ПредложениеТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ПредложенияТип, "Предложение");
    
    ЦенаТип = ПакетCML.Получить("Цена");
    ОстаткиПоСкладамТип = ПакетCML.Получить("ОстаткиПоСкладам");
    
    ЦеныТип = ПолучитьТипСвойстваОтТипаОбъектаXDTO(ПредложениеТип, "Цены");
    Для Каждого ТекСтрока Из ТаблицаОбновленияПакета Цикл
        
        ПредложениеXDTO = ФабрикаXDTO.Создать(ПредложениеТип);
        
        
        ПредложениеXDTO.Ид = УникальныйИдентификаторОбъекта(ТекСтрока.Номенклатура);
        Если ЗначениеЗаполнено(ТекСтрока.Характеристика) Тогда
            ПредложениеXDTO.ИдХарактеристики = УникальныйИдентификаторОбъекта(ТекСтрока.Характеристика);
        КонецЕсли;
        
        ЦеныXDTO = ФабрикаXDTO.Создать(ЦеныТип);
        Для Каждого СтрокаТипЦены Из ТекСтрока.Цены Цикл
            
            ЦенаXDTO = ФабрикаXDTO.Создать(ЦенаТип);
            ЦенаXDTO.ИдТипаЦены = УникальныйИдентификаторОбъекта(СтрокаТипЦены.ТипЦены);
            ЦенаXDTO.ЦенаЗаЕдиницу = СтрокаТипЦены.ЦенаЗаЕдиницу;
            ЦенаXDTO.Коэффициент = СтрокаТипЦены.ТипЦеныЕдиницаЦеныКоэффициент;
            ЦенаXDTO.Валюта = СтрокаТипЦены.ТипЦеныВалютаКод;
            ЦенаXDTO.Единица = СтрокаТипЦены.ТипЦеныЕдиницаЦеныНаименованиеСокращенное;
            
            ЦеныXDTO.Цена.Добавить(ЦенаXDTO);
            
        КонецЦикла;
        Если ЦеныXDTO.Цена.Количество() > 0 Тогда
            ПредложениеXDTO.Цены = ЦеныXDTO;
        КонецЕсли;
        
        ОстатокВсего = 0;
        Для Каждого СтрокаОстаткиПоСкладам Из ТекСтрока.Остатки Цикл
            
            Если Не ЗначениеЗаполнено(СтрокаОстаткиПоСкладам.Склад) Тогда
                Продолжить;
            КонецЕсли;
            
            ОстаткиПоСкладамXDTO = ФабрикаXDTO.Создать(ОстаткиПоСкладамТип);
            ОстаткиПоСкладамXDTO.ИдСклада = УникальныйИдентификаторОбъекта(СтрокаОстаткиПоСкладам.Склад);
            ОстаткиПоСкладамXDTO.КоличествоНаСкладе = СтрокаОстаткиПоСкладам.ОстатокНаСкладе;
            
            ПредложениеXDTO.Склады.Добавить(ОстаткиПоСкладамXDTO);
            
            ОстатокВсего = ОстатокВсего + СтрокаОстаткиПоСкладам.ОстатокНаСкладе;
            
        КонецЦикла;
        
        ПредложениеXDTO.Количество = ОстатокВсего;
        
        ПредложенияXDTO.Предложение.Добавить(ПредложениеXDTO);
        
    КонецЦикла;
    
    ИзмененияПакетаПредложенийXDTO.Предложения = ПредложенияXDTO;
    
    КоммерческаяИнформацияXDTO.ИзмененияПакетаПредложений.Добавить(ИзмененияПакетаПредложенийXDTO);
    
КонецПроцедуры

Процедура ЗаполнитьТаблицуДляОтправкиДаннымиНоменклатуры(МассивНоменклатуры, СтруктураИсходныхТаблиц, ТаблицаПриемник)
    
    Для Каждого ТекСтрока Из СтруктураИсходныхТаблиц.Номенклатура Цикл
        
        Если МассивНоменклатуры.Найти(ТекСтрока.Номенклатура) = Неопределено Тогда
            Продолжить;
        КонецЕсли;
        
        НоваяСтрока = ТаблицаПриемник.Добавить();
        
        ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
        
        Отбор = Новый Структура;
        Отбор.Вставить("Номенклатура", ТекСтрока.Номенклатура);
        
        Если Не СтруктураИсходныхТаблиц.Характеристики = Неопределено Тогда
            Характеристики = СтруктураИсходныхТаблиц.Характеристики.Скопировать(Отбор);
            НоваяСтрока.Характеристики = Характеристики;
        КонецЕсли;
        
        Файлы = СтруктураИсходныхТаблиц.Файлы.Скопировать(Отбор);
        НоваяСтрока.Файлы = Файлы;
        
        Свойства = СтруктураИсходныхТаблиц.Свойства.Скопировать(Отбор);
        НоваяСтрока.Свойства = Свойства;
        
    КонецЦикла;
    
    
КонецПроцедуры
8 seregapplk
 
01.08.21
14:28
Сергей, [01.08.21 14:27]
Не должно же так быть. В ут работает, судя по информации в сети, проблема есть обратная. )) Он с нулевыми не выгружает.
Механизм то один и тот же. Не пойму где я ошибся в настройках.
9 ДенисЧ
 
01.08.21
14:35
Для Каждого СтрокаОстаткиПоСкладам Из ТекСтрока.Остатки Цикл
////
Если СтрокаОстаткиПоСкладам.ОстатокНаСкладе <= 0 ТОгда
  Продолжить;
КонецЕсли
////
Если Не ЗначениеЗаполнено(СтрокаОстаткиПоСкладам.Склад) Тогда


Это же настолько очевидно, что у меня просто нет слов.
10 seregapplk
 
01.08.21
14:54
Спасибо
11 seregapplk
 
01.08.21
16:21
Все тоже самое.
12 OldCondom
 
01.08.21
16:28
Перезагрузите компьютер
13 seregapplk
 
03.08.21
13:25
выгружает только если в список загнать конкретную номенклатуру, но тоже плевать на остатки по складам
14 seregapplk
 
03.08.21
16:18
остатки заполняет в этой процедуре
только что не так не понимаю
ПолучитьДанныеДляВыгрузкиПакетаПредложений(ПрикладныеПараметры,Знач КомпоновщикНастроек, ТаблицаДанныеПакетаПредложений,
                                          ОписаниеОшибки)
        
    ТекстыЗапросов = Новый Структура("Цены, Остатки");
    ОбменССайтомПереопределяемый.ПолучитьТекстыЗапросовПакетаПредложений(ТекстыЗапросов);
    ЕстьОшибка = Ложь;
    Для Каждого КлючЗначение Из ТекстыЗапросов Цикл
        Если Не ЗначениеЗаполнено(КлючЗначение.Значение) Тогда
            ОписаниеОшибки = ОписаниеОшибки + НСтр("ru='Не заполнен текст запроса для получения данных:';uk='Не заповнений текст запиту для отримання даних:'")+ КлючЗначение.Ключ
                + Символы.ПС;
            ЕстьОшибка = Истина;
        КонецЕсли;
    КонецЦикла;
    
    Если ЕстьОшибка Тогда
        Возврат;
    КонецЕсли;
    
    ПоляИсточниковДанных = Новый Структура;
    ЗаполнитьПоляИсточниковДанных(ПоляИсточниковДанных, Истина);
    
    ТаблицаЦены = РезультатВыполненияСхемы(КомпоновщикНастроек, ТекстыЗапросов.Цены, ПоляИсточниковДанных.Цены,
        ПрикладныеПараметры, "ПакетПредложений");
    ТаблицаЦены.Индексы.Добавить("Номенклатура");
    
    
    ТаблицаОстатки = РезультатВыполненияСхемы(КомпоновщикНастроек, ТекстыЗапросов.Остатки, ПоляИсточниковДанных.Остатки,
        ПрикладныеПараметры, "ПакетПредложений");
    ТаблицаОстатки.Индексы.Добавить("Номенклатура");

    // Полученные в результате выполнения СКД таблицы значений поместим в новую СКД,
    // чтобы можно было применить отбор по количеству на складе
    
    СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
        
    ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя                = "ИсточникДанных1";
    ИсточникДанных.ТипИсточникаДанных = "Local";

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

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

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

КонецПроцедуры
15 seregapplk
 
03.08.21
16:18
остатки заполняет в этой процедуре
только что не так не понимаю
16 seregapplk
 
04.08.21
14:19
может кто на платной основе сделает?
17 seregapplk
 
06.08.21
08:39
пробовал так

        ОстатокВсего = 0;
        Для Каждого СтрокаОстаткиПоСкладам Из ТекСтрока.Остатки Цикл
////

             Если СтрокаОстаткиПоСкладам.ОстатокНаСкладе <= 0 ТОгда
  Продолжить;
КонецЕсли
////
                Если Не ЗначениеЗаполнено(СтрокаОстаткиПоСкладам.Склад) Тогда
                Продолжить;
            КонецЕсли;
            
            ОстаткиПоСкладамXDTO = ФабрикаXDTO.Создать(ОстаткиПоСкладамТип);
            ОстаткиПоСкладамXDTO.ИдСклада = УникальныйИдентификаторОбъекта(СтрокаОстаткиПоСкладам.Склад);
            ОстаткиПоСкладамXDTO.КоличествоНаСкладе = СтрокаОстаткиПоСкладам.ОстатокНаСкладе;
            
            ПредложениеXDTO.Склады.Добавить(ОстаткиПоСкладамXDTO);
            
            ОстатокВсего = ОстатокВсего + СтрокаОстаткиПоСкладам.ОстатокНаСкладе;
            
        КонецЦикла;
        
        ПредложениеXDTO.Количество = ОстатокВсего;
        
        ПредложенияXDTO.Предложение.Добавить(ПредложениеXDTO);
        
    КонецЦикла;
    
    ИзмененияПакетаПредложенийXDTO.Предложения = ПредложенияXDTO;
    
    КоммерческаяИнформацияXDTO.ИзмененияПакетаПредложений.Добавить(ИзмененияПакетаПредложенийXDTO);


ничего
18 rsv
 
06.08.21
09:04
(17) а где xml то сам ? Который на сервер гоните . Прослойка xdto круто но ..ее итог это обычный xml
Основная теорема систематики: Новые системы плодят новые проблемы.