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

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 44 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 44 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) Две кнопки
Оставьте свое сообщение

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