Автоизменение количества товара при подоре
Всех приветствую! Есть желание в подборе номенклатуры автоматически изменять количество товара на 2, если в карточке номенклатуры указать признак "продавать 2 штуки" или что-то подобное. Понимаю, что все должно обрабатываться в процедуре подбора. Но в самом документе чтоб оператор не мог изменить количество вручную +1 или -1, только +2 или -2. Есть какие соображения?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну шоп совсем не морочиться, то я бы сделал еще одну единицу измерения в товаре с коэффициентом 0.5 (ну или 2 - я там не особо помню). Ну и по умолчанию ее. Назвать "Пара", например. Поиграйтесь.
ЗЫ: умные существа пишут, что для этого есть упаковка. Создаем-с упаковку-с с двумя штуками-с... Ну и понеслось г по т...
ЗЫ: умные существа пишут, что для этого есть упаковка. Создаем-с упаковку-с с двумя штуками-с... Ну и понеслось г по т...
Вот сегодня руки дошли.
Вначале в справочник Номенклатура добавил флаг НеМенее2
и в форму ДляПодбора добавил немного условия, начало - из типовой, чтоб понятнее:
Останется сделать проверку в самом документе на запрет редактирования количества в строке с такой номенклатурой, либо только увеличания/уменьшения до четного числа.
Вначале в справочник Номенклатура добавил флаг НеМенее2
и в форму ДляПодбора добавил немного условия, начало - из типовой, чтоб понятнее:
Если Запрашивать.ТекущаяСтрока() = 2 Тогда // количество
// формируем список параметров для передачи в обработку
Параметр = СоздатьОбъект("СписокЗначений");
Параметр.ДобавитьЗначение(ВыбНоменклатура , "Номенклатура");
Параметр.ДобавитьЗначение(Колво , "Количество");
Параметр.ДобавитьЗначение(ВозврЕдиница , "Единица");
Параметр.ДобавитьЗначение(Цена , "Цена");
Параметр.ДобавитьЗначение(ДобавлятьКомплектующие, "ДобавлятьКомплектующие");
Параметр.ДобавитьЗначение(НеМенее2 , "Не менее 2");//10.11.2023г.
// открываем форму обработки
ОткрытьФормуМодально("Обработка.ВводКоличества", Параметр);
// получаем параметр возврата.
Если Параметр.Получить("СтатусВозврата") = 0 Тогда
Возврат;
КонецЕсли;
//10.11.2023г. Автоизменение количества подбора по флагу "НеМенее2"
Если Параметр.Получить("Не менее 2") = 1 Тогда
Колво = 2 Иначе
Колво = Параметр.Получить("Количество");
КонецЕсли;
ВозврЕдиница = Параметр.Получить("Единица");
Цена = Параметр.Получить("Цена");
ДобавлятьКомплектующие = Параметр.Получить("ДобавлятьКомплектующие");
ИначеЕсли Запрашивать.ТекущаяСтрока() = 3 Тогда // количество и цену
// формируем список параметров для передачи в обработку
Параметр = СоздатьОбъект("СписокЗначений");
Параметр.ДобавитьЗначение(ВыбНоменклатура , "Номенклатура");
Параметр.ДобавитьЗначение(Колво , "Количество");
Параметр.ДобавитьЗначение(ВозврЕдиница , "Единица");
Параметр.ДобавитьЗначение(Цена , "Цена");
Параметр.ДобавитьЗначение(Валюта , "Валюта");
Параметр.ДобавитьЗначение(ДобавлятьКомплектующие, "ДобавлятьКомплектующие");
Параметр.ДобавитьЗначение(НеМенее2 , "Не менее 2");
// открываем форму обработки
ОткрытьФормуМодально("Обработка.ВводКоличестваИЦены", Параметр);
// получаем параметр возврата.
Если Параметр.Получить("СтатусВозврата") = 0 Тогда
Возврат;
КонецЕсли;
Если Параметр.Получить("Не менее 2") = 1 Тогда
Колво = 2 Иначе
Колво = Параметр.Получить("Количество");
КонецЕсли;
ВозврЕдиница = Параметр.Получить("Единица");
Цена = Параметр.Получить("Цена");
ДобавлятьКомплектующие = Параметр.Получить("ДобавлятьКомплектующие");
// ничего не запрашивать
Иначе Если НеМенее2 = 1 Тогда //10.11.2023г.
Колво = 2;
КонецЕсли;
ПоказатьОстанется сделать проверку в самом документе на запрет редактирования количества в строке с такой номенклатурой, либо только увеличания/уменьшения до четного числа.
Прикрепленные файлы:

Вот, немного пришлось изменить код, т.к если в подбор указать 1, то количество меняется на 2, все хорошо. Но если в подбор указать 3, 5, 7 и т.п, возвращает в таблицу подбора 2.
//10.11.2023г. Автоизменение количества подбора по флагу "НеМенее2"
Колво = Параметр.Получить("Количество");
Если Параметр.Получить("Не менее 2") = 1 Тогда
Предупреждение("Данная позиция имеет флаг настройки" + РазделительСтрок + """Только по 2шт""" + РазделительСтрок +
"Количество будет изменено автоматически", 60);
Колво = ?(Колво%2=0,Колво,Колво+1);
Иначе
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот