|
v7: 1С77 Помогите с циклом (спр.Сотрудники)!!! | ☑ | ||
---|---|---|---|---|
0
dft2014
22.07.14
✎
18:47
|
1С77 ЗиК
Помогите с кодом, совсем запуталась в трех соснах ((( Пишу код, который отбирает всех работающих сотрудников и подтягивает их лицевые счета. Причем проходит цикл только один раз и затем выдает ошибку: Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл {\\FS\USER\IT\ВЫГРУЗКА.ERT(293)}: Не выбран элемент! Вот код, совсем простой, но почему-то причину ошибки понять не могу: Сотрудники = СоздатьОбъект("Справочник.Сотрудники"); Сотрудники.ВыбратьЭлементы(); ИтераторСотр = 1; спрБанкРеквизиты = СоздатьОбъект("Справочник.БанкиCarc"); Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл Если Сотрудники.ЭтоГруппа() = 1 тогда Продолжить; КонецЕсли; Если Сотрудники.НайтиПоРеквизиту("ОтделениеБанка","9038",1) <> 1 Тогда Продолжить; КонецЕсли; СостояниеСотрудника = Сотрудники.СостояниеФизЛица.Получить(ДатаФормир); Если (СостояниеСотрудника(Сотрудники.ТекущийЭлемент())="Физическое лицо") ИЛИ (СостояниеСотрудника(Сотрудники.ТекущийЭлемент())="Штатный сотрудник") ИЛИ (СостояниеСотрудника(Сотрудники.ТекущийЭлемент())="Временно не работает") Тогда Если спрБанкРеквизиты.НайтиПоРеквизиту("Сотрудник", Сотрудники.ТекущийЭлемент(), 1) = 0 Тогда Сообщить("Не найдены записи в спр.БанковскиеРеквизиты по сотруднику: " + Сотрудники.ТекущийЭлемент()); БР_Комментарий = ""; БР_Банк = ""; БР_Отделение = ""; Иначе БР_Комментарий = спрБанкРеквизиты.Комментарий; БР_Банк = спрБанкРеквизиты.Банк; БР_Отделение = спрБанкРеквизиты.Отделение; КонецЕсли; ИтераторСотр = ИтераторСотр + 1; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,1).Value = "'"+Сотрудники.Код; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,2).Value = "'"+Сотрудники.Наименование; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,26).Value = "'"+СостояниеСотрудника; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,32).Value = "'"+БР_Комментарий; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,33).Value = "'"+БР_Банк; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,34).Value = "'"+БР_Отделение; Иначе Продолжить; КонецЕсли; КонецЦикла; |
|||
1
dft2014
22.07.14
✎
18:48
|
Код некрасиво вставился в (0), вот вторая попытка:
Сотрудники = СоздатьОбъект("Справочник.Сотрудники"); Сотрудники.ВыбратьЭлементы(); ИтераторСотр = 1; спрБанкРеквизиты = СоздатьОбъект("Справочник.БанкиCarc"); Пока Сотрудники.ПолучитьЭлемент() = 1 Цикл Если Сотрудники.ЭтоГруппа() = 1 тогда Продолжить; КонецЕсли; Если Сотрудники.НайтиПоРеквизиту("ОтделениеБанка","9038",1) <> 1 Тогда Продолжить; КонецЕсли; СостояниеСотрудника = Сотрудники.СостояниеФизЛица.Получить(ДатаФормир); Если (СостояниеСотрудника(Сотрудники.ТекущийЭлемент())="Физическое лицо") ИЛИ (СостояниеСотрудника(Сотрудники.ТекущийЭлемент())="Штатный сотрудник") ИЛИ (СостояниеСотрудника(Сотрудники.ТекущийЭлемент())="Временно не работает") Тогда Если спрБанкРеквизиты.НайтиПоРеквизиту("Сотрудник", Сотрудники.ТекущийЭлемент(), 1) = 0 Тогда Сообщить("Не найдены записи в спр.БанковскиеРеквизиты по сотруднику: " + Сотрудники.ТекущийЭлемент()); БР_Комментарий = ""; БР_Банк = ""; БР_Отделение = ""; Иначе БР_Комментарий = спрБанкРеквизиты.Комментарий; БР_Банк = спрБанкРеквизиты.Банк; БР_Отделение = спрБанкРеквизиты.Отделение; КонецЕсли; ИтераторСотр = ИтераторСотр + 1; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,1).Value = "'"+Сотрудники.Код; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,2).Value = "'"+Сотрудники.Наименование; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,26).Value = "'"+СостояниеСотрудника; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,32).Value = "'"+БР_Комментарий; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,33).Value = "'"+БР_Банк; x.WorkSheets(ИмяФайла).Cells(ИтераторСотр,34).Value = "'"+БР_Отделение; Иначе Продолжить; КонецЕсли; КонецЦикла; |
|||
2
Мигало
22.07.14
✎
18:52
|
Сотрудники.НайтиПоРеквизиту - сбивает выборку
|
|||
3
dft2014
22.07.14
✎
18:54
|
(2) А как тогда? Мне надо отобрать только тех, у которых в спр.Сотрудники, реквизит "ОтделениеБанка"=9038. Это одно из условий.
|
|||
4
Franchiser
гуру
22.07.14
✎
18:56
|
Выбратьэлементы() нужно ставить непосредственно перед циклом, и найтипореквизиту сбивает выборка нужно инициализировать еще объект например сотрудники2
|
|||
5
Мигало
22.07.14
✎
18:56
|
Если Сотрудники.ЭтоГруппа() = 1 тогда Продолжить; КонецЕсли;
Если Сотрудники.ОтделениеБанка <> 9038 Тогда Продолжить; КонецЕсли; |
|||
6
Franchiser
гуру
22.07.14
✎
18:57
|
Сотрудники2= СоздатьОбъект("Справочник.Сотрудники");
Сотрудники2.найтипореквизиту(... |
|||
7
maip1
22.07.14
✎
18:59
|
Если СокрЛП(Сотрудники.ОтделениеБанка) <> "9038" Тогда Продолжить; КонецЕсли;
|
|||
8
KRV
22.07.14
✎
19:07
|
фотки без купальника в личке нет... непорядок..
|
|||
9
kobzon
22.07.14
✎
19:09
|
(8) Зато там написано что это мужик))
|
|||
10
dft2014
22.07.14
✎
19:20
|
(7) Помогло!!!
Всем СПАСИБО!!! |
|||
11
lavalit
23.07.14
✎
19:04
|
Если еще актуально, то можно еще запрос сделать с условием "ОтделениеБанка"=9038 (ну и плюс все остальные условия какие надо по ходу), тогда в выборку попадут только нужные сотрудники.... на мой взгляд красивее будет, чем перебирать аж целый справочник. да и побыстрее отработает
|
|||
12
m-serg74
23.07.14
✎
20:01
|
(11) сотрудники это не номенклатура - много не бывает :)
|
|||
13
ДенисЧ
23.07.14
✎
20:03
|
(12) Им же всем платить надо....
|
|||
14
m-serg74
23.07.14
✎
20:10
|
ну продать в принципе тоже мона)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |