Получение соответствующего реквизита при изменении какого-либо другого реквизита в форме документа. Базовый приём программирования.

29.12.11

Задачи пользователя - Адаптация типовых решений

В данной статье рассматривается наиболее часто встречающийся прием программирования. Статья рассчитана на начинающих программистов

Получение соответствующего реквизита при изменении какого-либо другого реквизита в форме документа.

Базовый приём программирования.

Ocean5

 

Чем отличается спортсмен-разрядник по дзюдо от уличного драчуна. Прежде всего тем, что дзюдоист до автоматизма натренировал базовые приемы борьбы, неплохо знает технику сложных приемов и имеет хорошую общефизическую подготовку. Уличный боец ознакомился с какими-то, порой сомнительными приёмчиками и самоуверенность его не уже знает границ.

Иногда приходится наблюдать, как некоторые начинающие программисты пытаясь конструировать сложные программные модули, напрочь забывают об элементарных, казалось бы вопросах. Или другая крайность, освоив несколько методов кодирования, программист пытается решить с их помощью не решаемые задачи. Хорошо, когда есть время подумать, спросить на форумах, у коллег. Когда же работаешь на выезде у заказчика и времени в обрез, тогда могут возникнуть серьезные проблемы.

Мастера программирования настоятельно рекомендуют иметь под рукой некоторые часто применяемые части кода, что бы можно быстро было найти и подсмотреть. Ибо даже самая гениальная голова имеет способность что-то забыть, причем в самый неподходящий момент. Материал данной статьи рассчитан для новичков и далее будет описан вполне конкретный случай из практики молодого программиста.

Вдруг, откуда ни возьмись, поступила задача. Изобразить  справочник «Должности». Дозаполнить справочник «Сотрудники» должностями сотрудников и сформировать документ «Приказ», в котором при выборе в табличной части сотрудника, должность в соседней графе проставлялась бы автоматически. Друг, опытный программист, уехал в отпуск, на форуме отвечали расплывчатыми формулировками или откровенно ёрничали.. Время шло, а все попытки успеха не имели.

Что делать? Начнем с двух теоретических вопроса. Первый. Что может связывать в документе «Приказ» конкретного сотрудника из одного справочника и должность из другого? Или по другому: как в документе образовать связку между фамилией сотрудника и занимаемой должностью. Таким связующим элементом в системе 1С является параметр. Если нам требуется один выбрать реквизит и соответственно выбрать связанный с ним другой реквизит, то мы должны использовать параметр.

Второй вопрос. Где или на каком уровне мы будем  осуществлять поиск соответствующих справочных реквизитов при заполнении документа «Приказ»? Конечно же, на уровне сервера, т.к. нам с нужно обращаться к данным справочника, т.е к данным базы. Отсюда следует то, что мы в модуле документа «Приказ» Должны написать серверный вызов.

Начинаем реализовывать задачу.

1.  Создаем объекты конфигурации.

 - Справочник «Сотрудники» На закладке данные указываем реквизит должность. Реквизит «Наименование», в котором мы будем указывать фамилия сотрудника задан по умолчанию. В свойствах реквизита «Наименование» можно указать название «Фамилия», которое будет выведено на форме в пользовательском режиме;

 - Справочник «Должность» без каких либо реквизитов. В этом справочнике также Реквизит «Наименование», в котором мы будем указывать фамилия сотрудника задан по умолчанию. В свойствах реквизита «Наименование» можно указать название «Фамилия», которое будет выведено на форме в пользовательском режиме;

 - Документ «Приказ» имеющий табличную часть с реквизитами «Фамилия» и «Должность»

2. Создаём форму документа «Приказ» и открываем модуль формы этого документа. Когда у нас должна проставляться должность? При изменении фамилии. Следовательно мы должны написать обработчик события при изменении у реквизита «Фамилия». Нажимаем на кнопку с увеличительным стеклом и нас система переводит в модуль формы документа, прописывает название процедуры на клиенте

ТаблицаФамилияПриИзменении(Элемент)

Что нам нужно добиться в данном обработчике? Нам нужно «достучаться» до табличной части. Табличная часть будет нам доступна 

            Элементы.Таблица.ТекущиеДанные;

Далее нам необходимо обращение на сервер и вот здесь мы в качестве параметров обращения на сервер проставляем Фамилию нашей табличной части Элементы.Таблица.ТекущиеДанные

Что нам сделать: серверную функцию или серверную процедуру? Это – глядя что мы хотим получить. В данном случае мы хотим получить должность Она должна быть нам возвращена. Следовательно, нам более всего подходить функция на сервере Назовем эту функцию  ПодставитьДолжность

И так на клиенте мы получаем

Элементы.Таблица.ТекущиеДанные.Должность = ПодставитьДолжность(Элементы.Таблица.ТекущиеДанные.Фамилия)

Скажем прямо такой код читать весьма трудно, поэтому для удобства чтения вводим несколько переменных. После чего Обработчик события ТаблицаФамилияПриИзменении(Элемент) будет выглядеть следующим образом:

 &НаКлиенте
Процедура ТаблицаФамилияПриИзменении(Элемент)
            ТЧ = Элементы.Таблица.ТекущиеДанные;
            Дол = ПодставитьДолжность(ТЧ.Фамилия);
            ТЧ.Должность = Дол;
КонецПроцедуры

 Как мы должны сконструировать серверную функцию?

Мы должны найти по наименованию сотрудника с параметром Фамилия. Конструкция этой операции выглядит как Справочники.Сотрудники.НайтиПоНаименованию(Фамилия)

И возвратить (т.е. получить) должность найденного сотрудника с параметром фамилия

Возврат Справочники.Сотрудники.НайтиПоНаименованию(Фамилия).Должность

Но опять повторюсь, такой код читать весьма трудно, поэтому для удобства чтения вводим несколько переменных. После чего серверная функция  ПодставитьДолжность  с параметром Фамилия будет выглядеть следующим образом:

 &НаСервере
Функция ПодставитьДолжность(Фамилия)
            Спр = Справочники.Сотрудники.НайтиПоНаименованию(Фамилия);
            Возврат Спр.Должность;    
КонецФункции

 Главное во всей этой истории четко определиться параметры и правильно определить объекты конфигурации.

См. также

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4343    16    1    

34

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    6210    15    5    

24

Печатные формы Адаптация типовых решений Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6920    73    17    

30

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5363    dimanich70    15    

22

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    7490    dimanich70    10    

19

Адаптация типовых решений Программист Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    3739    30    TempTablesManager    14    

54

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3734    58    progmaster    8    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tango 546 26.11.13 10:37 Сейчас в теме
Справочник «Сотрудники» На закладке данные указываем реквизит должность.

периодический РС
2. tango 546 26.11.13 10:37 Сейчас в теме
Спр = Справочники.Сотрудники.НайтиПоНаименованию(Фамилия);

за это и минуса не жалко
Оставьте свое сообщение