Размеры товара в розничной торговле обувью

27.10.15

Разработка - Универсальные функции

Пример решения проблемы, возникающей в тех случаях, когда товар покупается коробками, а учет ведется в парах.

   В моем случае используется учет по характеристикам, где характеристика - размер обуви. Закупка у поставщика происходит в коробках. На начальных этапах учета нам приходилось вручную разбивать товар по парам. 

   Работа оказалась очень трудоемкой. Решение было следующее: создали два справочника "раскладка" и "размерный ряд"(чтобы все правильно работало, необходимо, чтобы в характеристике был только размер (например 35)). В справочник "размерный ряд" из прайса поставщика будем заполнять размеры, находящиеся в коробке (например 35-36-37-38-39-40), а в справочнике "раскладка" раскладки этих размеров (например 1-2-2-2-2-1). Далее создаем аналогичные реквизиты номенклатуры, и привязываем их к справочникам соответственно.

   Как заполнять номенклатуру, я объяснять не буду, существует множество способов, в нашей фирме это делается при помощи собственной обработки, заточенной под наши специфики.   

  После того как справочники созданы и реквизиты номенклатуры заполнены, нам необходимо в форме документа Поступление товаров и услуг (мы выбрали поступление, так как при распределении заказа становится проблематично создавать на основании его поступление) создать кнопку, которая будет выполнять команду "РаскладкаКлиент". А в модуль добавить следующие строки:

&НаКлиенте
Процедура РаскладкаКлиент(Команда)
	
	ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
	Для каждого Строка Из ВыделенныеСтроки Цикл
        ТС = Объект.Товары.НайтиПоИдентификатору(Строка);
		
		Наименование = ТС.Номенклатура;//Получаем номенклатуру
		Цена = ТС.Цена;//Получаем цену
		Раскладка = ПоискРаскладки(Наименование);//Получаем раскладку 
		Размер = ПоискРазмеров(Наименование);//Получаем список размеров
	
		//Удаляем разделители и считаем количество
		Раскладка = СтрЗаменить(Раскладка,"-","");
		Размер = СтрЗаменить(Размер,"-","");
		РаскладкаДлина = СтрДлина(Раскладка);
		РазмерДлина = СтрДлина(Размер);
		Сумма=0;
	
		//Разбиваем раскладку в массив
		мРаскладка=новый Массив();
		Для Счетчик = 1 по РаскладкаДлина Цикл 	
			мРаскладка.Добавить(Сред(Раскладка,Счетчик,1));
			Сумма=Число(мРаскладка.Получить(Счетчик-1))+Сумма;
		КонецЦикла;
		//Разбиваем размеры в массив
		мРазмеры=новый Массив();
		Для Счетчик = 1 по РазмерДлина Цикл 	
			мРазмеры.Добавить(Сред(Размер,Счетчик,2));
			Счетчик = Счетчик+1;
		КонецЦикла;
	
		Если ТС.Количество=Сумма Тогда	
		
			//Создаем новые строки
			Объект.Товары.Удалить(ТС);
			Для Счетчик = 1 по РаскладкаДлина Цикл
				НоваяСтрока= Объект.Товары.Добавить();
				НоваяСтрока.Номенклатура= Наименование;     
				НоваяСтрока.Цена = Цена;
				НоваяСтрока.КоличествоУпаковок = мРаскладка.Получить(Счетчик-1);
				НоваяСтрока.Характеристика = ПоискХарактеристики(мРазмеры.Получить(Счетчик-1));
		
				//Обновляем данные
				СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Объект);
				СтруктураДействий = Новый Структура;
				СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", НоваяСтрока.Характеристика);
				СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
				СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
				СтруктураДействий.Вставить("ЗаполнитьЦенуЗакупки", ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект));
				СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", Объект.НалогообложениеНДС);
				СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
				СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
				СтруктураДействий.Вставить("ПересчитатьСумму");
				СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
				СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
				СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
				ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
				РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
				ОбновитьЗависимыеРеквизитыФормы();
			КонецЦикла;
		Иначе
				Сообщить("Неверное количество")
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПоискРаскладки(ФормальныйПараметр)Экспорт
	Товар = Справочники.Номенклатура.НайтиПоНаименованию(ФормальныйПараметр,Истина);	
	Раскладка = Товар.Раскладка;
	Возврат Раскладка;
КонецФункции

&НаСервереБезКонтекста
Функция ПоискРазмеров(ФормальныйПараметр)Экспорт
	Товар = Справочники.Номенклатура.НайтиПоНаименованию(ФормальныйПараметр,Истина);	
	Размер = Товар.РазмерныйРяд;
	Возврат Размер;
КонецФункции

&НаСервереБезКонтекста
Функция ПоискХарактеристики(ФормальныйПараметр)Экспорт
	Характеристика = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(ФормальныйПараметр,Истина);	
	Возврат Характеристика;
КонецФункции

Теперь при нажатии на эту кнопку выделенные позиции будут разбиваться на размеры (если в позиции более одной коробки одинаковой номенклатуры, то необходимо их разложить, то есть если у нас позиции обувь-3 коробки по 10 пар, то необходимо разложить позицию обувь - 30 пар на три позиции Обувь -10 пар.).

Надеюсь, кому-нибудь помог или натолкнул на идею)))

Уже после написания всего, руководством было принято решение перейти на допреквизиты. Код был исправлен, если кому интересно, готов описать.

Вступайте в нашу телеграмм-группу Инфостарт

Обувь размеры

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    7619    DeerCven    15    

61

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    26511    Begemoth80    33    

93

Механизмы типовых конфигураций Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Статистическая выборка сценариев и точек изменения отчетов на общей форме ФормаОтчета в типовых конфигурациях. Примеры кода.

03.06.2024    17644    SergMuravev    40    

135

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    52505    dimanich70    84    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7655    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    66954    atdonya    31    

72

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    11776    mrXoxot    11    

118

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9567    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DAnry 9 08.10.14 14:38 Сейчас в теме
Интересное решение специфической задачи. Акуратно оформлен код.
A24_TECH; +1 Ответить
2. A24_TECH 24 08.10.14 17:33 Сейчас в теме
(1) DAnry, Даже странно, это моя первая работа)))))
3. Taktic 40 10.10.14 09:05 Сейчас в теме
В УТ 10.3 я использовал характеристики и документ комплектация.
4. A24_TECH 24 10.10.14 11:59 Сейчас в теме
(3) Taktic, Если бы проблема стояла в том что нам продают 1 кор., а надо сделать 10 пар, то необходима разукомплектация. Но нам продают пару без характеристик. То есть "обувь (20-25)" = 10 пар. А тут разукомлектация не самый удобный вариант.
5. 1cprogr_nsk 113 14.10.14 06:25 Сейчас в теме
Я создал документ "Размерная сетка" в таб части которой та самая раскладка И по кнопочке создаю характеристики (если еще нет таких) и док. прихода
Прикрепленные файлы:
6. PiccaHut001 17.10.14 18:48 Сейчас в теме
Интересное решение. Но не полное. Что делать, если в коробке 11 ботинок? И все разного размера? Разного цвета? А некоторые, и не ботинки даже, а шлёпки или дамские сандалии? Нужен регистр сведений замен, чтобы заменять весь пересорт одной предопределённой номенклатурой. назвать её можна как угодно, например "неликвид".
jobkostya1c_ERP; ef42; +2 Ответить
7. ef42 17.10.14 22:14 Сейчас в теме
(6) PiccaHut001, соглашусь что решение частичное. Если менеджеры захотят видеть разбивку по цветам - придется усложнять. Но думаю можно допилить.
8. A24_TECH 24 20.10.14 19:29 Сейчас в теме
(7) Созинов, в нашем случае ведется учет как по цветам так и по фасону (как реквизиты номенклатуры), но когда ты берешь упаковку товара "сапоги черные женские" 12 шт, то как там может оказаться сиреневый сандаль?)))))
9. A24_TECH 24 20.10.14 19:31 Сейчас в теме
(6) PiccaHut001, разумеется они будут разного размера, для этого и используется размерный ряд показывающий границы этих размеров. А вот разные цвета это перебор, такого не встречал.
10. A24_TECH 24 20.10.14 19:32 Сейчас в теме
обычно один артикул это один фасон/цвет/пол/сезон/материалы, когда ты берешь упаковку этого артикула, то сложно ожидать увидеть там нечто иное))))
11. voskspb 07.12.14 17:31 Сейчас в теме
Добрый день. Подскажите (лучше в личку), как правильно в модуль добавить ваш программный код? Подробнее если можно, Спасибо.
12. A24_TECH 24 28.07.15 12:14 Сейчас в теме
Провернул подобный алгоритм, но на дополнительных реквизитах, вместо справочников. Если кому интересно, опишу подробнее.
Для отправки сообщения требуется регистрация/авторизация