ДИНАМИЧЕСКОЕ ОБНОВЛЕНИЕ ДАННЫХ О ЦЕНАХ И БЫСТРОЕ СОЗДАНИЕ НЕСКОЛЬКИХ ЗАКАЗОВ С РАЗНЫХ СКЛАДОВ
Статья посвящена описанию механизма создания заказов на основании подобранных пользователем товаров в конфигурации «Управление торговлей, редакция 11» программы 1С:Предприятие 8. Механизм является нетиповым, созданным на основе типовой формы подбора в документы продажи. Отличительной особенностью рассматриваемого механизма является динамическое обновление данных о ценах, а также создание сразу нескольких заказов с разных складов.
Мы привыкли читать и смотреть слева направо, поэтому пользователи при заполнении табличных частей документов в 1С используют кнопку «Добавить». Эта функция добавляет одну пустую строку, и пользователь заполняет необходимые поля, подчеркнутые красным. В процессе работы сотрудники не задумываются о других возможностях 1С, стараясь не ошибиться и быстрее выполнить свои обязанности.Но многие документы в стандартных конфигурациях на платформе 1С имеют табличные части, в которых необходимо указывать несколько однотипных строк. Здесь на помощь приходит типовой механизм подбора, позволяющий ускорить заполнение таблиц документа. Но что, если на складе, указанном в документе, не хватает товаров? В таком случае пользователю придется оформлять новый заказ, заново указывать реквизиты документа, изменяя лишь склад. Именно для облегчения работы пользователя и был разработан механизм, рассматриваемый в работе.
Сам механизм реализован на основе формы типовой обработки «ПодборТоваровВДокументПродажи».
В системе 1С:Предприятие 8.3 обработки - это прикладные объекты конфигурации, предназначенные для выполнения различных действий над информацией.
Формы в программе 1С:Предприятие предназначены для отображения и редактирования информации, содержащейся в базе данных. Формы могут принадлежать конкретным объектам конфигурации или существовать отдельно от них и использоваться всем прикладным решением в целом. Так как разработанная форма достаточно громоздкая рассмотрим её основные составные части.
Первая область формы представлена динамическим списком перечня номенклатуры.
Динамический список - это интерфейсный объект встроенного языка, который используется для отображения различных списков объектов базы данных или необъектных данных - записей регистров. Отличительная особенность динамических списков в том, что система автоматически выполняет считывание данных запроса порциями, по мере навигации пользователя по списку. Это позволяет получать данные быстрее. Список отображает номенклатурные позиции, данные о производителе, цене, остатке и остатке с учетом резерва. Доступен отбор номенклатуры по производителю и вывод позиций, имеющихся в наличии. Присутствует поиск товаров по артикулу и по наименованию (рис. 1).
Рис. 1: Динамический список на форме подбора
Для продолжения, сперва необходимо выбрать партнера, для которого будет формироваться заказ. Поля контрагент и соглашения заполнятся по умолчанию для выбранного партнера. Согласно выбранному соглашению у номенклатурных позиций поменяются виды цен. Щелкнув на интересующий товар в списке мы можем увидеть его распределение его остатка по складам во второй области формы, представленной деревом (рис. 2).
Рис. 2. Дерево с остатком
Щелкнув дважды по строке со складом открывается диалоговое окно добавления товара в корзину (рис. 3).
Рис. 3. Диалоговое окно
При нажатии «ОК» выбранная номенклатура добавляется в самую нижнюю область, называемую корзиной подбора (рис. 4).
Рис. 4. Корзина подбора
При нажатии на кнопку «Заказать» (рис. 1) происходит формирование заказов, по одному на каждый склад, указанный в корзине.
Обычно, формы подбора вызываются из форм документов, из которых они и получают данные для формирования. В нашем случае всё наоборот: форма подбора формирует документы. Для открытия этой формы в справочник Номенклатура добавлена команда «НоменклатураСОстатками».
Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
СтруктураДанных.Вставить("Соглашение", Соглаш);
Возврат СтруктураДанных
КонецФункции
Также формы подбора не предполагают динамического изменения соглашений. Но именно от соглашения зависит вид цены и цена номенклатуры. Для корректного отображения цен для события элемента формы «Соглашение» добавлена серверная процедура ПриИзмененииСоглашенияСервер().
&НаСервере
Процедура ПриИзмененииСоглашенияСервер()
Если ЗначениеЗаполнено(СоглашениеПартнера) Тогда
ВидыЦен.Очистить();
ВидыЦен.Добавить(СоглашениеПартнера.ВидЦен);
Если СоглашениеПартнера.ЦеновыеГруппы.Количество()>0 Тогда
Для каждого строка из СоглашениеПартнера.ЦеновыеГруппы Цикл
КонецПроцедуры Наконец, типовая форма подбора не предполагает создание документов на её основе. Потому на форму добавлена команда «Заказать», вызывающая выполнение процедур СоздатьЗаказ() и СоздатьЗаказНаСервере().