Имя: Пароль:
1C
1С v8
Составной тип данных: один тип для отображения, другой для логики программы
0 Надежда25
 
17.02.14
09:38
8.2. УФ. Возможно ли такое сделать?
Поле ввода табличной части формы связано с реквизитом объекта составного типа: Число и Булево. Числовое значение вводится пользователем, а Булево изменяется при изменении некоторого другого реквизита. Можно ли так сделать так, чтобы на форме всегда отображалось только числовое значение, а булево было бы скрыть от пользователя, использовалось бы только программно?
1 Irbis
 
17.02.14
09:39
Привыводистроки или Приполоченииданных
2 Drac0
 
17.02.14
09:39
(1) Говорят же ,что УФ.
3 Drac0
 
17.02.14
09:41
(0) Вы, кажется, неправильно понимаете смысл составного реквизита. В данном случае он может быть ЛИБО булево ЛИБО число. Если вам нужно хранить и числовое значение и болевое, то это только 2 реквизита.
4 butterbean
 
17.02.14
09:42
(0) а как скрыть, если там значение Истина ??  что пользователь увидит в этом случае??
какое-то криво решение похоже с такими составными типами
5 1Сергей
 
17.02.14
09:44
(3) + реквизит не обязательно отображать на форме
6 Поpyчик-4
 
17.02.14
09:44
(0) Нельзя. Делайте два реквизита.
7 Надежда25
 
17.02.14
09:45
(3). Мне достаточно или числового значения, или булево. Но чтобы не путать пользователя, хочу, чтобы число по-прежнему было в поле ввода, а Нет я обработаю сама.
8 Поpyчик-4
 
17.02.14
09:45
В случае с двумя реквизитами - НЕ Видимость поля + Использовать всегда в свойствах.
9 butterbean
 
17.02.14
09:46
(7) хранится в базе что-то одно — либо число, либо булево
10 Drac0
 
17.02.14
09:47
(7) Просто не вытаскивайте этот реквизит в элементы формы. Работать с ним вы сможете, а пользователь его никак не увидит.
11 1Сергей
 
17.02.14
09:48
(9) В базе это будут всё-равно две колонки
12 Drac0
 
17.02.14
09:49
(11) Но по факту значение-то может быть только в одной из них :)
13 Fedor-1971
 
17.02.14
09:54
(7) если обрабатывать числовое значение внутри логики формы, то зачем делать лишний реквизит?
  Пользователь ввёл число, внутри логики формы проверяются некоторые условия, по которым Вы хотели установить этому реквизиту значение типа булево и выполняются нужные действия.
14 Надежда25
 
17.02.14
09:57
(10) А как это сделать? Я не хочу увеличивать количество реквизитов (их добавится 31 - по числу дней месяца). То есть в базе пусть будет или число, или булево, а на форме пусть всегда число.
(13) Для логики добавлен реквизит формы (не связан с объектом), от него зависит реквизит составного типа.
15 butterbean
 
17.02.14
09:59
(14) ааа, 31 реквизит жесть
сделай таб. часть с двумя реквизитами - дата и сумма (ну или что там у тебя вместо суммы)
16 butterbean
 
17.02.14
10:00
(15)+ и запросы сможешь нормальные делать
17 Поpyчик-4
 
17.02.14
10:01
(15) Нормально. У меня на клюшках много лет назад был документ Табель с 31 + ещё пяток реквизитов в тч.
18 Надежда25
 
17.02.14
10:04
Так у меня будет 31 реквизит с числовым типом, и 31 с типом Булево. Хотелось сократить.
19 butterbean
 
17.02.14
10:06
(17) это конечно аргумент
(18) сделай таб часть с 3 реквизитами — дата, число и булево
20 Рэйв
 
17.02.14
10:06
(18)В нужных местах:

Если ТипЗнч(Реквизит)=Тип("Булево") Тогда
    ДляПрограммы=?(Реквизит,1,0);
КонецЕсли;
21 1Сергей
 
17.02.14
10:07
(18) разложи по полочкам. Реквизит может быть Истиной, Ложью или числом от 0 до 24. так?
22 Надежда25
 
17.02.14
10:16
(21)Один реквизит число (их 31 по числу дней месяца). Другой реквизит только формы Булево (их тоже 31). Если Истина - используется Число. Если Ложь - число не будет использоваться, расчет будет идти по-среднему.
(20) Все так. Но он отображается на форме: "Нет", а число уходит.
23 Рэйв
 
17.02.14
10:17
(22)тогда убери булево вообще. Пусть работают только с числами
24 1Сергей
 
17.02.14
10:22
(22) Количество отработанных часов? и нафига там булево?
25 KrivosheevE V163rus
 
17.02.14
10:24
Согласен с (13). Создать функцию, которая будет проверять числовое значение и возвращать Истину/Ложь. Тип "Булево" у реквизита убрать.

Может вы сообщите поподробнее суть задачи. Вполне возможно, что есть более простые способы решения, чем 31 реквизит.
26 Надежда25
 
17.02.14
10:35
(22) Заносят показания приборов за каждый день месяца. Иногда нет данных и надо тогда этот день считать по-среднему. Для этого придуман реквизит формы, чтобы указать, что этот день будет считаться по-среднему.
Можно, конечно, сделать строковый тип и вводить то число, то, например, звездочку. Неужели этот вариант красивее?
27 Irbis
 
17.02.14
10:36
(26) -1 вводите, любое число не из ОДЗ показаний прибора.
28 Drac0
 
17.02.14
10:37
(26) Почему нельзя сделать табличную часть? 2 колонки с типами Дата и Число.
29 Надежда25
 
17.02.14
10:42
(27) Не поняла.
(28) У меня ТЧ. Реквизиты: Показания1,..., Показания31. А зачем дата?
30 Irbis
 
17.02.14
10:44
(29) Что непонятного, любое чилсо которое не может показать прибор может нести функцию оповещения об отсутствии показаний или их неадекватности с целью исключения из расчетов и замены на средние значения.
31 patapum
 
17.02.14
10:47
(26) так зачем тебе булево? если ноль, то по средней, по твоей логике.
(29) Показания1,..., Показания31 - порадовало...
32 Надежда25
 
17.02.14
10:47
(30) Теперь понятно. Вот мне и кажется, что ввод числа, например, 1000 менее красив, чем в соседней колонке поставить галочку.
33 Irbis
 
17.02.14
10:49
(32) Зачем заставлять вводить, пусть сразу будет. А пользователь  изменит на реальные показания прибора. Где не изменить там не было. Старый прием — сделать наоборот.
34 Надежда25
 
17.02.14
10:57
Да, можно и так. И все-таки, возвращаясь к началу: а если запоминать значение в переменную перед присвоением Булево, а после сразу выводить? Или все-таки добавить 31 реквизит?
35 Irbis
 
17.02.14
10:58
(34) !Сник должен быть ленив. Зачем что-то делать, если можно не делать вообще.
36 KrivosheevE V163rus
 
17.02.14
11:03
(34)
Булево у реквизита не требуется. В коде использовать "ЗначениеЗаполнено()" или "Булево()".
37 Starhan
 
17.02.14
11:04
(34) ТЧ с тремя колонками "число месяца" (или "дата"), "величина показаний", "отрабатывать по среднему".
Если кодом можно обработать логику превращения числа в булево без участия пользователя, то 3й реквизит скрываем.

зачем мучить себе и другим мозг?
38 Starhan
 
17.02.14
11:05
(36) а если счетчик может показать 0 и это значит что ненадо ничего начислять (ни по среднему, ни по счетчику)
39 KrivosheevE V163rus
 
17.02.14
11:14
(38) У текущей поставленной задачи очень много "а если". Заменять автомобильное колесо на два велосипедных мне тоже не нравится.
40 Йохохо
 
17.02.14
11:19
(26) ЗУП Ведомость по выплате зарплаты в ТЧ есть Галка Авторасчет, Сотрудник и Сумма. Как раз Ваш велосипед
41 Надежда25
 
17.02.14
11:51
Спасибо, посмотрю.
видимо, буду добавлять еще 31 реквизит. Вообще, 70 реквизитов у документа - это нормально? 90 строк.
42 Irbis
 
17.02.14
11:52
(41) Скорее нет, чем да. Но все определяется в конечном счете задачей.
43 catena
 
17.02.14
11:55
(41)Открываю тут типовую УПП для КЗ, ТабельУчетаРабочегоВремени, ТЧ Отработанное время - 253 колонки... Нормально, видимо.
44 Йохохо
 
17.02.14
11:59
(41) не реквизит, а реквизит ТЧ
не АСКУЭ автоматизируете?)))
45 Enders
 
17.02.14
12:02
Странно, почему бы не использовать РС для хранения показателей?)
А в документе:
1) Сделать ввод сразу в РС с реквизитами Прибор,Дата,Показание, Расчет по средней
2) Или Сделать РС подчиненным документу и при проведении писать данные в РС.

Можно при создании нового документа сразу его заполнять приборами и датами. А дальше пользователь вводит только числа.
46 Надежда25
 
17.02.14
12:06
(44) Да, расчет расходов энергоресурсов.
(45) Так и сделано. просто хотелось уменьшить количество реквизитов. видно, не судьба.
47 mistеr
 
17.02.14
12:06
(41) Это ненормально. Показания приборов нужно хранить в регистре сведений. А отображать на форме так, как удобно для вода.

Примеры смотрите в том же табеле или в документе Ввод цен номенклатуры.
48 mistеr
 
17.02.14
12:07
(47) *ввода*
49 Йохохо
 
17.02.14
12:09
(46) что то расчет по среднему не нравится, надо главного инженера предупредить, чтоб счетчики со счетами внимательно сравнивал)
50 H A D G E H O G s
 
17.02.14
12:10
Хранить в числе - булево. В верхнем разряде.
51 Надежда25
 
17.02.14
12:26
(50)Объясните, пожалуйста.
52 Fedor-1971
 
17.02.14
12:28
(50) подходит для обычных форм, на УФ геморойнее чем 2 реквизита ТЧ.
(46) в (45) имелось в виду, что ТЧ состоит из строк вида "прибор, дата, показания, расчетПоСредней" (т.е. 4 реквизита в строке, а не 31)
53 Fedor-1971
 
17.02.14
12:29
(51) "Верхний разряд числа" это знак числа, т.е. булево "Истина" = будет число со знаком +, Булево "Ложь" число со знаком -, как ни странно 0 то же имеет знак.
54 nuctoh
 
17.02.14
12:30
Если необходимо хранить показания некоего прибора, то впоследствии эти данные необходимо как-то получать. Очевидно - запросом. Если так, то значительно технологичней сделать периодический регистр сведений. Отсутствие показаний прибора в этом случае можно фиксировать:
1. отдельным ресурсом булевого типа
2. отрицательным значением в ресурсе, хранящем показания
3. отсутствием записи в регистре

Мне симпатичней первый способ. Я так делал ежедневное снятие показаний спидометров такси в автопарке.
55 nuctoh
 
17.02.14
12:33
Регистр заполнялся на месяц вперед нулевыми показаниями и флажками СнятоПоказание = Истина. Перед заполнением нового месяца находились незаполненные дни, и для них рассчитывались средние показатели
56 Надежда25
 
17.02.14
12:41
(53) Спасибо за разъяснение.
(50) Мне очень понравилось. Попробую реализовать.
Лишь бы здесь не случилось то же самое: число отрицательное, а на форму нужно выводить всегда со знаком "+".
57 Йохохо
 
17.02.14
12:50
(56) ну, пожалуйста, не надо, пожалуйста. я понимаю, что это стильно и моложено, но очень прошу НЕ НАДО
58 Fedor-1971
 
17.02.14
13:48
(56) тот же бантик, только вид с боку. Новый топик: "Как на УФ вывести в колонку число с другим знаком"
59 mistеr
 
17.02.14
22:30
(50) Ежики плакали и кололись...

Признайся, в комментариях к документам тоже какой-нибудь служебный мусор хранишь? В скобочках.

(57) +10
60 Dен
 
17.02.14
23:46
(56) Зачем пихать по логике разные вещи в один реквизит?

В пределе с таким подходом можно предти к базе данных, хранящейся в одной константе.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан