Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 21:48

Сделать свой подбор

Автор John46, 29 июл 2010, 00:43

0 Пользователей и 2 гостей просматривают эту тему.

John46

Добрый вечер! Подскажите с чего начать. Хочу сделать подбор как демо УТ(ну попроще немного). Ничего толком за день не нашел. Сделал форму для подбора:
Процедура ПодборНажатие(Элемент)
ФормаПодбора = Справочники.Материалы.ПолучитьФорму("ФормаПодбора");
ФормаПодбора.РежимВыбора = Истина;
ФормаПОдбора.МножественныйВыбор = Истина;
ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
ФормаПодбора.Открыть();
КонецПроцедуры
А как сделать чтобы при двойном щелчке позиция перескакивала в тч документа?
Дали ссылку на:
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

Если ТипЗнч(ЗначениеВыбора) = Тип("СправочникСсылка.Номенклатура") Тогда
  Строка = Товары.Найти(ЗначениеВыбора,"Номенклатура");
  Если Строка = Неопределено Тогда
     Строка = Товары.Добавить();
     Строка.Товар = Товар;
     Строка.Количество = 1;
  Иначе
     Если Вопрос("Такой товар уже есть (" + СокрЛП(Товар) +
                         ")! Увеличить кол-во?",
                 РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
         Строка.Количество = Строка.Количество + 1;
     КонецЕсли;
  КонецЕсли;
КонецПроцедуры

Но не разобрался - помогите!

crow1983

Строка = Товары.Добавить(); где Товары и есть табличная часть вашего документа.
Преподаватель, программист...и просто хороший человек

crow1983

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

Процедура КоманднаяПанель1Подбор(Кнопка)
   ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуСписка( ,ЭлементыФормы.ПереченьНоменклатуры);
   ФормаПодбора.РежимВыбора = Истина;
   ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
   ФормаПодбора.Открыть();
КонецПроцедуры

Далее для табличной части создал обработку выбора:

Процедура ПереченьНоменклатурыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   НоваяСтрока = ПереченьНоменклатуры.Добавить();
   НоваяСтрока.Номенклатура = ВыбранноеЗначение;
   НоваяСтрока.Цена =  РаботаСНоменклатурой.АктуальнаяЦенаПоНоменклатуре(Дата,ВыбранноеЗначение);
    ЭлементыФормы.ПереченьНоменклатуры.ТекущаяСтрока = НоваяСтрока;
КонецПроцедуры

Преподаватель, программист...и просто хороший человек

John46

Спасибо, сейчас попробую

John46

СПАСИБО!!! Работает:
Процедура ПодборНажатие(Элемент)
   ФормаПодбора = Справочники.Материалы.ПолучитьФормуСписка(,ЭлементыФормы.Материалы);
   ФормаПодбора.РежимВыбора = Истина;
   ФормаПОдбора.МножественныйВыбор = Ложь;
   ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
   ФормаПодбора.Открыть();
КонецПроцедуры

Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   НоваяСтрока = Материалы.Добавить();
   Сообщить(ВыбранноеЗначение);
    НоваяСтрока.Наименование = ВыбранноеЗначение;
   НоваяСтрока.Объект = ВыбранноеЗначение.Родитель;
   НоваяСтрока.Единицы =  ВыбранноеЗначение.Единицы;
       ЭлементыФормы.Материалы.ТекущаяСтрока = НоваяСтрока;
КонецПроцедуры

А не можешь подсказать как сделать запрос количества?
Если что и без него обойдусь)

crow1983

Сейчас нет времени разбираться. Мой тебе совет посмотреть как это в УТ ДЕЛАЕТСЯ. Я там смотрел. Потом можешь всем рассказать.
Преподаватель, программист...и просто хороший человек

John46

ага, посмотрю. если разберусь, отпишусь.

John46

А как в 1с сделать диалог, такой как вопрос, только с полем для ввода, типа как InputQuery в делфи?

Vit1501

ВвестиЧисло (InputNumber)
Синтаксис:
ВвестиЧисло(<Число>, <Подсказка>, <Длина>, <Точность>)
Параметры:
<Число> (обязательный)
Тип: Число. Имя доступной в модуле переменной. В эту переменную будет помещено введенное число. Начальное значение переменной будет использовано в качестве начального значения в диалоге.
<Подсказка> (необязательный)
Тип: Строка. Текст заголовка окна диалога ввода числа. Может использоваться в качестве подсказки пользователю.
Значение по умолчанию: Пустая строка
<Длина> (необязательный)
Тип: Число. Длина вводимого числа включая дробную часть (символы разделителей не учитываются).
Значение по умолчанию: 0
<Точность> (необязательный)
Тип: Число. Количество знаков в дробной части вводимого числа.
Значение по умолчанию: 0
Возвращаемое значение:
Тип: Булево. Истина - число введено; Ложь - пользователь отказался от ввода.
Описание:
Вызывает диалог для ввода числа.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
Количество = 1;
Если ВвестиЧисло(Количество, "Введите количество", 10, 2) Тогда
    // обработка введенного количества
КонецЕсли;

Vit1501

или
ВвестиСтроку (InputString)
Синтаксис:
ВвестиСтроку(<Строка>, <Подсказка>, <Длина>, <Многострочность>)
Параметры:
<Строка> (обязательный)
Тип: Строка. Имя доступной в модуле переменной. В эту переменную будет помещена введенная в диалоге строка. Начальное значение переменной будет использовано в качестве начального значения в диалоге.
<Подсказка> (необязательный)
Тип: Строка. Текст заголовка окна диалога ввода строки. Может использоваться в качестве подсказки пользователю.
Значение по умолчанию: Пустая строка
<Длина> (необязательный)
Тип: Число. Длина вводимой строки. Если параметр не указан, то строка неограниченной длины.
Значение по умолчанию: 0
<Многострочность> (необязательный)
Тип: Булево. Определяет режим ввода многострочного текста: Истина - ввод многострочного текста с разделителями строк; Ложь - ввод простой строки.
Значение по умолчанию: Ложь
Возвращаемое значение:
Тип: Булево. Истина - строка введена; Ложь - пользователь отказался от ввода строки.
Описание:
Вызывает диалог для ввода строки.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
Текст = "";
Подсказка = "Введите текст напоминания";
Если ВвестиСтроку(Текст, Подсказка, 0, Истина) Тогда
    // запомнить текст напоминания
КонецЕсли;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск