Часто бывает: клиенты просят «сделать им чистую базу». На «Семерке» это просто: удаляем нужные таблички, запускаем тестирование и через пару минут получаем базу со всеми текущими настройками, справочниками и без единого документа. Затем обычно следует перенос текущих остатков по регистрам, проверка корректности данных и запуск чистой базы в работу. Как правило, обрезка на этом заканчивается, но иногда просят оставить часть документов: например, расходные накладные в ТиС, чтобы по ним можно было оформить возврат (в «торговле» возврат — это приходная накладная, выписанная на основании расходной) или Счета-фактуры, по которым еще не прошла отгрузка.
Чтобы не писать под каждую конфигурацию обработку переноса конкретных видов документов, было принято решение написать универсальную обработку переноса. Насколько она получилась удачной — решать Вам.
Для разработчика, как я думаю, эта обработка будет интересна как пример работы с объектом «Метаданные» и OLE-подключением.
Изменения в версии 1.1.
1. Добавлены фильтры (условия) для отбора документов в базе-источнике: только помеченные на удаление, только помеченные на удаление.
2. Реализовано управление режимом поиска и замены документов: флаг Поиск по номеру и замена (в версии 1.0 — поиск и замена работала по умолчанию).
3. Возможность сохранять номер документа при переносе. Чтоб не было конфликтов префикс номера предваряется латинской буквой «x».
4. Добавлен контроль уникальности номера перед записью документа: Если такой номер уже существует, то подбираются по очереди префиксы из ряда «a,b,c,d,e,f,g».
отгрузки никогда не проходят по счф
Счф к отгрузкам не имеет никакого отношения в смысле фиксации долгов и взаиморасчетов между сторонами сделки
За такое грязное изьяснение автору незачет
Счет фактура в «семерочной» торговле — это аналог «ЗаказаПокупателя» «восьмерочной» УТ. На взаиморасчеты они никак не влияют, но резервируют товар под покупателя. Вообще смысл моей обработки не восстановление оборотов по регистрам (иначе теряется смысл обрезки и переноса остатков), а перенос документов, которые необходимы операторам для работы. Естественно в неактивном состоянии (записанные или помеченные на удаление). Ну вот был у них выписан ранее счет, а отгрузку они вводят исключительно на основании и все тут.
1. Шо за бред по поводу Счета-Фактуры и ЗаказПокупателя??? С каких это пор сч.фактура резервирует товар???
2. По ссылкам зависимым перенос осуществляется?
Может быть автор имел в виду Счет (Заявку покупателя)? Справочники из реквизитов переносятся целиком или по ссылкам? В общем вопросов много возникает, прежде чем скачивать
(3) Sanario, Поставьте срок резерва больше нуля, проведите документ и посмотрите движения. А зачем, по вашему в конфигурации регистр «Резервы товаров» и какой документ по нему делает движения?
(4) LionsMap, Обработка переносит только документы. Предполагается, что справочники оставлены без изменений (из конфигурации удалены файлы *.dh, *.dt, *.ra, *.rg. Поиск осуществаляется для справочников, счетов по коду (если кода нет — по наименованию), для документов — по номеру в пределах периодичности.
Скажите пожалуйста ваше мнение. Актуально ли для вас чтобы обработка тянула вместе с документами еще и сопутствующие справочники (т.е. создавала элементы и заполняла реквизиты)? Если да, то могу дописать такое.
глВыбранЛи<<?>>(докТекДок.Вид(),»Вид документа»);
??? Неужто никто не наткнулся?
«Актуально ли для вас чтобы обработка тянула вместе с документами еще и сопутствующие справочники »
конечно, так и должно быть. Еще актуально — фильтр по виду документов, по фирме.
(7) нормальная обработка просто обязана тянуть сопутствующие по реквизитам документов справочники.
И да — есть некое обращение к телу глобальной процедуры глВыбранЛи — имеет смысл вывести содержимое это процедуры в саму обработку…, иначе — сообщение об ошибке…
Ничего она не переносит
.глВыбранЛи<<?>>(докТекДок.Вид(),»Вид документа»);
Даже если и забить документы не создает
глВыбранЛи<<?>>(докТекДок.Вид(),»Вид документа»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(210)}: Процедура не обнаружена (глВыбранЛи)
глВыбранЛи<<?>>(дДиаНачДата,»Начало периода»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(211)}: Процедура не обнаружена (глВыбранЛи)
глВыбранЛи<<?>>(дДиаКонДата,»Конец периода»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(212)}: Процедура не обнаружена (глВыбранЛи)
глВыбранЛи<<?>>(перДиаПроведенные,»Статус создаваемых документов»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(213)}: Процедура не обнаружена (глВыбранЛи)
Да согласен, не работает:
лВыбранЛи<<?>>(докТекДок.Вид(),»Вид документа»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(210)}: Процедура не обнаружена (глВыбранЛи)
глВыбранЛи<<?>>(дДиаНачДата,»Начало периода»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(211)}: Процедура не обнаружена (глВыбранЛи)
глВыбранЛи<<?>>(дДиаКонДата,»Конец периода»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(212)}: Процедура не обнаружена (глВыбранЛи)
глВыбранЛи<<?>>(перДиаПроведенные,»Статус создаваемых документов»);
{C:USERSАДМИНИСТРАТОРDESKTOPАЦ_ПЕРЕНОСДОКИДЕНТБАЗА.ERT(213)}: Процедура не обнаружена (глВыбранЛи)
Подскажите, ошибка с «лВыбранЛи» исправлена?
Поскольку автор не отвечает, то возьму на себя смелость.
Вставьте в обработку процедуру:
К сожалению пока нет времени заняться обработкой. В планах учесть все пожелания, включая перенос справочников. Для правильной работы обработки на нетиповых конфигурациях (или на тех где нет в глобальном модуле процедуры глВыбранЛи()) кроме самой процедуры (из поста выше) нужно добавить переменную. В первой строчке прописать
Перем глВсеВыбрано;