Автосортировка по наименованию номенклатуре A-Z при проведении 1с 7.7 ТиС

1. svet2222 15.07.11 20:55 Сейчас в теме
Потому как заставить сотрудников сортировать нереально. А для отбора заказа это важно
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Shaman100M 1150 16.07.11 14:21 Сейчас в теме
// гл. модуль
Функция ЗначениеДляСортировки(ТекЗнач) // на входе - агрегатный объект, на выходе - его строчное выражение для сортировки
	ТипТекЗнач	= ТипЗначенияСтр(ТекЗнач);
	Если ТипТекЗнач	= "Справочник" Тогда
		Возврат СокрЛП(ТекЗнач.Наименование);
		// Возврат ТекЗнач.ПолноеНаименование(); // или так
	ИначеЕсли ТипТекЗнач	= "Документ" Тогда	    
		Возврат СокрЛП(ТекЗнач.НомерДок);	// например так
	Иначе
		Возврат Строка(ТекЗнач);
	КонецЕсли;
КонецФункции //

Процедура глСортироватьТЧДокумента(Конт,ОднаКолонка) Экспорт
	Перем ТЗ;
	Если Конт.КоличествоСтрок()	> 1 Тогда
		ТЗ	= СоздатьОбъект("ТаблицаЗначений"); 
		Конт.ВыгрузитьТабличнуюЧасть(ТЗ);
		ЗначВКолонке	= ТЗ.ПолучитьЗначение(1,ОднаКолонка);
		ТипЗначВКолонке	= ТипЗначенияСтр(ЗначВКолонке);
		Если 	(ТипЗначВКолонке	= "Число")  ИЛИ 
				(ТипЗначВКолонке	= "Строка")	ИЛИ
				(ТипЗначВКолонке	= "Дата")	Тогда
			ТЗ.Сортировать(ОднаКолонка);
		Иначе
			ТЗ.ВставитьКолонку(,1,"Строка");                                                                    
			Для Счетчик	= 1 По ТЗ.КоличествоСтрок() Цикл
				ТЗ.УстановитьЗначение(Счетчик,1,ЗначениеДляСортировки(ТЗ.ПолучитьЗначение(Счетчик,ОднаКолонка)));
			КонецЦикла;
			ТЗ.Сортировать("1");
			ТЗ.УдалитьКолонку(1);
		КонецЕсли;
		ТЗ.УдалитьКолонку("НомерСтрокиДокумента");
		Конт.УдалитьСтроки();
		Конт.ЗагрузитьТабличнуюЧасть(ТЗ);
	КонецЕсли;
КонецПроцедуры //
                             
// модуль документа
Процедура ОбработкаПроведения()
	глСортироватьТЧДокумента(Контекст,"Номенклатура");
КонецПроцедуры //                                     
// или форма модуля
Процедура ПриЗаписи()
	глСортироватьТЧДокумента(Контекст,"Номенклатура");
КонецПроцедуры //                                     

Показать


Иногда лучше оставить табличную часть документа в том состоянии, как ее набивал оператор, - при повторном открытии он ее (ТЧ) не узнает.
Другое дело, удобство набора накладной в местах хранения товара, но и здесь можно обойтись сортировкой номенклатуры только в печатной форме, в соответсвии с ячейкой хранения и обходом склада.
Иваныч; +1 Ответить
5. Shaman100M 1150 16.07.11 14:32 Сейчас в теме
(4) сортировка при печати:

// форма документа процедура печати
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("НомСтрокиДок","Число");
ТЗ.НоваяКолонка("КолонкаСортировки","Строка");
ВыбратьСтроки();
Пока ПолучитьСтроку()	= 1 Цикл
	ТЗ.НоваяСтрока();
	ТЗ.НомСтрокиДок	= НомерСтроки;
	ТЗ.КолонкаСортировки	= ЗначениеДляСортировки(Номенклатура);
КонецЦикла;

ТЗ.Сортировать("КолонкаСортировки");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()	= 1 Цикл
	ПолучитьСтрокуПоНомеру(ТЗ.НомСтрокиДок);
	// обработка печати строки документа
КонецЦикла;

Показать
7. Farhat95 13.05.22 11:41 Сейчас в теме
(5)
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("НомСтрокиДок","Число");
ТЗ.НоваяКолонка("КолонкаСортировки","Строка");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
ТЗ.НоваяСтрока();
ТЗ.НомСтрокиДок = НомерСтроки;
ТЗ.КолонкаСортировки = ЗначениеДляСортировки(Номенклатура);
КонецЦикла;

ТЗ.Сортировать("КолонкаСортировки");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
ПолучитьСтрокуПоНомеру(ТЗ.НомСтрокиДок);
// обработка печати строки документа
КонецЦикла;
Показать


Знать бы куда это вставлять ). Очень нужная штука, но в программировании пока 0.
2. svet2222 15.07.11 21:02 Сейчас в теме
В документах. Спасибо.
3. Octopus 337 16.07.11 09:14 Сейчас в теме
А как-то более развернуто можно задачу сформулировать?
6. svet2222 16.07.11 22:42 Сейчас в теме
Как тебе спасибо дорогой Shaman100M. Первый вариант то что нужно.
Дай тебе Бог здоровьячка.
Спасибо!
8. CheBurator 3119 15.05.22 13:38 Сейчас в теме
Шаман правильно все написал. Сборщик работает с печатной формой сборки (или с ТСД), а не напрямую с базой. То что напечатано в листе сборки (ТСД) - мы можем определять сами, вне зависимости как "объекты" расположены в базе.
.
Для облегчения программирования при задании правил нумерации ячеек (код или номер ячейки) следует выбрать "хорошую" систему нумерации, соответствующую физическом возможностям сборщика по перемещению своего туловища по маршруту. тогда простая сортировка по номеру ячейки даст нужный порядок обхода без дополнительных ухищрений погромиста 1С.
.
Например, для сборщиков "на полу" нумерация ячеек по шаблону типа "Проход(ряд)-Стойка(место)-Ярус".
А вот для подбора товаров с использованием высотной техники была бы удобнее "Проход(ряд)-Ярус-Стойка(место)".
.
но применять разные шаблону нумерации для одной физической зоны стеллажей не есть хорошо (например, когда ячейки отбора для "половых" сборщиков - это первый (напольный) ярус евростеллажей, а высотные ярусы - с использованием подборочной высотной техники (понятно, что если подбор с высотных ярусов не производится, или производится только паллетами - то нумерация для высотных ярусов нормально отработает и по шаблону нумерации напольного яруса).
.
обычно, при использовании единого шаблона нумерации в зоне ячеек, достаточно для ячейки завести реквизит "ПорядокОбхода" (число), прописать в ячейки возрастающие значения согласно типовому порядку обхода в каждой нужной зоне (например, "змейкой") и сортировать проходы по ячейкам по этому реквизиту. Это достаточно универсальный и малозатратный вариант реализации "хорошего" порядка обхода.
.
я, например, даже без "ПорядкаОбхода" обходился ;-)
Когда сборщик (с ТСД) заходил в новый ряд, система его просила отсканировать два ближайших номера ячейки в удобном направлении и определяла как сборщик будет идти по ряду сборки - в прямом порядке или в обратном. Типа:
Система: "Сканируй две ячейки в направлении движения"
Сборщик: сканирует ячейки 06-144-01, 06-143-01.
Система: ага! собирается идти в обратном направлении и делает "СписокЯчеекДляОтбора.Сортировать("КодЯчейки-");
.
посмотреть полезности всякие можно здесь: https://infostart.ru/1c/articles/338893/
можно еще полезных ссылок дать, но здесь жлобские ;-) правила по указанию ссылок на внешние ресурсы? так что если будут вопросы - стучись в личку
9. Иваныч 23 03.06.22 18:16 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот