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

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.3.24)

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

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

1 стартмани

18.03.2024    2852    1    John_d    9    

56

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

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

28.12.2023    4952    mrXoxot    11    

100

Переоткрытие внешних обработок

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

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

30.11.2023    4089    ke.92@mail.ru    16    

62

Ключи аналитик учета в ЕРП, КА, УТ

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

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

08.11.2023    7581    ids79    25    

75

Валидация JSON через XDTO (включая массивы)

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

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

28.08.2023    9321    YA_418728146    6    

143

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2196    24    progmaster    7    

3

Работа с контактной информацией. Часть 1

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уверен, все в курсе, что контактная информация опять во всех конфигурациях хранится по-новому. Связано это с появлением так называемых муниципальных адресов, где районы заменили городские округа. Сейчас происходит массовый отказ от УПП и других устаревших решений, а также массовый переход с зарубежных систем. Возникает потребность преобразовать старые адреса в новые. И тут нас всех ждёт масса неприятных сюрпризов от разработчиков БСП. О программном интерфейсе контактной информации и пойдёт речь в данной статье.

23.05.2023    11925    biimmap    43    

59
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DAnry 8 08.10.14 14:38 Сейчас в теме
Интересное решение специфической задачи. Акуратно оформлен код.
A24_TECH; +1 Ответить
2. A24_TECH 24 08.10.14 17:33 Сейчас в теме
(1) DAnry, Даже странно, это моя первая работа)))))
3. Taktic 39 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 106 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 Сейчас в теме
Провернул подобный алгоритм, но на дополнительных реквизитах, вместо справочников. Если кому интересно, опишу подробнее.
Оставьте свое сообщение