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