i | Вредный совет. Удалил специально. |
МаксимальноеЗначение = Неопределено;
Если ТабличнаяЧасть.Количество() > 0 Тогда
ТЗ = ТабличнаяЧасть.Выгрузить();
ТЗ.Сортировать("ИмяКолонки Убыв");
МаксимальноеЗначение = ТЗ[0];
КонецЕсли;
МаксимальноеЗначение = Неопределено;
Если ТабличнаяЧасть.Количество() > 0 Тогда
ТЗ = ТабличнаяЧасть.Выгрузить();
ТЗ.Сортировать("ИмяКолонки Убыв");
МаксимальноеЗначение = ТЗ[0];
КонецЕсли;
// Процедура проверяет максимальное значение ключа связи.
//
Процедура ПроверитьМаксЗначениеКлюча(ПараметрыСвязиСтрокТЧ, ДокументОбъект, ИмяТЧ) Экспорт
Если ПараметрыСвязиСтрокТЧ[ИмяТЧ].СвободныйКлюч <> Неопределено Тогда
Возврат; // «не занятый» ключ уже был определен ранее.
КонецЕсли;
// При первом обращении «свободный» ключ необходимо рассчитать.
Если ДокументОбъект[ИмяТЧ].Количество() = 0 Тогда
ПараметрыСвязиСтрокТЧ[ИмяТЧ].СвободныйКлюч = 1; // отсчет начинается с нуля
Иначе
// Если в табл. части уже присутствуют строки, то новое «свободное» значение ключа
// рассчитывается от максимального существующего значения.
СписокКлючей = Новый СписокЗначений;
Для каждого ЭлКоллекции Из ДокументОбъект[ИмяТЧ] Цикл
СписокКлючей.Добавить(ЭлКоллекции.КлючСвязи);
КонецЦикла;
СписокКлючей.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
ПараметрыСвязиСтрокТЧ[ИмяТЧ].СвободныйКлюч = СписокКлючей[0].Значение + 1;
КонецЕсли;
КонецПроцедуры // ПроверитьМаксЗначениеКлюча()
МаксимальноеЗначение = Неопределено;
Если ТабличнаяЧасть.Количество() > 0 Тогда
ТЗ = ТабличнаяЧасть.ВыгрузитьКолонки("ИмяКолонки");
ТЗ.Сортировать("ИмяКолонки Убыв");
МаксимальноеЗначение = ТЗ[0];
КонецЕсли;