Вход | Регистрация
 
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
(5) Если не хочешь много "если", можно в цикле.
Вычислить(ИмяПеременной) тебе поможет
   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
(8) в (2) же расписано, подробнее некуда
   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))
КонецЦикла;
 
 Рекламное место пустует


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.