|
Надстройка обработки ОбменДаннымиСВебСайтом | ☑ | ||
---|---|---|---|---|
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
|
Ведь по завершению процедуры это выводит ОК :
ДоступныеПоля: Номенклатура Остаток Свойство Склад ТипЦен |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |