Остаток при выборе номенклатуры в Перемещении запасов
Учетные задачи - Логистика, склад и ТМЦ
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Добавляем остаток в перемещение запасов УНФ 3.0.
В обработчике ПриСозданииНаСервере создаем реквизит и элемент формы
&НаСервере
Процедура ЕГ_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// 1. Создаём массив новых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
// 2. Создаём реквизит "Остаток" как дочерний для табличной части "Запасы"
Реквизит_Остаток = Новый РеквизитФормы(
"Остаток", // Имя реквизита
Новый ОписаниеТипов("Число"), // Тип данных (может быть и другой)
"Объект.Запасы", // Родитель – табличная часть
"Остаток" // Заголовок (необязательно)
);
ДобавляемыеРеквизиты.Добавить(Реквизит_Остаток);
// 3. Регистрируем новые реквизиты в форме (ОБЯЗАТЕЛЬНО!)
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
// 4. Теперь можно создать элемент управления и указать путь
НовыйЭлемент = Элементы.Добавить("ЗапасыОстаток", Тип("ПолеФормы"), Элементы.Запасы);
НовыйЭлемент.ПутьКДанным = "Объект.Запасы.Остаток"; // путь совпадает с добавленным реквизитом
НовыйЭлемент.Вид = ВидПоляФормы.ПолеНадписи;
//НовыйЭлемент
КонецПроцедуры
Далее в Обработчике ЗапасыНоменклатураПриИзменении заполняем остаток:
&НаСервере
Функция ЕГ_ЗапасыНоменклатураПриИзмененииПослеНаСервере(Номенклатура, СтруктурнаяЕдиница)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗапасыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ЗапасыНаСкладах.Остатки(
| &ДатаДок,
| Номенклатура = &Номенклатура
| И СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ЗапасыНаСкладахОстатки";
Запрос.УстановитьПараметр("ДатаДок", ?(Параметры.Ключ.Пустая(), ТекущаяДата(), Объект.Дата));
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница", СтруктурнаяЕдиница);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат ВыборкаДетальныеЗаписи.КоличествоОстаток;
КонецЦикла;
Возврат 0;
КонецФункции
&НаКлиенте
Процедура ЕГ_ЗапасыНоменклатураПриИзмененииПосле(Элемент)
ТекДанные = Элементы.Запасы.ТекущиеДанные;
ТекДанные.Остаток = ЕГ_ЗапасыНоменклатураПриИзмененииПослеНаСервере(ТекДанные.Номенклатура, Объект.СтруктурнаяЕдиница);
КонецПроцедуры
Проверено на следующих конфигурациях и релизах:
- Управление нашей фирмой, редакция 3.0, релизы 3.0.12.237, 3.0.9.163, 3.0.7.113
Вступайте в нашу телеграмм-группу Инфостарт