Создание формы подбора для документа



В данной статье речь пойдет о создании формы подбора Номенклатуры, открываемой из формы документа для подбора необходимых позиций. Форма будет создана на основе общих форм и будет состоять из трех списков. Первый список будет отображать дерево значений номенклатуры, второй - непосредственно список номенклатуры, а в третьем будут отображаться выбранные значения. Для начала зайдем в документ, создадим кнопку "Подбор" и команду на кнопку. Теперь добавим действие на эту команду в котором пропишем код, открывающий форму подбора: &НаКлиенте
Процедура Подбор(Команда)
ОткрытьФорму("ОбщаяФорма. ФормаПодбора");
КонецПроцедуры
Далее закрываем форму документа (к ней мы вернемся чуть позже) и создаем новую общую форму "ФормаПодбора":

Далее добавляем таблицу на форму и реквизит к таблице. Тип данных реквизита будет "ДинамическийСписок". В свойствах реквизита в разделе Объект поставим галочку - "Произвольный запрос" и нажмем на ссылку Настройка списка: В появившейся форме нам необходимо будет написать запрос который будет отображаться в таблице "Дерево". Текст запроса будет выглядеть так: ВЫБРАТЬ
Номенклатура. Наименование КАК Группа
ИЗ
Справочник. Номенклатура КАК Номенклатура
ГДЕ
Номенклатура. ЭтоГруппа Теперь нужно немного изменить настройки для таблицы Дерево, точнее изменить кое какие свойства отображения нашего древовидного списка: 1. Установим галочку на свойство ТолькоПросмотр 2. Установим галочку на свойство РежимВыбора 3. ПоложениеКоманднойПанели - Нет 4. Отображение - Дерево 5. Режим выделения - Одиночный 6. Начальное отображение дерева - Раскрывать верхний уровень 7. Выбор групп и элементов - Группы 8. РазрешитьВыборКорня - Галочка Посмотрим что у нас получилось:

Неплохо. Следующим шагом будет создание таблицы где будет отображаться сама номенклатура. Создадим на форме еще отдну таблицу Список и добавим реквизит с таким же названием. Как и в случае с реквизитом Дерево повторяем те же манипуляции, т. е. тип - ДинамическийСписок, произвольный запрос - Да. Открываем форму редактирования запроса. Тут придется написать запрос чуточку сложнее (подробности можно посмотреть в конструкторе запросов): ВЫБРАТЬ
ЦеныСрезПоследних. Цена,
НоменклатураСписок. Код,
НоменклатураСписок. Ссылка
ИЗ
Справочник. Номенклатура КАК НоменклатураСписок
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений. Цены. СрезПоследних КАК ЦеныСрезПоследних
ПО НоменклатураСписок. Ссылка = ЦеныСрезПоследних. Номенклатура. Ссылка
ГДЕ
НоменклатураСписок. Родитель. Ссылка В(&Группа)
СГРУППИРОВАТЬ ПО
ЦеныСрезПоследних. Цена,
НоменклатураСписок. Код,
НоменклатураСписок. Ссылка Плюс нужно создать событие формы ПриСозданииНаСервере и прописать в нем наш фильтр "Группа": &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список. Параметры. УстановитьЗначениеПараметра("Группа", Группа);
КонецПроцедуры Форма почти готова. Осталось связать наши таблицы: Дерево и Список. Для этого нужно будет создать еще несколько событий для таблицы Дерево: &НаКлиенте
Процедура ОбновитьСписок()
Список. Параметры. УстановитьЗначениеПараметра("Группа", Группа);
КонецПроцедуры

&НаКлиенте
Процедура ДеревоВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
Группа = Значение;
ОбновитьСписок();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Группа = ВыбранноеЗначение;
ОбновитьСписок();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПередРазворачиванием(Элемент, Строка, Отказ)
Группа = Строка;
ОбновитьСписок();
КонецПроцедуры &НаКлиенте
Процедура ДеревоПередСворачиванием(Элемент, Строка, Отказ)
Группа = Строка;
ОбновитьСписок();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоПриСменеТекущегоРодителя(Элемент)
Группа = Элемент. Родитель;
ОбновитьСписок();
КонецПроцедуры Наша форма почти готова: Ну и наконец добавим третий список (тип данных - ТаблицаЗначений), в который добавим 2 колонки - Номенклатура и Цена: а в таблице "Список" добавим событие "Выбор": &НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

ТекущаяСтрока = Элемент. ТекущиеДанные;
НоваяСтрока = Отобранные. Добавить();
НоваяСтрока. Номенклатура = ТекущаяСтрока. Ссылка;
НоваяСтрока. Цена = ТекущаяСтрока. Цена;

КонецПроцедуры Теперь необходимо чтобы эта форма возвращала отобранные значения, обратно в форму документа. Для этого создадим новую кнопку "ОК" и создадим новую команду с таким же названием. Событие будет выглядеть так: &НаКлиенте
Процедура ОК(Команда)
Закрыть(ЗаписатьВХранилище());
КонецПроцедуры
а функция ЗаписатьВХранилище будет такая: &НаСервере
Функция ЗаписатьВХранилище()
Возврат ПоместитьВоВременноеХранилище(Отобранные. Выгрузить());
КонецФункции
Откроем опять форму нашего документа и исправим процедуру Подбор, добавив процедуру получения данных из временного хранилища: &НаСервере
Процедура ПолучитьЗапасыИзХранилища(АдресВХранилище)

