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

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

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

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

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

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

в запросе (13)

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

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

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

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

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

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

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

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