Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при наборе расходной накладной
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Eclipso
Здравствуйте. Имеется не большая проблема.

Был дописан модуль, суть работы которого при наборе расходной накладной первая позиция, которую мы выбили, автоматически копируется в следующую позицию, далее нажимая F4 мы можем выбрать следующие по списку ТМЦ. Сделано было для того, что бы при наборе накладной бросало именно в тот каталог, в котором Вы был до этого, а не главный список как сделано а программе изначально. (подбором не пользуюсь, так как это занимает долго времени, особенно тяжело когда в накладной 200-300 позиций.)

Ошибка, которая появляется "Индекс находится за границей массива".
Ошибка ссылается на этот участок кода:
СтрокаТабличнойЧасти.Номенклатура=ТЗ[(СтрокаТабличнойЧасти.НомерСТроки-2)].Номенклатура;


Ошибка появляется лишь в двух случаях, если накладную ЗАПИСАТЬ или провести. После этого, если войти в накладную и попытаться добавить несколько позиций, первая позиция добавляется без проблем, при добавлении второй вылетает ошибка.

Версия: 1с Предприятие 8,2 (8,2,16,368)

Ниже приведён код модуля:

Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока)

    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    
    Если СтрокаТабличнойЧасти.НомерСТроки>1 Тогда
        Если СтрокаТабличнойЧасти.Номенклатура.Пустая() Тогда
            Если Ссылка.Пустая() Тогда
                Если Не ТекущаяНоменклатура.Пустая() Тогда
                    СтрокаТабличнойЧасти.Номенклатура=ТекущаяНоменклатура;
                КонецЕсли;
            Иначе
            ТекЗапрос = Новый Запрос;
            ТекЗапрос.Текст="
            |Выбрать
            |Товары.Номенклатура
            |Из
            |Документ.РеализацияТоваровУслуг.Товары как Товары
            |ГДЕ
            |Товары.Ссылка = &Ссылка";
            ТекЗапрос.Параметры.Вставить("Ссылка", Ссылка);
            ТЗ = ТекЗапрос.Выполнить().Выгрузить();
            СтрокаТабличнойЧасти.Номенклатура=ТЗ[(СтрокаТабличнойЧасти.НомерСТроки-2)].Номенклатура;
        КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    УстановитьСвойстваПоляВводаЦены(СтрокаТабличнойЧасти.Номенклатура);
    
    // Обнулим флаг при изменении табличной части
    мПерерасчетПроизведен = ЛОЖЬ;

КонецПроцедуры // ТоварыПриНачалеРедактирования()


P.S. прошу прощения, если где то допустил ошибку или неточность, на форуме первый раз и пытался создавть тему по всем правилам форума. с Уважением, Виталий.
Vofka
А почему СтрокаТабличнойЧасти.НомерСТроки-2, а не -1?
Ardi
Цитата(Eclipso @ 04.02.13, 10:15) необходимо зарегистрироваться для просмотра ссылки
подбором не пользуюсь, так как это занимает долго времени, особенно тяжело когда в накладной 200-300 позиций.

Вы не пробовали в подборе установить ДВЕ галки "Цена" и "Количество"?
alex040269
Цитата(Eclipso @ 04.02.13, 9:15) необходимо зарегистрироваться для просмотра ссылки
Был дописан модуль, суть работы которого при наборе расходной накладной первая позиция, которую мы выбили, автоматически копируется в следующую

а не проще это делать с помощью F9?
Eclipso
Цитата(alex040269 @ 04.02.13, 19:19) необходимо зарегистрироваться для просмотра ссылки
а не проще это делать с помощью F9?

надо было сперва на форуме спросить, как лучше сделать, прежде чем модуль дописывать, наверное это было бы правильно. Спасибо за ответ, тему можно считать закрытой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.