Имя: Пароль:
1C
1C 7.7
v7: Документ УдалитьСтроку()
0 sunnmas
 
08.05.14
12:40
В документе 2 строки:

    ПолучитьСтрокуПоНомеру(1);
    УдалитьСтроку();
    ПолучитьСтрокуПоНомеру(1);
    УдалитьСтроку();

Ошибка

УдалитьСтроку();
{Документ.ДоговорЦТО.Форма.Модуль(152)}: Нет возможности удалить строку!

Потому что После удаления первой строки вторая не меняет свой номер. Есть какая нибудь процедурка, которая нормализует номера строк.

Т.е. после удаления первой строки я не хочу чтобы документ остался с одной строкой, к которой нужно обращаться по индексу 2. Это не логично.
1 Попытка1С
 
08.05.14
12:43
Удалять с конца циклом.
2 Попытка1С
 
08.05.14
12:46
А какая задача вообще?
3 КонецЦикла
 
08.05.14
12:47
Есть УдалитьСтроки()
4 sunnmas
 
08.05.14
12:56
Табличная часть документа состоит из одного реквизита: ККМ.
Отображать нужно КК,Номер, ККМ.Модель, ККМ. и так далее

Добавляю ТаблицуЗначений.

ПриОткрытии закачиваю в нее все из табличной части
По мере редактирования таблицы редактирую табличную часть
Собственно редактирование таблицы сводится к двум задачам: Добавить строку, Удалить строку.
Добавляем в конец - все просто
Из задачи удаления строки вытекает вопрос топика
5 ikea
 
08.05.14
12:58
Как вариант можно после удаления 1 строки, сделать выборку строк и программно переприсвоить нумерацию строк. А затем опять удалять свою 1 строку)))
6 Попытка1С
 
08.05.14
13:01
А почему не вставить текстовые колонки в ТЧ документа, зачем эти пляски?
7 Масянька
 
08.05.14
13:03
(4)
    ТекущаяСтрока = СлужебнаяТаблица.ТекущаяСтрока();
    
    СлужебнаяТаблица.УдалитьСтроку();
    
    СлужебнаяТаблица.ТекущаяСтрока(ТекущаяСтрока - 1);


СлужебнаяТаблица - у тебя это таблица док-та.
8 an-korot
 
08.05.14
13:04
ты хотя бы помошник посмотри...
далитьСтроку(<?>);
Синтаксис:
УдалитьСтроку(<НомерСтроки>)

УдалитьСтроку(1);
УдалитьСтроку(1);

и все.
9 Масянька
 
08.05.14
13:09
(8) Сам смотри внимательно: твое - это для таблицы значений.
10 an-korot
 
08.05.14
14:12
(9) а ничего что он использует команду ПолучитьСтрокуПоНомеру  которая применяется для таблицЗначений?
11 Масянька
 
08.05.14
14:25
(10) Чего-чего?!
12 monsterZE
 
08.05.14
14:28
(0) делай как в (6)
добавь текст-колонок в основную ТЧ, формула - имя реквизита, который надо отобразить
основная ККМ; текст - ККМ.Модель и т.д..
13 monsterZE
 
08.05.14
14:29
к (0) если гнуть свой "логичный" изврат =) добавь после удаления строки ВыгрузитьТЧ, ЗагрузитьТЧ
оно перенумерует строки
14 Duke1C
 
08.05.14
14:30
(4) А зачем после каждого чиха над ТаблицейЗначений теребить таб. часть документа (раз уж пошел этим путем). Сохраняй изменения ПриЗаписи. А вообще (6).
15 lamme
 
08.05.14
14:32
старый прикол, однако.
надо делать выборку -не с первой строки
а с последней
тогда при удалении 10-ой строки, выборка сама встанет на 9
и будет нормально
16 Масянька
 
08.05.14
14:36
А зачем пихать в ТаблицуЗначений?
17 sunnmas
 
08.05.14
15:12
Попытка1С

"А почему не вставить текстовые колонки в ТЧ документа, зачем эти пляски?"

Не хочу раздувать базу. Это лишняя инфа будет лежать в базе
18 sunnmas
 
08.05.14
15:15
an-korot
"а ничего что он использует команду ПолучитьСтрокуПоНомеру  которая применяется для таблицЗначений?"

ПолучитьСтрокуПоНомеру - есть для документа, есть для таблицы значений
19 sunnmas
 
08.05.14
15:18
"добавь текст-колонок в основную ТЧ, формула - имя реквизита, который надо отобразить
основная ККМ; текст - ККМ.Модель и т.д.."

Подозреваю что пишешь, об "А почему не вставить текстовые колонки в ТЧ документа, зачем эти пляски?"

По ходу я не знаю как это сделать. Это не насоздавать кучу текстовых реквизитов для табличной части? Если да, то я мне не  позволяет религия так делать)
20 Builder
 
08.05.14
15:19
(17) Гениально!
Текстовый реквизит на форме никаким образом не увеличивает базу.
21 sunnmas
 
08.05.14
15:19
ВыгрузитьТЧ, ЗагрузитьТЧ
если ничего не поможет более элегантного
22 lamme
 
08.05.14
15:20
(19)
что то не уловил куда клонишь
но я делал примерно так

ТЗ_ТЧ = создатьобъект("ТаблицаЗначений")
выгрузитьтабличнуючасть(ТЗ_ТЧ)

...
обратный перебор уже ТЗ_ТЧ
...

загрузитьтабличнуючасть(ТЗ_ТЧ)
23 sunnmas
 
08.05.14
15:22
"Гениально!
Текстовый реквизит на форме никаким образом не увеличивает базу."

Не понимаю. То- есть если я данные из объекта ККМ буду не динамически подгружать из справочника, а складывать в текстовые реквизиты табличной части, то это ли не дубляж инфы? Или я темный?
24 Builder
 
08.05.14
15:23
(19) Открываешь форму документа, хватаешь реквизит формы с буковкой "Т", тащишь на табличную часть.
Задаешь ему текст, в формуле пишешь ККМ.Модель.
И будет тебе счастье.
25 Масянька
 
08.05.14
15:24
(23) Слушай, ты опиши более детально задачу: что нужно получить, конфа, документ и т. д. А то - таким макаром посту к 100-ому только до уяснения задачи дойдет :)
26 sunnmas
 
08.05.14
15:39
Документ А. В нем реквизит Б (тип справочник В)

Справочник В:
Реквизиты:
Г,Д,Е,Ж,З,...

Хочу на форме А видеть таблицу из Б где сразу видно каждое Г,Д,Е,Ж,З,... не храня их в виде строк в А (ибо религия).
Как?
Я делаю:
Создаю ТаблицуЗначений При открытии документа все в нее вкачиваю из одного реквизита Б
(Фигурально:
Строка1.Колонка1 = Б.Г;
Строка1.Колонка2 = Б.Д
..
СледующаяСтрокаТЧ;
Строка2.Колонка1 = Б.Г;
Строка2.Колонка2 = Б.Д
..
..
)

Соответственно нужны правки ТЧ. Добавить строку, которую я приписываю в конец ТЧ и конец ТаблицыЗначений и получаю синхронизацию.
И удаление. Вот на удалении стопор.
Произвольное количество строк ТЧ
Хочу удалить любую
Засинхронизировать ТЧ и ТЗ потипу так было бы логично для любого из вас:

ПолучитьСтрокуПоНомеру(ТЗ.ТекущаяСтрока());
УдалитьСтроку();
ТЗ.УдалитьСтроку();

Так вот в ТЗ.УдалитьСтроку(); удаляет строку и пересчитывает номера, а УдалитьСтроку(); не пересчитывает их. Потом если удалять следующие строки, то можно нарваться на неприятность, т.к. ТЧ  и ТЗ не синхронны. Так вот я матюкаюсь на разрабов 1С логика которых не понятна в данной ситуации. И прошу помощи как пересчитать номера строк в ТЧ, а не стоит вопрос о том использовать ли Таблицу значений. Ответ пока получен в виде

выгрузитьтабличнуючасть(ТЗ_ТЧ)
загрузитьтабличнуючасть(ТЗ_ТЧ)

Если других вариантов нет, то пойду пробовать работает ли этот
27 sunnmas
 
08.05.14
15:44
Builder

"Открываешь форму документа, хватаешь реквизит формы с буковкой "Т", тащишь на табличную часть.
Задаешь ему текст, в формуле пишешь ККМ.Модель.
И будет тебе счастье."

Так ни разу не пробовал попробую. Но тема замораживается до понедельника. Спасибо
28 Масянька
 
08.05.14
15:46
(26)Хочу на форме А видеть таблицу из Б где сразу видно каждое Г,Д,Е,Ж,З,.. - адназначна, как описал (24). А все остальное - довольно простая работа с ТЧ документа. И не нужно никаких ТаблицЗначений :)
29 Попытка1С
 
08.05.14
16:02
(17) Мощно..
30 ERWINS
 
08.05.14
16:04
лучше запросом выбрать, обработать и пихнуть назад
31 Serginio1
 
08.05.14
16:17
(4) Ты интерактивно удаляешь?
Процедура УдалитьКомплект(Тз,НомСтр)  
    
       НомСтр=Тз.ТекущаяСтрока();    
       Тз.УдалитьСтроку(НомСтр);
    
       ПриИзмененииФормы();

    Если НомСтр>Тз.КоличествоСтрок() Тогда
            Тз.ТекущаяСтрока(Тз.КоличествоСтрок())
        иначе
        Тз.ТекущаяСтрока(НомСтр)
    КонецЕсли;
    
    Модификация=1;
КонецПроцедуры
32 monsterZE
 
08.05.14
17:24
(17) ТС, похоже ты тупиш. =)
текстовый реквизит НА МНОГОСТРОЧНОЙ ЧАСТИ - НЕ ЕСТЬ реквизит табличной части документа! Т.е. в свойствах документа, где реквизиты шапки и реквизиты ТЧ - ничего не добавляется.
А добавляется на многострочной форме. Диалог - многострочная часть. Соответ - в эти поля значения подставляются из свойств объекта. И нигде их дублировать не нужно.
Есть у тебя объект ККМ со свойством ККМ.Модель, вот и достаешь это ККМ.Модель
33 monsterZE
 
08.05.14
17:38
фак. случайно разморозил тему. =)
все в (24)
34 sunnmas
 
14.05.14
12:43
Все получилось. Я такого не знал. Да это то что нужно ребята!
НО...
Как написать формулу для отображения периодических реквизитов?

ККМ.Модель - строка - прокатывает
ККМ.ЭКЛЗ - периодический - показывает пустое поле в таблице.
35 1dvd
 
14.05.14
12:46
ККМ.ИспользоватьДату(...)
или
ККМ.ЭКЛЗ.Получить(...)
!!!но не вместе!!!
36 Масянька
 
14.05.14
13:36
(34) Принято - благодарить за помощь.
37 sunnmas
 
14.05.14
13:37
Спасибо всем!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший