Всем привет!
На форме имеются две ТЗ одинаковой структуры данных: ТЗ1 и ТЗ2
И имеются две проблемы
1) Как уверенно отслеживать активна ТЗ1 или ТЗ2?
ПриАктивизацииЯчейки и им подобных не справляются с задачей
...Вроде нет события в 1С отслеживающего активность элементов???
2) По команде на кнопке переношу запись из ТЗ1 в ТЗ2 (добавление в ТЗ2 и удаление в ТЗ1)
Аналогично из ТЗ2 переношу запись в ТЗ1
Все ОК
Но теперь если попытаться перенести вновь запись из ТЗ1 в ТЗ2 возникает
Недопустимое значение параметра (параметр номер '1')
[ОшибкаИспользованияВстроенногоЯзыка]
СтруктураДляПоиска.Вставить("НомерЗаписи",НомерЗаписи);
Если пТаблицаЗначений = "ТЗ1" Тогда
МассивСтрок = ТЗ1.НайтиСтроки(СтруктураДляПоиска);
Элементы.ТЗ1.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
....
Если в начале Индекс = 0 и все ОК, то в последнем случае Индекс =1 (В ТЗ1 и ТЗ2 строк изначально по одной) и закономерно возникает ошибка ???
Вроде проблемы с кэшом?????
Если ли какие-нибудь решения обеих проблем ...
На форме имеются две ТЗ одинаковой структуры данных: ТЗ1 и ТЗ2
И имеются две проблемы
1) Как уверенно отслеживать активна ТЗ1 или ТЗ2?
ПриАктивизацииЯчейки и им подобных не справляются с задачей
...Вроде нет события в 1С отслеживающего активность элементов???
2) По команде на кнопке переношу запись из ТЗ1 в ТЗ2 (добавление в ТЗ2 и удаление в ТЗ1)
Аналогично из ТЗ2 переношу запись в ТЗ1
Все ОК
Но теперь если попытаться перенести вновь запись из ТЗ1 в ТЗ2 возникает
Недопустимое значение параметра (параметр номер '1')
[ОшибкаИспользованияВстроенногоЯзыка]
СтруктураДляПоиска.Вставить("НомерЗаписи",НомерЗаписи);
Если пТаблицаЗначений = "ТЗ1" Тогда
МассивСтрок = ТЗ1.НайтиСтроки(СтруктураДляПоиска);
Элементы.ТЗ1.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
....
Если в начале Индекс = 0 и все ОК, то в последнем случае Индекс =1 (В ТЗ1 и ТЗ2 строк изначально по одной) и закономерно возникает ошибка ???
Вроде проблемы с кэшом?????
Если ли какие-нибудь решения обеих проблем ...
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Все еще настаиваешь на телепатии?
ПриАктивизацииЯчейки и им подобных не справляются с задачей
Обоснуй.
Недопустимое значение параметра (параметр номер '1')
Догадаться в какой строке?
Если в начале Индекс = 0 и все ОК, то в последнем случае Индекс =1
В твоем коде нет переменной Индекс.
Все еще настаиваешь на телепатии?
(1)
В любом случае, код не должен ориентироваться на то, какая таблица сейчас активна – это непрозрачное поведение для понимания пользователя.
Если ли какие-нибудь решения обеих проблем ...
Перетаскивание. Еще вариант - двойной клик по строке таблицы источника перекидывает ее в приемник. Две команды (уже предложили).
В любом случае, код не должен ориентироваться на то, какая таблица сейчас активна – это непрозрачное поведение для понимания пользователя.
(8)
Большое спасибо.
"Перетаскивание"
Отличный вариант! Просто у меня были виды на будущее отслеживание текущей ТЗ
."Еще вариант - двойной клик по строке таблицы источника перекидывает ее в приемник"
У меня РежимВыделенияСтрокиТаблицы.Строка Если не запрещать редактирования при двойном клике я попадаю на редактирование реквизита.
Да а что это за событие двойной клик (у меня в списке доступных событий он отсутствует)?
Большое спасибо.
"Перетаскивание"
Отличный вариант! Просто у меня были виды на будущее отслеживание текущей ТЗ
."Еще вариант - двойной клик по строке таблицы источника перекидывает ее в приемник"
У меня РежимВыделенияСтрокиТаблицы.Строка Если не запрещать редактирования при двойном клике я попадаю на редактирование реквизита.
Да а что это за событие двойной клик (у меня в списке доступных событий он отсутствует)?
(2)
"Обоснуй"
Если у тебя есть форма с несколькими ТЗ поставь в каждом ПриАктивизацииЯчейки остановы.и посмотри через сколько перемещений между двумя ТЗ программа перестанет попадать на эти остановы
"Догадаться в какой строке?"
Тут виноват в начале ИдентификаторСтрокиТЗ1 = 0, а на втором круге становится 1, хотя по прежнему всего одна строка
ТЗ1.Удалить(ИдентификаторСтрокиТЗ1);
"В твоем коде нет переменной Индекс"
И тут виноват, есть ИдентификаторСтрокиТЗ1 и ИдентификаторСтрокиТЗ2
"Обоснуй"
Если у тебя есть форма с несколькими ТЗ поставь в каждом ПриАктивизацииЯчейки остановы.и посмотри через сколько перемещений между двумя ТЗ программа перестанет попадать на эти остановы
"Догадаться в какой строке?"
Тут виноват в начале ИдентификаторСтрокиТЗ1 = 0, а на втором круге становится 1, хотя по прежнему всего одна строка
ТЗ1.Удалить(ИдентификаторСтрокиТЗ1);
"В твоем коде нет переменной Индекс"
И тут виноват, есть ИдентификаторСтрокиТЗ1 и ИдентификаторСтрокиТЗ2
(3)
ПриАктивизацииЯчейки
Да ну? Чем строка не устроила?
ТЗ1.Удалить(ИдентификаторСтрокиТЗ1)
Срочно учить, чем Индекс отличается от ИдентификаторСтроки. Даже названия говорят о разном назначении, нет? Или реально на какой-то хрен 1С придумала хранить одну и ту же хрень сразу в двух разных сущностях? Специально, чтобы нас, пытливых умов, запутать, не иначе!
(6)
Ну активизация строки ТОЧНО не подходит.
Нашел БРЕДОВЫЙ вариант
НЕ для цитировани
Дополняем ТЗ реквизитом АктивнаяТЗ. Тип Булевый.
В параметры сеанса также добавляем параметр АктивнаяТЗ Тип Строка(1) 1 или 2
И индикаторы активности (можно декорацией) над ТЗ1 и ТЗ2
Одновременно включен лишь один индикатор
При изменении мышкой реквизита АктивнаяТЗ в соответствующей ТЗ, В СОБЫТИИ ПРИ ИЗМЕНЕНИИ меняется параметр сеанса и включается соответствующий индикатор Активности над соответствующей ТЗ.
Подобный код добавляется в обработчик кнопки Перенести, чтобы активная ТЗ следовала за перенесенной строкой.
Если пользователь видит что ему нужная ТЗ не активна он кликает мышкой в Булево поле и продолжает работу
Вот такой вот БРЕД !!! (Но работает....)
Ну активизация строки ТОЧНО не подходит.
Нашел БРЕДОВЫЙ вариант
НЕ для цитировани
Дополняем ТЗ реквизитом АктивнаяТЗ. Тип Булевый.
В параметры сеанса также добавляем параметр АктивнаяТЗ Тип Строка(1) 1 или 2
И индикаторы активности (можно декорацией) над ТЗ1 и ТЗ2
Одновременно включен лишь один индикатор
При изменении мышкой реквизита АктивнаяТЗ в соответствующей ТЗ, В СОБЫТИИ ПРИ ИЗМЕНЕНИИ меняется параметр сеанса и включается соответствующий индикатор Активности над соответствующей ТЗ.
Подобный код добавляется в обработчик кнопки Перенести, чтобы активная ТЗ следовала за перенесенной строкой.
Если пользователь видит что ему нужная ТЗ не активна он кликает мышкой в Булево поле и продолжает работу
Вот такой вот БРЕД !!! (Но работает....)
Задача поставлена не правильно. Что будет, если поменяли что-то в таблице, затем мышкой активировали вторую таблицу - из какой в какую надо нести изменения?
Не нужно знать какая таблица активная, а какая нет, что бы выполнить синхронизацию.
Два варианта навскидку, либо
1. Две кнопки <= и =>
2. Либо при изменении таблицы, сразу выполнять перенос изменений во вторую таблицу.
Не нужно знать какая таблица активная, а какая нет, что бы выполнить синхронизацию.
Два варианта навскидку, либо
1. Две кнопки <= и =>
2. Либо при изменении таблицы, сразу выполнять перенос изменений во вторую таблицу.
(7)
"Что будет, если поменяли что-то в таблице, затем мышкой активировали вторую таблицу - из какой в какую надо нести изменения?"
Активной (текущей) ДОЛЖНА стать вторая таблица и из нее надо переносить данные в первую.
"1. Две кнопки <= и =>"
Выбор кнопки определяем выбор ТЗ, а в ней текущую строку. Хороший вариант.
Мне хотелось бы обойтись ЕДИНОЙ кнопкой <==>, но для этого надо знать ТЕКУЩУЮ ТЗ.
Может еще для чего пригодится...
"2. Либо при изменении таблицы, сразу выполнять перенос изменений во вторую таблицу"
В таблице перед пользователем реквизит отвечающий за то, быть записи в первой таблице или во второй не отображается в явном виде. Пусть решает оставлять запись так или перенести. Вышеупомянутый реквизит естественно обновится. .
"Что будет, если поменяли что-то в таблице, затем мышкой активировали вторую таблицу - из какой в какую надо нести изменения?"
Активной (текущей) ДОЛЖНА стать вторая таблица и из нее надо переносить данные в первую.
"1. Две кнопки <= и =>"
Выбор кнопки определяем выбор ТЗ, а в ней текущую строку. Хороший вариант.
Мне хотелось бы обойтись ЕДИНОЙ кнопкой <==>, но для этого надо знать ТЕКУЩУЮ ТЗ.
Может еще для чего пригодится...
"2. Либо при изменении таблицы, сразу выполнять перенос изменений во вторую таблицу"
В таблице перед пользователем реквизит отвечающий за то, быть записи в первой таблице или во второй не отображается в явном виде. Пусть решает оставлять запись так или перенести. Вышеупомянутый реквизит естественно обновится. .
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот