Скорость проведения документов, содержащих тысячи строк, в типовой БП невелика. Зависимость ее от количества строк очень нелинейна. Таким образом, разбивая таблицу товаров при проведении на подтаблицы, можно значительно ускорить проведение.
По х - сотни строк, по y- секунды.
Типовая 1С 8.2 БП, документ - реализация.
Нижний график - усовершенствованный механизм (решение ниже), вверху - типовой.
Простейший пример усовершенствования: Вместо строки в модуле проведения:
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Заголовок, ТаблицаПоТоварам, Истина, СтруктураШапкиДокумента.ОтражатьВНалоговомУчетеУСН, Отказ, , СодержаниеПроводки);
Вставляем блок:
Если ТаблицаПоТоварам.Колонки.Найти("ПодразделениеОрганизации") = Неопределено Тогда
ТаблицаПоТоварам.Колонки.Добавить("ПодразделениеОрганизации");
КонецЕсли;
Если ТаблицаПоТоварам.Колонки.Найти("СписанныеПартии") = Неопределено Тогда
ТаблицаПоТоварам.Колонки.Добавить("СписанныеПартии");
КонецЕсли;
Если ТаблицаПоТоварам.Колонки.Найти("ДоговорПоставщика") = Неопределено Тогда
ТаблицаПоТоварам.Колонки.Добавить("ДоговорПоставщика");
КонецЕсли;
Для Индекс = 1 По 3 Цикл
Если ТаблицаПоТоварам.Колонки.Найти("КорСубконтоСписания" + Индекс) = Неопределено Тогда
ТаблицаПоТоварам.Колонки.Добавить("КорСубконтоСписания" + Индекс);
КонецЕсли;
КонецЦикла;
Если ТаблицаПоТоварам.Колонки.Найти("СписыватьПоУказаннойСтоимости") = Неопределено Тогда
ТаблицаПоТоварам.Колонки.Добавить("СписыватьПоУказаннойСтоимости", Новый ОписаниеТипов("Булево"));
КонецЕсли;
Если ТаблицаПоТоварам.Колонки.Найти("Себестоимость") = Неопределено Тогда
ТаблицаПоТоварам.Колонки.Добавить("Себестоимость");
КонецЕсли;
колвоСтрок = ТаблицаПоТоварам.количество();
если колвоСтрок>400 тогда
ТаблицаПоТоварам2 = ТаблицаПоТоварам.СкопироватьКолонки();
для каждого с из ТаблицаПоТоварам цикл
сс=ТаблицаПоТоварам2.добавить();
ЗаполнитьЗначенияСвойств(сс,с);
индескСтроки = ТаблицаПоТоварам.индекс(с)+1;
дробь=индескСтроки/300;
если окр(дробь) = дробь или индескСтроки = колвоСтрок тогда
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Заголовок, ТаблицаПоТоварам2, Истина, СтруктураШапкиДокумента.ОтражатьВНалоговомУчетеУСН, Отказ, , СодержаниеПроводки);
для каждого ст из ТаблицаПоТоварам2 цикл //передаем измененную подтаблицу в таблицу..
стт=ТаблицаПоТоварам.найти(ст.номерстроки,"НомерСтроки");
ЗаполнитьЗначенияСвойств(стт,ст);
конеццикла;
ТаблицаПоТоварам2.очистить();
конецесли;
конеццикла;
иначе
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Заголовок, ТаблицаПоТоварам, Истина, СтруктураШапкиДокумента.ОтражатьВНалоговомУчетеУСН, Отказ, , СодержаниеПроводки);
конецесли;
Резюме: разбиение только в движении партий позволяеет приблизить зависимость времени проведения от количества строк к линейной. Точнее эта зависимость имеет не столь выраженную нелинейность, и экономия времении проведения может быть в разы. Добавлю, что использовался серверный вариант БД, версия 1С - 8.2.13.219, но примерное такие же графики были получены и на сервреной версии 8.1. Использовался режим "первого проведения" - второе проведение тойже последовательности документов дает более гладкую кривую и меньшие времена проведений.