Имя и отчество сотрудника во внешней обработке

1. wetka 13.11.12 00:36 Сейчас в теме
Всем привет! Я не программист, но мне нужна помощь. На работе установлена: 1С Предприятие 7.7, конфигурация "Расчет зарплаты в бюджетных организациях". Есть внешняя обработка Штатная книга, в которой формируются полностью: фамилия, имя и отчество. Просмотрела обработку через Конфигуратор, но не могу уловить - что нужно изменить в Модуле или что необходимо добавить, чтобы формировались фамилия и инициалы. Если кто-то может проконсультировать, буду благодарна.
Внешнюю обработку прилагаю
Прикрепленные файлы:
Штатная книга.ert
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. Timesoft 271 15.11.12 17:18 Сейчас в теме
+15 два раза один и тот же кусок использовать конечно не красиво, можно вынести в функцию, но работать и так будет....

А вообще Ваша конфа - это модификация ЗиКа ?
В ЗиКе есть вот такая функция
//******************************************************************************
// глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество)
//
// Параметры:
// Объект - элемент справочника Сотрудники или Строка
// Фамилия - в этот параметр будет записана фамилия сотрудника
// Имя - в этот параметр будет записано имя сотрудника
// Отчество - в этот параметр будет записано отчество сотрудника
//
// Возвращаемое значение:
// фамилия и инициалы сотрудника
//
// Описание:
// разбирает "наименование" сотрудника по Фамилия, Имя, Отчество
// и возвращает фамилию и инициалы сотрудника
//

Тогда, если у Вас такая функция есть (это глобальный модуль), можно сделать проще
ПечТекстСтрокиВывод=ТЗППС.Сотрудник; заменить на
ПечТекстСтрокиВывод=глФамилияИмяОтчество(ТЗППС.Сотрудник);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 2791 9 13.11.12 01:41 Сейчас в теме
у меня вашей конфигурации нет, но скорей всего в справочнике сотрудник фио вносится в одном поле.
В отчет я внесла изменения, где выделила инициалы. Попробуйте.
Прикрепленные файлы:
Штатная книга.ert
3. 2791 9 13.11.12 17:17 Сейчас в теме
Что с отчетом пробовали?
5. wetka 13.11.12 21:15 Сейчас в теме
(3) 2791, сформировала отчет. Инициалы есть. В этом всё хорошо. Но есть ошибки:
1. "Подразделение", "Должность" и "Категория персонала" обращаются к одному и тому же - "Выбор справочника", где каждый раз приходится открывать необходимый справочник. Нет непосредственного обращения к нужному справочнику.
2. Дата рождения не формируется. Появляется запись: "Значение не представляет агрегатный объект (ДатаРождения)", а в самом отчете вместо даты запись во всех строках: "ТЗППС.Сотрудник.ДатаРождения"
4. brunet 40 13.11.12 19:32 Сейчас в теме
Функция ФамилияИО(ПолнИмя_) Экспорт
//Выделяет из полного имени фамилию и инициалы
// позиция первого пробела
Если ТипЗначенияСтр(ПолнИмя_)="Справочник" тогда
ПолнИмя=ПолнИмя_.Наименование;
иначе
ПолнИмя=ПолнИмя_;
КонецЕсли;
ПервПроб = Найти(ПолнИмя," ");
Если ПервПроб=0 Тогда
Возврат ПолнИмя;
Иначе
Фамилия = Лев(ПолнИмя,ПервПроб);
ИО = Сред(ПолнИмя,ПервПроб+1);
ИО = СокрЛ(ИО);
Имя = Лев(ИО,1)+".";
// позиция второго пробела
ВтПроб = Найти(ИО," ");
Если ВтПроб=0 тогда
//Если ПолнИмя на самом деле имеет структуру Иванов И.И.
ВтПроб = Найти(ИО,".");
КонецЕсли;
Если ВтПроб=0 Тогда
Возврат Фамилия+Имя;
Иначе
Возврат Фамилия+Имя+" "+Лев(СокрЛ(Сред(ИО,ВтПроб+1)),1)+".";
КонецЕсли;
КонецЕсли;
КонецФункции
10. wetka 14.11.12 21:27 Сейчас в теме
(4) brunet, к сожалению, код в нашей конфигурации не работает. Пыталась что-то изменить, но без определенных знаний программирования в 1С7.7 ничего не получается. Буду искать дальше пути решения проблемы.
14. Pari 15.11.12 14:58 Сейчас в теме
(10) wetka, проверьте такой вариант (прикреплен). Если возникнет та же проблема, что и в (5)п.1, тогда исправите так же (указать тип справочника в диалоге). Запуск через Файл - Открыть. Если всё в порядке, тогда переименуете прикрепленный файл и замените им Вашу обработку.
Прикрепленные файлы:
Штатная книга нов.ert
17. wetka 16.11.12 20:00 Сейчас в теме
(14) Pari, спасибо, получилось. Правда, пришлось опять в Диалоге исправлять типы справочников. Вашу Функцию переместила в другое место - перед Процедурой Сформировать, т.к. очень медленно формировался отчет.
6. wetka 13.11.12 21:33 Сейчас в теме
1. Исправила - указала тип справочника в Диалоге.
7. 2791 9 13.11.12 21:34 Сейчас в теме
А отчет который выкладывали нормально формировался?
8. wetka 13.11.12 21:40 Сейчас в теме
(7) 2791, да, нормально. Дата рождения формировалась в формате хх.хх.хххх. Сравнила две обработки До и После - изменений не нашла, которые могли повлиять на Дату рождения.
9. Timesoft 271 13.11.12 22:48 Сейчас в теме
(8) когда отчёт правится в другой конфе - слетают типы, которых в ней нет (два таких Вы уже нашли в (6), наверно есть ещё). Возьмите свой первоначальный и перенесите туда изменения алгоритма из (2)
11. wetka 14.11.12 21:32 Сейчас в теме
(9) Timesoft,, увы, всё то же самое: первоначальный + алгоритм из (2). Ищу решение проблемы...
12. Timesoft 271 14.11.12 22:07 Сейчас в теме
(11) wetka, Конфы Вашей нет под рукой, завтра постараюсь найти и посмотреть... Если до обеда не отпишусь - up-ните ветку
15. Timesoft 271 15.11.12 17:13 Сейчас в теме
(11) конфу такую не нашёл, но вобщем-то и так ясною
Смотрите:
в первоначальном варианте - строка 172
ТЗППС.Сотрудник = Справочник.ТекущийЭлемент();

то есть там ССЫЛКА на элемент справочника, далее в таблице есть
"ТЗППС.Сотрудник.ДатаРождения" ,
где ДатаРождения - соответствующий реквизит элемента Сотрудник.

В исправленном варианте - строка 191
ТЗППС.Сотрудник= строка(фамилия+" "+имя+". "+отчество+".");
то есть это уже НЕ ссылка на элемент, а просто строка с ФИО сотрудника.
Естественно при обращении к
"ТЗППС.Сотрудник.ДатаРождения" возникает ошибка - никакого реквизита ДатаРождения у строки быть не может.

Что сделать?

Возьмите свой первоначальный отчёт,
найдите в модуле следующую строку
ПечТекстСтрокиВывод=ТЗППС.Сотрудник; (она двжды встречается)
и замените её на следующий текст

ПолноеИмя=Строка(ТЗППС.Сотрудник);
ПолноеИмя=СокрЛП(ПолноеИмя);
ПозицияПервогоПробела = Найти(ПолноеИмя, " ");
Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела);
Фамилия=СокрЛП(Фамилия);
ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1);
ИмяОтчество = СокрЛП(ИмяОтчество);
ПозицияТочки=Найти(ИмяОтчество,".");
ПозицияВторогоПробела = Найти(ИмяОтчество, " ");
Имя = Сред(ИмяОтчество,1, ПозицияВторогоПробела-1);
Имя=лев(Имя,1);
Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1);
Отчество = лев(Отчество,1);
ПечТекстСтрокиВывод=строка(фамилия+" "+имя+". "+отчество+".");

алгоритм взят из (2).
Vovus; wetka; +2 Ответить
13. Maximysis 9 15.11.12 12:03 Сейчас в теме
16. Timesoft 271 15.11.12 17:18 Сейчас в теме
+15 два раза один и тот же кусок использовать конечно не красиво, можно вынести в функцию, но работать и так будет....

А вообще Ваша конфа - это модификация ЗиКа ?
В ЗиКе есть вот такая функция
//******************************************************************************
// глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество)
//
// Параметры:
// Объект - элемент справочника Сотрудники или Строка
// Фамилия - в этот параметр будет записана фамилия сотрудника
// Имя - в этот параметр будет записано имя сотрудника
// Отчество - в этот параметр будет записано отчество сотрудника
//
// Возвращаемое значение:
// фамилия и инициалы сотрудника
//
// Описание:
// разбирает "наименование" сотрудника по Фамилия, Имя, Отчество
// и возвращает фамилию и инициалы сотрудника
//

Тогда, если у Вас такая функция есть (это глобальный модуль), можно сделать проще
ПечТекстСтрокиВывод=ТЗППС.Сотрудник; заменить на
ПечТекстСтрокиВывод=глФамилияИмяОтчество(ТЗППС.Сотрудник);
18. wetka 16.11.12 20:18 Сейчас в теме
(16) Timesoft, рассмотрела последний вариант и заменила только последнюю строку
ПечТекстСтрокиВывод=ТЗППС.Сотрудник; на
ПечТекстСтрокиВывод=глФамилияИмяОтчество(ТЗППС.Сотрудник);

Всё заработало. Вероятно, Вы правы по поводу модификации ЗиКа.
Есть еще вопрос. Если в Диалоге сделать флаг "ФИО полностью" с Идентификатором Тип4 и Тип4=1 при формировании отчета, то каким должен быть алгоритм, чтобы флаг указывал на Полное Имя, а его снятие давало только Фамилию и Инициалы?
20. Timesoft 271 17.11.12 16:50 Сейчас в теме
(18) wetka,

Вместо
ПечТекстСтрокиВывод=глФамилияИмяОтчество(ТЗППС.Сотрудник);

вставим следующую строку
ПечТекстСтрокиВывод=?(Тип4=1,ТЗППС.Сотрудник,глФамилияИмяОтчество(ТЗППС.Сотрудник));
при установленном флаге будет работать Ваш предыдущий вариант ТЗППС.Сотрудник, а при снятом - функция глФамилияИмяОтчество
21. wetka 17.11.12 18:40 Сейчас в теме
(20) Timesoft, всё отлично! То, что нужно.
И еще вопрос по штатке. Как заменить в "ВидМР": слова "Штатный" и "Внутреннее совместительство", которые появляется в графе "Вид места работы", на слова "Основной" и "Внутр. совместитель" соответственно?
22. Timesoft 271 17.11.12 20:52 Сейчас в теме
(21) заполняется тут
ТЗППС.ВидМР=ТаблицаПриказов.Приказ.ВидМестаработы;

Вот всё же конфа Ваша - не совсем ЗиК - нет в ЗиК ВидМестаработы, поэтому поступим не совсем красиво, но думаю сработает.

Найдём строку и добавим после неё

если СокрЛП(ТЗППС.ВидМР) = "Штатный" Тогда
ТЗППС.ВидМР = "Основной";
ИначеЕсли СокрЛП(ТЗППС.ВидМР) = "Внутреннее совместительство" Тогда
ТЗППС.ВидМР = "Внутр. совместитель";
КонецЕсли;
23. wetka 17.11.12 22:17 Сейчас в теме
(22) Timesoft, добавила, все отображается корректно. По аналогии сделала ставку вместо "0.5" -> "0,50" и т.п.(желание моего начальника ОК).
Подскажите, в какой литературе по 1с77 можно посмотреть коды отображения шрифтов? Мне нужно фамилию в штатке выделить жирным шрифтом и сделать заглавными буквами.
У нас установлена 1С Предприятие 7.7 для SQL (7.70.027).
Компоненты: Бухгалтерский учет, Оперативный учет, Расчет и Управление распределенными ИБ.
24. Timesoft 271 17.11.12 22:56 Сейчас в теме
(23) wetka, да в ЖКК всё это есть
Жирный шрифт можно получить следующим образом
правой кнопкой щелкаем на нужной ячейке в таблице -> свойства - закладка Шрифт
А вот с заглавными буквами по-другому

Есть такая функция
Врег(<?>)
Синтаксис:
Врег(<Строка>)
Назначение:
Возвращает строку, полученную из исходной преобразованием всех символов в верхний регистр.
Параметры:
<Строка> - исходная строка.

Соответственно, можно в ячейке заменить
ТоЧтоВыводится на ВРег(ТоЧтоВыводится)
25. wetka 17.11.12 23:24 Сейчас в теме
(24) Timesoft, дело в том, что мне нужно выделить только ФАМИЛИЮ. Если сделать в ячейке, то выделяется полностью и фамилия, и имя, и отчество. Поскольку изначально в конфигурации все вносится в одну строку, то выделить отдельно мне не представляется возможным. Только полезным советом.
19. wetka 16.11.12 20:22 Сейчас в теме
Случайная ошибка в закрытии вопроса!
26. Timesoft 271 17.11.12 23:45 Сейчас в теме
Насколько я помню, выводите Вы фамилию и инициалы. То есть хотите фамилию жирным шрифтом, а ио обычным ? Думаю, не получится....
Только разделять на отдельные ячейки
27. wetka 18.11.12 11:50 Сейчас в теме
(26) Timesoft, только при формировании полного имени нужно выделение фамилии. Собственно говоря, я так и думала, что отдельно выделить нельзя. В 8-ке, наверное, было бы проще это сделать, т.к. там все вводится в отдельных ячейках.
28. Timesoft 271 18.11.12 14:14 Сейчас в теме
Ну собственно говоря, можно разделить ячейку на две. В однй вывести фамилию, в другую - И.О. и поставить в первой жирный шрифт. Проблемка будет в форматировании (И.О. будет начинаться на одном уровне с разным пробелом от фамилии).
30. wetka 20.11.12 21:46 Сейчас в теме
(28)
Ну собственно говоря, можно разделить ячейку на две

Если бы я знала как это сделать...Знаний нет, только на примерах могу что-то сотворить.
29. YNik 18.11.12 14:20 Сейчас в теме
Если фамилию выделить заглавными буквами, она и так хорошо будет выделяться без жирности.
31. wetka 20.11.12 23:16 Сейчас в теме
Есть еще вопрос по объединению ячеек одного и того же элемента. Прикрепила таблицу с примерами и комментарием. Ищу решение...Нужна подсказка...
Прикрепленные файлы:
Таблица к штатной книге.mxl
32. Timesoft 271 23.11.12 10:48 Сейчас в теме
(31) wetka,
Посмотрел....
У Вас предполагается всегда две строки - если сотрудник работает только на основной, то вторая - пустая ?

Тогда варианты следующие.
1. Создаем секцию из двух строк, повторяющую строки с выводом информации (у вас это строка из Секции5). Для нужных ячеек (ФИО и Датарождения) выделяем ячейки первой и второй строки и объединяем их (Таблица - объединить)
В ячейках этой секции пропишем не прямые ссылки на ТЗППС, а переменные. Ну то есть вместо ТЗППС.Должность будем выводить в первой строке Должность_1, во второй Должность_2 и т.д.
При переборе ТЗППС для вывода присвоим переменным первой строки значения (Должность_1 = ТЗППС.Должность и т.д.)
Перейдём к следующей строке. Если сотрудник не изменился - Присвоим значения переменным второй строки (Должность_2 = ТЗППС.Должность и т.д.), если изменился - значит, у выбранного сотр нет совмещения - присвоим переменным второй строки пустые значения (Должность_1 = "" и т.д.). Выведем секцию....
Не забудем проверить - если сотр.уже изменился - переходить дольше не надо, если нет - перейдём на след.строку ТЗППС.
33. Timesoft 271 23.11.12 10:53 Сейчас в теме
2 вариант.
Выводим строки, потом объединим нужные ячейки через
НашаТаблица.Область(ПервыйОюъедСтолбец,ПервОбъедСтрока,ПослОбъедСтолбец,ПослОбъедСтрока).Объединить();

здесь задачка - подсчитать нужные номера объединяемых строк и столбцов.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот