Две ТЗ на форме

1. user1824493 23.02.25 23:10 Сейчас в теме
Всем привет!
На форме имеются две ТЗ одинаковой структуры данных: ТЗ1 и ТЗ2
И имеются две проблемы
1) Как уверенно отслеживать активна ТЗ1 или ТЗ2?
ПриАктивизацииЯчейки и им подобных не справляются с задачей

...Вроде нет события в 1С отслеживающего активность элементов???

2) По команде на кнопке переношу запись из ТЗ1 в ТЗ2 (добавление в ТЗ2 и удаление в ТЗ1)
Аналогично из ТЗ2 переношу запись в ТЗ1
Все ОК
Но теперь если попытаться перенести вновь запись из ТЗ1 в ТЗ2 возникает
Недопустимое значение параметра (параметр номер '1')
[ОшибкаИспользованияВстроенногоЯзыка]


СтруктураДляПоиска.Вставить("НомерЗаписи",НомерЗаписи);
Если пТаблицаЗначений = "ТЗ1" Тогда
МассивСтрок = ТЗ1.НайтиСтроки(СтруктураДляПоиска);
Элементы.ТЗ1.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
....

Если в начале Индекс = 0 и все ОК, то в последнем случае Индекс =1 (В ТЗ1 и ТЗ2 строк изначально по одной) и закономерно возникает ошибка ???

Вроде проблемы с кэшом?????


Если ли какие-нибудь решения обеих проблем ...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107191 23.02.25 23:13 Сейчас в теме
(1)
ПриАктивизацииЯчейки и им подобных не справляются с задачей
Обоснуй.
Недопустимое значение параметра (параметр номер '1')
Догадаться в какой строке?
Если в начале Индекс = 0 и все ОК, то в последнем случае Индекс =1
В твоем коде нет переменной Индекс.
Все еще настаиваешь на телепатии?
Sashares; +1 Ответить
8. SlavaKron 24.02.25 18:40 Сейчас в теме
(1)
Если ли какие-нибудь решения обеих проблем ...
Перетаскивание. Еще вариант - двойной клик по строке таблицы источника перекидывает ее в приемник. Две команды (уже предложили).
В любом случае, код не должен ориентироваться на то, какая таблица сейчас активна – это непрозрачное поведение для понимания пользователя.
11. user1824493 24.02.25 20:39 Сейчас в теме
(8)
Большое спасибо.
"Перетаскивание"
Отличный вариант! Просто у меня были виды на будущее отслеживание текущей ТЗ

."Еще вариант - двойной клик по строке таблицы источника перекидывает ее в приемник"
У меня РежимВыделенияСтрокиТаблицы.Строка Если не запрещать редактирования при двойном клике я попадаю на редактирование реквизита.
Да а что это за событие двойной клик (у меня в списке доступных событий он отсутствует)?
12. miniogn 48 24.02.25 21:25 Сейчас в теме
(11) Двойной клик это событие Выбор.
3. user1824493 24.02.25 00:07 Сейчас в теме
(2)

"Обоснуй"
Если у тебя есть форма с несколькими ТЗ поставь в каждом ПриАктивизацииЯчейки остановы.и посмотри через сколько перемещений между двумя ТЗ программа перестанет попадать на эти остановы


"Догадаться в какой строке?"
Тут виноват в начале ИдентификаторСтрокиТЗ1 = 0, а на втором круге становится 1, хотя по прежнему всего одна строка
ТЗ1.Удалить(ИдентификаторСтрокиТЗ1);

"В твоем коде нет переменной Индекс"
И тут виноват, есть ИдентификаторСтрокиТЗ1 и ИдентификаторСтрокиТЗ2
4. user2107191 24.02.25 00:16 Сейчас в теме
(3)
ПриАктивизацииЯчейки
Да ну? Чем строка не устроила?
ТЗ1.Удалить(ИдентификаторСтрокиТЗ1)
Срочно учить, чем Индекс отличается от ИдентификаторСтроки. Даже названия говорят о разном назначении, нет? Или реально на какой-то хрен 1С придумала хранить одну и ту же хрень сразу в двух разных сущностях? Специально, чтобы нас, пытливых умов, запутать, не иначе!
5. user1824493 24.02.25 01:29 Сейчас в теме
(4)

Строка или поле будет ИМХО хуже для МОИХ целей чем ячейка.

А вот за Индекс огромное спасибо! Помогло.

Осталось решить 1 пункт
6. Sashares 33 24.02.25 10:03 Сейчас в теме
(5) В при активизации строки запоминать имя активной ТЗ не подходит?
9. user1824493 24.02.25 20:07 Сейчас в теме
(6)
Спасибо, буду пробовать. О результатах сообщу
13. user1824493 24.02.25 21:27 Сейчас в теме
(6)
Ну активизация строки ТОЧНО не подходит.

Нашел БРЕДОВЫЙ вариант
НЕ для цитировани
Дополняем ТЗ реквизитом АктивнаяТЗ. Тип Булевый.
В параметры сеанса также добавляем параметр АктивнаяТЗ Тип Строка(1) 1 или 2
И индикаторы активности (можно декорацией) над ТЗ1 и ТЗ2
Одновременно включен лишь один индикатор

При изменении мышкой реквизита АктивнаяТЗ в соответствующей ТЗ, В СОБЫТИИ ПРИ ИЗМЕНЕНИИ меняется параметр сеанса и включается соответствующий индикатор Активности над соответствующей ТЗ.

Подобный код добавляется в обработчик кнопки Перенести, чтобы активная ТЗ следовала за перенесенной строкой.
Если пользователь видит что ему нужная ТЗ не активна он кликает мышкой в Булево поле и продолжает работу
Вот такой вот БРЕД !!! (Но работает....)
14. user2116971 24.02.25 21:44 Сейчас в теме
(13) Давай уж сразу в константу, чо.
7. miniogn 48 24.02.25 18:12 Сейчас в теме
Задача поставлена не правильно. Что будет, если поменяли что-то в таблице, затем мышкой активировали вторую таблицу - из какой в какую надо нести изменения?

Не нужно знать какая таблица активная, а какая нет, что бы выполнить синхронизацию.
Два варианта навскидку, либо
1. Две кнопки <= и =>
2. Либо при изменении таблицы, сразу выполнять перенос изменений во вторую таблицу.
10. user1824493 24.02.25 20:27 Сейчас в теме
(7)
"Что будет, если поменяли что-то в таблице, затем мышкой активировали вторую таблицу - из какой в какую надо нести изменения?"

Активной (текущей) ДОЛЖНА стать вторая таблица и из нее надо переносить данные в первую.

"1. Две кнопки <= и =>"

Выбор кнопки определяем выбор ТЗ, а в ней текущую строку. Хороший вариант.
Мне хотелось бы обойтись ЕДИНОЙ кнопкой <==>, но для этого надо знать ТЕКУЩУЮ ТЗ.
Может еще для чего пригодится...

"2. Либо при изменении таблицы, сразу выполнять перенос изменений во вторую таблицу"
В таблице перед пользователем реквизит отвечающий за то, быть записи в первой таблице или во второй не отображается в явном виде. Пусть решает оставлять запись так или перенести. Вышеупомянутый реквизит естественно обновится. .
15. user1824493 25.02.25 00:11 Сейчас в теме
Большое спасибо всем откликнувшимся!!!
Буду думать над вариантом решения своих задач.
Предварительно
1) Эх придется отказываться от идеи Текущей ТЗ
2) Две кнопки
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот