УФ: программное создание и копирование документов с использованием конструкций ДанныеФормыВЗначение, ЗначениеВДанныеФормы. Использование режима копирования для ускорения ввода информации 1с копирование документа программно

Т.к. часто возникают вопросы по программному созданию/копированию/обработке объектов 1С:Предприятие в режиме "Управляемые формы", то решил скомпоновать в данной публикации примеры решения таких задач, с комментариями по каждому действию. Поначалу кажется все достаточно запутанно, но если по шагам все разложить и немного вникнуть, то всё должно встать на свои места.

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

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

ПРИМЕРЫ:

Ниже я приведу пример как создавать/копировать/изменять документы. Данный пример досконально разобран и позволит понять клиент-серверную архитектуру работы и распространить эти знания на другие объекты 1С (справочники, отчеты...).

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

Для этого я создал соответствующие команды и разместил их на форме.

1. "Создать калькуляцию".

&НаКлиенте Процедура СоздатьКалькуляцию(Команда) // Создаем форму объекта/документа на клиенте мФорма = ПолучитьФорму("Документ.Калькуляция.ФормаОбъекта"); // В переменную передаем объект(данные) открытой формы ДанныеФормы = мФорма.Объект; // выполняем простейшие операции ДанныеФормы.Блюдо = Объект.Ссылка; ДанныеФормы.Дата = ТекущаяДата(); // Открываем заполненную форму объекта (показываем для пользователя) мФорма.Открыть(); КонецПроцедуры

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

2. "Скопировать калькуляцию" .

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

&НаКлиенте Процедура СкопироватьКалькуляцию() // Создаем и открываем форму объекта/документа на клиенте Форма = ОткрытьФорму("Документ.Калькуляция.Форма.ФормаДокумента",); // В переменную передаем объект(данные) открытой формы ДанныеФормы = Форма.Объект; // Получаем ссылку на существующий документ (который хотим скопировать) - активную строку динамического списка в рабочем окне Калькуляция = Элементы.Калькуляции.ТекущиеДанные.Калькуляция; // Т.к. прямую ссылку на сервер не передать, закидываем в структуру (иначе выдаст ошибку) СтруктураДанных = Новый Структура("Калькуляция", Калькуляция); // Передаем необходимые параметры и проводим манипуляции с переменной ДанныеФормы на сервере СкопироватьОбъектДокументаНаСервере(ДанныеФормы, СтруктураДанных); // Теперь необходимо передать изменения из переменной ДанныеФормы в ранее открытую нами форму - для обновления данных в самой форме КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); КонецПроцедуры

Порядок действий таков: Мы на клиенте создаем форму нужного нам объекта и сразу открываем её (ОткрытьФорму...). Далее как и ранее мы передаем в переменную ДанныеФормы Объект открытой формы.

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

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

Уже на сервере мы с помощью функции ДанныеФормыВЗначение() преобразуем ДанныеФормы в привычный нам из "обычных форм" объект документа и работаем с ним с использованием серверных процедур. Копируем данные из другого документа, запускаем экспортные процедуры из модуля объекта, дозаполняем прочие реквизиты.

Функция ДанныеФормыВЗначение() требует указания соответствия (типа получаемого объекта): Тип("ДокументОбъект.Калькуляция").

При этом измененные на сервере ДанныеФормы сами не попадут в нашу созданную и открыую в самом начале форму, поэтому мы выполняем процедуру КопироватьДанныеФормы(ДанныеФормы, Форма.Объект) - тем самым запихаем изменения в видимую для пользователя форму документа Калькуляция (обновим в ней данные) .

Выше приведённые примеры решения задач, не являются единственными и в каждом индивидуальном случае могут быть оптимизированы или решены иным способом.

Думаю, начинающим познавать клиент-серверную архитектуру 1С пригодится данная статья)

/
Другие практические рекомендации

Использование режима копирования для ускорения ввода информации

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

Копирование доступно практически во всех формах 1С:Предприятия в которых информация выводится в виде списка. Для копирования используется пункт "Копировать" меню "Действия" или соответствующая копка панели инструментов или клавиша F9.

Копироваться могут как сами объекты (элементы справочников, документы, операции), так и их строки (строки документов, проводки операций).

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

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

С помощью копирования проводок в форме операции можно быстро ввести однотипные проводки, изменяя только различающие значения субконто, количество и сумму. Следует заметить, что если установить параметр "Автоматический ввод новой проводки с копированием" (меню "Сервис - Параметры" - закладка "Операция"), то после окончания ввода проводки следующая проводка будет создаваться автоматически и заполняться данными введенной проводки.

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

Режим копирования операции может быть настроен пользователем в группе параметров "Копирование операции" (меню "Сервис - Параметры" - закладка "Операция"). Данная настройка позволяет весьма эффективно использовать режим копирования в журнале операций для ввода большого числа ручных операций.

При копировании в журнале операций следует учитывать, что, если текущая операция является документом, а не ручной операцией, то программа может выполнить и копирование документа, и копирование самой операции. Основным вариантом является копирование документа, создавшего операцию. Если необходимо создать ручную операцию, скопировав в нее данные из операции документа, то следует использовать пункт меню "Действия - Документ - Копировать операцию документа".

При копировании операции в журнале проводок программа предлагает скопировать в новую операцию только текущую проводку или все проводки операции, к которой относится текущая проводка.

Следует также заметить, что в журнале операций и журнале проводок существует возможность совмещать режим копирования с режимом ввода типовой операции. В этом случае операция будет вводиться по шаблону типовой операции, но по возможности будут подставляться данные из копируемой операции (проводки).

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

Если скопировать документ в 1С, тогда впоследствии его можно загрузить в другую программу или отправить в банк. С программой 1С работают все предприятия, ее база содержит все действия, совершаемые при ведении хозяйственной деятельности компании. Документы, хранящиеся в 1С, представляют собой единый учет организации. Программно скопировать документ в 1С вам помогут специалисты компании «Сетби». Они разберутся в самых сложных вопросах, касающихся автоматизации и настройки ПО. Наша задача - объяснить доступным языком, как работать на платформе 1С.

Как скопировать список документов в 1С программе?
Практически все предприниматели используют для учета бизнес-процессов, а также для ведения бухгалтерской деятельности программу 1С. Учитывая упрощенный интерфейс, разобраться начинающему пользователю ПО будет сложно во всех имеющихся возможностях платформы. Даже то, как копировать табличный документ в другой 1С, знает не каждый работающий в сфере финансов человек. Взаимодействуя с большим количеством информации нужно помнить об обеспечении эффективного способа заполнения данных:
документации;
операций;
справочников.

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

Рассмотрение нюансов в работе с 1С программой
Как же скопировать один документ в другой 1С с первого раза и не допуская ошибок, знают профессионалы своего дела, работающие в компании «Сетби». На начальном этапе стоит разобраться в том, что такое конфигурация в программе 1С - это основной функционал, который позволит с 1С 7.7 скопировать документ.

Конфигураций существует более 500, их задачей является автоматизация отраслевой специфики организации на должном уровне. Производить работу в 1С можно в двух встроенных режимах: «Предприятие» и «Конфигуратор». Структура 1С рассчитана на ведение сразу нескольких видов учета:
оперативного;
налогового;
бухгалтерского.

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

Как скопировать документ из 1С в Ворд?
Бухгалтерам для полноценного и более комфортного рабочего процесса нужно проделывать с документами множество разных манипуляций. Функционал программного обеспечения 1С не может полностью удовлетворить все потребности пользователя, поэтому в таких случаях есть необходимость скопировать документ в тонком клиенте 1С и сохранить в программе Ворд. Это объясняется тем, что функциональные возможности платформы Word намного разнообразней, они позволяют строить графики, диаграммы, и в целом приводить документ в читабельный и внешне приемлемый вид.

Документ с 1С скопировать в Ворд можно благодаря функции, располагающейся на панели задач «Сохранить как». Единственное, что стоит помнить в этой работе, что надо сохранить документ в том формате, который подходит к нужной вам программе. Чтобы скопировать весь документ для Word из 1С, нужно выделить необходимый текст или таблицу, и потом выполнить в панели задач необходимые действия. В сети Интернет можно найти обучающие видео уроки, в которых есть возможность почерпнуть что-то важное для своей работы. Но лучше, чем наши специалисты компании «Сетби» вам никто не объяснит, как скопировать документ из 1С в Word.

Обо всех деталях процесса копирования документов в 1С расскажут наши сотрудники
Иногда случается так, что нет надобности копировать сразу весь документ, а наоборот нужен только один столбец или одна строка для переноса в другую программу. Выделенные строки табличных частей можно копировать из одного документа в другой зная все тонкости данного процесса. В 1С 8 скопировать строку документа имеется возможность при помощи следующих кнопок: скопировать строки - Ctrl+Shift+C, вставить строки - Ctrl+Shift+V. Применяя копирование в документах можно заполнить табличную часть за короткий промежуток времени.

Не теряйте свое ценное время в поисках нужной информации о программном копировании документа в 1С 8 - компания «Сетби» предоставит вам высококвалифицированных людей в данной области. Все работы ведутся нами по регламентам, благодаря этому этапы рабочего процесса завершаются в срок. Оставляйте свои номера телефонов, и наши менеджеры свяжутся с вами в ближайшее время.