1с 7 скопировать документ
Сохранение конфигурации 1С в файл может потребоваться в различных случаях:
- когда необходимо создать аналогичную пустую информационную базу;
- когда нужно перенести изменения в конфигурации из одной базы (например, тестовой) в другую и т.д.
В отличие от платформы 1С:Предприятие 8.х, где конфигурацию нужно было сохранять в файл через меню Конфигурация — Сохранить конфигурацию в файл…, в версии 1С 7.7 этот файл уже готов и лежит в папке с информационной базой. Имя файла: 1Cv7.MD.
Для решения этой задачи нужно:
- Создать пустую папку на диске, где будет находиться информационная база.
- Добавить эту папку в загрузчик 1С:Предприятие 7.7 (кнопка Добавить).
- Далее есть 2 пути:
- Поместить в папку с информационной базой файл 1Cv7.MD с нужной конфигурацией;
- Зайти в конфигуратор, воспользоваться командой Конфигурация — Загрузить измененную конфигурацию (команда доступна только при закрытом окне конфигурации) и выбрать в открывшемся окне файл 1Cv7.MD.
Для загрузки измененной конфигурации в информационную базу 1С:Предприятие 7.7 необходимо воспользоваться командой Конфигурация — Объединение конфигураций.
В открывшемся окне диалога выбора файла нужно выбрать файл 1Cv7.MD с измененной конфигурацией.
Далее будет показано окно анализа различий в текущей и загружаемой конфигурациях. Здесь можно выбрать:
- какие объекты загружать;
- приоритет текущей или загружаемой конфигурации;
- метод объединения (загружаемые объекты полностью замещают аналогичные имеющиеся, или же объединяются с ними).
Обработка предназначена для копирования данных из одного справочника в другой, при этом справочники могут располагаться в разных конфигурациях. Могут копироваться
подчиненные справочники, если скопированы главные. При копировании переносится структура дерева.
1. Запустите обработку, желательно из базы, в которую будем копировать.
2. Выберите БАЗА-ИСТОЧНИК — путь к базе с данными, БАЗА-ПРИЕМНИК — ТЕКУЩАЯ
4. После подключения заполнятся списки справочников. Выберите Справочник-источник и справочник-приемник. При выборе заполнятся таблицы реквизитов.
6. Далее нужно выбрать тип операции: копировать только новые, обновлять существующие, либо и то и другое. Для принятия решения о том, существует ли уже запись в приемнике или нет, выбирается признак равенства. Варианты: запись существует, если равны коды, если равны наименования, либо если равны и коды и наименования.
9. Для периодических реквизитов необходимо задать дату, на которую они будут считаны и записаны.
10. Рекомендуется для больших справочников использовать транзакцию.
11. Если нарушается уникальность кодов, можно попробовать отключить их копирование. Это поможет, если включена автонумерация.
12. Можно копировать не весь справочник, а его группу, набрав код группы в соответствующем поле формы. Это срабатывает и для владельца подчиненного справочника. При данном режиме группа копируется в первый уровень справочника, на нужное место ее можно переместить после копирования.
13. До релиза 1С 7.7.008 при завершении работы происходил некорректный выход из программы, в памяти оставался процесс 1cv7.exe. Поэтому рекомендуется пользоваться релизом 008 или более поздним.
На основе имеющегося документа в конфигураторе создал документ-клон, но с другим названием и чуть измененной формой. Те же реквизиты, код в форме и в проведении (=МОДУЛЬ ДОКУМЕНТА). Ничего не менялось. Просто тупой copy-paste.
Но документ проводится, но не создает проводок по счетам и операций.
гораздо проще делать через копировать объект (F9).
Я недавно начал программировать в 1С v7.7. <br>И мне необходимо с помошью обработки копировать все элементы из одной группы справочника в другую?Если можно сделать, как-то еще подскажите. ))) А то в ручную слишком много элементов перенасить надо. времени уйдет очень много! Зарание спасибо. <br>
". <br>Сп=СоздатьОбъект("Справочник. ");<br>Сп.ИспользоватьРодителя(ВыбРодительОткуда); // это группа, откуда переносить<br>Сп.ВыбратьЭлементы(1);<br>НачатьТранзакцию(); // на всякий случай для работы в сети немонопольно<br>Пока Сп.ПолучитьЭлемент()=1 Цикл<br>Сп.Родитель=ВыбРодительКуда; // это группа, куда переносить<br>Сп.Записать();<br>КонецЦикла;<br>ЗафиксироватьТранзакцию();<br>. <br><br>Если не надо перемещать вложенные группы, в начало цикла добавьте условие<br><br>Если Сп.ЭтоГруппа()=1 Тогда<br>Продолжить;<br>КонецЕсли;<br><br>PS. Рекомендую записаться на курсы программистов 1с, поможет.<br>"
"Думаю, что не будет работать, скажет, что нарушен порядок выборки.<br>Я бы делал так:<br>СписокКПеремещению=СоздатьОбъект("СписокЗначений");<br>Сп=СоздатьОбъект("Справочник. ");<br>Сп.ИспользоватьРодителя(ВыбРодительОткуда); // это группа, откуда переносить<br>Сп.ВыбратьЭлементы(1);<br>Пока Сп.ПолучитьЭлемент()=1 Цикл<br>СписокКПеремещению.ДобавитьЗначение(Сп.ТекущийЭлемент());<br>КонецЦикла;<br>НачатьТранзакцию(); // на всякий случай для работы в сети немонопольно<br>Для i=1 По СписокКПеремещению.РазмерСписка() Цикл<br>Сп.НайтиЭлемент(СписокКПеремещению.ПолучитьЗначение(i));<br>Сп.Родитель=ВыбРодительКуда; // это группа, куда переносить<br>Сп.Записать();<br>КонецЦикла;<br>ЗафиксироватьТранзакцию();<br>"
Верное замечание, действительно, при первом варианте "перепрогонять" приходится обработку. Спасибо.
В данном примере показано, как переносить элементы а мне их надо копировать. непродскажете как сделать?)))
Готовую обработку попробуй:<br> http://infostart.ru/projects/590/?<br> ;"Копир групп, элементов и подчинённых справочников"
> В данном примере показано, как переносить элементы а мне их надо >копировать. непродскажете как сделать?)))<br><br>Копировать элементы справочника из одной группы в другую - вы хоть понимаете что такое система справочников в системе 1С?<br>Это касается и другово вашего вопроса по переодическим реквизитам. Лучше обяъсните что вы делаете и что надо сделать на самом деле(какая поставлена перед вами задача)?<br><br>
Копировать тоже можно, но! Боюсь, что поскольку вы написали, что вы новичок, не стоит вам этого делать. Это отпугнет вас от изучения языка и принципов работы системы. Но мне не жалко, я, в принципе, могу описать основные проблемы, которые возникают при этой задаче.<br>Если рассматривать задачу в общем виде и пытаться написать универсальный алгоритм для проведения данной операции, то мы должны понимать, что у нас имеется:<br>1. Набор произвольных реквизитов для отдельно взятого справочника.<br>2. Реквизиты могут быть не простыми, а периодическими.<br>3. Значения периодических реквизитов могут быть установлены не только вручную, но и документами.<br>4. Существует понятие подчиненности справочников. То есть, копируемый элемент может иметь какого то владельца, мало того, в свою очередь может являться владельцем для каких то других элементов. Мало того, и для тех элементов тоже могут иметься и владельцы и подчиненные элементы.<br><br>Реализовать задачу с какими то упрощениями можно! Например, значения периодических реквизитов, установленные документами можно записывать в элементе-приемнике как "установленные вручную". Если для вас эта задача просто для обучения - реализуйте ее с еще большими упрощениями. Копируйте только код и наименование. Общий принцип работы вы поймете. Код и наименование ненулевые практически в любом справочнике.
Добрый вечер. Программно копирую документ, но не могу потом поймать его контекст. Делаю через: 1. Открывается журнал документа и документ делается активным (АктивизироватьОбъект); 2. Копирую документ, Сервис.ЭмулироватьКлавиатуру("
А зачем такой гемор? Не проще ли программно его скопировать, заполнив по метаданным?
Казалось что проще сэмулировать копирование, чем заполнять по метаданным.
+ В смысле какая исходная задача для копирования документа?
всего-то примитивный запрос на insert в пару-тройку табличек.
Надо в документе сделать кнопку, которая будет делать идентичный документ, но разбивать табличную часть по условию. Т.е. какая-то часть строк останется в первом документе, а остальные перейдут в копию. Да я был бы рад сделать прямым, но пока что не имею представления как это сделать.
ВводНаОсновании(ДокОснование) - почитай в справке, там есть документ основание и твой новый документ - новый заполняй как тебе нужно.
В моём документе не прописана процедура ввода на основании документа такого же вида. Писать её не вижу смысла. Надо всего-то сделать копию текущего документа, а там уже с табличной частью разбираться.
У меня есть подозрение, что работа с атрибутами через КонтекстФормы это хреновое занятие.
Ты на пальцах расскажи, занафея тебе форму открывать??
Знаю, уже много раз получал в морду эту фразу, но тут надо именно так. Можно создать программно через Новый и заполнить, но этот документ (копию) нужно будет сразу выдать на экран. А для этого его нужно будет сохранить после создания. Нафига мне это надо? Надо открыть форму, заполнить чё надо и думать писать его в базу или нет.
в же сказал - откроется форма нового документа заполненная как написано в процедуре ВводНаОсновании. Пользователь примет решение - сохранять или нет.
Я, возможно, как-то неправильно поставил вопрос. Мне надо просто скопировать документ, на который есть ссылка и получить контекст формы полученного копированием документа.
+ Зачем мне дописывать ВводНаОсновании? Можно и через метаданные скопировать.
++ Это сродни тому, что я и хочу: "ОткрытьФорму и через контекст делать что угодно", но только без переписи ВводНаОсновании.
Читайте также: