Имя: Пароль:
1C
1С v8
Типы сравнений. Подскажите пожалуйста
,
0 Kostik2013
 
26.08.13
23:45
1С:Предприятие 8.2 (8.2.15.310) УТ  

Всем добрый вечер! Нужно сравнить два разных типа между собой. Один Строка в табличной части (ОтработанныхДней) а второй Число (НормаДней). Как правильно записать разные типы,чтоб получилось сравнить больше или меньше? Спасибо всем за помощь.

&НаКлиенте
Процедура ТаблицаОтработанныхДнейПриИзменении(Элемент)
  
   Если ОтработанныхДней > НормаДней Тогда
   Предупреждение("Превышение нормы рабочих дней !");
   Отказ=Истина  
КонецЕсли;

КонецПроцедуры
1 Max Street
 
26.08.13
23:55
разные типы никак. попробуй написать:

Если Число(ОтработаноДней) > НормаДней Тогда
2 Kostik2013
 
26.08.13
23:59
(1) все равно не определяет переменную ОтработанныхДней
3 Max Street
 
27.08.13
00:01
пишет, что не может преобразовать в тип Число?
а как ОтработаноДней вообще может быть строкой?
4 Kostik2013
 
27.08.13
00:06
(3) я ввожу руками сколько дней отработано,вот и есть строка.Поменял на число,то же самое.
Отработано дней,находится в ТЧ а НормаДней Реквизит
Вот,что пишет

{Документ.НачислениеЗарплаты.Форма.ФормаДокумента.Форма(11,7)}: Переменная не определена (ОтработанныхДней)
    Если <<?>>ОтработанныхДней > НормаДней  Тогда (Проверка: Толстый клиент (обычное приложение))
5 Славен
 
27.08.13
00:08
так ты определись с правильным названием, тебе же пишет что не вкурил что такое ОтработанныхДней
6 Славен
 
27.08.13
00:09
да и как ты строку ТЧ сравниваешь? тебе может всё же значение поля из строки
7 Max Street
 
27.08.13
00:10
т.е ОтработаноДней - реквизит ТЧ, а НормаДней - реквизит шапки?
если так, то:

для каждого абв из ТЧ цикл
если абв.отработанодней > нормадней тогда
  ...
конецесли;
конеццикла;
8 Славен
 
27.08.13
00:11
(7)нах тогда "Процедура ТаблицаОтработанныхДнейПриИзменении(Элемент)" - ПриИзменении!
9 Max Street
 
27.08.13
00:13
(8) не ко мне вопрос
10 Kostik2013
 
27.08.13
00:13
(8) Если пользователь изменил значение
11 Kostik2013
 
27.08.13
00:16
(7) НормаДней реквизит в форме
12 Kostik2013
 
27.08.13
00:18
Получилось)Всем спасибо!

Для каждого Стр из НачисленияСотрудников Цикл     
    Если Стр.ОтработанныхДней > НормаДней  Тогда
    Предупреждение("Превышение нормы рабочих дней !");
    Отказ=Истина                                                
КонецЕсли;
КонецЦикла;
НачисленоПоОкладу();
13 acanta
 
27.08.13
00:19
Стр = Элементы.абв.ТекущиеДанные;
Если Стр.ОтработанныхДней > НормаДней  Тогда
14 Славен
 
27.08.13
00:20
а если строк несколько тысяч? постоянно будешь перебирать все?
если уж суешь в приИзменении то вот и посмотри отладчиком какие данные есть в Элемент. (пысы ориентируйся на что то типа ДанныеСтроки, ТекущиеДанные, ТекущаяСтрока, для особо тупых ещё уточню ставишь точку останова смотришь что у тебя в Элемент, потом в выражении прямо дописываешь Элемент.ТекущаяСтрока или  ....)
15 Max Street
 
27.08.13
00:23
(12) кстати, да, вариант (13) лучше
16 Wobland
 
27.08.13
04:30
(12) я очень, очень хочу посмотреть на 20 тысяч предупреждений подряд
17 Vovan_Magadan
 
27.08.13
04:56
(7) что за быдло оформление когда))) аж глаза слезятся
Программист всегда исправляет последнюю ошибку.