|
Как в УФ на форме в произвольном списке добавить колонку с нужным значением | ☑ | ||
---|---|---|---|---|
0
oleg_prg
12.12.17
✎
14:09
|
Добрый день уважаемые форумчане. Подскажите пожалуйста как в УФ на форме в произвольном списке добавить колонку с нужным значением.
Вот фотка чтобы было понятно. https://yadi.sk/i/AHUcuPSe3QYPgR Заранее спасибо! |
|||
1
DmitrO
12.12.17
✎
14:17
|
Нужно использовать событие ПриПолученииДанныхНаСервере. Все получится.
|
|||
2
Сти
12.12.17
✎
14:22
|
(1) для динамических списков только начиная с 8.3.8. Кроме того, поиск, отбор и прочее по получившейся колонке работать не будет.
|
|||
3
drcrasher
12.12.17
✎
14:28
|
(1) нафиг. у него там произвольный запрос, пусть туды и пихает. а потом колонку на форму
|
|||
4
oleg_prg
12.12.17
✎
14:43
|
(3) Даты запихнуть не получится т.к. мне надо дата прописью типа: 9 лет 5 месяев 3 дня В запросе так не сделать
Я думал запрос отработает, выведу в таблицу а там похимичу с элементом строки. НО БЛИН! ПриПолученииДанныхНаСервере предопределенная работает только на сервереБЕЗконтекста - зараза. Вот и мучаюсь... не знаю как подступиться |
|||
5
oleg_prg
12.12.17
✎
14:44
|
(4) а модифицировать набор полученных данных не получается т.к. выдается ошибка - нарушение ключа записи и что-то там еще
|
|||
6
Cyberhawk
12.12.17
✎
14:46
|
выбор когда год(дата) = 1 тогда "год" когда год(дата) > 1 и год(дата) < 5 тогда "года" когда год(дата) > 5 тогда "лет" конец
:) |
|||
7
oleg_prg
12.12.17
✎
14:49
|
(6) =))))))))
|
|||
8
Cyberhawk
12.12.17
✎
14:51
|
(5) Это ты криво запрос модифицировал, у тебя появились дубли по ссылкам
|
|||
9
Сти
12.12.17
✎
14:54
|
(5) в запрос вставь "" как "СтажСтрокой" и потом модифицируй этот СтажСтрокой как хочешь
(6) 21? |
|||
10
Cyberhawk
12.12.17
✎
15:02
|
(9) 21? Это ты уже придираешься :) Но думаю остатком от деления можно разрулить
|
|||
11
Zamestas
12.12.17
✎
15:03
|
(10) Да уж тогда/когда до сотни.
|
|||
12
2dolist
12.12.17
✎
15:05
|
не очень универсально, а вдруг люди будут жить по миллиону лет.
|
|||
13
SSSSS_AAAAA
12.12.17
✎
15:15
|
(4) "мне надо дата прописью типа: 9 лет 5 месяев 3 дня"
А уже определился с методикой расчета? Или еще не знаешь, что их несколько, все они дают разные результаты и каждая из них подходит только для какой-то конкретной области деятельности? |
|||
14
oleg_prg
12.12.17
✎
16:10
|
Ребята - спасибо! Такс - все получилось. Вот реализация может кому пригодится.
Функция ДатаПрописьюГодМесяцДень(СрокПолезногоИспользования) Экспорт РасшифровкаСрокаПолезногоИспользования = ""; Если ЗначениеЗаполнено(СрокПолезногоИспользования) Тогда ЧастьМесяца = СрокПолезногоИспользования - Цел(СрокПолезногоИспользования); ЧислоДней = Цел(30 * ЧастьМесяца); Суффикс = ""; Если НЕ ЧислоДней = 0 Тогда Суффикс = ЧислоПрописью(ЧислоДней, "НД = Ложь", "#$ень, #$ня, #$ней, м,,,,,0"); ПозицияПослеПрописи = Найти(Суффикс, "#$"); Суффикс = Сред(Суффикс, ПозицияПослеПрописи); Суффикс = " " + СокрЛП(ЧислоДней) + " " + Суффикс; КонецЕсли; ЧислоЛет = Цел(СрокПолезногоИспользования / 12); ЧислоМесяцев = Цел((СрокПолезногоИспользования % 12)); ЧислоЛетМесяцев = ЧислоЛет + ЧислоМесяцев/100; Если ЧислоЛет = 0 Тогда СтрокаЧислоЛетМесяцев = ЧислоПрописью(ЧислоМесяцев, "НД = Ложь", "месяц, месяца, месяцев, м,,,,,0"); СтрокаПоиска = "месяц"; Иначе СтрокаЧислоЛетМесяцев = ЧислоПрописью(ЧислоЛетМесяцев, ?(ЧислоМесяцев = 0, "НД = Ложь", "НД = Истина"), "год, года, лет, м" + ?(ЧислоМесяцев = 0, ",,,,,0" ,", месяц, месяца, месяцев, м, 2")); СтрокаПоиска = "год"; КонецЕсли; ПозицияПослеЛет = Найти(СтрокаЧислоЛетМесяцев, СтрокаПоиска); Если ПозицияПослеЛет = 0 Тогда ПозицияПослеЛет = Найти(СтрокаЧислоЛетМесяцев, "лет"); Если ПозицияПослеЛет = 0 Тогда //Фигня какая-то, оставим алгоритм МиСофт //От сих старый код типовой конфигурации //************************************** Если НЕ (ЧислоЛет = 0) Тогда // Построим строку с числом лет Если (СтрДлина(ЧислоЛет) > 1) И (Число(Сред(ЧислоЛет, СтрДлина(ЧислоЛет) - 1, 1)) = 1) Тогда СтрокаГод = " лет"; ИначеЕсли Число(Прав(ЧислоЛет, 1)) = 1 Тогда СтрокаГод = " год"; ИначеЕсли (Число(Прав(ЧислоЛет, 1)) > 1) И (Число(Прав(ЧислоЛет, 1)) < 5) Тогда СтрокаГод = " года"; Иначе СтрокаГод = " лет"; КонецЕсли; РасшифровкаСрокаПолезногоИспользования = РасшифровкаСрокаПолезногоИспользования + Строка(ЧислоЛет) + СтрокаГод; КонецЕсли; Если НЕ (ЧислоМесяцев = 0) Тогда // Построим строку с числом месяцев Если (СтрДлина(Цел(ЧислоМесяцев)) > 1) И (Число(Сред(Цел(ЧислоМесяцев), СтрДлина(Цел(ЧислоМесяцев)) - 1, 1)) = 1) Тогда СтрокаМесяц = " месяцев"; ИначеЕсли Число(Прав(Цел(ЧислоМесяцев), 1)) = 1 Тогда СтрокаМесяц = " месяц"; ИначеЕсли (Число(Прав(Цел(ЧислоМесяцев), 1)) > 1) И (Число(Прав(Цел(ЧислоМесяцев), 1)) < 5) Тогда СтрокаМесяц = " месяца"; Иначе СтрокаМесяц = " месяцев"; КонецЕсли; РасшифровкаСрокаПолезногоИспользования = РасшифровкаСрокаПолезногоИспользования + ?(НЕ ЗначениеЗаполнено(РасшифровкаСрокаПолезногоИспользования), "", " ") + Строка(ЧислоМесяцев) + СтрокаМесяц; КонецЕсли; РасшифровкаСрокаПолезногоИспользования = "(" + РасшифровкаСрокаПолезногоИспользования + ")"; //************************************** //До сих старый код типовой конфигурации КонецЕсли; КонецЕсли; Если РасшифровкаСрокаПолезногоИспользования = "" Тогда РасшифровкаСрокаПолезногоИспользования = СокрЛП(?(ЧислоЛет = 0, ЧислоМесяцев, ЧислоЛет)) + " " + Сред(СтрокаЧислоЛетМесяцев, ПозицияПослеЛет); //Уберем обязательное двузначное число месяцев, если оно получилось: РасшифровкаСрокаПолезногоИспользования = СтрЗаменить(РасшифровкаСрокаПолезногоИспользования, " 0", " ") + СтрЗаменить(Суффикс, "#$", "д"); КонецЕсли; КонецЕсли; Возврат РасшифровкаСрокаПолезногоИспользования; КонецФункции// РасшифровкаСрокаПолезногоИспользования() В запросе поставил " " КАК СтажСтрокой В модуде &НаСервереБезКонтекста Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) Для Каждого Эл из Строки Цикл Эл.Значение.Данные.СтажСтрокой = РаботаСоСтроками.ДатаПрописьюГодМесяцДень(Эл.Значение.Данные.Стаж); КонецЦикла КонецПроцедуры |
|||
15
DmitrO
12.12.17
✎
16:17
|
Поздравляю. Решена еще одна важная (но по сути бесполезная) для заказчика задача. )
|
|||
16
Новиков
12.12.17
✎
16:19
|
Красивая фукнция, надо забрать в коллекцию маразмов.
|
|||
17
тарам пам пам
12.12.17
✎
16:58
|
(14) тебе что, платят за число строк кода?
|
|||
18
oleg_prg
12.12.17
✎
17:36
|
(17) Хочешь поговорить об этом? ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |