Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 14:50
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Выборка сотрудника для занесения в базу  (Прочитано 3498 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн korvindeson

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-04-16
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день. Переношу список к начислению из экселя в 1с 8.2 ЗУП. Есть проблема с этой частью

Если Справочники.СотрудникиОрганизаций.НайтиПоНаименованию("Иванов Иван Иванович", Истина).ПодразделениеОрганизации <> "Подразделение1" Тогда
//найти следующего Иванова Ивана Ивановича
КонецЕсли;

Проблема получается такая. Есть сотрудники помеченные на удаление или просто перемещённые непонятно куда. А я при переносе из экселя ищу сотрудников как Справочники.СотрудникиОрганизаций.НайтиПоНаименованию, соответственно если первым находится не тот человек, который нужен, в начисления заносится он. Подскажите как написать что-то вроде. Если человек не в том подразделении организации найти следующего.
Главным образом с найти следующего не получается. Не хватает синтаксиса. Не учился 1с-кой пользоваться


Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
Здесь нужно писать запрос и в запросе устанавливать отборы, которые вам нужны.

Оффлайн Besart

  • *****
  • Сообщений: 678
  • РЕПУТАЦИЯ: 142
  • КПД: 21%
  • Регистрация: 2012-12-10
    • Skype: artfa.a
  • Компания: Фрилансер
  • Профессия: Программист 8.1
а почему бы не найти таким образом
Сотрудник = Справочники.Сотрудники.НайтиПоНаименованию("...");
Если Сотрудник.ПодразделениеОрганизации = "НужноеПодразделение" и Сотрудник.ПометкаУдаления = Ложь Тогда
    //...
КонецЕсли;
если я вас правильно понял

Оффлайн korvindeson

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-04-16
  • Сайт: 
  • Профессия: Ученик 1С
а почему бы не найти таким образом
Сотрудник = Справочники.Сотрудники.НайтиПоНаименованию("...");
Если Сотрудник.ПодразделениеОрганизации = "НужноеПодразделение" и Сотрудник.ПометкаУдаления = Ложь Тогда
    //...
КонецЕсли;
если я вас правильно понял
В этом случае если подразделение или отметка не совпадает с условиями сотрудник будет просто игнорироваться. Приведу пример, список сотрудников:
Иванов Иван Иванович - с пометкой удаления
Иванов Иван Иванович - без пометки и нужного подразделения
Получается программа найдёт первого и не будет делать что надо. Можно конечно базу чистить от ненужного хлама. Но так как такие персонажи уже появились, значит будут и в будующем появляться. а постоянно поддерживать базу не комильфо. У меня была подобная беда в другом языке, там я решил так. В цикле находил нужного человека, если не соответствовало, переносил точку отчёта на +1 от найденного. Условия выхода найден нужный персонаж или закончились сотрудники. Таким образом перебераем всех и игнорируется условия только если действительно нету такого сотрудника, что в данном случае невозможно, ибо это дело проверяется, правда вне 1с, но надёжно. А вот в синтаксис 1с-ки не могу вогнать такую конструкцию, ибо знания о языке подобранны методом тыка.
Или может можно сделать что-то в таком духе
	
ЭлементСправочника = Справочники.СотрудникиОрганизаций;
Для Каждого ТекущаяСтрока Из ЭлементСправочника.НайтиПоНаименованию("Иванов Иван Иванович") Цикл
Сообщить(ТекущаяСтрока.Физлицо);
КонецЦикла;
Конкретно это не работает, но может что-то в таком формате можно сделать

Цитировать
Здесь нужно писать запрос и в запросе устанавливать отборы, которые вам нужны.
Звучит классно, можно ссылку на почитать?

Последний раз редактировалось: korvindeson; 03 Июл 2013, 22:36

Оффлайн Besart

  • *****
  • Сообщений: 678
  • РЕПУТАЦИЯ: 142
  • КПД: 21%
  • Регистрация: 2012-12-10
    • Skype: artfa.a
  • Компания: Фрилансер
  • Профессия: Программист 8.1
но может что-то в таком формате можно сделать
можно
      СтруктураДляОтбора = Новый Структура("Наименование", "Петров");
   ВыборкаСправочника = Справочники.Сотрудники.Выбрать(,,СтруктураДляОтбора);
   Пока ВыборкаСправочника.Следующий() Цикл
   Если ВыборкаСправочника.ПометкаУдаления = Ложь И ВыборкаСправочника.Подразделение = "Подраделение" Тогда
         Сообщить(ВыборкаСправочника);
   КонецЕсли;
       КонецЦикла;


Оффлайн korvindeson

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-04-16
  • Сайт: 
  • Профессия: Ученик 1С
Так действительно получается отсеить народ :lol: Однако только для пометки удаления работает. Проверил на базе. Если запустить код ниже то подразделение организации не отображается (сообщение не выводится вовсе, даже пустое, и так для любого персонажа)
    СтруктураДляОтбора = Новый Структура("Наименование", "Иванов Иван Иванович");
    ВыборкаСправочника = Справочники.СотрудникиОрганизаций.Выбрать(,,СтруктураДляОтбора);
    Пока ВыборкаСправочника.Следующий() Цикл
        Сообщить(ВыборкаСправочника.ПодразделениеОрганизации);
    КонецЦикла;
Добавлено: 04 Июл 2013, 14:17

Ещё и до поля сотрудники организаций не могу при такой выборке добраться. Ну, хоть направление понял, буду ковырять
Добавлено: 04 Июл 2013, 15:48

Вообщем, получилось. Но как-то криво. Хотя работает и слава богу
			Если Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(Лист.Cells(i , 1).Value, Истина).ПометкаУдаления = Ложь Тогда
НоваяСтрокаДОП.Сотрудник = Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(Лист.Cells(i , 1).Value, Истина);
Иначе
СтруктураОтбора = Новый Структура("Наименование", Лист.Cells(i , 1).Value);
Отбор = Справочники.СотрудникиОрганизаций.Выбрать(,,СтруктураОтбора);
Пока Отбор.Следующий() Цикл
Если Отбор.ПометкаУдаления = Ложь Тогда
НоваяСтрокаДОП.Сотрудник = Справочники.СотрудникиОрганизаций.НайтиПоКоду(Отбор.Код);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Последний раз редактировалось: korvindeson; 04 Июл 2013, 15:48. Причина: Объединение сообщений


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
alex0402
50 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
andron81_81
42 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal