==== Регистр сведений "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
КонецЕсли;