8.х Загрузить номера карт счетов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем TODD22, 4 май 2010.

  1. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    есть экселевская таблица(вернее несколько) мне надо перегрузить карт счета сотрудников. но столкнулся с проблемой что некоторые сотрудники задвоены как в пределах одной таблицы(сотрудник один, а карточек несколько в одном банке) так и в других таблицах. их немного, но из за этого у меня при записи в регистр появляется ошибка "запись с такими полями уже сущесвтует".
    вопрос в том как сделать проверку, записан сотрудник в регистр или нет... что то совсем не допирает.
    можно пример кода?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Зачем искать, когда можно делать Записать(Истина) и существующая запись будет перезаписана новой?
  3. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    почему в условии.... для того что бы вывести в окно сообщений тех у кого по 2 карты что бы кадровик разобрался... там просто у кого 2 карты, а у кого утеряна и тд...
    ну и сотрудников много... более 300...
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    значит делаем так:

    НаборЗаписей = РегистрыСведений.<Имярегистра>.создатьНаборЗаписей();

    НаборЗаписей.Отбор.<Сотрудник> = <ВыбранныйСотрудник>;
    если нужно, то уточняем отбор по измерениям регистра.
    НаборЗаписей.Прочитать();

    получишь записи удовлетворяющие отбору.
    Потом можно сделать

    ВременнаяТЗ = НаборЗаписей.Выгрузить();

    далее обрабатываешь ТЗ и запихиваешь опять в НаборЗАписей методом

    НаборЗаписей.Загрузить(ВременнаяТЗ);
    НаборЗаписей.записать(<перезаписать>) и рулишь записью в регистр: если нужно добавить записи, то ЛОЖЬ, если перезаписать существующие - ИСТИНА.
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    как в регистр добавляете? сразу все записи или по одной?

    Если по одной? то можете включить запись() в Попытка Исключение и в исключении прописать Сообщение

    Если скопом то после того как получили из Экселя сотрудника Используйте метод Регистра сведений ВЫБРАТЬ() и проверяете количество в выборке если больше нуля значит есть такое уже
  6. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    читаю не напрямую из экселя. сначало выгружаю в таблицу значений. уже из неё гружу в регистр. записываю через набор записей.
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    значит во временной ТЗ ищи дубли строк по контрагенту и выдавай вопрос юзеру - пусть разруливает.
  8. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    проблема в том что у меня не один документ экселя... а в ТЗ я их гружу по одному. и дубли могут быть как в пределах одной таблицы так и в разных.
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    По каким полям надо проверять? по Сотруднику и лицевому счету? или каким?
  10. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    по сотруднику...
    я хочу их перегрузить и вывести списком всех у кого есть дубли пусть кадровик сам смотрит.
    Код:
    Отбор = Новый Структура("ФизЛицо",Справочники.ФизическиеЛица.НайтиПоНаименованию(ФИО));
    ЗначениеРегистра = РегистрыСведений.ЛицевыеСчетаРаботниковОрганизации.Выбрать(Отбор);
    
    
    
    я вот так написал. но почему то он не отбирает. то есть ЗначениеРегистра пустое.
    Сотрудник в справочнике есть.
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    а если сделать через отбор в НабореЗаписей РС?
  12. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Я бы воообще после выгрузки в ТЗ, свернул ее по Сотрудникам (что бы в ТЗ дубли убрать), затем выгрузил оттуда колонку с сотрудниками.
    Написал бы запрос в РС с отбором ""Где сотрудник В (&СписокСотрудников)" а список сотрудников это и есть выгруженная колонка. И вооля у вас есть список людей которые и в ТЗ и в РС
  13. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    это как? можно пдробней?
    вобщем с запросами не пойдёт. слишком муторно. мне всего лишь надо проверять есть ли запись по конкретному сотруднику или нет. без излишеств ну и надо для одноразовой загрузки карт счетов. потому чем проще тем лучше... но вот никак не понимаю как сделать. не доходит до меня как проверить был ли записан конкретный сотрудник или нет. и уже исходя из этого продолжать выполнение дальше.
    Код:
    НабЗап = РегистрыСведений.ЛицевыеСчетаРаботниковОрганизации.СоздатьНаборЗаписей();
    НабЗап.Прочитать();
    НоваяЗапись = НабЗап.Добавить();
    НоваяЗапись.Банк = ЭлементыФормы.Банк.Значение.Ссылка;
    НоваяЗапись.Организация = ЭлементыФормы.Организация.Значение.Ссылка;
    НоваяЗапись.ФизЛицо = пФизЛицо;
    НоваяЗапись.НомерЛицевогоСчета = Номер;
    НабЗап.Записать();
    
    
    вот так записываю. что надо добавить или изменить? а то вообще голова не соображает.
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204

Поделиться этой страницей