1с 7 скопировать документ
Для работы с файлами и каталогами в 1С:Предприятие используется специальный объект " ФС " (файловая система). Средства языка 1С имеют возможности поиска, копирования, переименования, удаления и совершения других операций с файлами и каталогами.
Для работы с файловой системой предназначен объект " ФС ". В принципе его не требуется создавать с помощью функции СоздатьОбъект . Можно считать, что он уже создан. Но 1С позволяет создать сколько угодно таких объектов при помощи функции СоздатьОбъект ; Это может оказаться полезным при создании рекурсивных функций для работы с фаловой системой. Пример такой функции будет рассмотрен далее.
Открывает окно диалога выбора/сохранения файла. Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
Параметры :
-: 0 - диалог типа , 1 - диалог типа ;
- переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;
- переменная, содержащая на входе строку с начальным каталогом, а на выходе - имя выбранного каталога;
- строка с заголовком окна;
- строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');
- строка с расширением файла по умолчанию;
- время ожидания отклика пользователя в секундах (необязателен).
Открывает окно диалога выбора/сохранения файла картинки.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
Синтаксис : ВыбратьФайлКартинки (, , , , , )
Открывает окно диалога выбора каталога.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена'; 1 - если в окне диалога нажата кнопка 'ОК', при этом в переменную возвращается имя выбранного каталога; -1 (минус единица) - закончилось время ожидания отклика пользователя.
Синтаксис : ВыбратьКаталог(,,)
Проверяет существование файла..
Возвращает: 1 - файл существует; 0 - не существует.
Синтаксис : СуществуетФайл()
Копирует файл.
Синтаксис : КопироватьФайл(,,)
Параметры :
- строка с именем файла источника;
- строка с именем файла приемника;
-:
0 - существующий файл приемника перезаписать;
1 - существующий файл приемника не перезаписывать.
Параметры :
- строка с именем файла источника;
- строка с новым именем файла;
-:
0 - запрещает перемещение файла между дисками и существующий файл приемника не перезаписывается;
1 - разрешает перемещение файла между дисками (только для файлов) и существующий файл приемника перезаписывается.
Открывает выборку файлов по заданной маске и находит первый файл.
Возвращает строку с именем найденного файла.
Синтаксис : НайтиПервыйФайл()
Находит следующий файл по открытой выборке файлов.
Возвращает строку с именем найденного файла.
Синтаксис : НайтиСледующийФайл()
Также часто применяются системные функции:
ФС . УстТекКаталог ( КаталогИБ ());
ИмяФайла = "";
ИмяФайла = ФС . НайтиПервыйФайл ("*.txt");
Если ИмяФайла <> "" Тогда
ФС . СоздатьКаталог ("TXT");
ФС . КопироватьФайл ( ИмяФайла , ФС . ТекКаталог () + "TXT" + ИмяФайла );
ФС . УдалитьФайл ( ИмяФайла );
Пока 1 = 1 Цикл
ИмяФайла = " ";
ИмяФайла = ФС . НайтиСледующийФайл ()
Если ИмяФайла <> "" Тогда
ФС . КопироватьФайл ( ИмяФайла , ФС . ТекКаталог () + "TXT" + ИмяФайла );
ФС . УдалитьФайл ( ИмяФайла );
Иначе
Прервать ;
КонецЕсли ;
КонецЦикла ;
//выбрать файл с фотографией сотрудника
ИмяФайла = "";
ИмяКаталога = КаталогИБ ();
Если ФС . ВыбратьФайлКартинки (0, ИмяФайла , ИмяКаталога ,"Укажите файл с фотографией:",,20) = 1 Тогда
ВремКартинка = СоздатьОбъект ("Картинка");
ВремКартинка . Загрузить ( ИмяКаталога + ИмяФайла );
КартинкаНаФорме . УстановитьКартинку ( ВремКартинка );
КонецЕсли ;
При переборе файлов методами НайтиПервыйФайл() и НайтиСледующийФайл() файловая система перебирает как файлы, так и каталоги.
Функция ЭтоКаталог ( ИмяФайла )
Перем Размер , Атрибуты , Создан , Доступ , Запись , РасшИмяФайла ;
Рез = 0;
ФС . АтрибутыФайла ( ИмяФайла , Размер , Атрибуты , Создан , Доступ , Запись , РасшИмяФайла );
Если Сред ( Атрибуты ,4,1) = "1" Тогда
Рез = 1;
КонецЕсли ;
Возврат Рез ;
КонецФункции
Этот пример показывает работу с файловой системой через рекурсивную процедуру, создающую объект " ФС ".
Эта процедура позволяет копировать все файлы или файлы с заданным расширением из одного каталога в другой, включая все вложенные подкаталоги.
Процедура КопироватьФайлы ( ПутьОткуда , ПутьКуда , Расширение )
ФС_ = СоздатьОбъект ("ФС");
ИмяФайла = ФС_ . НайтиПервыйФайл ( ПутьОткуда + "\*.*");
Пока ПустаяСтрока ( ИмяФайла ) = 0 Цикл
Если ( ИмяФайла <> ".") И ( ИмяФайла <> "..") Тогда
Если ЭтоКаталог ( ПутьОткуда + "\" + ИмяФайла ) = 1 Тогда
ПодКаталогОткуда = ПутьОткуда + "\" + ИмяФайла ;
ПодКаталогКуда = ПутьКуда + "\" + ИмяФайла ;
// Проверим наличие подкаталога в папке ПутьКуда
( ЭтоКаталог ( ПодКаталогКуда ) = 0) Тогда
ФС_ . СоздатьКаталог ( ПодКаталогКуда );
КонецЕсли ;
КопироватьФайлы ( ПодКаталогОткуда , ПодКаталогКуда , Расширение );
Иначе
Поз = Найти ( ИмяФайла ,".");
Расш = Нрег ( ? ( Поз > 0, Сред ( ИмяФайла , Поз + 1),""));
Если Расш <> Нрег ( Расширение ) Тогда
ИмяФайла = ФС_ . НайтиСледующийФайл ();
Продолжить ;
КонецЕсли ;
ИмяФайлаИсточника = ПутьОткуда + "\" + ИмяФайла ;
ИмяФайлаПриемника = ПутьКуда + "\" + ИмяФайла ;
ФС_ . КопироватьФайл ( ИмяФайлаИсточника , ИмяФайлаПриемника ,0); // Копируем с перзаписью
КонецЕсли ;
КонецЕсли ;
ИмяФайла = ФС_ . НайтиСледующийФайл ();
КонецЦикла ;
КонецПроцедуры
Конфигурация
1 Alt + К + Enter Открыть конфигурацию
2 Alt + К + Т Поиск во всех текстах
3 Alt + К + О Объединение конфигураций
4 Alt + K + З Загрузить измененную конфигурацию
5 Alt + К + Е Конвертирование данных
Администрирование
6 Alt + А + П Пользователи
7 Alt + А + Х Сохранить данные
88 Alt + А + В Восстановить данные
9 Alt + А + Ы Выгрузить данные
10 Alt + А + Г Загрузить данные
11 Alt + А + Н Настройка журнала регистрации
12 Alt + А + Р Распределенная ИБ
13 Alt + А + Р + У Управление
14 Alt + А + Р + А Автообмен
Действия
15 Alt + Д + Т Открыть в отладчике
16 Alt + Д + К Синтаксический контроль запросов
17 Alt + Д + И Синтаксический контроль
18 Alt + Д + Р Процедуры и функции модуля
Файл
19 Ctrl + N Новый
20 Ctrl + O Открыть
21 Ctrl + S Сохранить
22 Ctrl + P Печать
23 Alt + Ф + Р Сравнить файлы
24 Alt + Ф + З Закрыть
25 Alt + Ф + Р + Р + Enter Просмотр
26 Alt + Ф + М Параметры страницы
Работа с закладками
27 Shift + F2 Предыдущая закладка
28 Alt + F2 Закладка
29 F2 Следующая закладка
Работа с блоком
30 Ctrl + Shift +F Форматировать
31 Tab Сдвинуть вправо
32 Shift + Tab Сдвинуть влево
33 Ctrl + Num Добавить комментарий
34 Ctrl + Shift + Num Удалить комментарий
Поиск и замена
43 Ctrl + Shift + F3 Заменить
44 Ctrl + F3 Искать
45 F3 Повторить поиск
46 Alt + F3 Искать назад
47 Shift + F3 Искать вперед
48 Ctrl + Shift + L Переход к строке
Сервис
49 Ctrl + F2 Калькулятор
50 Alt + С + С Синтаксис помощник
51 Alt + С + Н Настройка шаблонов
52 Alt + С + В Временная блокировка
53 F11 Запуск предприятия
54 F12 Запуск отладчика
Помощь
55 F1 Помощь
56 Shift + F1 Содержание
57 Ctrl + F1 Поиск в Синтакс-Помощнике
58 Alt + П + О О программе
Общие
59 Alt + Enter Свойства
60 Alt + F4 Выход
Документ
1 Ctrl + Enter Кнопка по умолчанию
2 F4 Выбор поля (альтернатива мыши)
3 Tab Прямой обход полей
4 Shift + Tab Обратный обход полей
Справочник/Действия
5 Ins Новый элемент
6 Ctrl + F9 Новая группа
7 Shift + Enter Изменить элемент
8 Alt + Д + Р Просмотр элемента или группы
9 F9 Копировать элемент или группу
10 Del Пометить элемент/Снять пометку
11 F5 История значения
12 Alt + Д + А Найти в дереве
13 Ctrl + F5 Перенести в другую группу
14 Alt + Д + Ч Подчиненный справочник
Сортировка
15 Ctrl + 1 Сортировка справочника по коду
16 Ctrl + 2 Сортировка справочника по наименованию
17 Ctrl + 3 Сортировка справочника по реквизиту
18 Ctrl + стрелка вверх На уровень вверх
19 Ctrl + стрелка вниз На уровень вниз
Для выполнения копирования операции установите курсор в журнале операций или проводок на операцию (или проводку операции) которую вы хотите копировать, а затем выполните одно из следующих действий: нажмите кнопку на панели инструментов окна журнала или нажмите клавишу F9 или в главном меню программы откройте меню «Действия», в этом меню выберите пункт «Копировать».
Если копируемая операция сформирована документом, то при вызове режима копирования будет копироваться документ, сформировавший операцию. В этом случае действия системы будут аналогичны копированию документа в журнале документов и операция может быть сформирована уже скопированным документом. Однако, существует возможность копировать операцию сформированную документом без копирования документа, то есть в качестве вводимой вручную операции. Для этого следует выбрать пункт «Документ — Копировать операцию документа» из меню «Действия».
Если копируется операция, введенная вручную, или использован пункт «Копировать операцию документа», на экране появится форма для ввода новой операции, заполненная данными, перенесенными из копируемой операции.
Состав данных, переносимых из копируемой операции, определяется в режиме настройки параметров операции («Сервис — Параметры — Операция — Копирование операции». При копировании операции могут переноситься следующие данные:
Дата копирование даты операции;
Сумма копирование суммы операции. Если выбран режим автоматического заполнения суммы, то копирование суммы недоступно;
Заголовок копирование содержания операции и дополнительных реквизитов самой операции (если они определены в конфигурации);
Проводки копирование проводок операции.
При вызове режима копирования в журнале проводок выдается запрос, предлагающий выбрать один из двух вариантов копирования: «Одну проводку» или «Всю операцию». При выборе варианта «Одну проводку» в новую операцию будет помещена только та проводка, на которой установлен курсор в журнале проводок, а при выборе варианта «Всю операцию» в новую операцию будут помещены все проводки операции, которой принадлежит текущая проводка журнала проводок.
Дальнейшая работа пользователя в форме операции ничем не отличается от обычного ввода повой операции.
Добрый вечер. Программно копирую документ, но не могу потом поймать его контекст. Делаю через: 1. Открывается журнал документа и документ делается активным (АктивизироватьОбъект); 2. Копирую документ, Сервис.ЭмулироватьКлавиатуру("
Надо в документе сделать кнопку, которая будет делать идентичный документ, но разбивать табличную часть по условию. Т.е. какая-то часть строк останется в первом документе, а остальные перейдут в копию. Да я был бы рад сделать прямым, но пока что не имею представления как это сделать.
ВводНаОсновании(ДокОснование) - почитай в справке, там есть документ основание и твой новый документ - новый заполняй как тебе нужно.
В моём документе не прописана процедура ввода на основании документа такого же вида. Писать её не вижу смысла. Надо всего-то сделать копию текущего документа, а там уже с табличной частью разбираться.
Знаю, уже много раз получал в морду эту фразу, но тут надо именно так. Можно создать программно через Новый и заполнить, но этот документ (копию) нужно будет сразу выдать на экран. А для этого его нужно будет сохранить после создания. Нафига мне это надо? Надо открыть форму, заполнить чё надо и думать писать его в базу или нет.
в же сказал - откроется форма нового документа заполненная как написано в процедуре ВводНаОсновании. Пользователь примет решение - сохранять или нет.
Я, возможно, как-то неправильно поставил вопрос. Мне надо просто скопировать документ, на который есть ссылка и получить контекст формы полученного копированием документа.
++ Это сродни тому, что я и хочу: "ОткрытьФорму и через контекст делать что угодно", но только без переписи ВводНаОсновании.
При массовом вводе информации весьма важно обеспечить максимально эффективный способ заполнения данных документов, справочников, операций. Одним из достаточно простых, но полезных режимов, повышающих производительность при вводе информации, является режим копирования.
Копирование доступно практически во всех формах 1С:Предприятия в которых информация выводится в виде списка. Для копирования используется пункт "Копировать" меню "Действия" или соответствующая копка панели инструментов или клавиша F9.
Копироваться могут как сами объекты (элементы справочников, документы, операции), так и их строки (строки документов, проводки операций).
Наиболее простым является создание новых документ и элементов справочника, копированием уже имеющихся. В этом случае необходимо только изменить некоторые реквизиты, которые у вновь вводимого объекта отличаются от образца.
При вводе документов с многострочной частью копирование позволяет не заполнять большую часть данных строки, а взять их из уже введенной строки.
С помощью копирования проводок в форме операции можно быстро ввести однотипные проводки, изменяя только различающие значения субконто, количество и сумму. Следует заметить, что если установить параметр "Автоматический ввод новой проводки с копированием" (меню "Сервис - Параметры" - закладка "Операция"), то после окончания ввода проводки следующая проводка будет создаваться автоматически и заполняться данными введенной проводки.
Режим копирования проводок можно также использовать в тех случаях, когда по ошибке в проводке введена обратная корреспонденция счетов . Если выполнить копирование проводки и ввести в новой проводке правильную корреспонденцию, то значения субконто автоматически подставятся из предыдущей проводки, то есть субконто дебета будет взято из сукбонто кредита и наоборот (в соответствии с изменением корреспонденции счетов). После этого можно удалить неправильную проводку.
Режим копирования операции может быть настроен пользователем в группе параметров "Копирование операции" (меню "Сервис - Параметры" - закладка "Операция"). Данная настройка позволяет весьма эффективно использовать режим копирования в журнале операций для ввода большого числа ручных операций.
При копировании в журнале операций следует учитывать, что, если текущая операция является документом, а не ручной операцией, то программа может выполнить и копирование документа, и копирование самой операции. Основным вариантом является копирование документа, создавшего операцию. Если необходимо создать ручную операцию, скопировав в нее данные из операции документа, то следует использовать пункт меню "Действия - Документ - Копировать операцию документа".
При копировании операции в журнале проводок программа предлагает скопировать в новую операцию только текущую проводку или все проводки операции, к которой относится текущая проводка.
Следует также заметить, что в журнале операций и журнале проводок существует возможность совмещать режим копирования с режимом ввода типовой операции. В этом случае операция будет вводиться по шаблону типовой операции, но по возможности будут подставляться данные из копируемой операции (проводки).
Приведем еще один способ использования режима копирования. В некоторых случаях в процессе редактирования уже записанного документа по ошибке удаляются или изменяются данные, которые не планировалось изменять. Например, в большом многострочном документе при корректировке цен случайно удалили одну из строк. Соответственно нужно узнать содержимое удаленной строки, чтобы ввести ее заново. Если закрыть документ без сохранения, то придется заново вносить все сделанные изменения. Режим копирования позволяет "подсмотреть" содержимое существующего документа до его перезаписи, но без закрытия формы документа. Следует найти редактируемый документ в журнале и скопировать его. В открытом документе можно посмотреть интересующие данные и закрыть документ без сохранения.
Читайте также: