+7(499)-938-42-58 Москва
+7(800)-333-37-98 Горячая линия

1с 8 создать новый документ.

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

1с 8 создать новый документ.

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

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

В документе «Расход» или «Приход» нужно настроить связь на вкладке «Ввод на основании»:

Где указать с кем он связан:

Должна получиться следующая картина:

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

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

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

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

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

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

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

Чтобы в 1С автоматически создать процедуру, нужно нажать на кнопку «Конструктор ввода на основании»:

Где с помощью функции «Заполнить выражения» можно автоматически сопоставить название реквизитов:

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

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

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

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

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

Пример кода:

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

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

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

Пример кода:

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

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

Источник: https://programmist1s.ru/sozdat-na-osnovanii-programmno/

Работа с двоичными данными и потоками в 1С

1с 8 создать новый документ.

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

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

Двоичные данные

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

  • читать двоичные данные из файла и записывать их в файл;
  • передавать их между клиентом и сервером при помощи временного хранилища;
  • передавать и получать их по сети;
  • хранить их базе данных в реквизитах вида ХранилищеЗначения;
  • превратить двоичные данные в объект вида Картинка (при определенных условиях конечно);
  • хранить двоичные данные в макетах;
  • шифровать и расшифровывать, подписывать и проверять подписи;

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

Потоки

Это группа объектов назначение которых заключается в работе с потоками данных.

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

ФайловыйПоток — специализированный вариант объекта Поток, предназначенный для работы с данными находящимися в файлах на диске.

ПотокВПамяти — специализированный вариант объекта Поток, предназначенный для работы с данными находящимися в оперативной памяти.

МенеджерФайловыхПотоков — этот объект предоставляет типовые методы для работы с файлами (открытие и создание). Создать экземпляр этого объекта нельзя — имеется объект глобального контекста ФайловыеПотоки который и предоставляет доступ к методам менеджера.

Чтение и запись

ЧтениеДанных — этот объект предназначен для чтения различных типов данных из различных источников (потоки, файлы, двоичные данные).

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

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

ЗаписьДанных — этот объект предназначен для записи различных типов данных в приемник.

Практическая часть

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

Многие объекты — ДвоичныеДанные, Поток, ФайловыйПоток, ПотокВПамяти, ЧтениеДанных, ЗаписьДанных, РезультатЧтенияДанных имеют пары синхронных и асинхронных методов, например: Записать — НачатьЗапись, Закрыть — НачатьЗакрытие. Асинхронные методы нужны для обеспечения возможности одинаковой работы и в тонком клиенте, и в веб-клиенте.

Подробнее про синхронные и асинхронные методы можно прочесть в этой статье.

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.