Добавлен новый документ

В этой статье научимся приемами программного создания и заполнения документов в 1С 8.3, кроме того, мы узнаем, как программно записывать и проводить документ 1С,  а также узнаем, как программно открыть основную форму документа.

Прежде чем мы начнем разбирать вопросы программной работы с документами в 1С 8.3, хочу обратить Ваше внимание, что на управляемой форме в режиме тонкого клиента мы можем программно работать (создавать, записывать и проводить) с документами только в серверном контексте. То есть, ваша процедура или функция должна выполняться под директивами &НаСервере или &НаСервереБезКонтекста.

Все примеры в этой статье я буду показывать на управляемой форме обработки, которую создал «за кадром».

Создать документ 1С программно

В моей учебной конфигурации 1С имеется простенький документ с небольшим набором реквизитов, а также с одной табличной частью.

Добавлен новый документ

Для программного создания документов, я сделал обработку. У этой обработки , я разработал форму и создал команду управляемой формы, которую назвал  «Создать документ прихода», поместив её на форму обработки.

Добавлен новый документ

Для этой команды, я сделаю обработчики на клиенте и на сервере.

Добавлен новый документ

В серверном обработчике мы и напишем код, который и будет создавать документ..

&НаСервере
Процедура СоздатьДокументПриходаНаСервере() ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); КонецПроцедуры &НаКлиенте
Процедура СоздатьДокументПрихода(Команда) СоздатьДокументПриходаНаСервере();
КонецПроцедуры

В этом коде я обратился к менеджеру документа ПриходТовара  (строка Документы.ПриходТовара), и использовал функцию менеджера документа СоздатьДокумент, которая и создает документ-объект. Переменная ДокПриход, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Следующим шагом, я присвою дату этому документу, для простоты, это будет текущая дата.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();

Номер я присваивать не буду, потому что у объекта моего документа включено свойство Автонумерация.

Добавлен новый документ

В принципе, этого вполне достаточно, чтобы наш документ существовал. Но создав его при помощи функции СоздатьДокумент, мы не записали его непосредственно в базу. После выполнения кода выше, ни какого документа в базе не появится!

Записать документ 1С программно

Для того, чтобы документ 1С появился в базе, его необходимо записать.  Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ. Он имеет два параметра, которые я разберу ниже. Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. Что мы и сделаем.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Записать();

Все теперь документ появится в базе.

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

Добавлен новый документ

Для того, чтобы что-то в нем появилось, нам необходимо заполнить этот документ.

Заполнить документ 1С программно

У нашего документа два реквизита «шапки» – Склад и Комментарий. Создадим на форме обработки реквизит управляемой формы Склад с соответствующим типом, для последующей записи его в шапку документа, а реквизит комментарий заполним в ручную.

Добавлен новый документ

Присвоим реквизитам созданного объекта-документа нужные значения, просто обратившись через точку к этим реквизитам.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Склад = Склад;
ДокПриход.Комментарий = «#Документ создан автоматически обработкой»
ДокПриход.Записать();

Так мы заполнили реквизиты «шапки», но у нас имеется еще табличная часть документа, необходимо заполнить и её. Для её заполнения, я создам таблицу значений в качестве реквизита формы обработки, и помещу её на эту форму.

Добавлен новый документМы будем в цикле обходить эту таблицу значений, создавая в каждой итерации цикла новую строку табличной части документа и заполняя её данными.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Склад = Склад;
ДокПриход.Комментарий = «#Документ создан автоматически обработкой»;
Для Каждого стрТЗ Из ТЗ Цикл НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить(); НовСтрТЧДокумента.Номенклатура = стрТЗ.Номенклатура; НовСтрТЧДокумента.Количество = стрТЗ.Количество; НовСтрТЧДокумента.Цена = стрТЗ.Цена; НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена;
КонецЦикла;
ДокПриход.Записать();

В этом коде я обращаюсь к табличной части документа-объекта посредством точки (строка ДокПриход.СписокТоваров), получаю табличную часть этого объекта, и используя метод Добавить, создаю новую строку табличной части.

А потом заполняю реквизиты табличной части документа данными из таблицы значений.

Поскольку у нас названия реквизитов табличной части и таблицы значений совпадают, мы можем упростить код заполнения табличной части, используя метод ЗаполнитьЗначенияСвойств.

