Добавляем непериодический независимый регистр сведений «eComm_ОстаткиПоставщиков» Измерения: Номенклатура, Характеристика Ресурс: Наличие (Булево)
Процедура ПередУстановкойТекстаЗапросаИнициализацииДанныхВыгрузки(СтруктураНастроек, ТекстЗапроса) Экспорт ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВрТабТаблицаТоваров.КоличествоОстаток ", " ВЫБОР | КОГДА ВрТабТаблицаТоваров.КоличествоОстаток > 0 | ТОГДА ВрТабТаблицаТоваров.КоличествоОстаток | КОГДА ЕСТЬNULL(eComm_ОстаткиПоставщиков.Наличие, ЛОЖЬ) = ИСТИНА | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ "); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ДОПОЛНИТЕЛЬНЫЕ СОЕДИНЕНИЯ", " ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_ОстаткиПоставщиков КАК eComm_ОстаткиПоставщиков | ПО ВрТабТаблицаТоваров.Номенклатура = eComm_ОстаткиПоставщиков.Номенклатура | И ВрТабТаблицаТоваров.ХарактеристикаНоменклатуры = eComm_ОстаткиПоставщиков.Характеристика"); КонецПроцедуры
Функция ВернутьНаличиеТоваровПоставщика(Номенклатура) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВрТабНоменклатура.Ссылка КАК Номенклатура,
| ЕСТЬNULL(СпрХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика
|ПОМЕСТИТЬ ВрТабНоменклатураХарактеристии
|ИЗ
| Справочник.Номенклатура КАК ВрТабНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристикиНоменклатуры
| ПО (ВрТабНоменклатура.Ссылка = СпрХарактеристикиНоменклатуры.Владелец
| ИЛИ ВрТабНоменклатура.ВидНоменклатуры = СпрХарактеристикиНоменклатуры.Владелец)
| И (ВрТабНоменклатура.ВидНоменклатуры.ИспользоватьХарактеристики)
| И (СпрХарактеристикиНоменклатуры.ПометкаУдаления = ЛОЖЬ)
|ГДЕ
| ВрТабНоменклатура.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВрТабНоменклатураХарактеристии.Номенклатура,
| ВрТабНоменклатураХарактеристии.Характеристика,
| eComm_ОстаткиПоставщиков.Наличие
|ИЗ
| ВрТабНоменклатураХарактеристии КАК ВрТабНоменклатураХарактеристии
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.eComm_ОстаткиПоставщиков КАК eComm_ОстаткиПоставщиков
| ПО ВрТабНоменклатураХарактеристии.Номенклатура = eComm_ОстаткиПоставщиков.Номенклатура
| И ВрТабНоменклатураХарактеристии.Характеристика = eComm_ОстаткиПоставщиков.Характеристика";
Запрос.УстановитьПараметр("Ссылка", Номенклатура);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Процедура ПередУстановкойТекстаЗапросаИнициализацииДанныхВыгрузки(СтруктураНастроек, ТекстЗапроса) Экспорт eCommСерверДоработки.ПередУстановкойТекстаЗапросаИнициализацииДанныхВыгрузки(СтруктураНастроек, ТекстЗапроса); КонецПроцедуры
Добавим реквизиты и элементы на форму: https://prnt.sc/ul6nzz
В конце метода «ПриСозданииЧтенииНаСервере» добавим:
//++ eComm_ИспользоватьХарактеристики = НЕ Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать; Элементы.eComm_ОстаткиНоменклатура.Видимость = НЕ eComm_ИспользоватьХарактеристики; Элементы.eComm_ОстаткиХарактеристика.Видимость = eComm_ИспользоватьХарактеристики; Набор = РегистрыСведений.eComm_ОстаткиПоставщиков.СоздатьНаборЗаписей(); Набор.Загрузить(eCommСерверДоработки.ВернутьНаличиеТоваровПоставщика(Объект.Ссылка)); ЗначениеВДанныеФормы(Набор,eComm_ОстаткиПоставщиков); //--
Метод «ИменаСворачиваемыхГрупп» приведем к виду:
ИменаСворачиваемыхГрупп.Добавить("Цены");
ИменаСворачиваемыхГрупп.Добавить("Шаблоны");
ИменаСворачиваемыхГрупп.Добавить("eComm_ОстаткиПоставщиков"); //++ eComm
Возврат ИменаСворачиваемыхГрупп;
Добавим метод «ПриЗаписиНаСервере» и привяжем его к методам формы:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) //++
Набор = ДанныеФормыВЗначение(eComm_ОстаткиПоставщиков, Тип("РегистрСведенийНаборЗаписей.eComm_ОстаткиПоставщиков"));
Набор.Отбор.Номенклатура.Использование = Истина;
Набор.Отбор.Номенклатура.ВидСравнения = ВидСравнения.Равно;
Набор.Отбор.Номенклатура.Значение = Объект.Ссылка;
Набор.Записать(Истина);
КонецПроцедуры