Добавление товаров поставщика в заказ поставщику. УТ 11.4
Клиент попросил кнопку, которая добавляет товары, когда-либо поставляемые поставщиком в документ заказ поставщику:
Работает медленно, потому что после добавления номенклатуры вызывается событие изменения номенклатуры. Код несложный:
&НаСервере Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) ... //Кнопка заказа товарами ИмяКоманды = "дор_ТоварыПоставщика"; КомандаФормы = ЭтаФорма.Команды.Добавить(ИмяКоманды); КомандаФормы.Действие = ИмяКоманды; КомандаФормы.Заголовок = "Тов.Пост-ка"; КомандаФормы.ИзменяетСохраняемыеДанные = истина; КомандаФормы.Отображение = ОтображениеКнопки.Текст; ПредЭлементКнопок = Элементы.ГруппаЦеныСкидки; Элемент = ЭтаФорма.Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"), ПредЭлементКнопок.Родитель, ПредЭлементКнопок); Элемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели; Элемент.ИмяКоманды = ИмяКоманды; Элемент.Ширина = 6; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.РастягиватьПоГоризонтали = ложь; КонецПроцедуры &НаКлиенте Процедура дор_ТоварыПоставщика(Команда) Экспорт М = дор_ТоварыПоставщикаПолучитьНаСервере(Объект.Контрагент); Для Каждого С Из М Цикл НСтр = Объект.Товары.Добавить(); НСтр.Номенклатура = С.Номенклатура; Элементы.Товары.ТекущаяСтрока = НСтр.ПолучитьИдентификатор(); ТоварыНоменклатураПриИзменении(Элементы.Товары); КонецЦикла; ПоказатьПредупреждение(, "Добавлено: " + М.Количество() + " товаров поставщика!"); КонецПроцедуры Функция дор_ТоварыПоставщикаПолучитьНаСервере(Контрагент) М = Новый Массив(); З = Новый Запрос( "ВЫБРАТЬ РАЗЛИЧНЫЕ | ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура |ИЗ | Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары |ГДЕ | ПриобретениеТоваровУслугТовары.Ссылка.Проведен | И ПриобретениеТоваровУслугТовары.Ссылка.Контрагент = &Контрагент | |УПОРЯДОЧИТЬ ПО | Номенклатура ИЕРАРХИЯ"); З.УстановитьПараметр("Контрагент", Контрагент); Выборка = З.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл С = Новый Структура("Номенклатура", Выборка.Номенклатура); М.Добавить(С); КонецЦикла; Возврат М; КонецФункции
Платформа: 8.3.17.2171 Среда: УТ 11.4.13.46 Объем: 1 час.
а мог бы просто заказ копировать заполненный
какой заполненный?
Код похож на какой-то мазохизм
почему?
Потому. Получаем данные с сервера на клиент, чтобы вызвать сервер, да ещё и ПОСТРОЧНО.
Ну и по мелочи: именование переменных это лютый ПЗДЦ, вызов функции без директивы по умолчанию на сервере вместо НаСервереБезКонтекста.
Мелочи жизни. Ты исходишь из перфекционизма, а надо исходить из бюджета клиента.
Из бюджета клиента — это твой универсальный ответ? Тогда это точно блог про айти-технологии?
Надо учитывать бюджет клиента. По крайней мере, если бюджет конечен.