|
Как лучше сделать перетаскивание Номенклатуры? 1с83 | ☑ | ||
---|---|---|---|---|
0
pro3ri
13.01.16
✎
12:47
|
Добрый день!
В поступление товаров и услуг на веб клиенте вносят номенклатуру перетаскиванием: Внес такой код: &НаКлиенте Процедура ТоварыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда Для каждого ЭлементМассива Из ПараметрыПеретаскивания.Значение Цикл Если ТипЗнч(ЭлементМассива) <> Тип("СправочникСсылка.Номенклатура") Тогда ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.НеОбрабатывать; КонецЕсли; КонецЦикла; Иначе ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.НеОбрабатывать; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) //СерверныйВызов(ПараметрыПеретаскивания.Значение); Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда Для каждого ЭлементМассива Из ПараметрыПеретаскивания.Значение Цикл Если ТипЗнч(ЭлементМассива) = Тип("СправочникСсылка.Номенклатура") Тогда Число = 0; //ВвестиЧисло(Число, "Введите значение для "+ЭлементМассива); Оп = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияВопроса", ЭтотОбъект,ЭлементМассива); ПоказатьВводЧисла(Оп,Число,"Введите значение для "+ЭлементМассива); //Строка = Объект.Товары.Добавить(); //Строка.Номенклатура = ЭлементМассива; //Строка.Количество = Число; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры Процедура ВыполнитьПослеЗакрытияВопроса(Число, ДополнительныеПараметры) Строка = Объект.Товары.Добавить(); Строка.Номенклатура = ДополнительныеПараметры; Строка.Количество = Число; КонецПроцедуры Правильно ли сделано описание оповещения, может есть более толковый метод? |
|||
1
pro3ri
13.01.16
✎
12:49
|
Переносят сразу несколько элементов, выходит так:\
https://s.mail.ru/K6Fx4zxD7UJ9/img-2016-01-13-14-49-47.png |
|||
2
Garykom
гуру
13.01.16
✎
12:55
|
drug & drop это для извращенцев которые точно мышкой двигать не умеют...
даже на сенсорных смартах/планшетах предпочитают кнопки "в корзину/купить" делать |
|||
3
Остап Сулейманович
13.01.16
✎
12:56
|
(1) У тебя ПоказатьВводЧисла() вызывается в цикле. Но собственно ввод выполняется уже после завершения ТоварыПеретаскивание.
Я бы сделал примерно так : В ТоварыПеретаскивание всю номенклатуру, которая обрабатывается сложил в табличку с колонками "Номенклатура" и "Значение". Потом попросил заполнить все "Значение" и только потом начал добавлять куда ты там перетаскиваешь. Кратко : обрабатывать весь список за один проход. А не построчно. |
|||
4
pro3ri
13.01.16
✎
13:12
|
(3) А табличка с колонками это таблица значений?
|
|||
5
pro3ri
13.01.16
✎
13:33
|
(3) наваял так:
|
|||
6
pro3ri
13.01.16
✎
13:34
|
Таблица - реквизит формы с типом тз
&НаКлиенте Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) //СерверныйВызов(ПараметрыПеретаскивания.Значение); Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда //ТЗ = Новый ТаблицаЗначений; //ТЗ.Колонки.Добавить("Значение"); //ТЗ.Колонки.Добавить("Количество"); //ТЗ = Новый СписокЗначений; //ТЗ.Добавить("Значение"); //ТЗ.Добавить("Количество"); Таблица.Очистить(); Для каждого ЭлементМассива Из ПараметрыПеретаскивания.Значение Цикл Если ТипЗнч(ЭлементМассива) = Тип("СправочникСсылка.Номенклатура") Тогда СтрокаТЗ = Таблица.Добавить(); СтрокаТЗ.Значение = ЭлементМассива; //ВвестиЧисло(Число, "Введите значение для "+ЭлементМассива); //Оп = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияВопроса", ЭтотОбъект,ЭлементМассива); //ПоказатьВводЧисла(Оп,Число,"Введите значение для "+ЭлементМассива); //Строка = Объект.Товары.Добавить(); //Строка.Номенклатура = ЭлементМассива; //Строка.Количество = Число; КонецЕсли; КонецЦикла; Для каждого СтрокаТЗ Из Таблица Цикл Число = 0; Оп = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияВопроса", ЭтотОбъект,СтрокаТЗ.Значение); ПоказатьВводЧисла(Оп,Число,"Введите значение для " + СтрокаТЗ.Значение); КонецЦикла; КонецЕсли; КонецПроцедуры Процедура ВыполнитьПослеЗакрытияВопроса(Число, ДополнительныеПараметры) Строка = Объект.Товары.Добавить(); Строка.Номенклатура = ДополнительныеПараметры; Строка.Количество = Число; КонецПроцедуры поправьте, но по-моему хрен редьки не слаще... |
|||
7
lxs
13.01.16
✎
13:37
|
тебе надо дополнительную форму открывать с тз, а не использовать ПоказатьВводЧисла()
|
|||
8
pro3ri
13.01.16
✎
14:45
|
(7) создал новую форму с кодом:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Для каждого СтрокаТЗ Из Параметры.ТЗ Цикл Строка = Таблица.Добавить(); Строка.Значение = СтрокаТЗ.Значение; Строка.Количество = СтрокаТЗ.Количество; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) ОповеститьОВыборе(Таблица); КонецПроцедуры в форме док пост добавил: &НаКлиенте Процедура ТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) //СерверныйВызов(ПараметрыПеретаскивания.Значение); Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда Таблица.Очистить(); Для каждого ЭлементМассива Из ПараметрыПеретаскивания.Значение Цикл Если ТипЗнч(ЭлементМассива) = Тип("СправочникСсылка.Номенклатура") Тогда СтрокаТЗ = Таблица.Добавить(); СтрокаТЗ.Значение = ЭлементМассива; //ВвестиЧисло(Число, "Введите значение для "+ЭлементМассива); //Оп = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияВопроса", ЭтотОбъект,ЭлементМассива); //ПоказатьВводЧисла(Оп,Число,"Введите значение для "+ЭлементМассива); //Строка = Объект.Товары.Добавить(); //Строка.Номенклатура = ЭлементМассива; //Строка.Количество = Число; КонецЕсли; КонецЦикла; ОткрытьФорму("Документ.ПоступлениеТоваров.Форма.Форма",Новый Структура("ТЗ",Таблица),ЭтаФорма); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) Таблица.Очистить(); Для каждого СтрокаВыбранная Из ВыбранноеЗначение Цикл СтрокаДок = Объект.Товары.Добавить(); СтрокаДок.Номенклатура = СтрокаВыбранная.Значение; СтрокаДок.Количество = СтрокаВыбранная.Количество; КонецЦикла; КонецПроцедуры https://s.mail.ru/4nYrnWmzsrSx/img-2016-01-13-16-44-41.png получилось красивей! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |