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