Вход | Регистрация
 

Запись таблицы значений в регистр сведений

Запись таблицы значений в регистр сведений
Я
   LivingStar
 
30.10.19 - 10:20
Имеется регистр сведений. Непериодический, независимый. В нем физические лица и реквизиты по ним.
Есть таблица значений которую нужно записать в реквизиты найденных физических лиц.
Физические лица нужно искать по фио или по значению снилс, что все есть в таблице значений для загрузки.
Подскажите пожалуйста как правильно делать данную загрузку?

СНИЛС имеет формат 999-999-999 99.

Необходимо искать в регистре запись по снилс, если не найдена искать по фио.
 
 
   butterbean
 
1 - 30.10.19 - 10:24
в запросе делай соединение твоей таблицы значений и справочника физ лиц и в условие соединения СНИЛС = ... ИЛИ ФИО = ....
   ИУБиПовиц
 
2 - 30.10.19 - 10:28
(1) по ФИО я б не советовал, полные тезки то могут попасться (или изменившие фамилию)
   lEvGl
 
3 - 30.10.19 - 10:34
(2) + 1 - как за здрасти, даже пользователей в базе в актуальное состояние привести бывает затруднительно, т к кроме фио больше ничего нет
ну а так наборзаписей, отбор, условия есть/нет, изменение/добавление, что там сложного
   piter3
 
4 - 30.10.19 - 10:35
А еще фамилии могут менять,особенно девочки))
   hhhh
 
5 - 30.10.19 - 10:48
(0) запросом ищи
   LivingStar
 
6 - 30.10.19 - 11:08
(2) Такие условия задачи, искать по СНИЛС, это как я понял реквизит справочника Физический лица
СтраховойНомерПФР . Если не находится по снилс искать по ФИО. Это тоже реквизит справочника Физические лица,
ФИО.

(1) То есть параметром в запрос передавать таблицу значений? И там связывать со справочником ????
   hhhh
 
7 - 30.10.19 - 11:15
(6) да, передавай
   LivingStar
 
8 - 30.10.19 - 11:21
В консоле запросов нельзя передавать таблицу значения делая запрос в режиме предприятия?
   ДенисЧ
 
9 - 30.10.19 - 11:24
(8) Можно. От консоли зависит
   Mankubus
 
10 - 30.10.19 - 11:24
(8) доработай консоль так чтобы можно было или поищи уже готовую
   catena
 
11 - 30.10.19 - 11:25
(8)Смотря какая консоль
   hhhh
 
12 - 30.10.19 - 11:33
(8) вообще выбрось консоль, в этой задаче она тебе не понадобится. Консоль - это когда сложные запросы, куча соединений и так далее. А тут? выбрать физлицо по снилс?
   LivingStar
 
13 - 30.10.19 - 12:05
Подскажите пожалуйста, все ли в порядке с этим блоком?

    ТзДляЗагрузки = СоздатьТЗсXLSЛистов(ЗагружаемыйФайл);
    //

    Запрос       = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    Таблица.ФизическоеЛицо       КАК ФизическоеЛицо,
        |   Таблица.Рост                 КАК Рост,
        |   Таблица.РазмерОдежды         КАК РазмерОдежды,
        |   Таблица.РазмерОбуви          КАК РазмерОбуви,
        |   Таблица.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
        |   Таблица.РазмерПротивогаза    КАК РазмерПротивогаза,
        |   Таблица.РазмерРеспиратора    КАК РазмерРеспиратора,
        |   Таблица.РазмерПерчаток       КАК РазмерПерчаток,
        |   Таблица.РазмерРукавиц        КАК РазмерРукавиц,
        |   Таблица.СПИЛС                КАК СПИЛС
        |ПОМЕСТИТЬ ВТ_АнтропометрическиеСведения
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |
        /////////////////////////////////////////////////////////////

        |
        |ВЫБРАТЬ
        |    ФизическиеЛица.Ссылка                                 КАК ФизическоеЛицо,
        |    ФизическиеЛица.Фамилия                                 КАК Фамилия,
        |    ФизическиеЛица.Имя                                     КАК Имя,
        |    ФизическиеЛица.Отчество                             КАК Отчество,
        |    ФизическиеЛица.ФИО                                     КАК ФИО,
        |    ФизическиеЛица.СтраховойНомерПФР                    КАК СтраховойНомерПФР,
        |   ВТ_АнтропометрическиеСведения.Рост                 КАК Рост,
        |    ВТ_АнтропометрическиеСведения.РазмерОдежды         КАК РазмерОдежды,
        |    ВТ_АнтропометрическиеСведения.РазмерОбуви          КАК РазмерОбуви,
        |    ВТ_АнтропометрическиеСведения.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
        |    ВТ_АнтропометрическиеСведения.РазмерПротивогаза    КАК РазмерПротивогаза,
        |    ВТ_АнтропометрическиеСведения.РазмерРеспиратора    КАК РазмерРеспиратора,
        |    ВТ_АнтропометрическиеСведения.РазмерПерчаток       КАК РазмерПерчаток,
        |    ВТ_АнтропометрическиеСведения.РазмерРукавиц        КАК РазмерРукавиц,
        |    ВТ_АнтропометрическиеСведения.СПИЛС                КАК СПИЛС
        |
        |
        |ИЗ
        |    Справочник.ФизическиеЛица КАК ФизическиеЛица
        |       ЛЕВОЕ СОЕДИНЕНИЕ
        |    ВТ_АнтропометрическиеСведения КАК ВТ_АнтропометрическиеСведения
        |       ПО
        |   ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС
        |   ИЛИ ФизическиеЛица.ФИО = ВТ_АнтропометрическиеСведения.ФизическоеЛицо";
    Запрос.УстановитьПараметр("Таблица", ТзДляЗагрузки);
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Пока Выборка.Следующий() Цикл
            МенеджерЗаписи                         = РегистрыСведений.АнтропометрияФизЛиц.СоздатьМенеджерЗаписи();
            МенеджерЗаписи.ФизическоеЛицо        = Выборка.ФизическоеЛицо;
            МенеджерЗаписи.Рост                 = Выборка.Рост;
            МенеджерЗаписи.РазмерОдежды         = Выборка.РазмерОдежды;
            МенеджерЗаписи.РазмерОбуви          = Выборка.РазмерОбуви;
            МенеджерЗаписи.РазмерГоловногоУбора = Выборка.РазмерГоловногоУбора;
            МенеджерЗаписи.РазмерПротивогаза    = Выборка.РазмерПротивогаза;
            МенеджерЗаписи.РазмерРеспиратора    = Выборка.РазмерРеспиратора;
            МенеджерЗаписи.РазмерПерчаток       = Выборка.РазмерПерчаток;
            МенеджерЗаписи.РазмерРукавиц        = Выборка.РазмерРукавиц;
            МенеджерЗаписи.СПИЛС                = Выборка.СПИЛС;
            Попытка
                МенеджерЗаписи.Записать();
            Исключение
                Сообщить("Антропологические данные для физического лица " + Выборка.ФизическоеЛицо + " не записаны!");
            КонецПопытки;              
        КонецЦикла;
    КонецЕсли;
    
    //
   Ёпрст
 
14 - 30.10.19 - 12:09
(0) лень смотреть, проверять результат на Пустой не надо, если дальше есть выборка,

описывать все поля тоже, весь код можно заменить одной строкой на
ЗаполнитьЗначенияСвойств(...)
   Ёпрст
 
15 - 30.10.19 - 12:10
ну и , выбирать надо как минимум, различные записи в запросе, иначе регистр не запишется
   LivingStar
 
16 - 30.10.19 - 13:12
из за чего такая ошибка ???

в запросе (13)

    РезультатЗапроса = Запрос.Выполнить();
по причине:
{(3, 2)}: Тип не может быть выбран в запросе
<<?>>Таблица.ФизическоеЛицо       КАК ФизическоеЛицо,
   vicof
 
17 - 30.10.19 - 13:15
(16) Из-за того, что тип не может быть выбран в запросе
   LivingStar
 
18 - 30.10.19 - 13:15
Я выбираю поля

Запрос       = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    Таблица.ФизическоеЛицо       КАК ФизическоеЛицо,
        |   Таблица.Рост                 КАК Рост,
        |   Таблица.РазмерОдежды         КАК РазмерОдежды,
        |   Таблица.РазмерОбуви          КАК РазмерОбуви,
        |   Таблица.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
        |   Таблица.РазмерПротивогаза    КАК РазмерПротивогаза,
        |   Таблица.РазмерРеспиратора    КАК РазмерРеспиратора,
        |   Таблица.РазмерПерчаток       КАК РазмерПерчаток,
        |   Таблица.РазмерРукавиц        КАК РазмерРукавиц,
        |   Таблица.СПИЛС                КАК СПИЛС
        |ПОМЕСТИТЬ ВТ_АнтропометрическиеСведения
        |ИЗ
        |    &Таблица КАК Таблица
        |;
   piter3
 
19 - 30.10.19 - 13:16
(16) ты не умеешь готовить запросы с источником тз
   vicof
 
20 - 30.10.19 - 13:17
(19) И не только
   LivingStar
 
21 - 30.10.19 - 13:18
(19) подскажите как нужно пожалуйста
   LivingStar
 
22 - 30.10.19 - 13:19
(21+) Вроде все нормально, не вижу помехи.
   LivingStar
 
23 - 30.10.19 - 13:21
Не пойму в чем ошибка, какой тип, я выбираю поле таблицы, по коду все нормлаьно!
   piter3
 
24 - 30.10.19 - 13:21
(23) нет
   LivingStar
 
25 - 30.10.19 - 13:27
нетипизированные колонки у таблицы значений передаваемой в запрос
   Fram
 
26 - 30.10.19 - 13:30
(25) совершенно верно
   hhhh
 
27 - 30.10.19 - 13:31
(25) зачем же ты их нетипизировал? вот шутник.
   piter3
 
28 - 30.10.19 - 13:31
(25) Вот-вот
   LivingStar
 
29 - 30.10.19 - 13:40
Вопрос такой. По снилс связь понятна. А по ФИО? В справочнике полностью в этом поле фамилия, имя, отчество.
А с личта фамилия и инициалы. Как с этим быть?
   H A D G E H O G s
 
30 - 30.10.19 - 13:44
Вспышка слева!
 
 Рекламное место пустует
   hhhh
 
31 - 30.10.19 - 13:51
(29) спроси у заказчика
   LivingStar
 
32 - 30.10.19 - 14:06
по соединению, есть таблица в файле
нужно отобрать по ней, записи в справочнике, каким будет соединение????

То есть есть запись в справочнике в таблице для неё данные.
   hhhh
 
33 - 30.10.19 - 14:09
(32) читай (13) там соединение
   Кодер
 
34 - 30.10.19 - 14:15
Мне "СПИЛС" не понравилось. Букву добавь или исправь.
   LivingStar
 
35 - 30.10.19 - 14:29
(34 )Исправил, сам не понял от куда ошибка.

Подскажите по соединению, вот это не подойдет

 |ИЗ
        |    Справочник.ФизическиеЛица КАК ФизическиеЛица
        |       ЛЕВОЕ СОЕДИНЕНИЕ
        |    ВТ_АнтропометрическиеСведения КАК ВТ_АнтропометрическиеСведения
        |       ПО
        |   ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС
        |   ИЛИ ФизическиеЛица.ФИО = ВТ_АнтропометрическиеСведения.ФизическоеЛицо";

Так как нужно только те записи справочника, по которым есть записи в связываемой таблице.
   LivingStar
 
36 - 31.10.19 - 05:47
Есть ли у кого консоль запросов с возможностью передачи таблицы значений параметром ?
   catena
 
37 - 31.10.19 - 06:20
(36)Инструменты разработчика
   LivingStar
 
38 - 31.10.19 - 06:24
Скажите пожалуйста. Почему данный запрос отбирает 1 запись?
Как минимум должно быть 2. Я ввел тестовые данные. СНИЛС совпадает.

    Запрос.Текст = "ВЫБРАТЬ
                   |    Таблица.ФИОФизЛица КАК ФИОФизЛица,
                   |    Таблица.Рост КАК Рост,
                   |    Таблица.РазмерОдежды КАК РазмерОдежды,
                   |    Таблица.РазмерОбуви КАК РазмерОбуви,
                   |    Таблица.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
                   |    Таблица.РазмерПротивогаза КАК РазмерПротивогаза,
                   |    Таблица.РазмерРеспиратора КАК РазмерРеспиратора,
                   |    Таблица.РазмерПерчаток КАК РазмерПерчаток,
                   |    Таблица.РазмерРукавиц КАК РазмерРукавиц,
                   |    Таблица.СНИЛС КАК СНИЛС
                   |ПОМЕСТИТЬ ВТ_АнтропометрическиеСведения
                   |ИЗ
                   |    &Таблица КАК Таблица
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    ФизическиеЛица.Ссылка КАК ФизическоеЛицоСсылка,
                   |    ФизическиеЛица.Фамилия КАК Фамилия,
                   |    ФизическиеЛица.Имя КАК Имя,
                   |    ФизическиеЛица.Отчество КАК Отчество,
                   |    ФизическиеЛица.ФИО КАК ФИО,
                   |    ФизическиеЛица.СтраховойНомерПФР КАК СтраховойНомерПФР,
                   |    ВТ_АнтропометрическиеСведения.Рост КАК Рост,
                   |    ВТ_АнтропометрическиеСведения.РазмерОдежды КАК РазмерОдежды,
                   |    ВТ_АнтропометрическиеСведения.РазмерОбуви КАК РазмерОбуви,
                   |    ВТ_АнтропометрическиеСведения.РазмерГоловногоУбора КАК РазмерГоловногоУбора,
                   |    ВТ_АнтропометрическиеСведения.РазмерПротивогаза КАК РазмерПротивогаза,
                   |    ВТ_АнтропометрическиеСведения.РазмерРеспиратора КАК РазмерРеспиратора,
                   |    ВТ_АнтропометрическиеСведения.РазмерПерчаток КАК РазмерПерчаток,
                   |    ВТ_АнтропометрическиеСведения.РазмерРукавиц КАК РазмерРукавиц,
                   |    ВТ_АнтропометрическиеСведения.СНИЛС КАК СНИЛС
                   |ИЗ
                   |    Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_АнтропометрическиеСведения КАК ВТ_АнтропометрическиеСведения
                   |        ПО (ФизическиеЛица.СтраховойНомерПФР = ВТ_АнтропометрическиеСведения.СНИЛС)";
                  //|                ИЛИ ФизическиеЛица.ФИО = ВТ_АнтропометрическиеСведения.ФИОФизЛица)";
   catena
 
39 - 31.10.19 - 06:32
(38)Ты предлагаешь поверить тебе на слово во всех трех утверждениях? Я 1С больше доверяю, если отбирает 1 запись, значит должна быть одна.
   LivingStar
 
40 - 31.10.19 - 06:50
(39) Там 2 записи вбиты с листа и снилс.
Одну запись отбирает, другую нет.
КАК????? Я теряюсь в догадках, и в понимании что поправить (
Запрос вроде же нормальный?
   LivingStar
 
41 - 31.10.19 - 06:52
Нормальная ли вот такая запись в регистр сведений?
Не продублирует, не перетрет нужного?

                МенеджерЗаписи                         = РегистрыСведений.АнтропометрияФизЛиц.СоздатьМенеджерЗаписи();
                МенеджерЗаписи.ФизическоеЛицо        = Выборка.ФизическоеЛицоСсылка;
                //

                МенеджерЗаписи.Рост                 = Выборка.Рост;
                МенеджерЗаписи.РазмерОдежды         = Выборка.РазмерОдежды;
                МенеджерЗаписи.РазмерОбуви          = Выборка.РазмерОбуви;
                МенеджерЗаписи.РазмерГоловногоУбора = Выборка.РазмерГоловногоУбора;
                МенеджерЗаписи.РазмерПротивогаза    = Выборка.РазмерПротивогаза;
                МенеджерЗаписи.РазмерРеспиратора    = Выборка.РазмерРеспиратора;
                МенеджерЗаписи.РазмерПерчаток       = Выборка.РазмерПерчаток;
                МенеджерЗаписи.РазмерРукавиц        = Выборка.РазмерРукавиц;
                Попытка
                    МенеджерЗаписи.Записать();
                Исключение
                    Сообщить("Антропологические данные для физического лица " + Выборка.ФизическоеЛицо + " не записаны!");
                КонецПопытки;
   catena
 
42 - 31.10.19 - 06:58
(41)У тебя нет тестовой копии, чтобы проверять там? Или это такой двойной контроль?
Непериодический регистр по измерениям продублировать невозможно.
   LivingStar
 
43 - 31.10.19 - 07:01
(42) Какой тестовой копии??? А я в какой работаю????
Она подключена к хранилищу. Могу и копию сделать. Зачем?
Я пытаюсь понять, нормальна ли такая запись (41)?
   catena
 
44 - 31.10.19 - 07:02
(43)Ну так запусти код и проверь, не перетрет ли, не продублирует!!! Что за привычка использовать форум, как отладчик?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.