По номенклатуре, сумме, количеству строки свертываются, но ошибка: "Обнаружено нулевое количество при пересчете в единицу хранения в строке 1 списка "Товары".
Понимаю, что дело в упаковках и единицах хрнанения, но что с этим делать не понимаю.
Добавьте РеквизитФормыВЗначение и обратное преобразование ЗначениеВРеквизитФормы. Вот эта процедура в модуле формы документа свернула строки ТЧ.Товары:
&НаСервере
Процедура СвернутьТЧНаСервере(ИмяТабличнойЧасти)
ИзмеренияТаблицы = Новый Массив;
РесурсыТаблицы = Новый Массив;
ДокОбъект = РеквизитФормыВЗначение("Объект");
КолонкиТабличнойЧасти = ДокОбъект.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты;
Для Каждого МетаданныеКолонки Из КолонкиТабличнойЧасти Цикл
Если МетаданныеКолонки.Тип.СодержитТип(Тип("Число")) Тогда
РесурсыТаблицы.Добавить(МетаданныеКолонки.Имя);
Иначе
ИзмеренияТаблицы.Добавить(МетаданныеКолонки.Имя);
КонецЕсли;
КонецЦикла;
ДокОбъект[ИмяТабличнойЧасти].Свернуть(
СтрСоединить(ИзмеренияТаблицы, ","),
СтрСоединить(РесурсыТаблицы, ","));
ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры
(1) а как вы себе представляете процесс сворачивания, например, штук и коробок в единицах или красного и желтого в характеристиках?
ну и кроме того, раз единица измерения отсутствует в списках сворачивания или суммирования, то система вам ее очистила, в результате чего и возникает ошибка
свернуть можно только похожее полностью
приведите строки к единому виду по тем же единицам измерения, добавьте в списки сворачивания единицу и все свернется без ошибок
(4)Если у вас ERP, то там не ЕдиницаИзмерения, а Упаковка.
Перед тем как группировать посмотрите какие еще есть заполненные реквизиты и по всем группируйте, суммируйте, иначе ошибки так и будут
(4)Табличная часть сама имеет метод Свернуть(). В справке также написано: "Важно! Оба списка колонок должны покрывать всю табличную часть. Списки колонок не должны пересекаться."
Также проверьте количество * коэффициент единицы хранения остатков в 0 не уходит?
При проведении документа, в регистры записывается количество в единицах хранения остатков.
(7)Скажите рожалуйста, что значит "Оба списка колонок должны покрывать всю табличную часть"? Нужно обязательно использовать все колонки? Как тогда быть с номером строки, кодом строки?
Перепробовал все варианты, пробовал в документе ДвижениеПродукцииИМатериалов, группировал по
(10) Номер строки доступен только для чтения и уникален для всех строк, его не нужно использовать при свертке. Пробовали воспользоваться процедурой из ссылки в (6), в отладчике посмотреть списки измерений и ресурсов?
&НаСервере
Процедура СвернутьТабличнуюЧасть(Объект, ИмяТабличнойЧасти) Экспорт
ИзмеренияТаблицы = Новый Массив;
РесурсыТаблицы = Новый Массив;
КолонкиТабличнойЧасти = Объект.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты;
Для Каждого МетаданныеКолонки Из КолонкиТабличнойЧасти Цикл
Если МетаданныеКолонки.Тип.СодержитТип(Тип("Число")) Тогда
РесурсыТаблицы.Добавить(МетаданныеКолонки.Имя);
Иначе
ИзмеренияТаблицы.Добавить(МетаданныеКолонки.Имя);
КонецЕсли;
КонецЦикла;
Объект[ИмяТабличнойЧасти].Свернуть(
СтрСоединить(ИзмеренияТаблицы, ","),
СтрСоединить(РесурсыТаблицы, ",")
);
КонецПроцедуры
&НаКлиенте
Процедура Andq_Свернуть2После(Команда)
СвернутьТабличнуюЧасть(Объект,"Товары");
КонецПроцедуры
Добавьте РеквизитФормыВЗначение и обратное преобразование ЗначениеВРеквизитФормы. Вот эта процедура в модуле формы документа свернула строки ТЧ.Товары:
&НаСервере
Процедура СвернутьТЧНаСервере(ИмяТабличнойЧасти)
ИзмеренияТаблицы = Новый Массив;
РесурсыТаблицы = Новый Массив;
ДокОбъект = РеквизитФормыВЗначение("Объект");
КолонкиТабличнойЧасти = ДокОбъект.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Реквизиты;
Для Каждого МетаданныеКолонки Из КолонкиТабличнойЧасти Цикл
Если МетаданныеКолонки.Тип.СодержитТип(Тип("Число")) Тогда
РесурсыТаблицы.Добавить(МетаданныеКолонки.Имя);
Иначе
ИзмеренияТаблицы.Добавить(МетаданныеКолонки.Имя);
КонецЕсли;
КонецЦикла;
ДокОбъект[ИмяТабличнойЧасти].Свернуть(
СтрСоединить(ИзмеренияТаблицы, ","),
СтрСоединить(РесурсыТаблицы, ","));
ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры