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