Получить индекс по адресу 1с
Видеоролик выполнен в программе «1С:Зарплата и управление персоналом 8» версия 3.1.5.
ФИАС (Федеральная информационная адресная система) введена в соответствии с Федеральным законом от 28.12.2013 № 443-ФЗ, доступна на сайте ФНС, обеспечивает формирование, ведение и использование государственного адресного реестра.
Для идентификации адреса в этой системе используется уникальный номер адреса объекта в государственном реестре.
В программе «1С:Зарплата и управление персоналом 8» редакции 3 поддерживается возможность контроля корректности ввода адресов в соответствии с ФИАС. При этом адрес автоматически содержит уникальный номер адреса объекта, и если отчетность, например, передаваемая в ФСС в регионах «прямых выплат», подразумевает указание этого кода, то он подставляется автоматически.
Подключается проверка в меню Администрирование – Общие настройки - Виды контактной информации для выбранного вида адреса по ссылке Дополнительные настройки адреса. При установленном флаге Только российский адрес следует установить флаг Запрещать ввод некорректного адреса, выбрав вариант проверки по ФИАС.
Если вносимый в программу адрес не соответствует ФИАС, то предоставляется возможность самостоятельно проверить адрес на сайте ФИАС по одноименной ссылке.
В решениях «старого поколения» (программах «1С:Бухгалтерия 8» (ред. 2.0), «1С:Зарплата и управление персоналом 8» (ред. 2.5), «1С:Управление производственным предприятием 8» (ред. 1.3) и т. п.) и в продуктах «1С:Предприятие 7.7» по-прежнему доступен ручной ввод адресов, в том числе и уникального номера адреса объекта в государственном реестре. При этом не предусмотрены подсказки, автозаполнения и проверки корректности адресов. Уникальные коды адресов надлежит самостоятельно определить на сайте ФИАС и заполнить соответствующее поле. Единожды указанный адрес и его код сохраняются, и в дальнейшем используется в отчетах. При смене адреса сотрудника пользователям решений «старого поколения» придется самостоятельно указать код нового адреса.
Как переносить реквизиты выбранного элемента справочника в документ
Обращаюсь к вам за помощью! Ситуация такая: есть справочник с реквизитами, также есть документ, в.
У выбранного элемента нету реквизитов
Добрый день, Вот делаю заполнение таблицы, у ВидаВремени есть реквизит буквенный код, на толстой.
Автозаполнение реквизита ТЧ на основе выбранного элемента
Проблема такова. Имеется справочник со студентами, в котором имеются следующие реквизиты: ФИО.
Заполнить поля из выбранного элемента справочника
День добрый если несложно объяснить Своего ума не хватает. Есть справочник Прокат с реквизитами.
Вообще индекс можно получить так: Список.Индекс(тут элемент).
Элементы.Список.ТекущаяСтрока - разве не элемент возвращает? Мне выдаёт ошибку несоответствие типов Так он срабатывает только на клиенте и возвращает ДанныеФормыСтруктура
Александр321321, так на сервере нужно не через элемент обращатся, а через объект
Добавлено через 1 минуту
а ну да через объект не получить текущую строку
Добавлено через 1 минуту
а ну через выделенные строки можно получить индекс тогда наверное
Добавлено через 2 минуты
ну блин и элементы.Документы1.ТекущаяСтрока возвращает индекс
Так это понятно) Просто сейчас мне надо реализовать удаление и добавление элементов. А из-за того что я получаю непонятные цифры с "ТекущаяСтрока" вместо индекса, всё сбивается. Либо добавлять или удалять элемент, потом заново запускать форму ещё раз удалить/добавить и тд, то тогда всё отлично) Но это явно не ожидаемый функционал
Добавлено через 1 минуту
В том то и дело, что если я удалю второй элемент из 5, он удалится, а потом захочу удалить 5й элемент, выдаст ошибку выход за пределы массива, потому что Текущая строка будет возвращать 4, а настоящий индекс уже будет равняться 3м, а был равным 4м до удаления 2го элемента
Добавлено через 26 минут
Таким кодом я могу перебрать все элементы СЗ и получить их индексы, но при этом когда я перехожу по вкладкам, то индексы увеличиваются, в чём проблема то
После СЗ.Очистить() Очищаются значения, а индексы продолжаются, как их обнулить, мб в этом проблема
Есть адрес, записанный в произвольной форме. Надо выделить оттуда индекс (я так понимаю, шестизначное число). Есть мысли, каким алгоритмом это сделать? Или может есть какие стандартные средства?
(1) Dimkasan, разбить строку на подстроки по разделителям, выделить те, длина которых 6 символов, проанализировать являются ли эти 6 символов циферками, впринципе все.
Так а символы могут быть все написаны слитно? Или всё же есть некие разделители?
(2) alljoke, Да, слитно. Никаких разделителей нет.
(4) Dmitr033, да, именно то, что нужно, спасиб! Единственно, проверку на размерность в 6 знаков надо делать сразу, иначе если индекс будет последним, то программа не выдаст положительного результата :) А в остальном замечательно, спасибо. Я думал, как-нибудь через попытку конвертировать из строки в число, но у тебя лучше получилось.
(4) Dmitr033, хотя, тогда программа сразу выдаст значение при достижении 6 цифр, а вдруг это номер телефона какой-нибудь? Тогда надо в твоем коде прописать добавление пробела к концу строки перед анализом.
(6) Dimkasan, Ну я глубоко не задумывался, так представил себе алгоритм. Однако в телефонном номере нормальные люди выделяют скобками код города и вставляют разделитель дефис.
Если исходить из более формализованного подхода, то нормальные люди всегда индекс пишут в начале адреса и заканчивают запятой, такой вариант проверить еще проще.
если индекс будет последним, то программа не выдаст положительного результата
Там две проверки - если в любом месте строки встретиться шесть цифр подряд и за ними не цифра или конец строки - то это индекс. Как ты в начале написал, так и будет, хотя я не проверял - лениво.
(7) Dmitr033, а, слушай, это я туплю, невнимательный я. У тебя все правильно :) применил уже, работает.
Преподаватель 1С
Санкт-Петербург
зарплата от 100 000 руб. до 120 000 руб.
Временный (на проект)
Вот все знают, что если у реквизита поставить признак "индексировать", то создастся индекс, состоящий из 2-х колонок - самого реквизита и ссылки.
А если создать критерий отбора - то индекс создастся из одной колонки - только значения реквизита.
Зачем так сделано?
Ну и голосовалка, что лучше :)
ну и да - если поставить "с доп упорядочиванием" - то еще и поле представления туда запихаетсяЧтобы lookup не делать, чтобы получить ссылку из индекса.
В критерии отбора - ссылку из индекса получать не надо.
Попробуем плясать от этого?
а что значит индекс с дополнительным упорядочиванием?
(3) Концепция в (0) прекрасна.
Ей (концепцией) надо ткнуть какого-нибудь Одавида, который кричал про убогость индексов в 1С.
Гораздо чаще надо получить Ссылку на Контрагнета по ИНН, чем Наименование контрагента по ИНН.
Может там, при выполнении Критерия отбора - выбираются все поля записи и полюбому будет lookup, так нафига в индекс пихать Ссылку.
(7) Гораздо чаще нужно получать ссылку на контрагента по инн и кпп ))
Да, возможности Общих индексов на несколько полей не хватает в 1С, но да не критично.
А какой смысл делать отбор по значению реквизита, а затем еще и по ссылке внутри одного значения реквизита. Кажется, что лучше.
вот так работает:
exec sp_executesql N'SELECT
T1.IDTRef,
T1.IDRRef
FROM (SELECT
P1 AS IDTRef,
T2._IDRRef AS IDRRef
FROM _Document142 T2 WITH(NOLOCK)
WHERE EXISTS(
SELECT 1
FROM _Document142_VT1884 T3 WITH(NOLOCK)
WHERE T2._IDRRef = T3._Document142_IDRRef AND (T3._Fld1886_TYPE = @P2 AND T3._Fld1886_RTRef = @P3 AND T3._Fld1886_RRRef = @P4))
UNION ALL SELECT
@P5 AS IDTRef,
T4._IDRRef AS IDRRef
FROM _Document187 T4 WITH(NOLOCK)
WHERE EXISTS(
SELECT 1
FROM _Document187_VT3790 T5 WITH(NOLOCK)
WHERE T4._IDRRef = T5._Document187_IDRRef AND (T5._Fld3800_TYPE = @P2 AND T5._Fld3800_RTRef = @P3 AND T5._Fld3800_RRRef = @P4))
UNION SELECT
@P5 AS IDTRef,
T6._IDRRef AS IDRRef
FROM _Document187 T6 WITH(NOLOCK)
SELECT 1
FROM _Document187_VT3790 T7 WITH(NOLOCK)
WHERE T6._IDRRef = T7._Document187_IDRRef AND (T7._Fld3801_TYPE = @P2 AND T7._Fld3801_RTRef = @P3 AND T7._Fld3801_RRRef = @P4))
UNION ALL SELECT
@P6 AS IDTRef,
T8._IDRRef AS IDRRef
FROM _Document153 T8 WITH(NOLOCK)
WHERE T8._Fld7075_TYPE = @P2 AND T8._Fld7075_RTRef = @P3 AND T8._Fld7075_RRRef = @P4
UNION ALL SELECT
@P7 AS IDTRef,
T9._IDRRef AS IDRRef
FROM _Document161 T9 WITH(NOLOCK)
WHERE T9._Fld2657_TYPE = @P2 AND T9._Fld2657_RTRef = @P3 AND T9._Fld2657_RRRef = @P4
UNION ALL SELECT
@P8 AS IDTRef,
T10._IDRRef AS IDRRef
FROM _Document164 T10 WITH(NOLOCK)
WHERE T10._Fld2815_TYPE = @P2 AND T10._Fld2815_RTRef = @P3 AND T10._Fld2815_RRRef = @P4
UNION ALL SELECT
@P9 AS IDTRef,
T11._IDRRef AS IDRRef
FROM _Document165 T11 WITH(NOLOCK)
WHERE EXISTS(
SELECT 1
FROM _Document165_VT2894 T12 WITH(NOLOCK)
WHERE T11._IDRRef = T12._Document165_IDRRef AND (T12._Fld2896_TYPE = @P2 AND T12._Fld2896_RTRef = @P3 AND T12._Fld2896_RRRef = @P4))
UNION ALL SELECT
P10 AS IDTRef,
T13._IDRRef AS IDRRef
FROM _Document167 T13 WITH(NOLOCK)
WHERE T13._Fld2991RRef = @P4
UNION ALL SELECT
P11 AS IDTRef,
T14._IDRRef AS IDRRef
FROM _Document189 T14 WITH(NOLOCK)
WHERE EXISTS(
SELECT 1
FROM _Document189_VT3843 T15 WITH(NOLOCK)
WHERE T14._IDRRef = T15._Document189_IDRRef AND (T15._Fld3856_TYPE = @P2 AND T15._Fld3856_RTRef = @P3 AND T15._Fld3856_RRRef = @P4))
UNION ALL SELECT
@P3 AS IDTRef,
T16._IDRRef AS IDRRef
FROM _Document171 T16 WITH(NOLOCK)
WHERE T16._Fld3246_TYPE = @P2 AND T16._Fld3246_RTRef = @P3 AND T16._Fld3246_RRRef = @P4
UNION ALL SELECT
P12 AS IDTRef,
T17._IDRRef AS IDRRef
FROM _Document172 T17 WITH(NOLOCK)
WHERE T17._Fld3324_TYPE = @P2 AND T17._Fld3324_RTRef = @P3 AND T17._Fld3324_RRRef = @P4
UNION ALL SELECT
P13 AS IDTRef,
T18._IDRRef AS IDRRef
FROM _Document182 T18 WITH(NOLOCK)
WHERE EXISTS(
SELECT 1
FROM _Document182_VT3660 T19 WITH(NOLOCK)
WHERE T18._IDRRef = T19._Document182_IDRRef AND (T19._Fld3662_TYPE = @P2 AND T19._Fld3662_RTRef = @P3 AND T19._Fld3662_RRRef = @P4))) T1', N'P1 varbinary(4),@P2 varbinary(1),@P3 varbinary(4),@P4 varbinary(16),@P5 varbinary(4),@P6 varbinary(4),@P7 varbinary(4),@P8 varbinary(4),@P9 varbinary(4),P10 varbinary(4),P11 varbinary(4),P12 varbinary(4),P13 varbinary(4)', 0x0000008E, 0x08, 0x000000AB, 0xA3C51CAFF76F613D11E32B207D93C65A, 0x000000BB, 0x00000099, 0x000000A1, 0x000000A4, 0x000000A5, 0x000000A7, 0x000000BD, 0x000000AC, 0x000000B6
Читайте также: