Главный Каталог Статей РФ
85991 авторов, размещено 47108 статей, сейчас на сайте пользователей: 147 Статистика
Аватар waider

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

Категория:  Интернет  | Автор:  waider | Опубликовано: 27.08.2010

 

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

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

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

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

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

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

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

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

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

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

КонецПроцедуры Наконец наша форма подбора готова:  
Источник материала
Комментарии
К этой статье пока нет комментариев. Станьте первым! У нас гости не могут комментировать статьи. Пожалуйста авторизуйтесь или зарегистрируйтесь, чтобы прокомментировать.
Интересные статьи по теме
Аватар AnemoN
Накрутка лайков и подписчиков ВКонтакте Есть несколько хитрых и не очень методов, которые используются для т.н. "накрутки лайков".О заслуживающих внимания пойдет речь в этой статье....
Категория: Интернет | Автор: AnemoN | Добавлено: 17.02.2013
Аватар Jetti
Буксы — что это такое и как правильно выбрать букс для заработка Из-за коронавируса, "блуждающего" по всему миру вот уже второй год, у многих людей появилось огромное количество свободного времени. Одни стали тратить это время на хобби, другие — читать книги и смот...
Категория: Интернет | Автор: Jetti | Добавлено: 20.07.2021
Аватар Lizetta
Сколько времени уходит на создание сайта? Сколько времени тратит специалист на разработку сайта? В какой срок можно создать сайт и чем обуславливается это?...
Категория: Интернет | Автор: Lizetta | Добавлено: 03.06.2011
Аватар gul_itb
Как правильно представить информацию на сайте Зачем люди сидят в Интернете? В основном есть две причины – это развлечение и поиск информации. Ваш корпоративный сайт, конечно же тоже служит этим двум целям Интернет-общения. Даже бизнес-сайт о чем-...
Категория: Интернет | Автор: gul_itb | Добавлено: 26.10.2009
Аватар Marta22
Как улучшить страницу на сайте вконтакте Советы, как сделать страницу в vkontakte лучше...
Категория: Интернет | Автор: Marta22 | Добавлено: 21.08.2009
Лучшие авторы
Аватар medved-97
Псевдоним medved-97 отражает причастность к ресурс...

Читать

Аватар Costa de Valencia
С 1995 года языковая школа Costa de Valencia специ...

Читать

Аватар leva1981
Не люблю хвалить себя, пусть свое мнение обо мне в...

Читать

Аватар DoctorNout.ru
Ремонт ноутбуков любых моделей и марок doctornout.ru

Читать

Аватар Arizona
Строитель со стажем

Читать

Свежие комментарии
Нормальная тема.

Читать

Талантливый человек талантлив во всём! Будь как Паша! А ещё ты можешь ...

Читать

Можно выбрать.

Читать

Ой, шутник.

Читать

https://priornews.ru/zastrojshhik-iz-hmao-sravnil-ufas-s-prestupnoj-gr...

Читать

Напишите нам