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