Подбор в УТ 11

1. ksv1cc 19 26.03.14 09:36 Сейчас в теме
Добрый день!
Перешли на версию УТ 11.1.4.14 с версии 11.1.2
Столкнулись с такой проблемой:
1) При подборе одной и той же номенклатуре в подборе раньше одинаковые позиции суммировались - сейчас нет. Как это настроить?
2) при добавлении уже рассчитанную накладную новых позиций (при этом позиции могли уже быть (просто добавляется количество)) - они переносятся в документ новыми строчками, а не суммирует количество. Как это исправить?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Consultant_1C 114 26.03.14 10:54 Сейчас в теме
Добрый день!!! Я думаю следует посмотреть в сторону
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
- расположена в модуле формы документа.
в ней есть цикл где обрабатывается результат подбора
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
		
		ТекущаяСтрока = Объект.Товары.Добавить();
		ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, "НоменклатураПоставщика, Номенклатура, Характеристика, Упаковка, Склад, УсловиеЦеныПоставщика, Цена, КоличествоУпаковок, ПроцентРучнойСкидки");
		
		Если Объект.ПоступлениеПоЗаказам Тогда
			ТекущаяСтрока.РасхождениеЗаказ = 1;
		КонецЕсли;
		
		СтруктураДействий = Новый Структура;
		СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
		СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", Объект.НалогообложениеНДС);
		СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
		ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,Объект);
		
		КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
		ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
		
	КонецЦикла;
Показать


вот в ней необходимо сделать условие что то типа
Отбор = Новый Структура("Номенклатура", СтрокаТовара.Номенклатура);
		НайденнаяПозиция = Объект.Товары.НайтиСтроки(Отбор);
		Если НайденнаяПозиция.Количество() > 0 Тогда
			 ТекущаяСтрока = НайденнаяПозиция[0];
		Иначе
			 ТекущаяСтрока = Объект.Товары.Добавить();
		КонецЕсли;


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


Ну а дальше я думаю сами определитесь что куда подсунуть!!!!

Если честно то у меня даже в релизе 11.1.1.13 не суммирует =))) я торговлю 11 не знаю может есть какой-то флаг в настройках учета для контроля дублей в табличных частях документа.
3. ksv1cc 19 26.03.14 11:51 Сейчас в теме
ну на старой версии тоже не суммировал.
А вот подбор работал. Объединял строки в одну.
4. Consultant_1C 114 26.03.14 12:36 Сейчас в теме
Процедура ДобавитьВКорзину(ПараметрыТовара)
- ПодборТоваровВДокументПродажи модуль формы

Процедура ДобавитьВКорзину(ПараметрыТовара)
......
ТекстОповещения = ДобавитьВКорзинуНаКлиенте(ПараметрыТовара, НовыеСтроки);
......

А вот собственно где происходит поиск товара в корзине и если его нет то добавляет новый в противном случае увеличивает кол-во:
Функция ДобавитьВКорзинуНаКлиенте(ПараметрыТовара, НовыеСтроки)
	
	Отбор = Новый Структура("Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Цена, ВидЦены, Склад, ПроцентРучнойСкидки, СрокПоставки");
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
	
	Для Каждого НоваяСтрока Из НовыеСтроки Цикл
		
		ЗаполнитьЗначенияСвойств(Отбор, ПараметрыТовара, "Номенклатура, Характеристика, ХарактеристикиИспользуются, СрокПоставки");
		ЗаполнитьЗначенияСвойств(Отбор, НоваяСтрока, "Упаковка, Цена, ВидЦены, Склад, ПроцентРучнойСкидки");
		
		Если ИспользоватьДатыОтгрузки Тогда
			Отбор.Вставить("ДатаОтгрузки", НоваяСтрока.ДатаОтгрузки);
		КонецЕсли;
		
		РезультатПоиска = Объект.Корзина.НайтиСтроки(Отбор);
		
		Если РезультатПоиска.Количество() = 0 Тогда
			
			ТекущаяСтрока = Объект.Корзина.Добавить();
			ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Отбор);
			
			СтруктураДействий.Вставить("ЗаполнитьПризнакНаличияНоменклатурыПродаваемойСовместно", ПредопределенноеЗначение("Перечисление.ВариантыАнализаНоменклатурыПродаваемойСовместно.ОптоваяТорговля"));
			
		Иначе
			ТекущаяСтрока = РезультатПоиска[0];
		КонецЕсли;
		
		ТекущаяСтрока.КоличествоУпаковок = ТекущаяСтрока.КоличествоУпаковок + НоваяСтрока.КоличествоУпаковок;
Показать
user712943; ksv1cc; +2 Ответить
5. ksv1cc 19 26.03.14 12:50 Сейчас в теме
Да. Это уже исправил. Просто вопрос задавал,думал может не знаю о каких-либо настройках в программе.
Спасибо.
6. alexruzh67 27.03.14 10:14 Сейчас в теме
(5)Здравствуйте, у меня такая же проблемма на 11,1,4,10, подскажите, что поправили, очень нужно.
7. Consultant_1C 114 27.03.14 10:22 Сейчас в теме
(6) alexruzh67, Смотрите и сравнивайте в (4)
8. alexruzh67 27.03.14 10:46 Сейчас в теме
(7)Я этот код уже наизусть почти выучил, РезультатПоиска всегда почему то равен нулю, поэтому и добавляет новые позиции в корзину. и не обновляет надпись над корзиной там всегда по нулям, пока в корзине что нибудь не поправишь.
9. ksv1cc 19 27.03.14 10:56 Сейчас в теме
(8) alexruzh67,
Для объединения позиций в реализации
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)

ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();

Для каждого СтрокаТовара Из ТаблицаТоваров Цикл

Отбор = Новый Структура("Номенклатура", СтрокаТовара.Номенклатура);
НайденнаяПозиция = Объект.Товары.НайтиСтроки(Отбор);
Если НайденнаяПозиция.Количество() > 0 Тогда
ТекущаяСтрока = НайденнаяПозиция[0];
ТекущаяСтрока.Количество = ТекущаяСтрока.Количество + СтрокаТовара.Количество;
ТекущаяСтрока.КоличествоУпаковок = ТекущаяСтрока.КоличествоУпаковок + СтрокаТовара.КоличествоУпаковок;
Иначе
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, "Номенклатура, Характеристика, Упаковка, Склад, ВидЦены, Цена, КоличествоУпаковок, СрокПоставки, ПроцентРучнойСкидки");

КонецЕсли; 
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);

СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);


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

КонецЦикла;

ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьЗависимыеРеквизитыФормыСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказателиРеализации(ЭтаФорма);
РассчитатьСуммуПредоплаты(ЭтаФорма);

МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);

КонецПроцедуры
Показать


Для объединения в подборе. НО тут аккуратно. Цены у нас одни, упаковок нет.
//Отбор = Новый Структура("Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Цена, ВидЦены, Склад, ПроцентРучнойСкидки, СрокПоставки");
Отбор = Новый Структура("Номенклатура,Цена, ВидЦены, Склад, ПроцентРучнойСкидки"); //Характеристика, ХарактеристикиИспользуются, Упаковка, Цена, ВидЦены, Склад, ПроцентРучнойСкидки, СрокПоставки");

СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));

Для Каждого НоваяСтрока Из НовыеСтроки Цикл

ЗаполнитьЗначенияСвойств(Отбор, ПараметрыТовара, "Номенклатура,"); //Характеристика, ХарактеристикиИспользуются, СрокПоставки");
//ЗаполнитьЗначенияСвойств(Отбор, НоваяСтрока, "Упаковка, Цена, ВидЦены, Склад, ПроцентРучнойСкидки");
ЗаполнитьЗначенияСвойств(Отбор, НоваяСтрока, "Цена, ВидЦены, Склад, ПроцентРучнойСкидки");
Показать
10. alexruzh67 27.03.14 11:07 Сейчас в теме
(9)Спасибо тоесть я правильно понял что в параметре "Отбор" нужно убрать лишние значения?
11. ksv1cc 19 27.03.14 11:16 Сейчас в теме
(10) alexruzh67, Да. Я честно говоря не смог понять, почему он не объединяет их в типовом решении. Значения 1 в 1 по всем параметрам.
12. alexruzh67 27.03.14 11:19 Сейчас в теме
(11)Я думаю, что то с упаковками намудрили, хотя могу и ошибаться.
13. vertkov2010 3 27.03.14 15:58 Сейчас в теме
не знаю у меня в ут 11.1.2.25(типовая) все нормально работает
14. ksv1cc 19 27.03.14 16:25 Сейчас в теме
ну в ней и работало. После перехода на версию 11.1.4 - началось
Оставьте свое сообщение

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