Заказать звонок

ERP 2.0 Подбор номенклатуры в документ продажи

28.09.2016

Рассмотрим задачу добавления подбора номенклатуры в табличную часть документа.


 

На примере типового подбора номенклатуры с использованием обработки ПодборТоваровВДокументПродажиконфигурации ERP 2.0.


 

Важное замечание! У формы обработки ПодборТоваровВДокументПродажи есть и другие параметры для получения более подробной формы подбора, кроме тех, которые будут использоваться в примере, например, Соглашение,ЦенаВключаетНДС, Склад. Подробнее с их составом можно ознакомиться в процедуре формы обработкиПриСозданииНаСервере(), а также в процедурах ПодборТоваровСервер.ПриСозданииФормыПодбораНаСервере() иПодборТоваровСервер.УстановитьСвойстваФормыПодбораВДокументыПродажиПоПараметрам().


 

Потребуются изменения в следующих объектах:

  1. Форма документа

    1. Добавить кнопку и команду подбора

  2. Модуль формы документа

    1. Добавить описание команды подбора (открытие формы обработки ПодборТоваровВДокументПродажи)

    2. Добавить описание события формы документа ОбработкаВыбора


 

Подробнее на примере:

В конфигурацию ERP 2.0 добавили документ Новый_НоменклатураПартнераКПолучению с табличной частьюТоварыКПолучению, колонками Номенклатура и Характеристика.


 

Часть 1. Доработка формы документа.

Открываем форму документа. Добавляем команду ОткрытьПодбор и переносим ее в командную панель табличной части (рис. 1).

Рис. 1. Добавление команды подбора


 

Часть 2. Доработка модуля формы документа.

Открываем модуль формы документа. Определяем следующие процедуры:

  1. Команда подбора


 

&НаКлиенте

Процедура ОткрытьПодбор(Команда)

Если Объект.ТоварыКПолучению.Количество() > 0 Тогда

Режим = РежимДиалогаВопрос.ДаНет;

СтруктураПараметров = Новый Структура("Очистить", Истина);

Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаТоварыКПолучению", ЭтаФорма, СтруктураПараметров);

ПоказатьВопрос(Оповещение, "Табличная часть будет перезаполнена. Продолжить?", Режим, 0);

Иначе

ПослеЗакрытияВопросаТоварыКПолучению(КодВозвратаДиалога.Да, Новый Структура)

КонецЕсли;

КонецПроцедуры


 

  1. Определяем процедуру, использующуюся в процедуре п. 1


 

&НаКлиенте

Процедура ПослеЗакрытияВопросаТоварыКПолучению(Результат, Параметры) Экспорт

Если Результат = КодВозвратаДиалога.Да Тогда

Если Параметры.Свойство("Очистить") И Параметры.Очистить Тогда

Объект.ТоварыКПолучению.Очистить();

Модифицированность = Истина;

КонецЕсли;

 

ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");

Если ЗначениеЗаполнено(Объект.Ссылка) Тогда

ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);

Иначе

ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru='номенклатуру партнера к получению'"));

КонецЕсли;

 

ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Ложь);

ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Ложь);

ПараметрыФормы.Вставить("СкрыватьПодакцизныеТовары", Ложь);

ПараметрыФормы.Вставить("ОтображатьФлагСкрыватьПодакцизныеТовары", Истина);

ПараметрыФормы.Вставить("Валюта", ПолучитьВалютуУУ());

ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);

ПараметрыФормы.Вставить("Дата", Объект.Дата);

ПараметрыФормы.Вставить("Документ", Объект.Ссылка);

ПараметрыФормы.Вставить("РежимПодбораБезКоличественныхПараметров", Истина);

 

ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);

КонецЕсли;

КонецПроцедуры


 


 

&НаСервереБезКонтекста

Функция ПолучитьВалютуУУ()

Возврат Константы.ВалютаУправленческогоУчета.Получить();

КонецФункции


 


 

  1. ОбработкаВыбора()

У формы документа определяем событие ОбработкаВыбора:


 

&НаКлиенте

Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда

ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);

КонецЕсли;

КонецПроцедуры


 

  1. Определяем процедуру, использующуюся в процедуре п. 3


 

&НаСервере

Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)

ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);

Модифицированность = Истина;

Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл

ТекущаяСтрока = Объект.ТоварыКПолучению.Добавить();

ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, "Номенклатура, Характеристика");

КонецЦикла;

КонецПроцедуры


 

Теперь можно открыть конфигурацию в режиме Предприятие и проверить внесенные изменения.

 

Автор 

 

Королева Дина


Возврат к списку

Наши услуги и вакансии

Разработчики
на full-time
Программист 1С на 8 часов в день
от 1 600 руб/час
Позадачная
разработка 1С
Доработки и развитие любых решений на платформе 1С
Стоимость по оценке
Карьера в Neti

Вакансии разработчиков и консультантов 1С
З.П. от 100 000 рублей