Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Автоматическая нумерация строк в Налоговой накладной , 1С 8.3.12.1714, Бухгалтерия 1.2.48.1          
Auditive Подменю пользователя
сообщение 01.03.19, 13:50
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 1 раз
Рейтинг: 0

Товарищи, добрый день, здравствуйте, привет.
Выручайте, ибо в отчаянии и больше не к кому обратиться.

Собственно, тема: автоматическая нумерация строк в Налоговой накладной при нажатии "Записать".

Предыстория:
Пользователь формирует Налоговую накладную, заполняет Табличную часть номенклатурой. По-умолчанию, в графе "Номер строки НН" проставлено "<Не указан>" до тех пор, пока пользователь не нажмёт "Записать".
При нажатии "Записать" 1С выполняет автоматическую нумерацию строк.

Проблема:
В Табличной части есть дублирующиеся строки (полностью идентичные). Например, пользователь создал Новую строку, заполнил реквизиты, затем нажимает "Добавить копированием" - и так несколько раз.
При нажатии "Записать" в таком случае Автоматическая нумерация проставляет для таких строк одинаковый Номер строки НН, из-за чего они, в последствии, группируются в одну строку (в Печатной форме).

Вопрос:
Как реализовать, чтобы для всех строк в Табличной части Налоговой накладной проставлялся уникальный Номер строки НН, несмотря на дублирующиеся реквизиты в некоторых строках?

Процедура, которая это выполняет:
Код
Процедура ПроизвестиУстановкуНомерСтрокиНН() Экспорт
    
    Перем СтруктураШапкиДокумента;
    Перем ТаблицаНоменклатуры, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоОС, ТаблицаПоНМА;
    
    Если РеквизитыНомерСтрокиННАктуальны Тогда
        Возврат;
    КонецЕсли;
    
    Отказ = Ложь;
    СтруктураШапкиДокумента = ПодготовитьСтруктуруШапкиДокумента(Отказ);
    ПодготовитьТаблицы(СтруктураШапкиДокумента, ТаблицаНоменклатуры, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоОС, ТаблицаПоНМА);

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

КонецПроцедуры


Будьте добры, подскажите, что изменить, ибо в упор не вижу.

Сообщение отредактировал Vofka - 01.03.19, 14:50

sava1 Подменю пользователя
сообщение 01.03.19, 14:45
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(Auditive @ 01.03.19, 13:50) *
ТаблицаНоменклатуры.Свернуть(НаборРеквизитовСвертки);


закомментировать

Gazulo Подменю пользователя
сообщение 01.03.19, 15:14
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 273
Спасибо сказали: 46 раз
Рейтинг: 46

Auditive @ Сегодня, 13:50 * ,
Зачем несколько строк одинаковых? одинаковый Номер строки НН для того чтобы потом можно было корректно выписать Приложение 2..Если будут одинаковые строки, но разная нумерация, тогда при преобразовании Приложений 2 (если такие будут) может возникать ошибка..

Володька Подменю пользователя
сообщение 01.03.19, 15:30
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 166
Спасибо сказали: 8 раз
Рейтинг: 0

sava1 @ Сегодня, 15:45 * ,
А может лучше пересмотреть НаборРеквизитовСвертки? Ведь свертка не с проста.

Auditive Подменю пользователя
сообщение 01.03.19, 18:04
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 1 раз
Рейтинг: 0

sava1
Если закомментировать Свёртку, то при автоматической нумерации оно нумерует все строки значением, равным общему количеству строк (см. скриншот).


Володька
Попробовал убрать все реквизиты из набора ( НаборРеквизитовСвертки = ""; ) - вообще перестала выполнятся нумерация smile.gif (см. скриншот)
А придумать какой-то реквизит, по которому бы отличались эти строки в НН - таланта что-то не хватает smile.gif Они ведь друг с друга полностью скопированные, без редактирования.

Володька Подменю пользователя
сообщение 04.03.19, 7:33
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 166
Спасибо сказали: 8 раз
Рейтинг: 0

Auditive @ 01.03.19, 19:04 * ,
Я не о том, что там нужно всё убрать, там нужно изменить состав, если он сворачивает по ключу
НаборРеквизитовСвертки = "КодВид, КодСХ, Номенклатура, Характеристика, КодУКТВЭД, ЕдиницаИзмерения, ЕдиницаИзмеренияКод, ЦенаБезНДСРегл, СтавкаНДС, КодЛьготы";
То может стоит поменять на
НаборРеквизитовСвертки = "КодВид, Номенклатура, Характеристика, КодУКТВЭД, ЕдиницаИзмерения, ЕдиницаИзмеренияКод, ЦенаБезНДСРегл, СтавкаНДС, КодЛьготы";
или
НаборРеквизитовСвертки = "КодСХ, Номенклатура, Характеристика, КодУКТВЭД, ЕдиницаИзмерения, ЕдиницаИзмеренияКод, ЦенаБезНДСРегл, СтавкаНДС, КодЛьготы";
или вообще
НаборРеквизитовСвертки = "Номенклатура, Характеристика, КодУКТВЭД, ЕдиницаИзмерения, ЕдиницаИзмеренияКод, ЦенаБезНДСРегл, СтавкаНДС, КодЛьготы";

Auditive Подменю пользователя
сообщение 05.03.19, 13:32
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 1 раз
Рейтинг: 0

Володька @ Вчера, 7:33 * ,
спасибо за отклик, но к сожалению, всё равно безрезультатно.
Пробовал разные реквизиты убирать/добавлять, но ничего не меняется.
Строки идентичны абсолютно, один в один, и перед выполнением автоматической нумерации (заполнения НомерСтрокиНН) единственным различием между ними выступает номер строки табличной части (похоже на реквизит НомерСтроки по Форме, но среди реквизитов я его не вижу в дереве конфигурации).
Возможно есть какой-либо "скрытый" или не визуальный реквизит, который уникален для каждой строки - если может знаете такой - то подскажите, пожалуйста.

sava1 Подменю пользователя
сообщение 05.03.19, 13:43
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Закомментируйте всю эту хрень.
Цикл по таблице с установкой номера по итерратору ( от 1.....)

Auditive Подменю пользователя
сообщение 06.03.19, 13:50
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 1 раз
Рейтинг: 0

Всем спасибо за отклик!

Вопрос решился (как всегда просто и изящно) добавлением следующей строки:
НовыйНомерСтрокиНН = НовыйНомерСтрокиНН + 1;

в эту часть:
...
Для каждого НайденнаяСтрока Из МассивСтрокНомерСтрокиНН Цикл
       ЭтотОбъект[НайденнаяСтрока.ИмяТЧ][НайденнаяСтрока.НомерСтрокиТЧ-1].НомерСтрокиНН =  НовыйНомерСтрокиНН;
КонецЦикла;
...

что в конечном итоге приняло вид:
...
Для каждого НайденнаяСтрока Из МассивСтрокНомерСтрокиНН Цикл
       ЭтотОбъект[НайденнаяСтрока.ИмяТЧ][НайденнаяСтрока.НомерСтрокиТЧ-1].НомерСтрокиНН =  НовыйНомерСтрокиНН;
       НовыйНомерСтрокиНН = НовыйНомерСтрокиНН + 1;
КонецЦикла;
...


Ещё раз спасибо всем за помощь!

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 13:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!