|
Склонения объектов (ЗУП) | ☑ | ||
---|---|---|---|---|
0
Масянька
15.03.22
✎
13:14
|
День добрый!
В ЗУП есть общий модуль СклонениеПредставленийОбъектов + РС со склонениями объектов. Связка объекта и РС со склонениями - по хэшу. Вопрос: почему могут не совпадать хэши? Спасиба. |
|||
1
Жан Пердежон
15.03.22
✎
13:16
|
Потому что разные аргументы.
Ваш Кэш. |
|||
2
Жан Пердежон
15.03.22
✎
13:16
|
*кэп
|
|||
3
Масянька
15.03.22
✎
13:16
|
(1) Аргументы чего? Какие?
|
|||
4
Жан Пердежон
15.03.22
✎
13:18
|
Аргументы функции
|
|||
5
Фрэнки
15.03.22
✎
13:19
|
(3) хэш-функции.
Что такое сам хэш , в курсе? |
|||
6
Масянька
15.03.22
✎
13:19
|
В документе таб. часть.
В таб. части 2 (два) сотрудника. У одного сотрудника - норм (хэш идентичен), у другого - индейская изба. |
|||
7
Масянька
15.03.22
✎
13:19
|
(4) См. (6).
|
|||
8
Масянька
15.03.22
✎
13:20
|
(5) Погуглила :)
|
|||
9
Масянька
15.03.22
✎
13:22
|
Аргумент - фамилия сотрудника (из регистра).
|
|||
10
Масянька
15.03.22
✎
13:24
|
Причем такая засада далеко не у всех сотрудников.
|
|||
11
Масянька
15.03.22
✎
13:25
|
При удалении строки склонения (из регистра) и записи новой - хэш формируется старый.
|
|||
12
Масянька
15.03.22
✎
14:08
|
Если из таб. части провалиться в сотрудника, а оттуда в физика - хэш выдает тот же, что и в регистре.
|
|||
13
Масянька
15.03.22
✎
14:10
|
Кусок из печ. формы:
КадровыеДанные = ПолучитьКадровыеДанныеСотрудника(СсылкаНаДокумент, ДанныеПоСотруднику.Сотрудник); ПолСотрудника = ?(ДанныеПоСотруднику.Сотрудник.Пол = Перечисления.ПолФизическогоЛица.Мужской, 1, 2); Сообщить("0 - " + СокрЛП(ДанныеПоСотруднику.Сотрудник.Фамилия) + "/"); ФамилияСотрудника = МодульСклонениеПредставленийОбъектов.ПросклонятьФИО(СокрЛП(ДанныеПоСотруднику.Сотрудник.Фамилия), 3, , ПолСотрудника); Кусок общего модуля склонения: ИмяПадежа = СоответствиеПадежей().Получить(Падеж); ПроверитьПараметрПадеж(Падеж, "СклонениеПредставленийОбъектов.Просклонять"); Сообщить("1 - " + Представление + " - " + Падеж + " - " + Объект + " - " + ПараметрыСклонения); СтруктураСклоненияИзРегистра = СклоненияИзРегистра(Представление, Объект); Сообщить("2 - " + СтруктураСклоненияИзРегистра); Сообщить("2 - " + СтруктураСклоненияИзРегистра); - выдает пусто (неопределенно). Где косяк? |
|||
14
Gucci76
15.03.22
✎
14:22
|
Раньше была ошибка, что переводили в верхний регистр и искали ХЭШ
|
|||
15
Serg_1960
15.03.22
✎
14:28
|
(9) Аргумент - ФИО физического лица.
СклонениеПредставленийОбъектов.ПриЗаписиФормыОбъектаСклонения(ЭтотОбъект, ФизическоеЛицо.ФИО, ФизическоеЛицо.Ссылка, ПараметрыСклонения); |
|||
16
Gucci76
15.03.22
✎
14:30
|
Кстати, сегодня была ошибка в функции склонения
СклонениеПредставленийОбъектов.ПросклонятьФИО(Объект.Сотрудник.ФизическоеЛицо.Наименование,2,Объект.Сотрудник.ФизическоеЛицо,Объект.Сотрудник.ФизическоеЛицо.Пол); Эта функция выдавала ошибку. |
|||
17
Gucci76
15.03.22
✎
14:31
|
Ошибка была у сотрудника, у которого нет склонения в регистре сведений (ред 3.1.18.396). Включена возможность склонять Морфером.
|
|||
18
Масянька
15.03.22
✎
14:34
|
(14) Не получается.
А обратно разложить вариант? |
|||
19
Масянька
15.03.22
✎
14:37
|
(17) Он как раз и склоняет морфером, потому что не находит запись в регистре. А она (запись) есть.
|
|||
20
Масянька
15.03.22
✎
14:38
|
(15) Еще раз: в таб. части 2 сотрудника. Оба раза передается фамилия (без пробелов). У одного сотрудника - норм, второго не находит.
|
|||
21
hhhh
15.03.22
✎
14:58
|
(20) показывайте уже вашу запись
|
|||
22
Serg_1960
15.03.22
✎
15:21
|
(20) Ещё раз :) модуль формы записи справочника "Сотрудники":
Процедура ПриСозданииНаСервере() СклонениеПредставленийОбъектов.ПриСозданииНаСервере(ЭтотОбъект, ФизическоеЛицо.ФИО, "ФизическоеЛицо"); Процедура ОбработкаОповещения() Если ИмяСобытия = "ИзмененЗаголовокФормыСотрудника" Тогда ПараметрыСклонения = ПараметрыСклонения(ФизическоеЛицо); СклонениеПредставленийОбъектовКлиент.ПросклонятьПредставление(ЭтотОбъект, ФизическоеЛицо.ФИО, ПараметрыСклонения); Процедура ПриЗаписиНаСервере() ПараметрыСклонения = ПараметрыСклонения(ФизическоеЛицо); СклонениеПредставленийОбъектов.ПриЗаписиФормыОбъектаСклонения(ЭтотОбъект, ФизическоеЛицо.ФИО, ФизическоеЛицо.Ссылка, ПараметрыСклонения); Процедура Склонения() ПараметрыСклонения = ПараметрыСклонения(ФизическоеЛицо); СклонениеПредставленийОбъектовКлиент.ПоказатьСклонение(ЭтотОбъект, ФизическоеЛицо.ФИО, ПараметрыСклонения); Процедура ФИОПриИзменении(Элемент) ПараметрыСклонения = ПараметрыСклонения(ФизическоеЛицо); СклонениеПредставленийОбъектовКлиент.ПросклонятьПредставление(ЭтотОбъект, ФизическоеЛицо.ФИО, ПараметрыСклонения); |
|||
23
Serg_1960
15.03.22
✎
15:23
|
PS:может быть всё таки стоит покопать в сторону сотрудников и физических лиц этих сотрудников?
|
|||
24
Масянька
15.03.22
✎
15:25
|
(23) А (11) и (12) - это не копание?
(22) В (11) полностью проиграла процесс склонения. |
|||
25
Serg_1960
15.03.22
✎
16:23
|
(24) Имхо, контрольная сумма - от полного ФИО физлица (фамилия имя отчество полностью). Поэтому поиск только по фамилии всегда выдаёт СтруктураСклоненияИзРегистра = Неопределено.
|
|||
26
Масянька
15.03.22
✎
16:37
|
(25) А почему тогда у одного сотрудника работает, а у другого нет? В обоих случаях фамилии передаются.
|
|||
27
Gucci76
15.03.22
✎
16:42
|
А в регистре сведений "Склонения...." смотрели что заведено?
|
|||
28
Масянька
15.03.22
✎
17:22
|
(27) В РС фамилия не склоняется, а имя и отчество склоняются.
А в печати - фамилия склоняется, а не должна. |
|||
29
Serg_1960
15.03.22
✎
17:46
|
У меня фамилия склоняется. Если СтруктураСклоненияИзРегистра = Неопределено, то алгоритм далее продолжает перебирает различные методы склонения и в конце концов вызывается ПолучитьСклоненияСтроки()
|
|||
30
Масянька
16.03.22
✎
08:33
|
(29) Именно так и работает.
В регистре не нашло. И очень непонятно, зачем хэш, если объект? |
|||
31
Serg_1960
16.03.22
✎
10:50
|
(30) Нуу... например, у человека может изменяться ФИО.
|
|||
32
Gucci76
16.03.22
✎
13:57
|
(31) В этом случае должно склонение измениться.
|
|||
33
Масянька
16.03.22
✎
14:03
|
(31) Я написала свою функцию (связка с РС по полю "Объект") - отрабатывает всё тютелька в тютельку.
Измениться может до фига всего. Зачем нужен кэш, когда есть объект?! |
|||
35
Serg_1960
16.03.22
✎
15:04
|
(33) Объект - один и тот же, а хэши - разные. Поэтому у регистра два измерения. Что тут не понятно?
PS: тут трое в непонятках: Я, Вы и конфигурация :)) |
|||
36
Gucci76
16.03.22
✎
15:05
|
(33) Я тоже об этом подумал, когда 1С ошибку сделала при печати сведений для БЛ (та ошибка была, что хеш искали от верхнего регистра)
А вы попробуйте отладчиком проверить исходные параметры по поиску ХЕШа. Сохраните одно первое значение параметра , потом когда формируете со вторым параметром напишите типа того СохраненноеЗначениеПервогоПАраметра = ЗначениеВторогоПараметра Если Истина тогда даже не знаю что делать, а если ложь анализировать Вдруг английская буква где или еще чего |
|||
37
Gucci76
16.03.22
✎
15:06
|
Если туманно объяснил, то постараюсь подробнее
|
|||
38
Масянька
16.03.22
✎
15:17
|
(36) Я поняла всё.
У нас - перенос из УПП. Поэтому даже не хочу лезть анализировать... Там такого г..на напереносили... В данной конкретной задаче - странно то, что у одного сотрудника все норм отрабатывает, а у другого нет. Причем, эта не первый (и не последний) раз. В общем, я написала свое склонение: из РС по объекту, если результат пустой - встроенным механизмом (МодульСклонениеПредставленийОбъектов.ПросклонятьФИО). Вроде работает. |
|||
39
Фантазер
16.03.22
✎
19:06
|
Если вы так глубоко копали - подскажите как в функции Склонять Объект - убрать первую букву в верхнем регистре? Склоняем Подразделения, уже в РС Склонений прописали их с маленькой буквы - всё равно выдает их с большой. Мог бы я программно убрать, но есть подразделения и абревиатуры, а есть составные
|
|||
40
Масянька
17.03.22
✎
08:52
|
(39) Попробуйте: общий модуль СклонениеПредставленийОбъектов, процедура ПреобразоватьФИОДляСклонения.
Но я не уверена - там много чего понаписали... Но склонение и преобразование в этом общем модуле. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |