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

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С v8.3 1C:Бухгалтерия Бесплатно (free)

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

27.12.2024    11252    Begemoth80    32    

85

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

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

21.05.2024    25152    dimanich70    82    

149

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

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

12.02.2024    25474    atdonya    25    

58

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

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

28.12.2023    7140    mrXoxot    11    

113

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    6075    ke.92@mail.ru    17    

65

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    14620    ids79    26    

84
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 110 14.10.14 06:25 Сейчас в теме
Я создал документ "Размерная сетка" в таб части которой та самая раскладка И по кнопочке создаю характеристики (если еще нет таких) и док. прихода
Прикрепленные файлы:
6. PiccaHut001 17.10.14 18:48 Сейчас в теме
Интересное решение. Но не полное. Что делать, если в коробке 11 ботинок? И все разного размера? Разного цвета? А некоторые, и не ботинки даже, а шлёпки или дамские сандалии? Нужен регистр сведений замен, чтобы заменять весь пересорт одной предопределённой номенклатурой. назвать её можна как угодно, например "неликвид".
jobkostya1c_ERP; Созинов; +2 Ответить
7. Созинов 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 Сейчас в теме
Провернул подобный алгоритм, но на дополнительных реквизитах, вместо справочников. Если кому интересно, опишу подробнее.
Оставьте свое сообщение