helpf.pro
Регистрация

Как задавать значения в диалоге пока не нажмем Отмена

bless18
15.09.2010 09:40Прочитано: 1848
Здравствуйте!
При нажатии на кнопочку Подбор заполняются поля ТЧ: Вит ТМЗ и т д, а так же Цена и Количество.. Цену и Количество ввожу при помощи функции ВвестиЧисло(). Все прекрасно работает. Но беда в том, что диалог закрывается сразу после того как введем числа, а мне нужно, чтобы не закрывался и давал вводить сколь угодно раз данные, пока не нажмем Отмена.
Например, ввели мы при помощи кнопки Подбор Вид ТМЗ, Субконто1, Субконто2, Цену, Количество и добавили в ТЧ. Окно ввода цены и количества не закрывается и при вводе новых данных они добавляются в ТЧ, а остальные реквизиты: Вид ТМЗ, Субконто1, Субконто2.. копируются из предыдущей строки.
Код 1C v 8.х
 
Процедура Подбор()
перем Справ;
Если ОбщегоНазначения.ЗначениеНеЗаполнено(ЭлементыФормы.ТМЗ.ТекущиеДанные) Тогда
Предупреждение("Заполните поля табличной части: СчетКт, Получено от, Вид ТМЗ");
Возврат;
КонецЕсли;


СтрокаТЗ =ЭлементыФормы.ТМЗ.ТекущиеДанные;
Спр = Справочники.ВидыТМЗРаботУслуг;
ВидТМЗВыбр = Справочники.ВидыТМЗРаботУслуг.ПолучитьСсылку();
ВвестиЗначение(Спр,"Укажите вид ТМЗ","СправочникСсылка.ВидыТМЗРаботУслуг");
СчетТМЗ = ВидТМЗВыбр.СчетТМЗ;

Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Результат = Форма.ОткрытьМодально();

НовСтрока = ТМЗ.Добавить();
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Результат = Форма.ОткрытьМодально();
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Режим = 2;
НовСтрока.Товар = Результат;
НовСтрока.ЕдИзм = НовСтрока.Товар.ЕдИзм;

Кол = 0;
Если ВвестиЧисло(Кол, "Введите количество", 10, 3) = 0 Тогда
//ЭлементыФормы.ТМЗ.ТекущаяСтрока; //АктивизироватьСтроку()
ТМЗ.Удалить(НовСтрока);
Возврат;
КонецЕсли;
Если Кол = 0 Тогда
//ЭлементыФормы.ТМЗ.ТекущаяСтрока;
ТМЗ.Удалить(НовСтрока);

Иначе
Цена = НовСтрока.Товар.ЦенаУчет;
ЦенаНов = 0;
ВвестиЧисло(ЦенаНов, "Введите учетную цену" +СокрЛП(Формат(Цена, "Ч15.4")), 15, 4);
НовСтрока.ЦенаУчет = ?(ЦенаНов = 0, Цена, ЦенаНов);
НовСтрока.Количество = Кол;
НовСтрока.ВидСписания = СтрокаТЗ.ВидСписания;
НовСтрока.СубконтоСписания1 = СтрокаТЗ.СубконтоСписания1;
НовСтрока.СубконтоСписания2 = СтрокаТЗ.СубконтоСписания2;
НовСтрока.ВидТМЗ = СтрокаТЗ.ВидТМЗ;
Пересчет();
НовСтрока.СуммаУчет = НовСтрока.ЦенаУчет * НовСтрока.Количество;
КонецЕсли;
КонецПроцедуры

а у меня пока возможно однократное добавление данных
где бы поставить нужный оператор, чтобы возвращался на добавление данных пока не нажмем Отмена
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
15.09.2010 10:28Ответ № 1
Про подбор элементов справочника смотри здесь!
В твоем случае нужно дописать:
Код 1C v 8.х
 Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Форма.РежимВыбора = Истина;
Форма.ЗакрыватьПриВыборе = Ложь;

А дальнейший код добавление строки вынести в Обработку Выбора
bless18
15.09.2010 11:04Ответ № 2
Элементы из справочника добавляются отлично..
Меня интересует функция ВвестиЧисло()
Сначала открывается окно для ввода цены - вводим ее, затем - окно для ввода количества - его тоже вводим, снова открывается окно для ввода цены... и так далее пока не нежмем Отмена..
bless18
15.09.2010 11:50Ответ № 3
Вот так добавила РежимВыюора = Истина.. Форма выбора закрывается после того как введем значения..
Код 1C v 8.х
 
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Форма.РежимВыбора = Истина;
// Форма.ЗакрыватьПриВыборе = Ложь;
Результат = Форма.ОткрытьМодально();
НовСтрока = ТМЗ.Добавить();

E_Migachev
15.09.2010 11:53Ответ № 4
Я так понимаю, при выборе одного элемента справочника, она должна спросить цену и количество и должно быть так:
Код 1C v 8.х
 Кол = 0;
Если ВвестиЧисло(Кол, "Введите количество", 10, 3) = 0 Тогда
ТМЗ.Удалить(НовСтрока); Возврат;
Иначе
Цена = НовСтрока.Товар.ЦенаУчет;
ЦенаНов = 0;
ВвестиЧисло(ЦенаНов, "Введите учетную цену" +СокрЛП(Формат(Цена, "Ч15.4")), 15, 4);
НовСтрока.ЦенаУчет = ?(ЦенаНов = 0, Цена, ЦенаНов);
НовСтрока.Количество = Кол;
НовСтрока.ВидСписания = СтрокаТЗ.ВидСписания;
НовСтрока.СубконтоСписания1 = СтрокаТЗ.СубконтоСписания1;
НовСтрока.СубконтоСписания2 = СтрокаТЗ.СубконтоСписания2;
НовСтрока.ВидТМЗ = СтрокаТЗ.ВидТМЗ;
//Пересчет();
НовСтрока.СуммаУчет = НовСтрока.ЦенаУчет * НовСтрока.Количество;
КонецЕсли;
bless18
15.09.2010 12:09Ответ № 5
да, именно так..
E_Migachev
15.09.2010 12:10Ответ № 6
(5) ну и когда ты выбираешь элемент справочника, то при добавлении что происходит?
bless18
15.09.2010 12:21Ответ № 7
закрывается окно выбора справочника и ввода цены с количеством.. а мне нужно, чтобы когда я введу количество, затем цену, снова открывалось окно для ввода количества и цены пока не нажмем отмена. Чтобы в ТЧ добавлялись значения без дополнительного нажатия на кнопку Подбор
bless18
15.09.2010 12:24Ответ № 8
то есть одного и того же товара может быть разное количество и цена..
и смысла нет дополнительно нажимать на кнопку Подбор
поэтому, нужно, чтобы окна вводо цены и количества не закрывались, чтобы можно было тупо менять количество и цену одного и того же товара и добавлять их в очередную строчку табличного поля
E_Migachev
15.09.2010 12:42Ответ № 9
а *17,
ну тогда как-то так:
Код 1C v 8.х
 Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
Результат = Форма.ОткрытьМодально();
// Если ничего не Выбрали тогда возврат, иначе Добавление строк
Если Результат = Неопределено Тогда
Возврат;
Иначе
Кол = 0;
// Пока не нажали Отмена, вводим строки с количеством и ценами
Пока ВвестиЧисло(Кол, "Введите количество", 10, 3) Цикл
НовСтрока = ТМЗ.Добавить();
НовСтрока.Товар = Результат;
НовСтрока.ЕдИзм = НовСтрока.Товар.ЕдИзм;
Цена = НовСтрока.Товар.ЦенаУчет;
ЦенаНов = 0;
ВвестиЧисло(ЦенаНов, "Введите учетную цену" +СокрЛП(Формат(Цена, "Ч15.4")), 15, 4);
НовСтрока.ЦенаУчет = ?(ЦенаНов = 0, Цена, ЦенаНов);
НовСтрока.Количество = Кол;
НовСтрока.ВидСписания = СтрокаТЗ.ВидСписания;
НовСтрока.СубконтоСписания1 = СтрокаТЗ.СубконтоСписания1;
НовСтрока.СубконтоСписания2 = СтрокаТЗ.СубконтоСписания2;
НовСтрока.ВидТМЗ = СтрокаТЗ.ВидТМЗ;
НовСтрока.СуммаУчет = НовСтрока.ЦенаУчет * НовСтрока.Количество;
КонецЦикла;
КонецЕсли;
КонецЕсли;
bless18
15.09.2010 13:01Ответ № 10
Спасибо огромное! )
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.