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