8.х читаю из *.dbf а там что то с кодировкой

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

  1. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    По поводу 1й записи дело в том что надо еще после того как создали считать записи.

    т.е вот так

    Код:
    НабЗап = РегистрыСведений.ПаспортныеДанныеФизЛиц.СоздатьНаборЗаписей();
    НабЗап.Прочитать();
    
    Иначе что получается вы создаете пустой набор записей добавляее туда 1 запись и перезаписываете набор. А с прочитать. Вы создаете. считываете туда что есть уже, добавляете и все это записываете.

    Или как сказал коллега, то сначала делайсте создать набор записей а потом уже в цикле по всем физ лицам добавляйте паспортные данные (но этот способ как бы берет и заново перезаписывает все). с прочитать именно добавляет
  2. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    сделал так не помогает...

    зато записи в регистр пошли, только проблема в том что в базе куча дублей, надо проверку делать на дубли....
  3. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Если вы делали через набор записей, то у него есть возможность использовать методы "выгрузить" и "загрузить".

    Идея проста: перед тем, как записать набор, выгружаем его в таблицу значений, таблицу сворачиваем, чтобы убрать дубли, и результат загружаем обратно в набор. После этого - записываем.
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204

    Не совсем верно. В регистр сведений он бы не дал записать чистый дубль. В вашем случае я так понимаю отличается датами.

    Вот строчка НоваяЗапись.Период = ТекущаяДата(); не очень хороша. Используйте например какую то дату константу.

    По поводу свернуть то как я сказал чистых дублей нет иначе бы выдавл ошибку. Т.е если Физ лицо совпавает то даты расходятся. т.е

    11.11.09 Иванов
    11.12.09 Иванов

    И как вы свернете?


    У вас в коде написанно что это и так ссылка

    Код:
    ВидДока=Справочники.ДокументыУдостоверяющиеЛичность.НайтиПоРеквизиту("КодИМНС",Вид).Ссылка;
    
    огда просто НоваяЗапись.ДокументВид = ВидДока;
  5. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    наверное сделаю проверку во время записи в спр. физ лиц....
    вот он у меня выдаёт ошибку:
    {Форма.Форма(140)}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : ПИКУЗА ГАЛИНА АЛЕКСЕЕВНА : 07.04.2010 0:00:00 (Регистр сведений: Паспортные данные физического лица; Номер строки: 22)
    НабЗап.Записать();
    по причине:
    Запись с такими ключевыми полями существует! : ПИКУЗА .....
    мне бы разобратся как вид документа сделать, что то никак не допирает почему не работает...
    Тогда просто НоваяЗапись.ДокументВид = ВидДока; то же не работает...

    Код:
    ВидДока=Справочники.ДокументыУдостоверяющиеЛичность.НайтиПоРеквизиту("КодИМНС",Вид).Ссылка;
    
    
    в переменной ВидДока нет значения.... наверное что то не правильно сделал...
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну я же сказал что полный дубль не добавит.

    Запустите в отладчике и посмотрите какого типа у Вас ВидДока и вообще есть там что то я думаю что тут он не находит ничего
    ВидДока=Справочники.ДокументыУдостоверяющиеЛичность.НайтиПоРеквизиту("КодИМНС",Вид).Ссылка;
  7. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    ну так я и написал что там ничего нет. он ничего не находит, не понимаю как сделать что бы находил.
  8. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Если ничего не находит, сам собой напрашивается вопрос: а есть ли с таким видом в таком реквизите хотя бы один элемент справочника?
  9. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Не совсем понятна эта строка
    Код:
    Вид = строка("ИМНС"+ДокВид);
    
    Насколько я помню этот код всего 2 символа и просто значения зачем туда еще ИМНС плюсовать

    просто

    Код:
    Вид = строка(ДокВид);
    ВидДока=Справочники.ДокументыУдостоверяющиеЛичность.НайтиПоРеквизиту("КодИМНС",Вид).Ссылка;
    
  10. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    можно пример использования? а то вопрос по номерам ПФР остался открытым....
  11. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Код:
    НомерПфр=Формат(строкаПФР,"ЧН=0; ЧВН=");
    
    Используйте конструктор форматной строки. Правой кнопкой мыши по пустому полю и там есть пункт. ПРофункцию Формат в синтаксис помошнике
  12. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    пытаюсь отфарматировать серию паспорта... а то они у меня встречаются такого вида "2244" пытаюсь сделать пробел между ними...
    Код:
    пробовал так
    ДокСерия = Формат(Строка(ДокСерия), "ЧРГ=' '; ЧГ=2,2");
    и так
    ДокСерия = Формат(число(ДокСерия), "ЧРГ=' '; ЧГ=2,2");
    и вот так
    ДокСерия = Формат(ДокСерия, "ЧРГ=' '; ЧГ=2,2");
    
    
    
    
    
    
    
    
    не помогает, не форматирует...
  13. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    Код:
    ФизЛицо.СтраховойНомерПФР = (Строка(НомерПФР)+Строка(ПроверкаПФР));
    
    
    Попробывал вот так записать страховой номер, при открытии элемента справочника ругается что не может преобразовать к типу число...
    что можно сделать?
  14. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Что бы проще было напишите какие данные у Вас сейчас есть и что надо что бы было.

    например Номер ПФР =4567 код =34

    Надо 000-576-66 34
  15. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    номер ПФР: 892 982 829(но бывает и 8 знаков, лидирующего нуля нет)
    проверочный номер: 23 (но бывает и 1 знак без лидирующего нуля)
    ну и вот никак не могу добавлять ноль впереди и складывать вместе а затем записывать, пробовал соеденять как строку он сразу добавляет пробелы от чего теряется лидирующий ноль и элемент не открывается в справочнике, выдаёт ошибку преобразования к числу...
    ну и с паспортом беда, как не прбывал так и не получилось вставить пробел в серию(ну это хотя бы можно сделать руками, у меня не так много без пробела) но всё равно хотелось бы добить до конца....

    надо что бы получалось: 03546723401
    паспорт: вместо "3200" надо "32 00", но у меня есть и с пробелом, я как понимаю если число уже в правильном формате преобразования не будет....
  16. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    по серии паспорта можно так

    Код:
    СерияПаспорта=Лев(СерияПаспортаДБФ,2)+" "+Прав(СерияПаспортаДБФ,2);
    
  17. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
  18. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    По пфр попробуйте так что выводит в сообщить?

    Код:
    Пока СтрДлина(НомерПФР)<9 Цикл        
    НомерПФР = Формат("0"+НомерПФР,"ЧН=0; ЧВН=");
    Сообщить(Формат(НомерПФР,"ЧН=0; ЧВН="));
    КонецЦикла;
    
  19. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.756
    Симпатии:
    147
    Баллы:
    104
    00
    000
    0000
    00000
    000000
    0000000
    00000000
    000000000
    00
    000
    0000
    00000
    000000
    0000000
    00000000
    000000000
    вот такую пилу рисует....
    отладчиком посмотрел цифры присутствую, только не форматируются, ну и добавил проверку что бы ПФР<>0 а всё равно не помогло....
  20. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Перед тем как в цикл войти НомерПФР что в себе содержит и какого типа?

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