|
Проверка заполнения реквизитов через условие | ☑ | ||
---|---|---|---|---|
0
Hammond
14.10.20
✎
23:05
|
Доброго времени суток, форумчане.
Есть n количество переменных. Если все переменные заполнены, идёт код, иначе нужно чтобы вывело, какая переменная не заполнена. Использую для этого значениезаполнено Код: Если ЗначениеЗаполнено(переменная1) и ЗначениеЗаполнено(переменная2) и ЗначениеЗаполнено(переменная3) и... И значениезаполнено(переменнаяn) тогда //код Иначе Сообщить("не заполненная переменная") ; КонецЕсли; Что написать в тело сообщить вместо "не заполненная переменная", чтобы передалась переменная? |
|||
1
Tarlich
14.10.20
✎
23:31
|
Еще в 7.7 в Тис была Функция
// Проверка заполненности обязательных реквизитов. Если глВсеРеквизитыДокументаЗаполнены(Контекст, "Фирма,Склад,Валюта,Контрагент,Договор")=0 Тогда Возврат; КонецЕсли; не то ? |
|||
2
Сияющий в темноте
14.10.20
✎
23:39
|
а в цикле?
массивименпеременных=СтрРазделить(ИменаЧерезЗапятую,",",ложь) для каждого ИмяПеременной из МассивИменПеременных цикл если Вычислить("ЗначениеЗаполнено("+ИмяПеременной+")")=Ложь тогда сообщить("Не заполнена переменная:"+ИмяПеременной) конецесли конеццикла |
|||
3
Hammond
14.10.20
✎
23:39
|
Мне на заполненность нужно проверить не реквизиты формы или чего-то ещё, а именно переменные в коде, которые я создаю.
Более полно если, то я считываю таблицу екселя, колонки делаю переменными. Нужно, что в иначе мне вывело какая именно переменная не заполнена |
|||
4
Tarlich
14.10.20
✎
23:42
|
Дедовский способ
ДвижемсяДальше = 1 ; Если Не ЗначениеЗаполнено(Перемен1) тогда Сообщить("Что то там не запонено"); ДвижемсяДальше = 0 ; КонецЕсли; ........... Если ДвижемсяДальше = 0 тогда Сообщить ("Есть незаполненные реквизиты"); Возврат ; КонецЕсли; |
|||
5
Hammond
14.10.20
✎
23:44
|
Мне нужно, чтобы он показал какия именно переменная из n незаполнена
|
|||
6
Hammond
14.10.20
✎
23:45
|
И чтобы особо сильно код не увеличился
|
|||
7
RomanYS
14.10.20
✎
23:47
|
(5) Если не хочешь много "если", можно в цикле.
Вычислить(ИмяПеременной) тебе поможет |
|||
8
Hammond
14.10.20
✎
23:51
|
Можно поподробнее? Не знаком с этим
|
|||
9
Tarlich
14.10.20
✎
23:51
|
Усложняем -)
Создаем 2 массива : Один со списком переменных , второй со значениями Если Список.количество() = .... |
|||
10
Hammond
14.10.20
✎
23:52
|
Не, через несколько массивов точно не покатит
|
|||
11
Сияющий в темноте
14.10.20
✎
23:54
|
строка excel это ComSafeArray,вот его и нужно проверять,а не какие-то переменные.
|
|||
12
Tarlich
14.10.20
✎
23:56
|
(10) ТЗ ? -)
|
|||
13
Tarlich
14.10.20
✎
23:59
|
если обижу - сори , но первое что приходит в голову - кто как хочет ....
|
|||
14
Hammond
15.10.20
✎
00:07
|
Требовательный заказчик, можно так сказать
Если использую переменную, без которой можно обойтись приходится переделывать, а тут не просто переменная, а массивы Переменные это по сути названия колонок таблиц в экселе |
|||
15
Mihasya
15.10.20
✎
00:08
|
(3) Покажи как создаешь переменные
|
|||
16
Klesk
15.10.20
✎
00:09
|
говорим про "реквизиты" формы или объекта ?
|
|||
17
RomanYS
15.10.20
✎
00:13
|
(8) в (2) же расписано, подробнее некуда
|
|||
18
Hammond
15.10.20
✎
00:15
|
Переменная1=формат(ТекЛист.cells(СчСтр,1).value)
|
|||
19
Hammond
15.10.20
✎
00:16
|
Не понимаю, куда конкретно записывать имена переменных в (2)
|
|||
20
Hammond
15.10.20
✎
00:18
|
Говорим про переменные, реквизиты в теме указал по ошибке
|
|||
21
RomanYS
15.10.20
✎
00:28
|
(19) ИменаЧерезЗапятую = "переменная1,переменная2, переменная3"
|
|||
22
Mihasya
15.10.20
✎
00:40
|
(18) т.е. ты заранее знаешь сколько у тебя переменных будет?
|
|||
23
Mihasya
15.10.20
✎
00:43
|
(2) я бы массивом сделал...
МассивПеременных = Новый Массив; Для СчСтр = 1 по ВсегоСчСтр Цикл МассивПеременных.Добавить(Формат(ТекЛист.cells(СчСтр,1).value)) КонецЦикла; ... Ну и после проверять эти переменные из массива по индексу... |
|||
24
Hammond
15.10.20
✎
00:44
|
Ззнаю заранее, но их много. И для каждой писать если значениезаполнено(Переменная1) тогда
Если жначениезаполнено(Переменная2) тогда И так далее до n Иначе для каждой писать слишком много кода будет |
|||
25
Hammond
15.10.20
✎
00:47
|
(23) каждая переменная имеет разные значения в cells(СчСтр)
Для второй там будет СчСтр, 2 и так далее А в твоём коде будет одно значение присваиваться |
|||
26
youalex
15.10.20
✎
00:55
|
В структуру эти переменные запихнуть не вариант?
|
|||
27
Hammond
15.10.20
✎
01:06
|
Видимо нет
То есть мне сказали сделать через переменную отказ и прервать/продолжить То есть задать отказ=ложь Если не отказ тогда Продолжить Конецесли Но как к этому привязать сообщения об ошибках не могу понять, все равно же придётся для каждого значения делать условие |
|||
28
youalex
15.10.20
✎
01:10
|
(27) >> считываю таблицу екселя, колонки делаю переменными.
ну и пихай их сразу в структуру. А заполнение в цикле проверишь (можно отдельной функцией) |
|||
29
Mihasya
15.10.20
✎
01:25
|
(25) с чего это вдруг?!
ну чутка переписать... СчСтр = <Какая-то твоя трока> ВсегоПеременных = <ВсегоТвоихПеременных> Для а = 1 по ВсегоПеременных Цикл МассивПеременных.Добавить(Формат(ТекЛист.cells(СчСтр, а).value)) КонецЦикла; |
|||
30
Mihasya
15.10.20
✎
01:27
|
Либо действительно через структуру...
СтруктураПеременных = Новый Структура; СчСтр = <Какая-то твоя трока> ВсегоПеременных = <ВсегоТвоихПеременных> Для а = 1 по ВсегоПеременных Цикл СтруктураПеременных.Вставить("Переменная" + а, Формат(ТекЛист.cells(СчСтр, а).value)) КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |