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

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

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

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

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

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

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

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

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

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

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

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

Автор статьи: неизвестный | Дата публикации: 15:11 14.12.2016 7-b.Su




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

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



Какие они, дачные страхи?

Какие они, дачные страхи?


Не так давно смотрела одну передачу о здоровье, в которой рассказывалось о том, какие опасности нас подстерегают на даче. Оказывается, их три: 1. Радиоактивный газ радон — его никто не ви...


Генератор — рациональный выбор для коттеджа

Генератор — рациональный выбор для коттеджа


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


Нужно ли заставлять ребенка всё учить?

Нужно ли заставлять ребенка всё учить?


Такой вопрос возникает у родителей независимо от возраста ребенка. В дошкольном возрасте хочется научить своего ребёнка всему по максимуму, чтобы потом ему было легче — в школе, в университ...


Вкусные рецепты: Пирожные "Розочки", Турисмо торык вуд (Напиток творожный), Салат из цветной капусты.

Вкусные рецепты: Пирожные "Розочки"...


Пирожные "Розочки"Приготовить сироп:В сотейнике вскипятить воду и в ней растворить сахар. Яблоки разрезать пополам, удалить сердцевину и на резать пластинками 1-1,5 мм. Яблоки варить в кипящем сиропе ...


Оригами

Оригами


Искусство оригами - увлекательное занятие не только для детей, но и для пап и мам. Ни с чем несравнимо чувство удовлетворения от сделанной своими руками игрушки. Игрушка оригами, выполненная своими ру...


Вкусные рецепты: Салат "Воздушная шубка", Котлета в "сундучке", Цикорий с сыром по Канадски

Вкусные рецепты: Салат "Воздушная шубка&...


Салат "Воздушная шубка" Всё, что нужно: Все овощи отдельно натереть на мелкой тёрке. Лук мелко порезать. Селёдку порезать кусочками. Смешать ингредиенты для заправки, посолить, поперчить, добавить зел...


Читаемые

Печать на пактах: подарочные и повседневные пакеты

Основная функция, которой наделяются все пакеты – упаковки и перенос различных вещей. Большее распространение получили полиэтиленовые пакеты с различными изображениями. Это могут быть как пакеты майки...

Часы Mado

Ничто в мире не представляет для нас такой интерес и не притягивает так,  как Время. Оно бежит быстро и незаметно, унося с собой радости и печали нашей жизни. Время – это загадка, которую никому еще н...

Куда ведет нас Интернет?

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

Курсовые и дипломные работы на заказ

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

«Денежный» метод воспитания - что он дает?

«Каждый ребёнок — художник. Трудность в том, чтобы остаться художником, выйдя из детского возраста». Пабло Пикассо Самым популярным и самым действенным методом воспитания ребён...

ФОРЕКС: Можно ли обучиться прибыльно торговать пос

В метро, на столбах, по телевизору, в газетах, в Интернете Вы можете встретить массу  рекламы различных диллинговых центров (ДЦ), обещающих обучить Вас прибыльно торговать на форексе буквально за од...

Какие места в Шопроне освящены именем Ференца Лист

Нынешний, 2011 год, объявлен ЮНЕСКО годом Ференца Листа. А 22 октября (очень на то похоже!) станет его Всемирным днем, на который запланировано грандиозное мероприятие под кодовым названием &laqu...

Экологичные решения: картонный Recompute

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

Рене Зеллвегер

Рене Кэтлин Зельвегер родилась 25 апреля 1969 года в крошечном городке Кэти, входящем в состав агломераций большого Хьюстона, штат Техас. На свет Рене появилась в семье медсестры Кжеллфрид Зельвегер, ...

Профессия - повар

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

Развивая портал:

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

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