Для Каждого стрТЗ Из ТЗ Цикл НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить(); ЗаполнитьЗначенияСвойств(НовСтрТЧДокумента,стрТЗ); НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена;
КонецЦикла;

Всё! Мы можем смело создать документ, который будет заполнен.

Добавлен новый документ
Добавлен новый документ

Провести документ 1С программно

Все документы, которые мы создавали ранее были не проведены. Если мы хотим, чтобы документ был записан проведенным, то необходимо записывать его немного по-другому. Если раньше мы использовали метод Записать объекта документа без параметров, то теперь необходимо применять параметры этого метода. Данный метод имеет следующий синтаксис.

Записать(,)

Оба параметра это системные перечисления. Первый параметр это перечисление РежимЗаписиДокумента, которое может принимать следующие значения:

РежимЗаписиДокумента.Запись
РежимЗаписиДокумента.Проведение
РежимЗаписиДокумента.ОтменаПроведения

Т.е. мы можем записать документ, провести документ и отменить проведение документа.

Во втором параметр РежимПроведения необходимо указывать системное перечисление РежимПроведениеДокумента, которое может принимать следующие значения:

РежимПроведенияДокумента.Неоперативный
РежимПроведенияДокумента.Оперативный

Т.е. мы можем провести документ как в оперативном режиме, так и в неоперативном. Если этот параметр не указан, то документ проводится в неоперативном режиме.

Изменим запись нашего документа: пусть он проводится в оперативном режиме.

ДокПриход.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);

Теперь документ будет сразу проведен при создании.

Изменить документ 1С программно

Часто возникают задачи, когда нужно поменять уже созданный документ, или провести документ, который был только записан. Для этого необходимо из ссылки на документ получить его объект.

Читайте также:  Новый обзор ford fiesta st 2018

Для примера, я опять создам «за кадром» новую обработку, на форме которой размещу ссылку на документ, поле с типом Склад и команду.

При выполнение этой команды, будет меняться склад документа, а потом этот документ будет проводиться.

Добавлен новый документ

Как и в прошлый раз, я создам обработчик команды на сервере и на клиенте. И в серверном обработчике напишу код получения объекта из ссылки документа.

&НаСервере
Процедура ИзменитьДокументНаСервере() ДокОбъект = ДокументПрихода.ПолучитьОбъект(); КонецПроцедуры &НаКлиенте
Процедура ИзменитьДокумент(Команда) ИзменитьДокументНаСервере();
КонецПроцедуры

Мы получили объект документа, используя метод ссылки на документ ПолучитьОбъект. Имейте в виду, что этот метод можно использовать или на сервере, или клиенте в режиме толстого клиента.  Переменная, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Изменим склад и проведем документ. В этот раз проведем в неоперативном режиме.

ДокОбъект = ДокументПрихода.ПолучитьОбъект();
ДокОбъект.Склад = Склад;
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

Открыть документ 1С программно

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

&НаСервере
Процедура ИзменитьДокументНаСервере() ДокОбъект = ДокументПрихода.ПолучитьОбъект(); ДокОбъект.Склад = Склад; ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры &НаКлиенте
Процедура ИзменитьДокумент(Команда) ИзменитьДокументНаСервере(); ПараметрыОткрытия = Новый Структура(«Ключ»,ДокументПрихода); ОткрытьФорму(«Документ.ПриходТовара.ФормаОбъекта», ПараметрыОткрытия,,,,,, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры

  • Если мы сейчас выполним этот код, то откроется форма документа, с уже измененным реквизитом Склад.
  • Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
  • Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;
  1. О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
  2. Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Как вставить файл в книгу Excel?

Узнаем как внедрять любые типы документов в файл Excel для возможности открытия документов непосредственно из книги.

Приветствую всех, дорогие читатели блога TutorExcel.Ru.

  • Для тех кто больше предпочитает формат видео — приятного просмотра, для любителей же текста приятного чтения.
  • Давайте для начала подумаем для чего вообще вставка файла в Excel может быть полезна?

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

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

Как внедрить документ в Excel?

Стоить отметить, что инструментом внедрения пользуются достаточно редко, поэтому нужную вкладку не так-то просто найти.
Переходим во вкладку Вставка -> Текст -> Объект:

Добавлен новый документ

Далее щелкаем мышкой по кнопке Объект и перед нами появляется всплывающее окно с настройками вставки:

Добавлен новый документ

Excel предлагает нам 2 основные опции для вставки файлов в книгу:

  • Добавить новый объект (вкладка Новый);
  • Добавить существующий файл (вкладка Из файла).

А также возможность отображения файла в виде значка и создания связи с файлом. Давайте поподробнее остановимся на каждом из имеющихся вариантов.

Создание нового документа

Остаемся в текущей вкладке Новый и в зависимости от наших задач в поле Тип объекта выбираем подходящий тип файла (из наиболее используемых типов тут присутствуют документы Microsoft Word и PowerPoint), далее нажимаем OK и в текущей книге Excel встроенный окном появится новый документ.

К примеру, если выбрать тип файла Microsoft Word, то в окне Excel появится встроенное окно с Word, где доступны все функции программы и мы можем начать набирать любой текст:

Добавлен новый документ

Аналогичный пример при работе с Microsoft PowerPoint:

Добавлен новый документ

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

В этом случае при создании нового документа поставьте флажок напротив поля В виде значка, далее выберите вид отображаемой иконки с помощью кнопки Сменить значок (вид меняется в зависимости от программы внедряемого файла), либо оставьте текущий вариант иконки, а также в случае необходимости поменяйте подпись:

Добавлен новый документ

В результате в рабочем окне Excel появится изображение выбранной иконки и по двойному щелчку мыши по иконке будет открываться исходный документ:

Добавлен новый документ

Теперь перейдем ко второму варианту вставки документа.

Читайте также:  Мерседес попросил выпустить британский отзыв о выбросах "устройств поражения"

Внедрение существующего файла

Помимо создания нового документа мы можем добавить уже готовый существующий файл. В этом случае вверху начального окна с настройками выбираем вкладку Из файла:

Далее для добавления файла нажимаем кнопку Обзор и вставляем нужный нам файл (как и в предыдущем случае мы дополнительно можем задать значок):

Добавлен новый документ

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

В этом случае при внесении каких-либо изменений в исходный файл эти изменения отобразятся в прикреплённом файле. Однако, обратите внимание, что связь будет работать только в том случае, если у конечного пользователя (который работает с файлом) будет доступ к этому файлу.

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

На этом все!

Спасибо за внимание!
Если у вас остались вопросы по теме статьи — делитесь своими мыслями в х.

Удачи вам и до скорых встреч на страницах блога TutorExcel.Ru!

Ввод на основании в 1С программно

Рассмотрим простой пример программного ввода документа в 1С на основании. Допустим необходимо после проведения приходного документа «Приход» создать расходный документ «Расход» на основании данных полученных из приходного документа.

Простое создание на основании стандартным способом платформы 1С

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

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя. Попробуйте бесплатно по ссылке >>

Далее в модуле документа «Расход» нужно создать процедуру «Обработка заполнения» с помощью клика в верхнем меню:

Добавлен новый документ

Если в документе уже существуют данная процедура — нужно не создавать новую, а добавлять код в существующую процедуру.

И прописать программный код заполнения. Пример кода:

//Код из модуля объекта документа «Расход». Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)                       Если ТипЗнч(ДанныеЗаполнения) = Тип(«ДокументСсылка.Приход») Тогда                                               Склад = ДанныеЗаполнения.Склад;                         Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл                                    НоваяСтрока = Товары.Добавить();                                    НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;                                    //… заполняем другие реквизиты табличной части                         КонецЦикла;                                   КонецЕсли; КонецПроцедуры

Программный код можно также создать автоматически для этого нужно воспользоваться «Конструктором ввода на основания».

Конструктор ввода на основании

  1. Чтобы в 1С автоматически создать процедуру, нужно нажать на кнопку «Конструктор ввода на основании»:
  2. Добавлен новый документ
  3. Где с помощью функции «Заполнить выражения» можно автоматически сопоставить название реквизитов:
  4. Добавлен новый документ

Если реквизиты различаются по названию, их можно сопоставить вручную. Например, в одной табличной части у вас реквизит «Номенклатура», а в другой «Товар».

После нажатия на «Ок», 1С сама сформирует готовый программный код:

Добавлен новый документ

Внимание! Конструктор нельзя использовать, если процедура заполнения уже существует — вы потеряете существующий программный код.

Создание документа после записи первого документа с последующей записью созданного

Для реализации такой задачи можно использовать метод объекта Заполнить(), в параметры которого необходимо будет передать данные заполнения из документа прихода.  Метод инициирует событие ОбработкаЗаполнения() и вызов процедуры-обработчика в модуле объекта документа «Расход».

Пример кода:

//Код из модуля формы документа «Приход». &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)                   //Создаём новый документ             НовДокумент = Документы.Расход.СоздатьДокумент();             //Заполняем созданный документ (реквизиты документа заполняются значениями, которые совпадают по именам реквизитов)             НовДокумент.Заполнить(ТекущийОбъект.Ссылка);             //Записываем созданный документ             НовДокумент.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Оперативный);           КонецПроцедуры //Код из модуля объекта документа «Расход». Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)                       Если ТипЗнч(ДанныеЗаполнения) = Тип(«ДокументСсылка.Приход») Тогда                                               Склад = ДанныеЗаполнения.Склад;                         Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл                                    НоваяСтрока = Товары.Добавить();                                    НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;                                    //… заполняем другие реквизиты табличной части                         КонецЦикла;                                   КонецЕсли; КонецПроцедуры

Создание объекта  после записи с открытием управляемой формы

Для программного создания документа в 1С с открытием управляемой формы пользователю можно использовать функцию ОткрытьФорму(), в параметры которой можно передавать данные для заполнения.

Пример кода:

//Код из модуля формы документа «Приход». &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) //Создаём структуру для передачи в виде параметра при открытии формы. ПараметрыФормы = Новый Структура(«Основание», Объект.Ссылка); //Открываем форму документа расход с передачей данных для заполнения ОткрытьФорму(«Документ.Расход.ФормаОбъекта», ПараметрыФормы); КонецПроцедуры //Код из модуля объекта документа «Расход». Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Если ТипЗнч(ДанныеЗаполнения) = Тип(«ДокументСсылка.Приход») Тогда Склад = ДанныеЗаполнения.Склад; Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл НоваяСтрока = Товары.Добавить(); НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура; // … заполняем другие реквизиты табличной части КонецЦикла; КонецЕсли; КонецПроцедуры

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в х!

Как добавить новый лист в Word Online

Во время набора текста в Word Online новый лист создается автоматически. Однако нередко появляется необходимость добавить еще страницу, чтобы дописать текст или сместить его содержимое. Новый лист вставляют в начале или середине документа. Рассмотрим способы, с помощью которых сможете его добавить.

Читайте также:  Как правильно покупать машину в автосалоне?

Добавлен новый документ

Добавляем новый лист в Word Online с помощью «горячих» клавиш

Проще всего добавить лист с помощью специальных клавиш. Этот процесс займет незначительное количество времени. Следуйте инструкции:

  1. Пройдите по ссылке https://word-online.ru/.
  2. Кликните по оранжевой кнопке.
  3. На новой странице введите телефон или адрес электронной почты.
  4. Укажите пароль.
  5. Далее перейдите к созданию нового документа или загрузите его с ПК.
  6. Поставьте указатель курсора в том месте, где заканчивается текст.
  7. Нажмите на клавишу — удерживайте ее, пока не добавится новый лист.
  8. Можете просто переместить курсор в начало первой страницы.
  9. Потом одновременно нажмите на Ctrl и Enter. Появится новый лист. Если вам нужно больше одного, то кликайте по клавишам, пока не добавится нужное количество.
  10. Если у вас текст занимает 10 страниц, а добавить лист хотите между 8 и 9, то перейдите на девятую. Поместите указатель курсора в самое начало. Снова нажмите на 2 клавиши. Новая страница появится в середине документа.

Добавлен новый документ

Добавление нового листа в Ворд Онлайн с помощью панели инструментов

Добавить лист можете также и через панель инструментов. Если он требуется для написания дополнительного текста, то порядок действий будет следующим:

  1. Откройте онлайн версию Ворда.
  2. Пройдите авторизацию.
  3. Загрузите нужный документ.
  4. Левой кнопкой мышки кликните в том месте, куда будете добавлять новую страницу: в начале или конце текста.
  5. Перейдите на панель инструментов вверху рабочего поля и выберите раздел Вставка.
  6. С левой стороны нажмите на пункт Пустая страница.
  7. Добавится чистый лист.
  8. Приступите к его редактированию.

Добавлен новый документ

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

  1. Поставьте указатель курсора в середину текста перед тем предложением, которое надо переместить.
  2. В меню, находящимся над рабочим полем, перейдите в категорию, где вставляются дополнительные инструменты.
  3. Нажмите на пункт Разрыв страницы.
  4. Часть текста переместится на новый лист.
  5. При необходимости дополните содержимое или вставьте дополнительные элементы (графики, картинки и т.п.).

Добавлен новый документ

Как добавить титульный лист в Word Online

Аналогичным способом по желанию добавьте титульный лист. Следуйте алгоритму:

  1. Откройте Ворд Онлайн и введите данные, необходимые для входа.
  2. Загрузите документ.
  3. На панели инструментов перейдите в раздел Вставка.
  4. В меню с левой стороны выберите добавление титульного листа.
  5. В появившемся перечне отметьте нужный шаблон (строгая, кубики, полоски и т.д.).
  6. Независимо от того, в каком месте вы поставили курсор, титульный лист появится на первой странице перед всем текстом.
  7. Перейдите к его заполнению. При необходимости добавьте собственное оформление.

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

Программист 1C — 1C. Добавляем новый документ в типовую конфигурацию, получаем две кнопки Создать на основании. Как убрать лишнюю

Нехитрое дело – добавить в типовую конфигурацию, например «1С ERP Управление предприятием 2», новый документ (назовём его «Запрос цен») и настроить его так, чтобы он создавался на основании типового документа, скажем «Заказ материалов в производство».

Однако, подводные камни всё-таки обнаруживаются. На форме документа «Заказ материалов в производство» появилось две кнопки «Создать на основании». Одна типовая, на рисунке она слева, а другая образовалась после добавления нового документа.

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

Возникает логичное желание перенести команду создания нового документа из правой кнопки в левую.

Добавлен новый документ

Для того, чтобы перенести команду в список штатной кнопки сделаем следующее:

В модуле менеджера документа «Заказ материалов в производство» есть процедура ДобавитьКомандыСозданияНаОсновании. Добавим в неё вызов функции, которую позже напишем в модуле менеджера документа «Запрос цен».

Документы.ЗапросЦен.ДобавитьКомандуСоздатьНаОснованииЗаказаКлиента(КомандыСоздатьНаОсновании);

Добавляем функцию в модуль менеджера документа «Запрос цен»:

// Заполняет список команд создания на основании. Функция ДобавитьКомандуСоздатьНаОснованииЗаказаКлиента(КомандыСоздатьНаОсновании) Экспорт Если ПравоДоступа(«Добавление», Метаданные.Документы.ЗапросЦен) Тогда КомандаСоздатьНаОсновании = КомандыСоздатьНаОсновании.Добавить(); КомандаСоздатьНаОсновании.Обработчик = «дкВводНаОснованииКлиент.ЗапросЦенСоздатьНаОснованииЗаказа»; КомандаСоздатьНаОсновании.Идентификатор = «ЗапросЦенСоздатьНаОснованииЗаказа»; КомандаСоздатьНаОсновании.Представление = НСтр(«ru = 'Запрос цен'»); КомандаСоздатьНаОсновании.ПроверкаПроведенияПередСозданиемНаОсновании = Истина; Возврат КомандаСоздатьНаОсновании; КонецЕсли; Возврат Неопределено; КонецФункции

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

В общем модуле дкВводНаОснованииКлиент создаём функцию обработчика, которая откроет нам форму создаваемого документа:

Функция ЗапросЦенСоздатьНаОснованииЗаказа(ОписаниеКоманды) Экспорт ПараметрыВыполненияКоманды = Новый Структура(«Источник,Уникальность,Окно,НавигационнаяСсылка»); ЗаполнитьЗначенияСвойств(ПараметрыВыполненияКоманды, ОписаниеКоманды.ДополнительныеПараметры); // Основание — документ, на основании которого формируется документ «Запрос цен». Основание = ОписаниеКоманды.ОбъектыОснований[0]; ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить(«Основание»,Основание); Если ПараметрыОткрытия Неопределено Тогда ОткрытьФорму( «Документ.ЗапросЦен.Форма.ФормаДокумента», ПараметрыОткрытия, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); КонецЕсли; КонецФункции

Таким образом мы добавили наш документ в список штатной кнопки «Создать на основании». Осталось убрать лишнюю кнопку на форме документа «Заказ материалов в производства». Делается это в форме документа «Заказ материалов в производство» в левом верхнем фрейме, на вкладке «Командный интерфейс». Снимаем флаги «Видимость» и «Автовидимость» для документа «Запрос цен».

Добавлен новый документ

Теперь в форме заказа материалов порядок.

Ссылка на основную публикацию
Adblock
detector