Можно ли в УФ такси в форме списка получить доступ к строке на 1 выше текущей?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) хотя ели вы пишете в заголовке про форму списка, то смею предположить, что речь идет о динамическом списке с привязкой к "ТаблицаФормы" соответственно. Там к сожалению такой возможности нет.
А какова суть задачи вообще в целом? Может вы не тот подход выбрали, озвучьте задачу, а я попробую предложить Вам решение.
А какова суть задачи вообще в целом? Может вы не тот подход выбрали, озвучьте задачу, а я попробую предложить Вам решение.
(11)
В чем проблема обосновать свое решение/предложение?
Мы обсуждаем сферическую задачу в вакууме или реальную задачу, которая должна упростить работу пользователей?
Не вижу проблемы предложить альтернативные варианты решения заказчику.
Если вместо одной строки пользователь будет выделять 2 строки - для пользователя это не особое усложнение, зато появляется дополнительный функционал - можно получить данные не только с предыдущей строкой, но и с любой другой, что может быть полезно в каких-то сценариях работы.
(11)
Из выделенных строк динамического списка.
Что скажет экзаменатор?
В чем проблема обосновать свое решение/предложение?
Мы обсуждаем сферическую задачу в вакууме или реальную задачу, которая должна упростить работу пользователей?
Не вижу проблемы предложить альтернативные варианты решения заказчику.
Если вместо одной строки пользователь будет выделять 2 строки - для пользователя это не особое усложнение, зато появляется дополнительный функционал - можно получить данные не только с предыдущей строкой, но и с любой другой, что может быть полезно в каких-то сценариях работы.
(11)
Кстати, как?
Из выделенных строк динамического списка.
(12)
Люди обычно хорошо видят, когда программист вместо того, чтобы облегчать жизнь им, облегчать жизнь себе за их счёт ;))))
Заказчик рассуждает просто:
Не вижу проблемы предложить альтернативные варианты решения заказчику.
Люди обычно хорошо видят, когда программист вместо того, чтобы облегчать жизнь им, облегчать жизнь себе за их счёт ;))))
Заказчик рассуждает просто:
У меня есть деньги и проблема, которую, как мне кажется, ты можешь решить. Если ты ее решать не можешь или не хочешь, эти деньги просто получит другой, который сможет. Вот и всё
(13)Давайте не будем бросаться громкими фразочками.
Речь не про облегчить себе жизнь, а про плюсы и минусы разных способов реализации.
Заказчик может рассуждать как угодно, но он может не знать особенности работы системы. Это ваша задача выбрать наиболее оптимальный вариант для реализации задачи.
Самый очевидный минус при варианте - если будет выделена 1 строка и надо найти для предыдущей строки списка разницу - результат работы в этом случае не гарантирован.
Т.к. это динамический список, то пользователь может сделать много всякой фигни в нем - различный поиск, отбор, сортировку по различным полям. И вот в список вывелось несколько строк, которые подходят под отбор, поиск, и с какой-то сортировкой.
То есть при одних и тех-же исходных данных - пользователь выделил одну и ту же строку и нажал кнопку - может быть получен различный результат, если в одном случае он еще и выполнил поиск, а в другом не выполнял.
Если вы даже этого не понимаете, продолжать обсуждение смысла не вижу.
Вам предложили несколько вариантов, а вы нос воротите - то слишком сложно, это слишком просто.
Да без вопросов - делайте как хотите.
Если вы не умеете разговаривать с заказчиками и доносить свою мысль - это ваши проблемы.
Речь не про облегчить себе жизнь, а про плюсы и минусы разных способов реализации.
Заказчик может рассуждать как угодно, но он может не знать особенности работы системы. Это ваша задача выбрать наиболее оптимальный вариант для реализации задачи.
Самый очевидный минус при варианте - если будет выделена 1 строка и надо найти для предыдущей строки списка разницу - результат работы в этом случае не гарантирован.
Т.к. это динамический список, то пользователь может сделать много всякой фигни в нем - различный поиск, отбор, сортировку по различным полям. И вот в список вывелось несколько строк, которые подходят под отбор, поиск, и с какой-то сортировкой.
То есть при одних и тех-же исходных данных - пользователь выделил одну и ту же строку и нажал кнопку - может быть получен различный результат, если в одном случае он еще и выполнил поиск, а в другом не выполнял.
Если вы даже этого не понимаете, продолжать обсуждение смысла не вижу.
Вам предложили несколько вариантов, а вы нос воротите - то слишком сложно, это слишком просто.
Да без вопросов - делайте как хотите.
Если вы не умеете разговаривать с заказчиками и доносить свою мысль - это ваши проблемы.
Не совсем понятно про какой тип элемента идет речь если честно. "ТаблицаФормы" (с привязкой к чему - табилце значений в реквизите формы, к табличной части в документе, к динамическомцу списку на форме) или "ПолеТабличногоДокумента" (таблица типа экселя)? Определитесь пожалуйста четко с типом данных для начала. Тогда получите более развернутый ответ.
- Доктор, меня все игнорируют.
- Следующий.
В смысле, чем вариант из (2) не устраивает?
Далее в результате схемы ищите текущую строку по ключевым полям вашего регистра, и берете предыдущую.
- Следующий.
В смысле, чем вариант из (2) не устраивает?
Схема = Элементы.ОтчетыДляВыгрузки.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
НастройкиСхемы = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСхемы);
КомпоновщикНастроек.Восстановить();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВыводаРезультатаОтчета = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
РезультатСхемы = ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорКомпоновкиДанных);
ПоказатьДалее в результате схемы ищите текущую строку по ключевым полям вашего регистра, и берете предыдущую.
(19) Образованию это вряд ли поможет.
1. Написать служебку, в которой дать ссылку на этот форум.
2. Написать, что по мнению специалистов, решение задачи в предложенном виде невозможно
3. Продолжить использовать Дельфийскую программу, в которой это работает с 2009 г минимум
1. Написать служебку, в которой дать ссылку на этот форум.
2. Написать, что по мнению специалистов, решение задачи в предложенном виде невозможно
3. Продолжить использовать Дельфийскую программу, в которой это работает с 2009 г минимум
(20)
решение задачи в предложенном виде невозможно
Но ведь это не правда, решение было дано в этой теме (через СКД). Хотя мне было бы удобнее, видеть дельту для каждой строки в отдельной колонке, например, или рядом со значением, типа как в таблицах котировок.
(20) Если есть чуть-чуть время на эксперименты, то можно попробовать реализовать.
По постановке задачи, я понял, что нужно показывать приращение ресурса по 4 измерениям. Вопрос первый, это нужно по всем строкам сразу или только по текущей? Вариант проще по текущей строке.
Алгоритм:
1. Если 4 измерения это измерения регистра, то ничего не делаем, если это реквизиты документа, то включаем по ним индексацию с доп. упорядочиванием.
2. В произвольный запрос динамического списка добавляем 4 поля
3. Обязательно включаем флажки "Использовать" для реквизитов формы Ссылка, Прирост1, Пророст2, Прирост3, Прирост4.
4. В обработчике события "ПриПолученииДанныхНаСервере" поля таблицы в который выводим динамический список получаем запросом все 4 изменения по всем выводимым строкам и заполняем полученными значениями созданные ранее реквизиты формы в каждой строке.
5. Если нас интересуют данные только по текущей строке, то ниже поля таблицы на форму, добавляем 4 поля и указываем у них, в свойстве "ПутьКДанным" "Список.Прирост1", "Список.Прирост2", "Список.Прирост3", "Список.Прирост4" соответственно. Иначе если мы хотим видеть данные по каждой строке одновременно, то надо думать как менять видимость нужных колонок "Прирост1...4"
Должно взлететь )))
p.s. А можно попробовать впихнуть в СКД как предлагают рядом, но надо смотреть как будут изменять данные, добавленные и измененные уже после открытия формы списка.
По постановке задачи, я понял, что нужно показывать приращение ресурса по 4 измерениям. Вопрос первый, это нужно по всем строкам сразу или только по текущей? Вариант проще по текущей строке.
Алгоритм:
1. Если 4 измерения это измерения регистра, то ничего не делаем, если это реквизиты документа, то включаем по ним индексацию с доп. упорядочиванием.
2. В произвольный запрос динамического списка добавляем 4 поля
|...,
|NULL Как Прирост1,
|NULL Как Прирост2,
|NULL Как Прирост3,
|NULL Как Прирост4,
|...
3. Обязательно включаем флажки "Использовать" для реквизитов формы Ссылка, Прирост1, Пророст2, Прирост3, Прирост4.
4. В обработчике события "ПриПолученииДанныхНаСервере" поля таблицы в который выводим динамический список получаем запросом все 4 изменения по всем выводимым строкам и заполняем полученными значениями созданные ранее реквизиты формы в каждой строке.
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
КлючиСтрок = Строки.ПолучитьКлючи();
Запрос = Новый Запрос;
Запрос.Текст = "
|// Запрос должен возвращать поля Ключ, Прирост1, Прирост2, Прирост3, Прирост4
|";
Запрос.УстановитьЗначение("Доументы", КлючиСтрок);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Строка = Строки.Получить(Выборка.КлючСтроки);
Строка.Данные.Прирост1 = Выборка.Прирост1;
Строка.Данные.Прирост2 = Выборка.Прирост2;
Строка.Данные.Прирост3 = Выборка.Прирост3;
Строка.Данные.Прирост4 = Выборка.Прирост4;
КонецЦикла;
КонецПроцедуры
Показать5. Если нас интересуют данные только по текущей строке, то ниже поля таблицы на форму, добавляем 4 поля и указываем у них, в свойстве "ПутьКДанным" "Список.Прирост1", "Список.Прирост2", "Список.Прирост3", "Список.Прирост4" соответственно. Иначе если мы хотим видеть данные по каждой строке одновременно, то надо думать как менять видимость нужных колонок "Прирост1...4"
Должно взлететь )))
p.s. А можно попробовать впихнуть в СКД как предлагают рядом, но надо смотреть как будут изменять данные, добавленные и измененные уже после открытия формы списка.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот