Альтернативный пересчет упаковок товаров в типовых конфигурациях

Публикация № 949955 24.11.18

Пользовательские инструменты - Адаптация типовых решений

упаковки пересчет упаковок

Рассмотрен вариант пересчета упаковок, при котором исходное количество товара не изменяется, а происходит пересчет упаковок друг относительно друга.

Введение

В типовых конфигурациях, таких как Управление торговлей 11 или  Комплексная автоматизация 2, для товара можно заводить наборы упаковок, например:

  1. Штука;
  2. Коробка (90 штук);
  3. Паллета (540 штук или 6 коробок);

Такие упаковки удобно использовать при продажах, особенно клиентам, которые могу оперировать как штучным количеством, так и упаковками одного и того же товара. Например, клиент может попросить оформить ему 360 штук товара, а потом подумав сказать, что ему надо еще две коробки. В таком случае удобно, что система перевела количество в коробки и оператор добавил еще две, нежели  пересчитывать коробки в штуки в голове и прибавлять к исходному количеству.

Что происходит в стандартном механизме? Указывая 360 штук и меняя единицу измерения Штука на Коробку, количество остается равным 360 и в строке у нас получается 360 Коробок, в описанном случае такой механизм работы не удобен. В нашем случае надо, чтобы система пересчитала Штуки в Коробки и получилось 360 / 90 = 4 Коробки.

Добиться указанного поведения можно, сделав необходимое расширение конфигурации, однако сделать его так, чтобы не затрагивались формы и при обновлении было минимум проблем, оказалось нетривиальной задачей.

Технические моменты

При изменение колонок табличной части запускается процедура изменения данных, для которой указывается, что необходимо выполнить, например, при изменении количества работает примерно такой код:

ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
//.....
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());

ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

где СтруктураДействий и есть список операций. Нашей точкой для переопределения является операция ПересчитатьКоличествоЕдиниц, процедура, которая обрабатывает этот ключ, находится в модуле ОбработкаТабличнойЧастиКлиентСервер и имеет вид:

Процедура ПересчитатьКоличествоЕдиницВСтрокеТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения) Экспорт 

	Перем УпаковкаНоменклатура;
	
	Если СтруктураДействий.Свойство("ПересчитатьКоличествоЕдиниц", УпаковкаНоменклатура) Тогда
		ПараметрыПересчета = НормализоватьПараметрыПересчетаЕдиниц(ТекущаяСтрока, УпаковкаНоменклатура);
		ДанныеУпаковки = ПолучитьКоэффициентУпаковки(ПараметрыПересчета.Упаковка, КэшированныеЗначения, ПараметрыПересчета.Номенклатура);
		Количество = ТекущаяСтрока.КоличествоУпаковок * ДанныеУпаковки.Коэффициент;
		
		Если ДанныеУпаковки.НужноОкруглятьКоличество
			И ПараметрыПересчета.НужноОкруглять Тогда
			ТекущаяСтрока.Количество = Окр(Количество, 0 ,РежимОкругления.Окр15как20);
		Иначе
			ТекущаяСтрока.Количество = Количество;
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

Процедура пересчитывает всегда поле Количество, которое скрыто от пользователя, а работает пользователь с полем КоличествоУпаковок, меняя в нем количество, это поле нам и необходимо пересчитать, а поле Количество, которое отвечает за количество в единицах хранения, изменять не надо. Однако пересчитывать надо поле  КоличествоУпаковок, только когда меняется единица измерения. Этот момент удалось определить по операциям в СтруктуреДействий, при изменении упаковки присутствует операция ПересчитатьЦенуЗаУпаковку, которой нет в других случаях.

Расширяем общий модуль ОбработкаТабличнойЧастиКлиентСервер, получаем следующий код:

&Вместо("ПересчитатьКоличествоЕдиницВСтрокеТЧ")
Процедура Расш1_ПересчитатьКоличествоЕдиницВСтрокеТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения) Экспорт 

	Перем УпаковкаНоменклатура;
			                                    
	Если СтруктураДействий.Свойство("ПересчитатьКоличествоЕдиниц", УпаковкаНоменклатура) Тогда
		
                // вставка для пересчета упаковок
		Если СтруктураДействий.Свойство("ПересчитатьЦенуЗаУпаковку") Тогда
			
			ПараметрыПересчета = НормализоватьПараметрыПересчетаЕдиниц(ТекущаяСтрока, УпаковкаНоменклатура);
			ДанныеУпаковки = ПолучитьКоэффициентУпаковки(ПараметрыПересчета.Упаковка, КэшированныеЗначения, ПараметрыПересчета.Номенклатура);			
			ТекущаяСтрока.Цена = ТекущаяСтрока.Цена / (ТекущаяСтрока.Количество / ТекущаяСтрока.КоличествоУпаковок) * ДанныеУпаковки.Коэффициент;
			ТекущаяСтрока.КоличествоУпаковок = ТекущаяСтрока.Количество / ДанныеУпаковки.Коэффициент;			

	        // -------------------------------
		Иначе			
			ПараметрыПересчета = НормализоватьПараметрыПересчетаЕдиниц(ТекущаяСтрока, УпаковкаНоменклатура);
			ДанныеУпаковки = ПолучитьКоэффициентУпаковки(ПараметрыПересчета.Упаковка, КэшированныеЗначения, ПараметрыПересчета.Номенклатура);
			Количество = ТекущаяСтрока.КоличествоУпаковок * ДанныеУпаковки.Коэффициент;			
			Если ДанныеУпаковки.НужноОкруглятьКоличество
				И ПараметрыПересчета.НужноОкруглять Тогда
				ТекущаяСтрока.Количество = Окр(Количество, 0 ,РежимОкругления.Окр15как20);
			Иначе
				ТекущаяСтрока.Количество = Количество;
			КонецЕсли;
			
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

В итоге получаем достаточно простую доработку, которую легко поддерживать.

К статье приложено расширение для конфигурации:

  1. 1С:Комплексная автоматизация 2, тестировалось на версии  2.5.10.52, Платформа 8.3.22.1709.
  2. 1С: Управление торговлей 11, тестировалось на версии 11.5.9.135, Платформа 8.3.22.1709.

Скачать файлы

Наименование Файл Версия Размер
Переопределение пересчета упаковок

.cfe 5,84Kb
19
.cfe 5,84Kb 19 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3079 26.11.18 04:09 Сейчас в теме
Это все хорошо (сграбил в https://infostart.ru/community/groups/22/publications/)
а вот как "правильно" отработать если количество штук не делится нацело на количество коробок? оперировать менеджеру величинами типа "2целых1десятая коробки" - как-то некузяво... Ваши мысли на этот счет?
2. gzharkoj 26.11.18 06:48 Сейчас в теме
(1) общего решения нет, раньше на УТ 10.3, КА 1.1, УПП 1.1 работало также как и это расширение, в новых "управляемых" версиях переделали. Каждая организация решает отдельно и при может еще отталкиваться от вида товара, например, более-менее крупные оптовики только в целых величинах могут отгружать более 1 упаковки, те кто поменьше могут дробить, но скажем, максимум по полам, то есть кратно 0.5. Но по-моему опыту обычно при отгрузке стараются указывать количество в единицах хранения.
3. CheBurator 3079 26.11.18 15:48 Сейчас в теме
Сделайте еще приблуду чтобы модифицировать заказ. У меня такая есть. типа клиент прислал заказ. натравливаем обработку. она показывает возможные варианты подгонки под целые упаковки - кратно блокам/минипакам, кратно мастер-коробкам - с указанием прироста по сумме.

у меян 4 кнокпи типа
- согласиться с вариантом клиента
- предложить тактично
- предложить настойчиво
- предложить в грубой форме.

;-) от выбора пункта зависит степень округления.

продажный отдел вовсб пользуется.
для всякой шушеры которая берет много позиций но мелкими порциями - не применяется.
а клиенты покрупнее - продажи манагеры своих клиентов знают - округляют.
и хотя прайсы выдаются с указанием самой "младшей" упаковки - клиентам как-то похрен, они привыкли считать десятками, а поставки идут кратно дюжине и все от дюжины идет в большую и меньшую сторону. и проще при при заказе 40 штук при 12 в коробке - подогнать в 48 штук.
4. gzharkoj 26.11.18 16:06 Сейчас в теме
(3) Хорошее предложение, подумаю.
5. CheBurator 3079 26.11.18 16:15 Сейчас в теме
(4) будет интересно - стукайся, покажу как это у меня выглядит (на 77).
надо еще посмотреть - пользуются ли этим сейчас, раньше активно пользовались. формировался также отчет по "подгонке", который можно было юзверю отправить
6. StAn1988 8 11.09.19 16:14 Сейчас в теме
Спасибо за статью. Мне очень помогла.
7. gzharkoj 12.09.19 08:14 Сейчас в теме
8. it_sar 21 08.06.20 12:35 Сейчас в теме
В УНФ 1.6.20 будет работать?
9. gzharkoj 463 08.06.20 23:23 Сейчас в теме
(8) Не смотрел, но если в конфигурации есть модуль ОбработкаТабличнойЧастиКлиентСервер и в нем процедура ПересчитатьКоличествоЕдиницВСтрокеТЧ, которая выглядеть как в публикации, то может заработать.
10. it_sar 21 09.06.20 21:34 Сейчас в теме
(9)
ОбработкаТабличнойЧастиКлиентСервер - в УНФ нет...
11. yaroslav_29 19.04.21 13:39 Сейчас в теме
Подскажите, а можно переделать так, чтобы цена осталась за шт а не менялась на цену за упаковку?
12. gzharkoj 463 19.04.21 16:47 Сейчас в теме
13. kdv_rus 11.06.21 16:04 Сейчас в теме
Данное расширение будет работать на пересчет в заказе поставщику?
14. kdv_rus 11.06.21 16:44 Сейчас в теме
(12) Данное расширение будет работать на пересчет в заказе поставщику?
15. gzharkoj 463 16.06.21 22:45 Сейчас в теме
(14) Проверил, в заказе не будет работать, под заказ поставщику надо будет дорабатывать.
16. mylnikov_v 08.12.22 04:33 Сейчас в теме
В 1С:Комплексная автоматизация 2 (2.5.9.143) количество не пересчитывает. Подскажите как заставить расширение пересчитать.
17. gzharkoj 463 08.12.22 08:53 Сейчас в теме
(16) Постараюсь посмотреть на актуальной версии.
Оставьте свое сообщение

См. также

Организация функционала наценок по позициям либо сегментам номенклатуры в УТ 11.4

Ценообразование, анализ цен Адаптация типовых решений Оперативный учет Оперативный учет Управляемые формы Управляемые формы 1С:Управление торговлей 11 1С:Управление торговлей 11 Россия Россия Управленческий учет Управленческий учет Абонемент ($m) Абонемент ($m)

В статье описан один из методов реализации задачи установки скидок/наценок в соответствии с заданным процентом по позициям/сегментам номенклатуры. Так-же продемонстрирован принцип создания произвольного запроса к ИБ в виде цен. Протестировано на релизе Управление торговлей, редакция 11.4.8.92.

1 стартмани

07.08.2019    5447    cheiser1982    2    

Создание внешней печатной формы в формате документа Word

Адаптация типовых решений Универсальные функции Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

В статье написано, как создать внешнюю печатную форму (для конфигураций с БСП) в формате Word.

1 стартмани

17.05.2019    36264    ВикторП    28    

Альтернатива внешним печатным формам. ЗУП 3.1

Зарплата Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 Сложные периодические расчеты Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m) Абонемент ($m)

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

1 стартмани

30.01.2019    16321    Mogilnikova    4    

Добавление сведений об организации в колонтитулы всех типовых отчетов. Бухгалтерия 2

Адаптация типовых решений Бухгалтерский учет Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия 2.0 Россия Россия Бухгалтерский учет Бухгалтерский учет Абонемент ($m) Абонемент ($m)

Название организации во всех типовых отчетах в колонтитуле. , Название, ИНН и КПП. Особенно полезно если в одной базе ведется учет по нескольким организациям., Позволяет не путать отчеты и цифры между организациями после их распечатки.

1 стартмани

07.09.2018    5355    serg_info    0    

Ошибка в бонусной системе в типовой УТ11

Адаптация типовых решений Розничная торговля Платформа 1С v8.3 Платформа 1С v8.3 Оперативный учет Оперативный учет 1С:Управление торговлей 11 1С:Управление торговлей 11 Управленческий учет Управленческий учет Абонемент ($m) Абонемент ($m)

При проведении нескольких розничных возвратов по одному клиенту по одному отчету о розничных продажах расчет бонусных баллов в типовой конфигурации выполняется некорректно. В данной статье рассмотрено исправление этой ошибки.

1 стартмани

10.05.2018    12803    Kutuzov    1    

Автоматическое оповещение пользователей при проведении документа Поступление товаров, с возможностью дублировать сообщения другому сотруднику

Документооборот и делопроизводство Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 Оперативный учет Оперативный учет 1С:Управление торговлей 11 1С:Управление торговлей 11 Россия Россия Абонемент ($m) Абонемент ($m)

Данная разработка автоматически оповещает пользователя о поступлении товара по заказу клиента. Схема работы : Заказ клиента > Заказ поставщику > Поступление товаров. Оповещается пользователь, который создавал заказ клиента (менеджер). Оповещение выводится на экран и ждет подтверждения о прочтении. После подтверждения - фиксируется время прочтения оповещения. Есть возможность просматривать все сообщения по пользователю за любой период. Есть возможность дублировать сообщение другим пользователям. Например, если менеджер в отпуске, и его заменяет другой менеджер, и оповещения будут отправляться второму (третьему и т.д.).

1 стартмани

26.02.2018    15748    Natali307192013    10    

Корректная двусторонняя печать табличных документов + Простой пример создания внешней печатной формы

Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление торговлей 11 Россия Россия Абонемент ($m) Абонемент ($m)

Статья посвящена двухсторонней печати табличных документов из 1С:Предприятия 8.3. А за одно рассмотрено создание Внешней печатной формы (ВПФ). Публикацию про двустороннюю печать на Инфостарте не нашел. Когда передо мной стояла такая задача, решение нашел не сразу. Делюсь, думаю, для многих эта информация будет полезной.

1 стартмани

31.07.2017    34604    SmArtist    8    

Сохраняемые дополнительные реквизиты без изменения закрытости конфигурации (доработан другой вариант)

Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv8 Абонемент ($m) Абонемент ($m)

В поставленном ТЗ указано, что: 1. Документ должен содержать дополнительные сохраняемые поля; 2. Конфигурация должна остаться "оригинальной", т.е. закрытой, для упрощения установки обновления версий

2 стартмани

03.11.2016    8603    ybatiaev    13    

Авторегистрация документа с заполнением файла по шаблону для 1с 8.3

Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Документооборот 1С:Документооборот Россия Россия Абонемент ($m) Абонемент ($m)

В дополнение к http://infostart.ru/public/188902/#comm (Обработчик автоматической регистрации документа 1С:Документооборот после утверждения и автозаполнения файла по шаблону)

23.07.2014    11927    graser    28    

Проведение документа по частям.

Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 Абонемент ($m) Абонемент ($m)

Столкнулся с такой задачей: Требуется проводить один документ в течение всего дня. В документ постоянно добавляются новые строки и он должен влиять на остатки. Плодить документы нельзя. Встал вопрос, как провести документ так, чтобы при проведении записывались движения только по новым строкам.

02.02.2014    7610    Evilgrym    11    

Ограничение на проведение реализаций по группе доступности складов в УТ 10.3

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление торговлей 10 Абонемент ($m) Абонемент ($m)

В стандартной конфигурации УТ 10.3, настройка "группы доступности складов" не накладывает ограничения на продажи с определённых складов. Группа доступности складов позволяет наложить ограничение лишь на автоматическое размещение товаров в заказе покупателей, т.е. менеджер может вручную выбрать размещение и совершить продажу. Данная доработка исправляет эту ситуацию.

12.04.2012    13174    pusix    8    

Доверенность (плательщик, отличный от потребителя)

Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Бухгалтерия 2.0 1С:Управление производственным предприятием 1С:Управление производственным предприятием Абонемент ($m) Абонемент ($m)

Нередки случаи, когда Потребитель - организация, выписавшая доверенность своему сотруднику, и Плательщик за получаемые ТМЦ или документы по этой доверенности - два разных юридических лица. Госкомстат такую ситуацию предусмотрел в форме бланка доверенности (по ОКУД 0315001). Теперь адаптируем так же и типовой документ для воплощения в типовых конфигурациях 1С.

10.01.2012    17545    sergiobargio1    2    

Свойства Номенклатуры в узле свойств ХарактеристикиНоменклатуры универсального отчета

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление производственным предприятием Абонемент ($m) Абонемент ($m)

Частный случай отчетов с группировкой по характеристике номенклатуры, когда в одну (!) строку отчета нужно вывести в виде дополнительных полей и свойства характеристики, и свойства владельца характеристики (номенклатуры) - в случае, когда номенклатура не указывается как группировка в отчете. Небольшая вставка в процедуру универсального отчета решает эту проблему. Плюс, естественно, работают отборы и группировки и по свойствам характеристики, и по свойствам номенклатуры. Естественно, свойство номенклатуры при настройке в данном случае нужно выбирать из узла Характеристика номенклатуры.

1 стартмани

29.04.2011    11497    kylux    2    

Отрицательные остатки для предпринимателя в Бухгалтерии предприятия 2.0

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Бухгалтерия 2.0 Россия Россия Абонемент ($m) Абонемент ($m)

Интернет пестрит сообщениями: разрешил отрицательные остатки для предпринимателя, а расходная накладная не проводится и пишет "в налоговом учете не найдены остатки по партии". Далее идет классическое "Что делать?" и "Очень нужно!"

1 стартмани

02.04.2011    10780    philya    4