Дякую за поради. Завтра спробую розібратися і виправити.
Мені в конфігураторі відкриває таку функцію:
Функция ПроверитьРеквизитыНомерСтрокиННАктуальны(СообщатьОбОшибках = Ложь) Экспорт
Перем СтруктураШапкиДокумента;
Перем ТаблицаНоменклатуры;
Перем ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоОС, ТаблицаПоНМА;
// Подготовим таблицы
Отказ = Ложь;
СтруктураШапкиДокумента = ПодготовитьСтруктуруШапкиДокумента(Отказ);
ПодготовитьТаблицы(СтруктураШапкиДокумента, ТаблицаНоменклатуры, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоОС, ТаблицаПоНМА);
// Загрузим все таблицы (кроме тары) в одну таблицу
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоУслугам, ТаблицаНоменклатуры);
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоОС , ТаблицаНоменклатуры);
ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоНМА , ТаблицаНоменклатуры);
Результат = Ложь;
НаборРекизитовСвертки = "КодВид, КодСХ, Номенклатура, Характеристика, КодУКТВЭД, ЕдиницаИзмерения, ЕдиницаИзмеренияКод, ЦенаБезНДСРегл, СтавкаНДС, КодЛьготы";
ТаблицаНоменклатуры.Свернуть("НомерСтрокиНН, " + НаборРекизитовСвертки);
ТаблицаНоменклатуры.Сортировать("НомерСтрокиНН");
КолВоСтрок = ТаблицаНоменклатуры.Количество();
Если КолВоСтрок = 0 Тогда
// фиг с ним, считаем что без строк нормально
Результат = Истина;
ИначеЕсли ТаблицаНоменклатуры[0].НомерСтрокиНН = 0 Тогда
// Есть пустые номера
Если СообщатьОбОшибках Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'В документе есть незаполненные реквизиты ""Номер строки НН""!'; uk = 'У документі є незаповнені реквізити ""Номер рядка ПН""!'"));
КонецЕсли;
Результат = Ложь;
ИначеЕсли ТаблицаНоменклатуры[0].НомерСтрокиНН <> 1 Тогда
// Нумерация не начинается с 1
Если СообщатьОбОшибках Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'В документе нумерация реквизов ""Номер строки НН"" начинается не с 1!'; uk = 'У документі нумерація реквізитів ""Номер рядка ПН"" починається не з 1!'"));
КонецЕсли;
Результат = Ложь;
ИначеЕсли ТаблицаНоменклатуры[КолВоСтрок-1].НомерСтрокиНН > КолВоСтрок Тогда
// Есть пропуски в нумерации
Если СообщатьОбОшибках Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'В документе есть пропуски в нумерации!'; uk = 'У документі є пропуски в нумерації!'"));
КонецЕсли;
Результат = Ложь;
ИначеЕсли ТаблицаНоменклатуры[КолВоСтрок-1].НомерСтрокиНН < КолВоСтрок Тогда
// Есть строки с одинаковым номером, но разными ключевыми полями
Если СообщатьОбОшибках Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'В документе есть строки з одинаковыми реквизитами ""Номер строки НН"", но разными ключевыми полями!'; uk = 'У документі є рядки з однаковими реквізитами ""Номер рядка ПН"", але різними ключовими полями!'"));
КонецЕсли;
Результат = Ложь;
ИначеЕсли ТаблицаНоменклатуры[КолВоСтрок-1].НомерСтрокиНН = КолВоСтрок Тогда
// Все почти ок!
Результат = Истина;
// Теперь проверяем все внутри
Для ИндСтроки = 1 По КолВоСтрок Цикл
ТекущийНомерСтрокиНН = ТаблицаНоменклатуры[ИндСтроки-1].НомерСтрокиНН;
Если НЕ ТекущийНомерСтрокиНН = ИндСтроки Тогда
Если СообщатьОбОшибках Тогда
ТекстСооющенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В документе для строки печатной формы %1 указан некорректный ""Номер строки НН"" %2!'; uk = 'У документі для рядка друкованої форми %1 вказано некоректний ""Номер строки НН"" %2!'"), ИндСтроки, ТекущийНомерСтрокиНН);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСооющенияОбОшибке);
КонецЕсли;
Результат = Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции // ()