Имя: Пароль:
1C
1С v8
Надстройка обработки ОбменДаннымиСВебСайтом
0 Boudybuilder
 
14.08.12
23:00
Здраствуйте.

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

Наличием номенклатуры у поставщиков будет служить документ УстановкаЦенНоменклатурыКонтрагентов.

Что вы думаете по этому поводу?
1 Нуф-Нуф
 
14.08.12
23:02
5000 рублей и я буду не против
2 Boudybuilder
 
14.08.12
23:02
(2) Ответы подобного типа не принимаются ;)
3 ЧашкаЧая
 
14.08.12
23:10
(0) Странный выбор документа установки наличия номенклатуры у поставщика. Данные собираетесь обновлять периодически, так? Не представляю как будет ворочаться УстановкаЦен с ее двумя ТЧ и динамичным формированием табличных полей с количеством номенклатуры на пару тысяч. Мне кажется лучше сделать регистр сведений и грузить его регламентной операцией.
4 Boudybuilder
 
14.08.12
23:22
(3) Вобщето док служит тока регистратором для регистра сведений ЦеныНоменклатурыКонтрагентов. Оттуда я уже и буду тянуть данные на определенную дату.
5 g_frost
 
14.08.12
23:28
типовой обмен с сайтом - адская вещь, работающая для 300 000 позиций номенклатуры * 60 магазинов  непозволительно долго.
по теме - пилите шура пилите ...
вариант 2 - если конфигурация на поддержке, создавать / обновлять липовый остаток по дополнительному складу Товары под заказ
6 Boudybuilder
 
14.08.12
23:33
Вот пилю... Дало первую ошибку...

{ОбщийМодуль.ПроцедурыОбменаССайтом.Модуль(524)}: Ошибка при вызове метода контекста (Добавить)
   ПостроительОбъект.Отбор.Добавить("Контрагент", , "Остатки по контрагентам");//
по причине:
Недопустимое значение параметра (параметр номер '1')
7 viktor_vv
 
14.08.12
23:49
Я добавил в регистр сведений НоменклатураКонтрагентов ресурс Наличие. Артикула контрагентов туда все равно писать, плюс регитср не такой тяжелый, побыстрее будет оттуда тягать при выгрузке.
Он правда не периодический, ну так периодика и не нужна, важно что там в текущий момент. Правда саму обработку еще не пилил.
8 viktor_vv
 
14.08.12
23:57
(6) А "Контрагент" есть в доступных полях ?
9 ЧашкаЧая
 
14.08.12
23:58
(7) А вот это лучшее решение, позволяет регистрировать наличие в разрезе контрагентов.
10 Boudybuilder
 
15.08.12
00:00
(8) Какразз тут застопорил , где єто найти?
11 viktor_vv
 
15.08.12
00:01
(9) Ну цены контрагентов тоже в разрезе контрагентов, но тяжеловатый регистр, плюс ненужная периодика, постоянно при обменах его дергать не айс наверное будет.
12 viktor_vv
 
15.08.12
00:05
(10) Не совсем понял зачем постритель, почему просто запросом не тянуть.
Ну я с построителями не работал особо, читаю доку :), уже СКД застал, решил с построителями не париться.
13 Boudybuilder
 
15.08.12
00:07
(8) Где єти доступные поля , вкурить не могу!
14 viktor_vv
 
15.08.12
00:12
Добавить(<Описание>, <Имя>, <Представление>)
Параметры:

<Описание> (обязательный)

Тип: Строка. Описание элемента отбора в виде наименования доступного поля или в виде развернутого пути


В свойствах построителя.

Перед добавлением отбора надо наверное еще вот это.

УстановитьДоступныеПоля (SetAvailableFields)
Синтаксис:

УстановитьДоступныеПоля(<Поля>)
Параметры:

<Поля> (обязательный)

Тип: ПоляНастройки. Коллекция полей, доступных для отбора.
Описание:

Устанавливает коллекцию полей, доступных для отбора.
15 viktor_vv
 
15.08.12
00:15
Вернее в описании свойства построителя "Отбор" .
Но еще раз повторю, я могу заблуждаться :).
16 Boudybuilder
 
15.08.12
00:17
Там такая процедура




Процедура ЗаполнитьОтборПостроителя(ПостроительОбъект) Экспорт
   
   ОтборКоличество = ПостроительОбъект.Отбор.Количество();
   Для Н = 1 По ОтборКоличество Цикл
       ПостроительОбъект.Отбор.Удалить(ОтборКоличество - Н);
   КонецЦикла;    
   
   ПостроительОбъект.Отбор.Добавить("Номенклатура", , "Номенклатура");
       
   ПостроительОбъект.Отбор.Добавить("ТипЦен", , "Тип цен");
   ПостроительОбъект.ДоступныеПоля.ТипЦен.Представление = "Тип цен";
   ПостроительОбъект.Отбор.Добавить("Склад", , "Остатки по складам");
   ПостроительОбъект.ДоступныеПоля.Склад.Представление = "Остатки по складам";
   ПостроительОбъект.Отбор.Добавить("Остаток", , "Остаток");
   ПостроительОбъект.ДоступныеПоля.Остаток.Представление = "Остаток";
   ПостроительОбъект.Отбор.Добавить("Контрагент", , "Остатки по контрагентам");//Фан
   ПостроительОбъект.ДоступныеПоля.Контрагент.Представление = "Остатки по контрагентам";//Фан
   
КонецПроцедуры
17 viktor_vv
 
15.08.12
00:24
Ну попробуй проверить.

   ПостроительОбъект.ДоступныеПоля.Остаток.Представление = "Остаток";
   Если ПостроительОбъект.ДоступныеПоля.Найти("Контрагент") = Неопределено Тогда
     Сообщить("Обломс, не нашли в доступных полях Контрагент");
   КонецЕсли ;
   ПостроительОбъект.Отбор.Добавить("Контрагент", , "Остатки по контрагентам");//Фан

   ПостроительОбъект.ДоступныеПоля.Контрагент.Представление = "Остатки по контрагентам";//Фан

Я так понял Фан это твои добавленные строки.
18 Boudybuilder
 
15.08.12
00:24
ага
19 Boudybuilder
 
15.08.12
00:27
В форме элемента НастройкиОбменаССайтом
вот эта процедура



Процедура ПриОткрытии()
   
   ПроцедурыОбменаССайтом.НастроитьПостроительОтчета(ПостроительОтчета);
       
   Если ЭтоНовый()
       И НЕ ЗначениеЗаполнено(ПараметрОбъектКопирования) Тогда
       
       ЗаполнитьПоУмолчанию();
       ПроцедурыОбменаССайтом.ЗаполнитьОтборПостроителя(ПостроительОтчета);
       
   Иначе
       
       ТаблицаОтбора = СохраненныеНастройкиПостроителя.Получить();
       ПроцедурыОбменаССайтом.ЗаполнитьОтборПостроителя(ПостроительОтчета);

       Если ТаблицаОтбора <> Неопределено Тогда
           ОбщегоНазначения.ЗаполнитьОтборПоТаблицеЗначений(ПостроительОтчета.Отбор, ТаблицаОтбора);
       КонецЕсли;    
       
   КонецЕсли;    
   
   УстановитьЗначенияПеременныхРегламентныхНастроек();
   
   УстановитьДоступностьИВидимостьЭлементовФормы();
   
   ОбновитьДоступностьАвтообмена();
   
КонецПроцедуры


И дальше переходит в общий модуль ПроцедурыОбменаССайтом


Процедура ЗаполнитьОтборПостроителя(ПостроительОбъект) Экспорт
   
   ОтборКоличество = ПостроительОбъект.Отбор.Количество();
   Для Н = 1 По ОтборКоличество Цикл
       ПостроительОбъект.Отбор.Удалить(ОтборКоличество - Н);
   КонецЦикла;    
   
   ПостроительОбъект.Отбор.Добавить("Номенклатура", , "Номенклатура");
       
   ПостроительОбъект.Отбор.Добавить("ТипЦен", , "Тип цен");
   ПостроительОбъект.ДоступныеПоля.ТипЦен.Представление = "Тип цен";
   ПостроительОбъект.Отбор.Добавить("Склад", , "Остатки по складам");
   ПостроительОбъект.ДоступныеПоля.Склад.Представление = "Остатки по складам";
   ПостроительОбъект.Отбор.Добавить("Остаток", , "Остаток");
   ПостроительОбъект.ДоступныеПоля.Остаток.Представление = "Остаток";
   ПостроительОбъект.Отбор.Добавить("Контрагент", , "Остатки по контрагентам");//Фан

   ПостроительОбъект.ДоступныеПоля.Контрагент.Представление = "Остатки по контрагентам";//Фан

   
КонецПроцедуры

Тут уже ошибка
20 Конфигуратор1с
 
15.08.12
00:33
(1)за 5000 рублей родину продашь?
21 viktor_vv
 
15.08.12
00:37
(19) Так там же в тексте построителя и не пахнет ценами контрагентов, откуда ж там поле такое возьмется.
Смотри процедуру НастроитьПостроитель() в этом же общем модуле.
22 Boudybuilder
 
15.08.12
00:38
Процедура НастроитьПостроительОтчета(ПостроительОбъект) Экспорт
   
   МассивДопустимыхТиповНоменклатуры = Новый Массив;
   МассивДопустимыхТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
   //МассивДопустимыхТиповНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Услуга);
   
   ПостроительОбъект.Параметры.Вставить("МассивДопустимыхТиповНоменклатуры", МассивДопустимыхТиповНоменклатуры);
       
   ПостроительОбъект.Текст =
       "ВЫБРАТЬ РАЗРЕШЕННЫЕ
       |    Товары.НоменклатураСсылка КАК НоменклатураСсылка,
       |    Товары.НоменклатураСсылка.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
       |    Товары.НоменклатураСсылка.ЕдиницаХраненияОстатков КАК ЕдиницаДляШтрихКода,
       |    Товары.НоменклатураСсылка.ВидНоменклатуры.Наименование КАК ВидНоменклатуры,
       |    Товары.НоменклатураСсылка.ВидНоменклатуры.ТипНоменклатуры КАК ТипНоменклатуры,
       |    РегистрШтрихКоды.Штрихкод КАК ШтрихКод,
       |    Товары.ХарактеристикаСсылка КАК ХарактеристикаСсылка,
       |    ЗначенияСвойствХарактеристик.Свойство КАК ХарактеристикаСвойство,
       |    ЗначенияСвойствХарактеристик.Значение КАК ХарактеристикаЗначениеСвойства,
       |    ВЫБОР
       |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
       |            ТОГДА ЦеныНоменклатурыБезХарактеристики.ТипЦен
       |        ИНАЧЕ ЦеныНоменклатуры.ТипЦен
       |    КОНЕЦ КАК ТипЦен,
       |    ВЫБОР
       |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
       |            ТОГДА ЦеныНоменклатурыБезХарактеристики.Валюта
       |        ИНАЧЕ ЦеныНоменклатуры.Валюта
       |    КОНЕЦ КАК Валюта,
       |    ВЫБОР
       |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
       |            ТОГДА ЦеныНоменклатурыБезХарактеристики.Цена
       |        ИНАЧЕ ЦеныНоменклатуры.Цена
       |    КОНЕЦ КАК Цена,
       |    ВЫБОР
       |        КОГДА ЦеныНоменклатуры.Цена ЕСТЬ NULL
       |            ТОГДА ЦеныНоменклатурыБезХарактеристики.ЕдиницаИзмерения
       |        ИНАЧЕ ЦеныНоменклатуры.ЕдиницаИзмерения
       |    КОНЕЦ КАК ЕдиницаИзмеренияЦены,
       |    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ТоварыВРозницеОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ТоварыВНТТОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток, 0) КАК Остаток,
       |    ЗначенияСвойствОбъектов.Значение КАК СвойствоНоменклатурыЗначение,
       |    ЗначенияСвойствОбъектов.Свойство КАК СвойствоНоменклатуры,
       |    ЦеныНоменклатурыКонтрагентовСрезПоследних.Регистратор.Контрагент КАК Контрагент
       |ИЗ
       |    (ВЫБРАТЬ
       |        Номенклатура.Ссылка КАК НоменклатураСсылка,
       |        Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаДляШтрихКода,
       |        ХарактеристикиНоменклатуры.Наименование КАК ХарактеристикаНаименование,
       |        ВЫБОР
       |            КОГДА ХарактеристикиНоменклатуры.Ссылка ЕСТЬ NULL
       |                ТОГДА ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
       |            ИНАЧЕ ХарактеристикиНоменклатуры.Ссылка
       |        КОНЕЦ КАК ХарактеристикаСсылка
       |    ИЗ
       |        Справочник.Номенклатура КАК Номенклатура
       |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
       |            ПО Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец
       |    ГДЕ
       |        Номенклатура.ЭтоГруппа = ЛОЖЬ
       |        И Номенклатура.ВидНоменклатуры.ТипНоменклатуры В(&МассивДопустимыхТиповНоменклатуры)
       |    {ГДЕ
       |        Номенклатура.Ссылка.* КАК Номенклатура}) КАК Товары
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК РегистрШтрихКоды
       |        ПО Товары.НоменклатураСсылка = РегистрШтрихКоды.Владелец
       |            И Товары.ХарактеристикаСсылка = РегистрШтрихКоды.ХарактеристикаНоменклатуры
       |            И Товары.ЕдиницаДляШтрихКода = РегистрШтрихКоды.ЕдиницаИзмерения
       |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
       |            ЗначенияСвойствОбъектов.Объект КАК Объект,
       |            ЗначенияСвойствОбъектов.Свойство КАК Свойство,
       |            ЗначенияСвойствОбъектов.Значение КАК Значение
       |        ИЗ
       |            РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       |        ГДЕ
       |            ЗначенияСвойствОбъектов.Свойство.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
       |        {ГДЕ
       |            ЗначенияСвойствОбъектов.Свойство КАК Свойство}) КАК ЗначенияСвойствОбъектов
       |        ПО Товары.НоменклатураСсылка = ЗначенияСвойствОбъектов.Объект
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОтчета, {(ТипЦен).*}) КАК ЦеныНоменклатуры
       |        ПО Товары.НоменклатураСсылка = ЦеныНоменклатуры.Номенклатура
       |            И Товары.ХарактеристикаСсылка = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОтчета, {(ТипЦен).*}) КАК ЦеныНоменклатурыБезХарактеристики
       |        ПО Товары.НоменклатураСсылка = ЦеныНоменклатурыБезХарактеристики.Номенклатура
       |            И (ЦеныНоменклатурыБезХарактеристики.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОтчета, {(Склад).*}) КАК ТоварыНаСкладахОстатки
       |        ПО Товары.НоменклатураСсылка = ТоварыНаСкладахОстатки.Номенклатура
       |            И Товары.ХарактеристикаСсылка = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРознице.Остатки(&ДатаОтчета, {(Склад).*}) КАК ТоварыВРозницеОстатки
       |        ПО Товары.НоменклатураСсылка = ТоварыВРозницеОстатки.Номенклатура
       |            И Товары.ХарактеристикаСсылка = ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВНТТ.Остатки(&ДатаОтчета, {(Склад).*}) КАК ТоварыВНТТОстатки
       |        ПО Товары.НоменклатураСсылка = ТоварыВНТТОстатки.Номенклатура
       |            И Товары.ХарактеристикаСсылка = ТоварыВНТТОстатки.ХарактеристикаНоменклатуры
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОтчета, {(Склад).*}) КАК ТоварыВРезервеНаСкладахОстатки
       |        ПО Товары.НоменклатураСсылка = ТоварыВРезервеНаСкладахОстатки.Номенклатура
       |            И Товары.ХарактеристикаСсылка = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(&ДатаОтчета, {(Склад).*}) КАК ТоварыКПередачеСоСкладовОстатки
       |        ПО Товары.НоменклатураСсылка = ТоварыКПередачеСоСкладовОстатки.Номенклатура
       |            И Товары.ХарактеристикаСсылка = ТоварыКПередачеСоСкладовОстатки.ХарактеристикаНоменклатуры
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствХарактеристик
       |        ПО (ЗначенияСвойствХарактеристик.Объект = Товары.ХарактеристикаСсылка)
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
       |        ПО Товары.НоменклатураСсылка = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура.Ссылка
       |            И Товары.ХарактеристикаСсылка = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры.Ссылка
       |ГДЕ
       |    ИСТИНА
       |{ГДЕ
       |    (ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ТоварыВРозницеОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ТоварыВНТТОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток, 0)) КАК Остаток}
       |ИТОГИ
       |    МАКСИМУМ(ЕдиницаИзмерения),
       |    МАКСИМУМ(ЕдиницаДляШтрихКода),
       |    МАКСИМУМ(ВидНоменклатуры),
       |    МАКСИМУМ(ТипНоменклатуры),
       |    МАКСИМУМ(ШтрихКод),
       |    МАКСИМУМ(ХарактеристикаЗначениеСвойства),
       |    МАКСИМУМ(ТипЦен),
       |    МАКСИМУМ(Валюта),
       |    МАКСИМУМ(Цена),
       |    МАКСИМУМ(ЕдиницаИзмеренияЦены),
       |    МАКСИМУМ(Остаток),
       |    МАКСИМУМ(СвойствоНоменклатурыЗначение)
       |ПО
       |    НоменклатураСсылка,
       |    ХарактеристикаСсылка,
       |    ХарактеристикаСвойство,
       |    СвойствоНоменклатуры
       |АВТОУПОРЯДОЧИВАНИЕ";

КонецПроцедуры


Эту?
23 viktor_vv
 
15.08.12
00:47
Эту. Вот сюда тебе надо добавить еще свой запрос по ценам контрагентов. Только она какая-то короткая у тебя, в моем релизе поболее будет.
Блин, как же доставляют эти километровые запросы :)).
24 Boudybuilder
 
15.08.12
01:21
(22) Я плохо в єтом разбираюсь. Но как мне туда добавить Контрагент?
25 Boudybuilder
 
15.08.12
01:22
Ведь по завершению процедуры это выводит ОК :
ДоступныеПоля:
Номенклатура
Остаток
Свойство
Склад
ТипЦен
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший