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

Хранилище

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

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



> Как создать ссылку на определенную строку ТаблицыЗначений? 1с 7.7 конф 7.7.003          
ZUBR Подменю пользователя
сообщение 22.09.20, 17:12
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

ЗДРАВСТВУЙТЕ!

Есть кусок программы примерно такой
            Пока Расх.ПолучитьДокумент()=1 Цикл
    ...........................................................................................................................................................................                                                    
            ТЗ.НоваяСтрока();
            Если ((НачДата1<=Расх.ДатаВыд)и(Расх.ДатаВыд<= КонДата1) Тогда
                ТЗ.ДатаДок = Расх.ДатаДок;
                .................................................................................................................................................................................
                                .....................................................................................................................................................................................
                ИначеЕсли   (Расх.СтатусЗаказа=Перечисление.Статусы.АКС)и(ПустаяСтрока(Расх.Модель)=0) Тогда  
                    ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС");                
                    ....................................................................

                                         А=ТЗ.ТекущаяСтрока();                    // ЗАПОМИНАЕМ СТРОКУ И ПРИСВАИВАЕМ ЕЕ ПЕРЕМЕННОЙ А

                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа) Тогда
                                  ТЗ.СуммаАкс =  Расх.Итог("СуммаСНДС");
                                       ............................................................................
                        КонецЕсли;  
                    КонецЦикла;

                    ТЗ.ВыбратьСтроки();

                    ТЗ.ПолучитьСтроку(А);                   //ПЫТАЕМСЯ ПОЛУЧИТЬ СТРОКУ А

                        Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа)и(ТЗ.СТАТУС=Перечисление.Статусы.АКС)  Тогда  
                            ТЗ.К=К;
                        КонецЕсли;
                                            .......................................................................................................................


Суть в том, что в определенном месте цикла мне надо запомнить строку ТЗ, чтобы потом ее вызвать без поиска и цикла и произвести в ней некоторые изменения.
Синтакс выдает ошибку что при выполнении ТЗ.ПолучитьСтроку(А); слишком много параметров.
Как мне это сделать? Где ошибка? Спасибо!)

Сообщение отредактировал Vofka - 23.09.20, 8:35

denis84 Подменю пользователя
сообщение 22.09.20, 17:28
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

ZUBR @ Сегодня, 18:12 * ,
Добрый день. ТЗ.ПолучитьСтроку() используется без параметров и показывает( получает) строки ТЗ.

andrew76 Подменю пользователя
сообщение 22.09.20, 18:40
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Цитата(ZUBR @ 22.09.20, 20:12) *
Суть в том, что в определенном месте цикла мне надо запомнить строку ТЗ, чтобы потом ее вызвать без поиска и цикла и произвести в ней некоторые изменения.


ПолучитьСтрокуПоНомеру(<?>);
Синтаксис:
ПолучитьСтрокуПоНомеру(<НомерСтроки>)
Назначение:
Получить строку таблицы значений по номеру. Указанная строка становится текущей.
Параметры:
<НомерСтроки> - номер строки, на которую следует переместиться.

ТЗ.ПолучитьСтрокуПоНомеру(<?>);



Вдогонку :

ТЗ.ВыбратьСтроки();  //эта строчка лишняя скорее всего

ТЗ.ПолучитьСтрокуПоНомеру(А);                   //ПЫТАЕМСЯ ПОЛУЧИТЬ СТРОКУ А

Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа)и(ТЗ.СТАТУС=Перечисление.Статусы.АКС)  Тогда  
       ТЗ.К=К;
КонецЕсли;


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

ZUBR Подменю пользователя
сообщение 22.09.20, 21:34
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

andrew76 @ Сегодня, 19:40 * ,
Не работает. Выскакивает ошибка
ТЗ.ПолучитьСтрокуПоНомеру(А);
{Отчет.Оплата.Форма.Модуль(135)}: Номер за пределами значения!
Как получить номер строки?
У меня так:
А=ТЗ.ТекущаяСтрока();

И в этом случае выскакивает вышеуказанная ошибка...

andrew76 Подменю пользователя
сообщение 23.09.20, 4:33
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Посмотрите в отладчике значение переменной А.Может лучше эту переменную
вычислять принудительно : А=А+1 ?

Sharzem Подменю пользователя
сообщение 23.09.20, 8:56
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

ZUBR @ Вчера, 17:12 * ,
Намагання в циклах знаходити потрібне значення - несінитниця.
Ваш код:
А=ТЗ.ТекущаяСтрока();// ЗАПОМИНАЕМ СТРОКУ И ПРИСВАИВАЕМ ЕЕ ПЕРЕМЕННОЙ А
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Если (ТЗ.ЗАКАЗ=Расх.НомерЗаказа) Тогда
        ТЗ.СуммаАкс =  Расх.Итог("СуммаСНДС");
    КонецЕсли;
КонецЦикла;

Можете замінити на:
    лпНомерЗаказа = Расх.НомерЗаказа;
    лпНомерИскомойСтроки = "";
    Если ТЗ.НайтиЗначение(лпНомерЗаказа,лпНомерИскомойСтроки,"ЗАКАЗ") = 1 Тогда
        //Якщо потрібно вставити в поточну (нову) строку, використовуєте:
        ТЗ.СуммаАкс = Расх.Итог("СуммаСНДС");
        //Але якщо потрібно вставити в лпНомерИскомойСтроки, потрібно:
        ТЗ.УстановитьЗначение(лпНомерИскомойСтроки,"СуммаАкс",Расх.Итог("СуммаСНДС"));
    КонецЕсли;

При використанні метода НоваяСтрока(), ТекущаяСтрока() = "" і визначати її потрібно за допомогою ТЗ.НомерСтроки або ТЗ.КоличествоСтрок().
Позиціонування через ПолучитьСтрокуПоНомеру() може спрацьовувати не вірно, оскільки в процесі обробки даних може відбуватися "зміщення"
(як приклад, видалення стрічок) і ТекущаяСтрока() вже <> КоличествоСтрок().
Користуйтеся методами НайтиЗначение(), ПолучитьЗначение() та УстановитьЗначение(). Уявляйте собі що у Вас не 200 стрічок та 200 документів,
а по 200 000 тих і тих, тоді модель ВыбратьСтроки() и Пока ПолучитьСтроку() = 1 Цикл використовуватимете лише тільки один раз.

Сообщение отредактировал Sharzem - 23.09.20, 9:08


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

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

ZUBR Подменю пользователя
сообщение 01.10.20, 21:57
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Sharzem @ 23.09.20, 9:56 * ,
в рядку
лпНомерЗаказа = Расх.НомерЗаказа;

лп ставити обов'язково? Тобто, обовязково писати лпНомерЗаказа, чи можна просто НомерЗаказа?

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


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

 

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