1с создание при вводе
Каждое решение фирмы «1С» на платформе «1С:Предприятие 8» обладает широким кругом возможностей. Однако есть универсальные приемы, использовать которые можно в любой конфигурации. Этой статьей мы открываем цикл публикаций, в которых методисты фирмы «1С» будут рассказывать об универсальных возможностях платформы «1С:Предприятие 8». Начнем с одного из самых важных методов повышения эффективности работы — с описания «горячих» клавиш (действия с клавиатуры, как правило, выполняются быстрее, чем аналогичные через меню с использованием мыши). Освоив горячие клавиши, вы упростите выполнение часто повторяемых действий.
- "Горячие" клавиши: глобальные действия
- "Горячие" клавиши: общие действия
- "Горячие" клавиши: управление окнами
- "Горячие" клавиши: управление формами
- "Горячие" клавиши: работа со списком и деревом
- "Горячие" клавиши: поле ввода
- "Горячие" клавиши: поле картинки
- "Горячие" клавиши: редактор табличных документов
- "Горячие" клавиши: редактор текстовых документов
Глобальные действия - это действия, которые вы можете выполнять в любом состоянии программы. При этом не важно, что на данный момент открыто в "1С:Предприятии". Главное, чтобы приложение не было занято выполнением какой-либо задачи.
Глобальные действия - это действия, которые можно вызывать в любом месте запущенной платформы "1С:Предприятие 8". Независимо от того, что именно происходит в запущенной конфигурации, смысл глобальных действий не меняется (например, нажатие Ctrl+N всегда будет вызывать диалог создания нового документа).
"Горячие" клавиши для глобальных действий
Действие
Сочетания клавиш
Как работает программа
Создать новый документ
Открывает окно, в котором будет предложено выбрать тип создаваемого нового документа в различных форматах - например, в текстовом, табличном или HTML
Открыть существующий документ
Открывает стандартное диалоговое окно "Открыть", доступное через меню "Файл/Открыть…"
Активизация поля поиска в командной панели
Устанавливает курсор в это поле
Alt + Enter
Ctrl + E
В зависимости от того, на что установлен курсор, открывает соответствующую палитру свойств этого объекта или элемента. Полезно при работе с таблицами, текстом, HTML и т. п.
Вызвать содержание справки
Вызывает содержание справки
Вызвать индекс справки
Вызывает индекс справки
"Горячие" клавиши: глобальные действия
Глобальные действия - это действия, которые вы можете выполнять в любом состоянии программы. При этом не важно, что на данный момент открыто в "1С:Предприятии". Главное, чтобы приложение не было занято выполнением какой-либо задачи.
Глобальные действия - это действия, которые можно вызывать в любом месте запущенной платформы "1С:Предприятие 8". Независимо от того, что именно происходит в запущенной конфигурации, смысл глобальных действий не меняется (например, нажатие Ctrl+N всегда будет вызывать диалог создания нового документа).
"Горячие" клавиши для глобальных действий
Действие
Сочетания клавиш
Как работает программа
Создать новый документ
Открывает окно, в котором будет предложено выбрать тип создаваемого нового документа в различных форматах - например, в текстовом, табличном или HTML
Открыть существующий документ
Открывает стандартное диалоговое окно "Открыть", доступное через меню "Файл/Открыть…"
Активизация поля поиска в командной панели
Устанавливает курсор в это поле
Alt + Enter
Ctrl + E
В зависимости от того, на что установлен курсор, открывает соответствующую палитру свойств этого объекта или элемента. Полезно при работе с таблицами, текстом, HTML и т. п.
Вызвать содержание справки
Вызывает содержание справки
Вызвать индекс справки
Вызывает индекс справки
"Горячие" клавиши: общие действия
Общие действия - действия, которые имеют один и тот же смысл в различных объектах конфигурации, но поведение платформы "1С:Предприятие 8" меняется в зависимости от того где именно вы используете то или иное общее действие. Например, нажатие на клавишу "Del", помечает на удаление текущий элемент справочника, если вы находитесь в окне списка элементов справочника. Или удаляет содержимое текущей ячейки табличного документа, если вы его редактируете.
"Горячие" клавиши для общих действий
Действие
Сочетания клавиш
Как работает программа
Удаляет элемент под курсором (текущий элемент) или выделенную группу элементов
Позволяет добавить новый элемент
Сохранить активный документ
Сохраняет активный документ
Печать активного документа
Вызывает диалог печати для активного документа
Печать на текущий принтер
Инициирует непосредственную печать активного документа на принтер, назначенный в системе по умолчанию (без открытия диалога печати)
Копировать в буфер обмена
Ctrl + C
Ctrl + Ins
Копирует необходимый элемент или выделенную группу элементов в буфер обмена ОС Windows
Вырезать в буфер обмена
Ctrl + X
Shift + Del
Вырезает необходимый элемент или выделенную группу элементов в буфер обмена ОС Windows. Отличается от копирования тем, что копируемый элемент или группа после попадания в буфер удаляется
Вставить из буфера обмена
Ctrl + V
Shift + Ins
Вставляет в место, отмеченное курсором находящиеся данные из буфера обмена ОС Windows
Добавить к буферу обмена как число
Используется для числовых значений
Добавить к буферу обмена
Используется для числовых значений. Операция сложения с данными в буфере обмена
Вычесть из буфера обмена
Используется для числовых значений. Операция вычитания с данными в буфере обмена
Выделяет все доступные элементы в активном документе
Отменить последнее действие
Ctrl + Z
Alt + BackSpace
Отменяет последнее совершенное действие
Вернуть отмененное действие
Ctrl + Y
Shift + Alt + BackSpace
Позволяет отменить "Ctrl + Z", иными словами - вернуть то, что вы сделали до нажатия отмены последнего совершенного действия
Открывает диалог настройки параметров поиска в активном объекте конфигурации и выполнения этого поиска
Находит следующий элемент, соответствующий указанным в настройках поиска параметрам
Найти следующий выделенный
Находит следующий элемент, соответствующий тому, который вы выделили (например, на котором установлен курсор)
Находит предыдущий элемент, соответствующий указанным в настройках поиска параметрам
Найти предыдущий выделенный
Ctrl + Shift + F3
Находит предыдущий элемент, соответствующий тому, который вы выделили
Открывает диалог поиска и замены значений (там, где это разрешено)
Свернуть (узел дерева, группу табличного документа, группировку модуля)
Используется там, где доступны узлы деревьев, отмеченные значками "+" или "-"
Выделяет все доступные элементы в активном документе
Отменить последнее действие
Ctrl + Z
Alt + BackSpace
Отменяет последнее совершенное действие
Вернуть отмененное действие
Ctrl + Y
Shift + Alt + BackSpace
Позволяет отменить "Ctrl + Z", иными словами - вернуть то, что вы сделали до нажатия отмены последнего совершенного действия
Открывает диалог настройки параметров поиска в активном объекте конфигурации и выполнения этого поиска
Находит следующий элемент, соответствующий указанным в настройках поиска параметрам
Найти следующий выделенный
Находит следующий элемент, соответствующий тому, который вы выделили (например, на котором установлен курсор)
Находит предыдущий элемент, соответствующий указанным в настройках поиска параметрам
Найти предыдущий выделенный
Ctrl + Shift + F3
Находит предыдущий элемент, соответствующий тому, который вы выделили
Открывает диалог поиска и замены значений (там, где это разрешено)
Свернуть (узел дерева, группу табличного документа, группировку модуля)
Используется там, где доступны узлы деревьев, отмеченные значками "+" или "-"
Свернуть (узел дерева, группу табличного документа, группировку модуля) и все подчиненные
Свернуть (все узлы дерева, группы табличного документа, группировки модуля)
Ctrl + Shift + Num + (-)
Развернуть (узел дерева, группу табличного документа, группировку модуля)
Развернуть (узел дерева, группу табличного документа, группировку модуля) и все подчиненные
Развернуть (все узлы дерева, группы табличного документа, группировки модуля)
Ctrl + Shift + Num + (+)
Ctrl + Page Down
Ctrl + Alt + F
Быстрое листание активного документа
Ctrl + Page Up
Ctrl + Alt + B
Используется там, где поддерживается и возможно форматирование текста
Переход к предыдущей web-странице/главе справки
Используется в HTML-документах
Переход к следующей web-странице/главе справки
Прервать исполнение отчета системы компоновки данных
"Горячие" клавиши: управление окнами
В этом разделе объединены общие для всех окон и форм платформы "1С:Предиприятие" "горячие" клавиши.
"Горячие" клавиши для управления окнами
Действие
Сочетания клавиш
Как работает программа
Закрыть активное свободное окно, модальный диалог или приложение
Этой комбинацией можно быстро завершить работу всей конфигурации на платформе "1С:Предприятие", поэтому пользуйтесь ей осторожно
Закрыть активное обычное окно
Закрывает текущее обычное окно
Закрыть активное окно
Закрывает текущее активное окно
Активизировать следующее обычное окно
Ctrl + Tab
Ctrl + F6
Позволяет активизировать следующее окно среди открытых в рамках конфигурации. Нажатие в цикле с удерживанием клавиши Ctrl позволяет листать отрытые окна "вперед"
Активизировать предыдущее обычное окно
Ctrl + Shift + Tab
Ctrl + Shift + F6
Позволяет активизировать предыдущее окно среди открытых в рамках конфигурации. Нажатие в цикле с удерживанием клавиши Ctrl позволяет листать отрытые окна "назад"
Активизировать следующую секцию окна
Активирует следующую секцию текущего окна
Активизировать предыдущую секцию окна
Активирует предыдущую секцию текущего окна
Вызвать системное меню приложения или модального диалога
Позволяет увидеть системное меню операций (свернуть, переместить, закрыть и т. п.) над окном программы или открытого модального диалога
Вызвать системное меню окна (кроме модальных диалогов)
Alt + Hyphen + (-)
Alt + Num + (-)
Позволяет увидеть системное меню операций (свернуть, переместить, закрыть и т. п.) над активным окном
Вызвать главное меню
Активирует главную панель с кнопками текущего окна. Тем самым вы можете выбирать действия без участия мыши
Вызвать контекстное меню
Отображает контекстное меню над текущим активным элементом. Аналогично нажатию правой кнопки мыши на нем
Вернуть активность обычному окну
Возвращает активность обычному окну после работы с контекстным меню. Внимание! В любом другом случае, Esc инициирует закрытие активного окна
"Горячие" клавиши: управление формами
Здесь собраны "горячие" клавиши, упрощающие и ускоряющие работу с различными формами, которые созданы в конфигурациях, написанных на платформе "1С:Предприятие".
"Горячие" клавиши для управления формами
Действие
Сочетания клавиш
Как работает программа
Перейти на следующий элемент управления/вызов кнопки по умолчанию
Переход между элементами управления на форме "вперед" (см. Tab)
Вызов кнопки по умолчанию
Как правило, у различных форм назначена кнопка по умолчанию (она отличается от других - например, выделена жирным). Использование этой комбинации клавиш позволяет из любого места открытой формы активировать кнопку по умолчанию
Перейти на следующий элемент управления
Переход между элементами управления на форме "вперед"
Перейти на предыдущий элемент управления
Переход между элементами управления на форме "назад"
Активизирует командную панель, связанную с активным элементом управления/формой
Активирует главную панель с кнопками текущей формы. Тем самым вы можете выбирать действия без участия мыши
Перемещение по элементам управления, объединенным в одну группу
Используя клавиши-курсоры можно быстро перемещаться между сгруппированными элементами управления
Закрывает окно текущей формы
Восстановить положение окна
Если сбились какие-то параметры окна формы, эта комбинация позволяет вернуть все назад
"Горячие" клавиши: работа со списком и деревом
"Горячие" клавиши этого раздела помогут эффективно работать без использования мыши в многочисленных списках и деревьях, которые активно используются в различных объектах конфигураций на платформе "1С:Предприятие 8".
"Горячие" клавиши для работы со списком и деревом
Действие
Сочетания клавиш
Как работает программа
Открывает для изменения элемент, на который установлен курсор. Клавиша аналогична действию "Изменить" на стандартной панели кнопок формы
Ctrl + Shift + R
F5
Обновляет данные в списке или дереве. Особенно актуально для динамических списков (например, список документов), когда для них не включено автообновление
Создает новый элемент списка, используя в качестве шаблона текущий элемент. Аналогично кнопке "Добавить копированием"
Создает новую группу. Аналогично кнопке "Добавить группу"
Непосредственное удаление текущего элемента. Внимание! Используйте эту комбинацию с большой осторожностью в динамических списках, так как отменить удаление нельзя
Перемещение строки вверх
Ctrl + Shift + Up
В списках, где разрешено изменение порядка строк, позволяет передвинуть текущую строку вверх. Аналогично кнопке "Переместить вверх"
Перемещение строки вниз
Ctrl + Shift + Down
В списках, где разрешено изменение порядка строк, позволяет передвинуть текущую строку вниз. Аналогично кнопке "Переместить вниз"
Перенести элемент в другую группу
Ctrl + Shift + M
Ctrl + F5
Позволяет быстро переместить текущий элемент (например, справочника) в другую группу
Перейти на уровень вниз с одновременным раскрытием группы
Переходит внутрь папки, на которой был установлен курсор
Перейти на уровень вверх (к "родителю")
Выходит наверх из папки, в которой вы находились
Завершает с сохранением изменений редактирование элемента списка
Раскрыть узел дерева
Используется там, где доступны узлы деревьев, отмеченные значками "+" или "-"
Закрыть узел дерева
Раскрыть все узлы дерева
Инвертирует значение флажка текущего элемента (включает или отключает его)
"Горячие" клавиши: поле ввода
Поле ввода - активно используемый элемент управления во множестве мест форм конфигураций. "Горячие" клавиши для поля ввода позволяют быстро выполнить часто используемые действия над ним. Особенно полезно использовать эти клавиши там, где разработчик конфигурации не вывел нужные вам кнопки управления полем ввода.
"Горячие" клавиши для поля ввода
Действие
Сочетания клавиш
Как работает программа
Переключить режим вставки/замены
Аналогично поведению при редактировании обычного текста, позволяет либо добавлять новые символы при вводе к старым, либо затирать старые новыми
Выбор соответствующего объекта, связанного с полем ввода (например, выбор нужного документа из списка). Аналогично кнопке поля ввода "Выбор"
Ctrl + Shift + F4
Открытие формы выбранного объекта в текущем поле ввода. Аналогично нажатию кнопки поля ввода "Открыть"
Очистить поле ввода от текущего в нем значения
Удалить символ слева от курсора
Работа с набранным текстом в поле ввода
Удалить символ справа от курсора
Удалить слово слева от курсора
Удалить слово справа от курсора
Перейти в начало строки
Перейти в конец строки
Нажатие указателем мыши кнопки "Вверх" для кнопки регулирования
Использование регулировки, если это разрешено в поле ввода. Например, изменение дат, счетчиков и т. п. Аналогично нажатию на кнопку "вверх" регулятора поля ввода
Нажатие указателем мыши кнопки "Вниз" для кнопки регулирования
Использование регулировки, если это разрешено в поле ввода. Например, изменение дат, счетчиков и т. п. Аналогично нажатию на кнопку "вниз" регулятора поля ввода
"Горячие" клавиши: поле картинки
Поле картинки - это стандартный элемент платформы "1С:Предприятие 8" для отображения графических изображений. "Горячие" клавиши помогут, например, комфортно просмотреть изображение, расположенное в поле картинки.
Создать подчиненный документ в единственном экземпляре программно не представляет сложностей. Достаточно проверить существование подчиненного документа и далее отрыть существующий, либо при отсутствии такового создать новый. Но для этого нужно отказаться от стандартного механизма "Ввод на основании" и добавив свою команду написать свой обработчик для осуществления вышеописанных действий.
Или же можно такое проделать подобное и при использовании стандартного механизма платформы "Ввод на основании"? Тогда вопрос, а на какое событие вешать обработчик? Как это вообще делается правильно? Хотелось бы не отказываться от использования стандартного механизма.
(1) ger_kar, В модуле объекта создается экспортная переменная "НеОткрыватьФорму". В "ОбработкаЗаполнения" нужно проверить наличие уже созданного документа и присвоить переменной соответствующее значение. После чего в "ПриСозданииНаСевере" проверять значение этой переменной и писать "отказ = Истина" если необходимо.
На обычных формах работало отлично (пример есть в документе Налоговая накладная). С УФ думаю сильных проблем не должно возникнуть.
Чем вариант (2) не устраивает? В обычном приложении все работало отлично. Не думаю что в УФ такое не реализуемо.
Ну конкретно, в таком виде работать не будет на УФ. Там переменная будет действительна только в пределах одного серверного вызова. Сделать можно, но немного не так. Вобщем я понял, что проще не парится и просто отказаться от этого "Ввода на основании". Можно сделать группу команд и соответствующие команды. Для пользователя даже заметно не будет. Но зато руки будут свободны и можно делать все что угодно :) не привязываясь вообще к этому куцему механизму.
ger_kar, вы писали о "Для меня они были ясные и я вполне понял заложенный в них смысл."
Так вот, вы обсуждаете открытие/неоткрытие формы документа (через команды/переменную), одновременно пытаясь привязать ВводНаОсновании к созданию/не созданию документа. Это - разные операции, которые могут происходить в любом порядке зависимо/независимо друг от друга (и от наличия/отсутствия документа в базе):
- открытие/неоткрытие формы;
- ВводНаОсновании;
- решение о создании/не создании документа.
Поэтому я вас и попросил - четко понять для себя, что вы хотите.
(22) ot_buhta, т.е. Насколько я понял, идея в следующем: В момент создания на сервере формы документа проверять наличие первоначально созданного документа на основании и если таковой имеется, то именно его и подсунуть открываемой форме. При этом у формы будет ссылка на первичный объект, его она и покажет юзеру. А вновь созданный объект документа пока существует только в памяти и при отсутствии на него ссылок должен сам уничтожиться и так сказать уйти в небытие :) . Хорошая идея, Но все равно нужно проверить, что созданный, но так и не заполненный документ уничтожается и не висит в памяти (хотя по идее все должно работать как надо). Спасибо. Идея очень хорошая, жаль, что тогда пришлось сделать по другому. В следующий раз, при возникновении подобной надобности заюзаю этот вариант :)
Нашел почти похожую тему на инфостарте тут
Но это не то. Мне хотелось бы задействовать стандартный механизм, если такое вообще возможно, или же в противном случае услышать от гуру неутешительный вердикт, что такое сделать ну никак не получиться :)
(4) Boneman, Ну правильно, так оно и есть. Но проблема в том, что событие 'Обработка заполнения' возникает в уже созданном экземпляре документа, когда уже нельзя принять решение создавать ли новый документ или открыть существующий. Т.е. получается, что можно создать на основании некоторого документа кучу новых, и это нельзя никак проконтролировать? Платформа каждый раз просто создает новый документ, в котором срабатывает событие 'Обработка заполнения' используя которое можно заполнить реквизиты нового документа. По идее хорошо бы, где то на уровне модуля менеджера, иметь событие в котором можно бы было переопределить стандартный обработчик и например вместо создания нового документа открывать уже существующий, который был введен ранее. Но не одно событие предлагаемое модулем менеджера не подходит для этой цели. Поэтому дальше тупик. Но может быть есть стандартный механизм контроля уникальности о котором я просто не знаю, или есть другая метода.
Но может быть есть стандартный механизм контроля уникальности о котором я просто не знаю, или есть другая метода.
нету,
т.к. сам по себе ввод на основании он не несет связки между документами. Связка формируется и контролируется разработчиком, в виде реквизитов, критериев отбора и прочих общепринятых методов.
К тому же разработчику надо учитывать дополнительные нюансы. А если документ есть, но он помечен на удаление, то как должна себя вести система. Или просто непроведен.
Все пилится руками.
Собственно по сабжу.
Вот ты говоришь, проверить если документ есть, то открыть его а не вводить новый. Естественно в событиях уже созданного нового объекта можно лишь отработать вариант, проверить, и дать себя ввести или нет. А вот вводить новый или открыть имеющийся, - это надо принимать решения ДО этого момента. Т.е. на этапе ввода. Можно в журнал свою команду добавить, которая будет это делать и принимать решение. Или сделать какуюто универсальную общую команду, которую напихать в журналы, можно даже список ввод на основании собственный формировать, в зависимости от возможности (я это видел гдето в типовухах).
проверить если документ есть, то открыть его а не вводить новый. Естественно в событиях уже созданного нового объекта можно лишь отработать вариант, проверить, и дать себя ввести или нет. А вот вводить новый или открыть имеющийся, - это надо принимать решения ДО этого момента.
Достаточно запроса по искомым полям, и обработка результатов, на основе чего - вводить новый, открыть найденный, перезаполнить найденный и т.д.
Все.
Или автор хочет чего-то другого, но не может никак это выразить словами :).
Нет, только создаете Документ = Новый ВашДокумент, и пока он не записан - его в базе нет. Обращайтесь к процедурам-функциям (другой момент - разная область видимости, плюс в ОФ и УФ много чего у 1С перенапутано в этом отношении, но материал найдете, сложного ничего там нет). Уникальность документов в целости и сохранности.
У 1С есть только механизм контроля номеров/нумерации, и то нужно настраивать. Контроля уникальности самих документов нет, и такую задачу перед собой 1С никогда не ставила.
Можно конечно при проводке делать проверку и перезаполнять, но это на мой взгляд достаточно корявое решение.
В итоге - непонятно, чего вы хотите добиться.
Попробуйте написать более подробно свое желание, и менее подробно - представление о реализации такового в 1С. А так непонятно, чего вы хотите, а чего - избегаете.
[IS-QUOTE]Но проблема в том, что событие 'Обработка заполнения' возникает в уже созданном экземпляре документа
Нет, только создаете Документ = Новый ВашДокумент, и пока он не записан - его в базе нет. Обращайтесь к процедурам-функциям (другой момент - разная область видимости, плюс в ОФ и УФ много чего у 1С перенапутано в этом отношении, но материал найдете, сложного ничего там нет). Уникальность документов в целости и сохранности.[/IS-QUOTE] На данном этапе не важно записан документ в базу или нет. Речь идет о создании нового экземпляра документа. При использовании механизма платформы 'Ввод на основании' всегда создается новый документ, в котором срабатывает событие 'ОбработкаЗаполнения' и повлиять на это никак нельзя.
Можете и переопределить событие. А то и вообще использовать ГОС от Гений1С.[/IS-QUOTE]Проблема не в переопределении, а в том, что нечего переопределять, так как нет нужного события.
Он и так связан.
Да, я хочу при наличии уже созданного ранее документа, что-бы открылся именно он и именно в нём нужно перезаполнить реквизиты. Но платформа такой возможности не дает, и всегда создает новый документ. Да можно получить программно существующий документ и сделать с ним, все что угодно, но к стандартному механизму 'Ввод на основании' это уже не будет иметь ровно никакого отношения.
В итоге - непонятно, чего вы хотите добиться.
Попробуйте написать более подробно свое желание, и менее подробно - представление о реализации такового в 1С. А так непонятно, чего вы хотите, а чего - избегаете.
В самом первом посте я как раз это и написал. Судя по остальным ответам, другим участникам мой вопрос был вполне понятен.
Моё желание - используя стандартный механизм 'Ввод на основании' вводить только один единственный документ для одного документа основания.
При использовании механизма платформы 'Ввод на основании' всегда создается новый документ, в котором срабатывает событие 'ОбработкаЗаполнения' и повлиять на это никак нельзя.
У вас нарушено понимание причины-следствия: вы сами управляете, когда и что создавать, а не создание документа - детерминирует вас. Т.е. хотите - создадите, заполните и запишите, захотите - проверите и не создадите.
Да, я хочу при наличии уже созданного ранее документа, что-бы открылся именно он и именно в нём нужно перезаполнить реквизиты. Но платформа такой возможности не дает, и всегда создает новый документ.
Моё желание - используя стандартный механизм 'Ввод на основании' вводить только один единственный документ для одного документа основания.
У вас опять прична-следствие напутаны: 'Ввод на основании' работает с заново создаваемым документом (только что заполняемым первый раз), а не с уже заполненным и сохраненным документом.
Событие "ВводНаОсновании" и срабатывает при создании, а не при открытии существующего.
Почему вы вдруг решили, что это не так, и сделали ставку на "а я хочу существующий перезаполнять в "ВводНаОсновании"! - непонятно.
Платформа вообще об этом не знает.
Для заполнения существующего документа - есть событие "ПриОткрытии", "ПередОткрытием" (это в ОФ; а в УФ, причем, и это поменяли зачем-то, но суть та же осталась).
Таким образом, данный механизм к редактированию существующего в базе документа не имеет никакого отношения. И вставляйте правильно цитаты в свои ответы, пожалуйста, - иначе сложно понять, где ваш, а где ответ коллеги.
Ввод на основании используется в случаях, когда при создании нового объекта могут быть использованы данные уже существующего объекта. Ввод на основании может быть реализован для справочников, документов, планов видов характеристик, планов счетов, планов видов расчета и бизнес-процессов. В общем случае объект может быть создан на основании любого объекта из перечисленных выше, например, документ может быть создан на основании справочника.
Рассмотрим работу механизма ввода на основании на следующем примере: Организация оказывает услуги пассажирского такси. Заказы покупателей регистрируются в документе «Заказ». Заказ может быть формируется диспетчером. Документ «Заказ» содержит следующую информацию:
- имя клиента
- адрес клиента
- адрес откуда
- адрес куда
- время подачи
- желаемый класс автомобиля
- список желаемых опций
Имя клиента, его адрес и телефон хранятся в справочнике «Клиенты». В данном примере будет реализован ввод документа на основании справочника. С целью упрощения примера справочник будет только один - «Клиенты», вся остальная информация будет вводиться вручную.
Создание объектов конфигурации
Реализация
В свойствах документа «Заказ» перейдем на закладку «Ввод на основании»:
Нажмем кнопку «Редактировать элемент списка» и выберем из списка справочник «Клиенты»:
Далее запустим конструктор ввода на основании нажатием на кнопку "Конструктор ввода на основании":
В открывшемся окне нужно сопоставить поля справочника с реквизитами документа заказа. Это можно сделать, нажав кнопку «Заполнить выражения» и тогда система попытается сама определить, какие поля необходимо скопировать:
Поле адреса нужно сопоставлять вручную, выбрав поле «АдресОткуда» в нижней части, а затем двойным щелчком на реквизите «Адрес» в реквизитах объекта обоснования:
По нажатию «ОК» система генерирует следующий код в модуле документа «Заказ» в процедуре ОбработкаЗаполнения:
Процедура ОбработкаЗаполнения вызывается в ряде случаев, таких как ввод нового документа интерактивно и ввод на основании. В данном случае, если переменная ДанныеЗаполнения является ссылкой на справочник клиентов, выполняется заполнение реквизитов документа. Код обработчика можно модифицировать. Предположим, что клиенты чаще всего хотят подачу такси в течение 15-20 минут. Тогда в код обработчика можно добавить инициализацию реквизита «ВремяПодачи». Также удалим комментарии, созданные конструктором:
Запустим приложение в режиме отладки и проверим, как работает ввод на основании. Добавим пару записей в справочник клиентов:
Откроем одну из них. В окне будет доступна кнопка «Создать на основании», по нажатию которой откроется список с опцией выбора «Заказ»:
При выборе «Заказ» система создает пустой документ и заполняет поля в процедуре ОбработкаЗаполнения:
Сохраним документ и убедимся, что документ был успешно создан, открыв его из спиcка документов заказа:
Теперь предположим, что у клиентов могут быть опции, которые всегда присутствуют в заказе данного клиента. Например, «Некурящий водитель». Тогда их можно задавать в справочнике клиентов и копировать в документ заказа. Расширим справочник «Клиенты» табличной частью «Опции»:
Теперь необходимо модифицировать процедуру ОбработкаЗаполнения документа. Это можно было бы сделать через конструктор, но тогда процедура обработки будет перезаписана, поэтому добавим код копирования табличной части вручную:
Запустим конфигурацию в режиме отладки и посмотрим, что получилось. Добавим опции клиенту:
Сохраним данные и создадим заказ на основании записи справочника:
Таким образом, данные табличной части были успешно скопированы в заказ. Для этого простого примера реализацию ввода на основании можно считать законченной.
Код 1C v 8.2 УП
Программное добавление кнопок в управляемый интерфейс
Если упрощенно, то помог код следующего содержания:
Код 1C v 8.2 УП
Параметры.МассиИменКнопок – Массив, в котором содержаться имена создаваемых кнопок.
Элементы.ПоПравилуОбработкиПодменю – группа подменю, в которую добавляются кнопки.
«ПроцедураОбработкиНажатия» – имя процедуры, которая объявлена на стороне клиента. Именно ей будет передаваться управление в случае нажатия кнопки. Идентификацию того, какая именно кнопка была нажата проводил по имени команды.
Код 1C v 8.2 УП
Следует отметить, что обязательно создание команд. Если кнопке не определить имя команды, то платформа такую кнопку не покажет.
Похожие FAQ
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
- Главная
- Программирование 1С
- 1C. Добавляем новый документ в типовую конфигурацию, получаем две кнопки Создать на основании. Как убрать лишнюю.
1C. Добавляем новый документ в типовую конфигурацию, получаем две кнопки Создать на основании. Как убрать лишнюю.
Нехитрое дело – добавить в типовую конфигурацию, например "1С ERP Управление предприятием 2", новый документ (назовём его "Запрос цен") и настроить его так, чтобы он создавался на основании типового документа, скажем "Заказ материалов в производство".
Однако, подводные камни всё-таки обнаруживаются. На форме документа "Заказ материалов в производство" появилось две кнопки "Создать на основании". Одна типовая, на рисунке она слева, а другая образовалась после добавления нового документа. При нажатии этой кнопки появляется список из единственного, вновь добавленного документа. Если же нажать штатную кнопку, то открывается список из нескольких типовых документов, среди которых, увы, нет нашего, добавленного. Возникает логичное желание перенести команду создания нового документа из правой кнопки в левую.
Для того, чтобы перенести команду в список штатной кнопки сделаем следующее:
В модуле менеджера документа "Заказ материалов в производство" есть процедура ДобавитьКомандыСозданияНаОсновании . Добавим в неё вызов функции, которую позже напишем в модуле менеджера документа "Запрос цен".
Добавляем функцию в модуль менеджера документа "Запрос цен":
В этой функции мы указали обработчик, расположенный в общем модуле дкВводНаОснованииКлиент . В типовой конфигурации подобные обработчики находятся в общем модуле ВводНаОснованииКлиент , но чтобы не изменять штатный модуль, был создан другой, с префиксом.
В общем модуле дкВводНаОснованииКлиент создаём функцию обработчика, которая откроет нам форму создаваемого документа:
Таким образом мы добавили наш документ в список штатной кнопки "Создать на основании". Осталось убрать лишнюю кнопку на форме документа "Заказ материалов в производства". Делается это в форме документа "Заказ материалов в производство" в левом верхнем фрейме, на вкладке "Командный интерфейс". Снимаем флаги "Видимость" и "Автовидимость" для документа "Запрос цен".
Читайте также: