|
Выборка частично пустая | ☑ | ||
---|---|---|---|---|
0
Iater
10.06.15
✎
22:02
|
Всем привет!
Вопрос, наверное, как всегда тупой, но очень прошу разъяснить один момент в использовании запросов: Допустим, я в запросе читаю табличную часть документа. Например, ФИО, телефон, адрес. И в обработке проведения хочу записать эти данные в справочник. Так вот, если значения реквизитов табличной части будут пустыми, то как запретить перезапись справочника? (на случай, если телефон уже был указан, а в Акте он пустой - чтоб не затер) Процедура ОбработкаПроведения(Отказ, РежимПроведения) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(АктОПриемеНаРаботу.Телефон, 0) КАК Телефон, | ЕСТЬNULL(АктОПриемеНаРаботу.ФИО, 0) КАК ФИО, | ЕСТЬNULL(АктОПриемеНаРаботу.Адрес, 0) КАК Адрес |ПОМЕСТИТЬ ВременнаяТаблица |ИЗ | Документ.АктОПриемеНаРаботу КАК АктОПриемеНаРаботу |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблица.Телефон, | ВременнаяТаблица.ФИО, | ВременнаяТаблица.Адрес |ИЗ | ВременнаяТаблица КАК ВременнаяТаблица"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Спр = Справочники.Сотрудники.НайтиПоНаименованию(Строка(ФИО)).ПолучитьОбъект(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Спр.Телефон = ВыборкаДетальныеЗаписи.Телефон; Спр.ФИО = ВыборкаДетальныеЗаписи.ФИО; Спр.Адрес = ВыборкаДетальныеЗаписи.Адрес; КонецЦикла; Спр.Записать(); КонецПроцедуры Есть ли какой-то элегантный способ проверки на нулевое значение, кроме как перебирать каждый реквизит по отдельности? Если ВыборкаДетальныеЗаписи.Адрес = Неопределенно Тогда Если ВыборкаДетальныеЗаписи.Телефон = Неопределенно Тогда |
|||
1
zenik
11.06.15
✎
00:50
|
Нарисовать отдельную процедуру - через которую устанавливать значения реквизитов в случае изменения. т.е. Все проверки сделать один раз в одной процедуре и вызывать ее для каждого реквизита справочника.
|
|||
2
Cyberhawk
11.06.15
✎
07:20
|
СписокРеквизитовДляПроверки = Новый СписокЗначений;
СписокРеквизитовДляПроверки.Добавить("Адрес"); СписокРеквизитовДляПроверки.Добавить("Телефон"); Для каждого ЭлементСпискаЗначений Из СписокРеквизитовДляПроверки Цикл ИмяРеквизита = ЭлементСпискаЗначений.Значение; Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи[ИмяРеквизита]) Тогда ... КонецЕсли; КонецЦикла; |
|||
3
bootini
11.06.15
✎
12:44
|
"ВЫБРАТЬ
| ЕСТЬNULL(АктОПриемеНаРаботу.Телефон, 0) КАК Телефон, | ЕСТЬNULL(АктОПриемеНаРаботу.ФИО, 0) КАК ФИО, | ЕСТЬNULL(АктОПриемеНаРаботу.Адрес, 0) КАК Адрес |ПОМЕСТИТЬ ВременнаяТаблица |ИЗ | Документ.АктОПриемеНаРаботу КАК АктОПриемеНаРаботу |; | //////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблица.Телефон, | ВременнаяТаблица.ФИО, | ВременнаяТаблица.Адрес |ИЗ | ВременнаяТаблица КАК ВременнаяТаблица ГДЕ ВременнаяТаблица.Телефон <> 0 И ВременнаяТаблица.Адрес <> 0 "; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |