Добавим в конфигурацию расширение. Назначение - Адаптация.
Назвать можно как Вам удобно. Я назвал "ОстаткиИЦеныНоменклатуры". Главное, не забудьте снять галочку "Безопасный режим".
Добавляем в расширение следующие элементы:
"ФормаСписка" из справочника Номенклатура
Все элементы регистра сведений "Цены номенклатуры"
Все элементы регистра накопления "Свободные остатки"
Итак, все готово для решения нашей задачи. Вперед!
Открываем форму списка из расширения. Открываем свойства реквизита "СписокНоменклатура", далее открываем настройку динамического списка, как показано на рисунке.
В открывшемся окне будет текс запроса. Нажимаем на кнопку Конструктор запроса. (а можно сразу тут заменить текст запроса на тот текст, что расположен ниже)
Откроется стандартный конструктор запроса, где мы можем немного модифицировать запрос, формирующий динамический список.
На рисунке ниже изображен конструктор с уже измененным запросом:
Текст исправленного запроса полностью:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
СпрНоменклатура.Ссылка КАК Ссылка,
СпрНоменклатура.Код КАК Код,
СпрНоменклатура.Наименование КАК Наименование,
СпрНоменклатура.Артикул КАК Артикул,
СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
СпрНоменклатура.Родитель,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
СвободныеОстаткиОстатки.ВНаличииОстаток КАК Остаток,
ЦеныНоменклатурыСрезПоследних.Цена КАК Розничная
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦеныРозница) КАК ЦеныНоменклатурыСрезПоследних
ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка = СпрНоменклатура.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&КонецПериода, Склад = &СкладОсновной) КАК СвободныеОстаткиОстатки
ПО (СвободныеОстаткиОстатки.Номенклатура.Ссылка = СпрНоменклатура.Ссылка)
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
(СпрНоменклатура.Ссылка В
(ВЫБРАТЬ
Сегменты.Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты.Сегмент = &СегментНоменклатуры))}
После внесения изменений в текст запроса, необходимо добавить выходные поля в форму списка. Это можно сделать простым перетаскиванием вновь созданных полей запроса.
И теперь остается один шаг: сообщить в запрос значения параметров: "КонецПериода", "ВидЦеныРозница", "СкладОсновной".
Будем это делать в обработчике события "ПриСозданииНаСервере". Для этого необходимо открыть свойства формы и создать обработку "ПриСозданииНаСервере", когда спросят "Тип Вызова" - отвечаем "Вызвать после".
В открывшемся окне редактора добавляем код:
Код:
СписокНоменклатура.Параметры.УстановитьЗначениеПараметра("КонецПериода", ТекущаяДата());
СписокНоменклатура.Параметры.УстановитьЗначениеПараметра("ВидЦеныРозница", Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"));
СписокНоменклатура.Параметры.УстановитьЗначениеПараметра("СкладОсновной", Справочники.Склады.НайтиПоНаименованию("Розничный"));
Обновляем конфигурацию(расширение) и запускаем 1С в режиме предприятия. Открываем справочник Номенклатура и проверяем.
Если все выполнено правильно, то получится примерно такой вариант:
Платформа "8.3.12.1685"
Конфигурация "УТ 11.3.4.228"
В прикрепленном файле расширение конфигурации, для тех, кому затруднительно будет проделать описанные выше шаги. Просто подключив расширение к конфигурации. Единственное, Вам нужно будет изменить названия Ваших складов и Видов цен.
По запросу я могу все исправить под Вашу базу.
Обновление от 03 июня 2021 года, работает на редакции 11.4.13.187
Не знаю, с какой редакции появилось "внутреннее расширение конфигурации" как бы нелепо это не звучало. Но оно есть, например в Общем модуле РаботаСНоменклатуройУТ есть Процедура ПолучитьДополненныйЗапросДинамическогоСписка. Вот она то и разрушала весь алгоритм работы моего расширения. Текст процедуры начинается с "//++ Локализация" ))))
В общем, чтобы расширение заработало на последних редакциях, в дополнение к проделанной работе, необходимо:
1. Добавить в расширение Регистр сведений СоответствиеНоменклатурыРаботаСНоменклатурой (со всеми измерениями и реквизитами)
2. Процедуру ПолучитьДополненныйЗапросДинамическогоСписка из Общего модуля РаботаСНоменклатуройУТ добавляем в расширение (Тип Вызова - Вместо) и скопировав весь текст процедуры. Далее, уже в расширении вносим изменение в запрос так-же, как и вносили изменения в запросе динамического списка формы списка справочника Номенклатура.