ВременнаяТаблица = ПолучитьИзВременногоХранилища(АдресВХранилище);

Для Каждого ЗагружаемаяСтрока Из ВременнаяТаблица Цикл
СтрокаТЧ = Объект["Товар"]. Добавить();
СтрокаТЧ. Номенклатура = ЗагружаемаяСтрока. Номенклатура;
СтрокаТЧ. Цена = ЗагружаемаяСтрока. Цена;
КонецЦикла;

КонецПроцедуры
&НаКлиенте
Процедура Подбор(Команда)

ФормаПодбора = ПолучитьФорму("ОбщаяФорма. ФормаПодбора");
АдресВХранилище = ФормаПодбора. ОткрытьМодально();
Если ЗначениеЗаполнено(АдресВХранилище) Тогда
ПолучитьЗапасыИзХранилища(АдресВХранилище);
КонецЕсли;

КонецПроцедуры Наконец наша форма подбора готова: Источник материала
23:35 24.03.2017



Отзывы и комментарии
Ваше имя (псевдоним):
Проверка на спам:

Введите символы с картинки:



Совершенная сантехника и новые технологии позволят преобразить вашу небольшую ванную

Совершенная сантехника и новые технологии позволят п...

Счастливые владельцы больших квартир и коттеджей, имеют в них, разумеется, немалые ванные комнаты. Без сомнений, размеры таких ванных комнат позволяют устанавливать самые разные виды сегодняшней санте...
Вкусные рецепты: Очень сырная запеканка, супчик- бульон с тортелини, Закуска "пикантная"

Вкусные рецепты: Очень сырная запеканка, супчик- бул...

Очень сырная запеканкаНагреть духовку до 200*С. Отварить овощи до полуготовности, чтоб тожно было легко снять шкурку. Почистить и натереть на крупной тёрке( я делала в комбайне).Смешать с 4 яйцами, су...
Как женщине быстро подготовиться к свиданию?

Как женщине быстро подготовиться к свиданию?

Для того чтобы свидание прошло успешно, женщина должна выглядеть безупречно. Если вы знали о предстоящем свидании заранее, значит, успеете привести себя в порядок. Но возможно ли выглядеть идеаль...
Торговля акциями через интернет: выбираем торговую платформу

Торговля акциями через интернет: выбираем торговую п...

Торговля акциями на бирже. Как начать Не секрет, что процедура по покупке и продаже акций на бирже всегда считалась, как что-то закрытое для обывателя и доступное только избранному кругу лиц, либо бол...
На страже чистоты настоящая система

На страже чистоты настоящая система

Ни для кого не является секретом тот факт, что более 95 процентов грязи и влаги в коммерческие и общественные помещения попадает на подошвах обуви посетителей и колесах продуктовых тележек, в результа...
Чтобы было чисто

Чтобы было чисто

Установленное на входе грязезащитное покрытие является эффективным решением нескольких проблем одновременно. Во-первых, с его помощью можно задержать на входе грязь и влагу, не допустив их проникновен...
Читаемые

Вкусные рецепты: тесто для пирожков творожное, сал

тесто для пирожков творожноеВам понадобится:1 пачка творога лучше 9 процентны.2яйца.пол чайной ллжеч...

Как выбрать аксессуары на лето?

Считанные дни остались до праздника, о котором мы мечтаем долгими зимними вечерами, который так вдох...

Как граммофонные пластинки «завоевали» Россию?

1 сентября 1910 года произошло событие, ставшее эпохальным для любителей музыки на просторах гр...

Как узнать уровень своего экстрасенсорного восприя

Экстрасенсорика – очень спорная и противоречивая область знаний. Причём начинаются споры с обсуждени...

Как создать короткую ссылку и зачем вообще это нуж

Короткие (укороченные, кодированные, шифрованные) ссылки сегодня просто необходимы не только продвин...

Перекусы. На благо или во вред себе?

Не так давно моя коллега жаловалась нам на работе: «Вы только представьте, что вчера вытворил ...

Профессиональные покрытия для входа

Прежде чем установить во входной площади грязезащитные покрытия, любой потенциальный покупатель или ...

Райский Тай. Бэкпэкеры: чем живут свободные путеше

Нынешняя молодежь путешествует по всему свету. Нет, не автостопом (хотя и этот метод тоже весьма рас...

Внедрение Сбалансированной системы показателей

Сбалансированная система показателей является одним из наиболее действенных с моей точки зрения элем...

Что символизировал дуб в древние времена? Поверья

Дуб — могучее дерево. Символическое его значение в мифологии народов мира чрезвычайно шир...



Новости развития информационнного портала:

Наш портал является ресурсом, который включает в себя широкий список информативных и отличных статей. Абсолютно каждый гость найдет для себя что-нибудь полезное. Модернизированный дизайн позволяет вам быстро находить требуемую информацию. Самые разнообразные тематические статьи дают возможность вам совершенствоваться в той или иной сфере. Быть более начитанным и грамотным. Современный дизайн сайта позволяет просматривать статьи на всех существующих планшетах. Теперь найти подходящую информацию стало совершенно легко.

Мы собрали для вас информативные и отличные статьи. На нашем портале вы найдете ответы на интересующие вас вопросы. Стандартная система поиска позволяет вам стремительно отыскать нужную информацию. Адаптированный дизайн позволяет вам просматривать информацию на абсолютно любых электронных устройствах. Теперь, поиск необходимой информации будет занимать у вас секунды.