Автор: ZUBR 22.09.20, 17:12
ЗДРАВСТВУЙТЕ!
Есть кусок программы примерно такой Пока Расх.ПолучитьДокумент()=1 Цикл
...........................................................................................................................................................................
ТЗ.НоваяСтрока();
Если ((НачДата1<=Расх.ДатаВыд)и(Расх.ДатаВыд<= КонДата1) Тогда
ТЗ.ДатаДок = Расх.ДатаДок;
.................................................................................................................................................................................
.....................................................................................................................................................................................
ИначеЕсли (Расх.СтатусЗаказа=Перечисление.Статусы.АКС)и(ПустаяСтрока(Расх.Модель)=0) Тогда
ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС");
....................................................................
А=ТЗ.ТекущаяСтрока(); // ЗАПОМИНАЕМ СТРОКУ И ПРИСВАИВАЕМ ЕЕ ПЕРЕМЕННОЙ А
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа) Тогда
ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС");
............................................................................
КонецЕсли;
КонецЦикла;
ТЗ.ВыбратьСтроки();
ТЗ.ПолучитьСтроку(А); //ПЫТАЕМСЯ ПОЛУЧИТЬ СТРОКУ А
Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа)и(ТЗ.СТАТУС=Перечисление.Статусы.АКС) Тогда
ТЗ.К=К;
КонецЕсли;
.......................................................................................................................
Суть в том, что в определенном месте цикла мне надо запомнить строку ТЗ, чтобы потом ее вызвать без поиска и цикла и произвести в ней некоторые изменения.
Синтакс выдает ошибку что при выполнении ТЗ.ПолучитьСтроку(А); слишком много параметров.
Как мне это сделать? Где ошибка? Спасибо!)
Автор: denis84 22.09.20, 17:28
ZUBR @ Сегодня, 18:12
,
Добрый день. ТЗ.ПолучитьСтроку() используется без параметров и показывает( получает) строки ТЗ.
Автор: andrew76 22.09.20, 18:40
Цитата(ZUBR @ 22.09.20, 20:12)
Суть в том, что в определенном месте цикла мне надо запомнить строку ТЗ, чтобы потом ее вызвать без поиска и цикла и произвести в ней некоторые изменения.
ПолучитьСтрокуПоНомеру(<?>);
Синтаксис:
ПолучитьСтрокуПоНомеру(<НомерСтроки>)
Назначение:
Получить строку таблицы значений по номеру. Указанная строка становится текущей.
Параметры:
<НомерСтроки> - номер строки, на которую следует переместиться.
ТЗ.ПолучитьСтрокуПоНомеру(<?>);
Вдогонку :
ТЗ.ВыбратьСтроки(); //эта строчка лишняя скорее всего
ТЗ.ПолучитьСтрокуПоНомеру(А); //ПЫТАЕМСЯ ПОЛУЧИТЬ СТРОКУ А
Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа)и(ТЗ.СТАТУС=Перечисление.Статусы.АКС) Тогда
ТЗ.К=К;
КонецЕсли;
Автор: ZUBR 22.09.20, 21:34
andrew76 @ Сегодня, 19:40
,
Не работает. Выскакивает ошибка
ТЗ.ПолучитьСтрокуПоНомеру(А);
{Отчет.Оплата.Форма.Модуль(135)}: Номер за пределами значения!
Как получить номер строки?
У меня так:
А=ТЗ.ТекущаяСтрока();
И в этом случае выскакивает вышеуказанная ошибка...
Автор: andrew76 23.09.20, 4:33
Посмотрите в отладчике значение переменной А.Может лучше эту переменную
вычислять принудительно : А=А+1 ?
Автор: Sharzem 23.09.20, 8:56
ZUBR @ Вчера, 17:12
,
Намагання в циклах знаходити потрібне значення - несінитниця.
Ваш код:
А=ТЗ.ТекущаяСтрока();// ЗАПОМИНАЕМ СТРОКУ И ПРИСВАИВАЕМ ЕЕ ПЕРЕМЕННОЙ А
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа) Тогда
ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС");
КонецЕсли;
КонецЦикла;
Можете замінити на:
лпНомерЗаказа = Расх.НомерЗаказа;
лпНомерИскомойСтроки = "";
Если ТЗ.НайтиЗначение(лпНомерЗаказа,лпНомерИскомойСтроки,"ЗАКАЗ") = 1 Тогда
//Якщо потрібно вставити в поточну (нову) строку, використовуєте:
ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС");
//Але якщо потрібно вставити в лпНомерИскомойСтроки, потрібно:
ТЗ.УстановитьЗначение(лпНомерИскомойСтроки,"СуммаАкс",Расх.Итог("СуммаСНДС"));
КонецЕсли;
При використанні метода НоваяСтрока(), ТекущаяСтрока() = "" і визначати її потрібно за допомогою ТЗ.НомерСтроки або ТЗ.КоличествоСтрок().
Позиціонування через ПолучитьСтрокуПоНомеру() може спрацьовувати не вірно, оскільки в процесі обробки даних може відбуватися "зміщення"
(як приклад, видалення стрічок) і ТекущаяСтрока() вже <> КоличествоСтрок().
Користуйтеся методами НайтиЗначение(), ПолучитьЗначение() та УстановитьЗначение(). Уявляйте собі що у Вас не 200 стрічок та 200 документів,
а по 200 000 тих і тих, тоді модель ВыбратьСтроки() и Пока ПолучитьСтроку() = 1 Цикл використовуватимете лише тільки один раз.
Автор: ZUBR 01.10.20, 21:57
Sharzem @ 23.09.20, 9:56
,
в рядку
лпНомерЗаказа = Расх.НомерЗаказа;
лп ставити обов'язково? Тобто, обовязково писати лпНомерЗаказа, чи можна просто НомерЗаказа?