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

29.12.11

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

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

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

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

Ocean5

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Адаптация типовых решений Производство готовой продукции (работ, услуг) Розничная торговля 1С:Управление торговлей 10 Россия Платные (руб)

Доработка для 1С:Управление торговлей 10.3 (релиз 10.3.88.3) добавляет поддержку маркировки новых категорий товаров согласно постановлениям Правительства РФ 2025–2026 гг. Конфигурация УТ 10.3 снята с поддержки — новые маркируемые категории в типовую поставку больше не попадают. Доработка закрывает этот пробел: новые виды номенклатуры, обмен с ГИС МТ «Честный Знак». Поставляется в виде файла .cf

14640 руб.

23.04.2026    1631    12    13    

16

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    1443    4    0    

3

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 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, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

6000 руб.

07.02.2023    13662    120    25    

76

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    4069    10    0    

9

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

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    1558    2    0    

2

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

Расширение, которое в форму списка и форму выбора справочника «Номенклатура» добавляет табличную часть в виде дерева, в которую выводится информация об остатках и доступности выбранной номенклатурной позиции.

6710 руб.

20.04.2026    494    1    0    

3

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

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

9150 руб.

02.08.2023    8453    26    5    

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

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

за это и минуса не жалко
Для отправки сообщения требуется регистрация/авторизация