Часто при разработке необходимо выделить и удалить какую-то часть помеченных на удаление данных. Особенно эта необходимость сказывается на больших информационных базах с десятками или сотнями тысяч помеченных на удаление объектов. Обрабатывать сразу все данные очень продолжительно по времени, поэтому без подручного средства, в котором можно доходчиво посмотреть, выбрать и удалить какую-то часть данных никак.
Данная обработка является итогом моих наработок за некоторый период времени. Функционал расширял по мере необходимости. Обработка работает в режиме обычного приложения и в толстом клиенте управляемого приложения. В обработке реализовано:
- отображение дерева метаданных с возможностью отметки тех объектов базы, которые необходимо удалить;
- отображение количества помеченных на удаление объектов, отмеченных пользователем и возможных к удалению;
- возможность включениевыключения монопольного режима работы;
- возможно удаления связанных записей независимых регистров сведений;
- возможность групповой замены найденных ссылок;
- отображение ссылок на удаляемый объект в виде дерева. Отражение в этом дереве структуры циклических (рекурсия) ссылок, подсвечивание ключевых ссылок (которые не дают удалить объект) ;
- удаление в транзакции пакета циклических ссылок — "или все, или ничего", дабы не получилось в базе "Объект не найден…";
- возможность произвольных запросов-отборов на каждый объект метаданных. При этом запросы-отборы можно копировать. Это полезно, например, когда необходимо удалить документы за определенный период по организации; или справочники по какому-либо критерию отбора;
- сохранение и восстановление ранее применяемых отборов;
- индикатор прогресса при поиске помеченных на удаление объектов и контроле ссылочности с возможностью прерывания операции.
Для обеспечения указанного функционала обработка активно использует оперативную память. И, хотя были приняты меры по оптимальному использованию оперативной памяти, все-же в некоторых случаях (большие базы, большое количество удаляемых объектов) может возникнуть ситуация с нехваткой памяти. В таких случаях необходимо ограничивать перечень удаляемых объектов или перейти на использования 64-битного клиента 1С.
Последняя версия 1.15. Изменения:
- Добавлена опция: Замена с отключением контроля записи (ОбменДанными.Загрузка = Истина);
- Мелкие оптимизации форм.
Версия 1.14. Изменения:
- Уменьшены задержки клиент-серверных переходов на больших объемах данных;
- Доработана логика под конфигурации с планами счетов без назначенных видов субконто.
Версия 1.13. Изменения:
- Исправлена плавающая ошибка процедуры формы при попытке удаления;
- В обычной форме добавлена возможность пометить на удаление связанные ссылки. Для пометки на удаление необходимо выделить одну или несколько строк связанных ссылок и из контекстного меню выбрать "Пометить на удаление". В блоке связанных ссылок отображено дерево. При выделении строки дерева и вызове пометки на удаление — помечаются на удаление элементы всех дочерних строк.
- В обычной форме добавлена функция "Показать в списке" дерева связанных ссылок.
Версия обработки 1.12. Изменения:
- Исправлена не критическая ошибка в обычной форме возникающая при обновлении отображения связанных ссылок.
Версия обработки 1.11. Изменения:
- Исправлена ошибка раскраски связанных ключей записей регистров сведений.
Версия обработки 1.10. Изменения:
- Возращен механизм действия опции "Удалять записи регистров сведений". Данный функционал теперь действует на записи регистров сведений, в которых удаляемый объект не является ведущим. Записи с ведущим удяляемым объектом удаляются автоматически;
- Отключена записьудаление с флагом ОбменДанными.Загрузка;
- В дереве ссылок добавлено отображение признака "Проведен" и "Пометка удаления" для связанных объектов. В обычной форме — в виде картинки строк, в управляемой — в виде флажков.
Версия обработки 1.09. Изменения:
- Исправлена опечатка в алгоритме при контроле ссылочности справочников-владельцев;
- Изменен участок кода для управляемой формы, который не разрешал ее запустить на одной из типовых конфигураций;
- Добавлен контроль по стандартным табличным частям объектов конфигураци.
Версия обработки 1.08. Изменения:
- Реализова работа обработки в толстом клиенте управляемого приложения.
Версия обработки 1.07. Изменения:
- Реализован механизм контролязамены ссылок по небалансовым измерениям регистров бухгалтерии.
Версия обработки 1.06. Изменения:
- Отключена очистка дерева метаданных после выполнения поиска — теперь дерево метаданных отображается всегда;
- Добавлен механизм замены ссылок.
- Добавлено отображение общего количества оъектов в базе;
- Механизм удаления переведен на режим ОбменДанными.Загрузка = Истина;
- Опция "Удалять записи регистов сведений" теперь работает для ведущих и не ведущих измерений.
Изменена справка обработки:
Обработка состоит из двух частей: Дерево удаляемых объектов (3) и Дерево ссылок (4) на удаляемый объект.
В дереве удаляемых объектов производятся основные настройки по поиску удаленных ссылок. В дереве ссылок анализируются связанные с удаляемым
объектом другие объекты информационной базы. Управление обработкой выполняется с помощью Меню основных действий (1), отметок в дереве
удаляемых объектов и Меню дополнительных функций (2)
1. Меню основных действий
— Очистить — инициализирует дерево объектов метаданных, очищает ранее полученные результаты;
— Найти — производит поиск помеченных на удаление объектов информационной базы по отмеченным объектам. Поиск производится по справочникам,
документам, планам счетов, планам видов характеристик, планам видов расчета, планам обмена, задачам, бизнес-процессам;
— Замена — производит замену удаляемой ссылки на указанную в колонке "Замена". При замене ссылок в измерениях регистров сведений может возникнуть ситуация,
когда итоговый набор будет содержать дублирующие по измерениям строки, в таких ситуациях дубли строк удаляются. При этом приоритет отдается строке с меньшим номером по порядку.
— Контроль — производит контроль ссылочности найденных помеченных на удаление объектов базы. Контроль производится по реквизитам, измерениям,
ресурсам объектов метаданных, реквизитам табличных частей объектов метаданных, видам расчета регистров расчета, счетам и аналитике регистров бухгалтерии,
ведущим задачам бизнес-процессов, измерениям последовательностей документов.
— Удалить — производит удаление помеченных объектов, которые возможно удалить.
2. Меню дополнительных функций
— Отборы — подменю с операциями для отборов дерева объектов (далее).
— Удалять записи регистров сведений — включениевыключение режима удаления связанных записей независимых регистров сведений.
В случае, если ссылка на объект содержится в ресурсе или реквизите регистра — такие записи регистров не будут удалены.
— Выводить список удаляемых — при включенной опции при удалении в системных сообщениях будет выводиться перечень удаленных объектов;
— Монопольный режим — включениевыключение монопольного режима работы базы;
— Найти и удалить — по выделенным объектам метаданных производится три действия подряд: найти — контроль — удалить.
3. Дерево объектов
В первоначальном состоянии представляет собой полный перечень объектов метаданных. Необходимо установить отметки для тех объектов,
среди которых будет производиться поиск помеченных на удаление.
По выполнению поиска в колонке дерева "Всего" отразиться количество найденных помеченных на удаление объектов, в колонке "Всего ссылок" отобразиться
общее количество ссылок данного типа объектов.
По выполнению контроля в колонке дерева "Возможно удалить" отразиться количество объектов, которые можно удалить.
Строки дерева раскрашиваются зеленым или красным цветом в зависимости от возможности удаления найденных объектов. Голубым выделяются строки, в которых указана
ссылка замены для удаляемого объекта.
По контекстному меню дерево возможно отсортировать в желаемом порядке.
Функции групповой установкиснятия отметок действуют по выделенным строкам дерева.
Флажок "Отметка" используется как при поиске помеченных на удаление объектов, так и при контроле ссылочности, замене ссылок.
В колонке "Отбор" для групп объектов можно указать произвольный запрос для дополнительной фильтрации найденных к удалению объектов. Двойной щелчок в колонке "Отбор"
открывает форму произвольного запроса
Произвольный запрос позволяет применить дополнительный фильтр при выборе помеченных к удалению объектов.
В итоговой выборке из запроса должно присутствовать поле с именем "Ссылка", это поле и будет фильтрующим.
В форме конструктора запроса (7) :
— Очистить — очищает текущий запрос;
— По умолчанию — формирует новый запрос на основании типа данных текущего объекта;
— Получить параметры — обновление списка параметров из запроса
Фильтрующие запросы возможно устанавливать только на уровне 2-й группировки дерева удаляемых объектов, т.е. на уровне раздела метаданных.
4. Дерево связанных ссылок
При активизации строки в дереве объектов в дереве ссылок отображается иерархическая структура найденных ссылок на удаляемый объект.
При обнаружении циклической ссылочности объектов в структуре дерева текущий объект, который задействован в циклической ссылке,
будет отображен повторно и завершающим в дереве циклических ссылок.
В строках этого дерева подсвечивается цветом красным ссылки, которые не могут быть удалены или не удаляются согласно текущих настроек;
зеленым цветом — ссылки, которые удаляются и могут быть удалены. Жирным шрифтом выделяются ключевые ссылки,
которые не разрешают в конечном итоге удалить текущий объект.
По двойному клику в строках этого дерева возможно просмотреть связанную ссылку.
5. Контекстное меню дерева объектов
Контекстное меню дерева объектов работает по выделенным строкам дерева.
— Установитьснять отметки — устанавливаетснимает отметки по выделенным строкам дерева, включая подчиненные строки;
— Сортировка по возрастаниюубыванию — управление сортировкой строк дерева;
— Очистить отбор — (сочетание клавиш Ctrl-X) в выделенных строках дерева удаляются запросы-фильтры данных;
— Скопировать отбор — (сочетание клавиш Ctrl-C) копирует запрос-отбор из текущий строки дерева объектов в буфер обмена;
— Вставить отбор — (сочетание клавиш Ctrl-V) вставляет запрос-отбор из буфера обмена в выделенные строки дерева объектов. При вставке производится трансформация запроса —
подмена таблиц выборки данных. В случае, когда скопированный запрос-отбор не может быть трансформирован под текущий объект базы, в колонке Отбор
ячейка с данным запросом будет подсвечена светло-красным цветом;
— Очистить замену — (сочетание клавиш Shift-X) в выделенных строках дерева удаляются ссылки-замены;
— Скопировать замену — (сочетание клавиш Shift-C) копирует ссылку-замену из текущий строки дерева объектов в буфер обмена;
— Вставить замену — (сочетание клавиш Shift-V) вставляет ссылку-замену из буфера обмена в выделенные строки дерева объектов.
6. Команды управления отборами
— Сохранить отборы — сохраняет существующие запросы-отборы для дерева удаляемых объектов;
— Восстановить отборы — восстанавливает ранее сохраненные запросы-отборы;
— Очистить отборы — очищает дерево объектов от отборов
Не знаю как работает, но смотрится круто.) +
(1) docerman, Спасибо. Оформление важно, но не главное. Функционал важнее. Обработка не использует функции НайтиПомеченныеНаУдаление и НайтиПоСсылкам, поэтому работает намного быстрее и есть возможность видеть прогресс удаления. Для сравнительного теста запустил стандартную обработку чистки и разработанную мною. Тестировал на 250-гигабайтной базе с около 100 тысяч помеченных на удаление объектов. Стандартная обработка работала всю ночь и не выдала результат, снял задачу. Моя обработка выполнила поиск и контроль ссылочности чуть больше чем за 20 минут.
(2) Не исключено, что такая большая разница вызвана не только более оптимальными алгоритмами/запросами, но и исключением из контроля каких то колонок таблиц.
(3) tormozit, Из контроля исключены константы. В основе алгоритма контроля лежат динамически создаваемые запросы для каждого типа значений поиска согласно предварительному анализу структуры метаданных. При этом выборки реализовываются: из всех реквизитов, ресурсов, измерений объектов, если таковые у объекта конфигурации есть. Из всех реквизитов таблиц табличных частей. Из данных родителей, владельцев объектов; из данных регистратора; из данных ведущей задачи. Если не ошибаюсь, такими выборками я покрываю все связи. Если ошибаюсь, то подправлю алгоритм поиска, как только будут замечания.
(4) Как на счет регистров бухгалтерии?
(5) tormozit, Спасибо, существенное замечание, упустил это. В ближайшее время допишу поиск по аналитике регистров бухгалтерии, по общим реквизитам и обновлю обработку. Если будут еще замечания — пишите.
(5) tormozit, Доработан контроль ссылочности по аналитике регистров бухгалтерии. Так же добавлен контроль ссылочности по общим реквизитам конфигурации. Доработки увеличили время контроля ссылочности. В моем примере, о котором писал выше, контроль ранее занимал 20 минут, сейчас чуть больше 30-ти минут. Т.е. увеличение времени по моим тестам где-то на 45%. Выложена последняя версия обработки 1.05
Кто скачал обработку, отпишите свое мнение. Как отработала она у вас? Какой функционал хотелось бы добавить и что изменить? Уже есть ряд предложений, со временем по итогам тестирования опубликую новую версию.
скачал, пощупал, в копилке ! спасибо.
В качестве идеи для расширения функционала:
В случае невозможности удаления дать возможность в ссылочных элементах произвести групповую замену удаляемого объекта на другой (например, при удалении дублирующего объекта).
(10) hibico, добавлена возможность замены
Прошу поправить ошибку:
## Начало поиска 08.11.2016 11:30:21
## Окончание поиска 08.11.2016 11:30:22 / 0,02 мин.
## Начало контроля 08.11.2016 11:30:43
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ SelectedData.Проект КАК мУдаляемаяСсылка,
SelectedData.Регистратор КАК мСвязанныеДанные
ИЗ РегистрБухгалтерии.Хозрасчетный КАК SelectedData
ГДЕ SelectedData.Проект В (&Ссылки)
{ВнешняяОбработка.УдалениеПомеченныхОбъектов.Форма.Форма.Форма(2347)}: Ошибка при вызове метода контекста (Выполнить): {(4, 19)}: Поле не найдено «SelectedData.Проект»
ГДЕ SelectedData.<<?>>Проект В (&Ссылки)
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ SelectedData.Проект КАК мУдаляемаяСсылка,
SelectedData.Регистратор КАК мСвязанныеДанные
ИЗ РегистрБухгалтерии.Хозрасчетный_БЗ КАК SelectedData
ГДЕ SelectedData.Проект В (&Ссылки)
{ВнешняяОбработка.УдалениеПомеченныхОбъектов.Форма.Форма.Форма(2347)}: Ошибка при вызове метода контекста (Выполнить): {(4, 19)}: Поле не найдено «SelectedData.Проект»
ГДЕ SelectedData.<<?>>Проект В (&Ссылки)
## Окончание контроля 08.11.2016 11:31:48 / 1,08 мин.
В итоги он естественно ничего не удалил.
(13) abadonna83, Подскажите, в хозрасчетном регистре бухгалтерии Проект у вас это что? Реквизит?
Это Измерения.У нас сильно измененная Конфигурация.
(15) abadonna83, Пока не могу понять причину ошибки.
Сделать следующее. Откройте консоль запросов и вставьте в нее проблемный запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
SelectedData.Проект КАК мУдаляемаяСсылка,
SelectedData.Регистратор КАК мСвязанныеДанные
ИЗ РегистрБухгалтерии.Хозрасчетный_БЗ КАК SelectedData
ГДЕ SelectedData.Проект В (&Ссылки)
и нажмите по контекстном меню в тексте запроса — конструктор запроса
будет ли при этом такая-же ошибка?
далее очистите поле запроса и наберите руками текст запроса:
ВЫБРАТЬ * ИЗ РегистрБухгалтерии.Хозрасчетный_БЗ КАК Регистр
после этого откройте по контекстному меню — конструктор запроса и нажмите ОК.
После таких действий текст запроса измениться.
Выложите этот текст сюда.
Ошибка такая.
Поле не найдено «SelectedData.Проект»
ГДЕ SelectedData.<<?>>Проект В (&Ссылки)
После всего.
Показать
(17) abadonna83, Спасибо, понял причину. Доработаю механизмы под признак «Балансовый» регистров бухгалтерии, предположительно, сегодня вечером. Отпишу по результатам.
Спасибо. Пришлите плиз на почту abadonna.83@bk.ru. Заранее спасибо.
(19) abadonna83, хорошо, вышлю. Но разве тут нельзя повторно скачивать без оплаты новую версию обработки, если она уже была скачана? По-моему можно…
(19) abadonna83, Реализовал возможность работы с небалансовыми измерениями регистров бухгалтерии. Обработку выслал и обновил версию тут. Если будут еще проблемные моменты — пишите.
(21) Чую, тебя ждет еще не мало открытый о структуре таблиц данных 1С. Но плюс для тебя несомненно будет — лучше запомнишь многие из этих тонкостей. Однако возможно стоит быть более честным с пользователями и сразу предупредить их, что обработка может не везде находить ссылки.
Работает ли обработка в конфигурациях на УФ? Или только для обычных форм?
Ошибок больше нет.
По самой обработки.
Из плюсов:
Поиск действительно быстрый. Гораздо быстрее всех аналогичных обработок.
Интерфейс нравится.
Из минусов:
http://infostart.ru/public/267734/
В строках этого дерева подсвечивается цветом красным ссылки, которые не могут быть удалены или не удаляются согласно текущих настроек;
Хотелось бы чтоб имелась возможность удалять связанные объекты.
Для примера есть обработки которые могут это.
(24) BigClock, Только для обычных форм. Попробуйте запустить ее в вашей базе в режиме обычного приложения. Может пойти, а может и нет. Со временем адаптирую ее под работу в конфигурациях для управляемого приложения.
(25) abadonna83, Хорошая идея по возможности удалять связанные. Поразмыслю, допишу.
Если напишите это будет прекрасно. По факту мне сейчас ее использовать не получится, а очень хочется.
(28) abadonna83, На написание удаления связанных объектов понадобится хороший кусок времени. Ссылки могут быть как в реквизитах, таб. частях, так и в аналитике регистров бухгалтерии, в движениях документов, при чем в документе их может и не быть,а в движениях могут быть; и пр. Поэтому механизм удаления надо обдумать хорошо и сделать настраиваемым. На данный момент можете свернуть удаляемые ссылки на одну какую-то ссылку, путем замены ссылок, доступной в этой обработке.
Почему НИГДЕ не указан режим запуска?
В наше время если обработка под 8.3, то в ней ПО УМОЛЧАНИЮ должен быть управляемый режим.
Считаю что бесполезно потраченные см.
Да автору следует указать, что обработка на ОФ.
(30) СергейКа, у вас есть возможность ее запустить, только придется свойства конфигурации изменить.
(30) СергейКа, Обработка работает только в обычном приложении. Я не акцентировал на этом внимание, т.к. на скрине явно видно — это обычная форма. Перевода на управляемую форму ее не будет, т.к. будет утеряно ее преимущество — быстродействие. Для использования ее в конфигурациях, для которых прописан основной режим запуска «Управляемое приложение» запустите такую информационную базу с ключом /RunModeOrdinaryApplication. Для этого создайте на рабочем столе новый ярлык и выберите путь к приложению 1С. Например: «C:Program Files (x86)1cv8common1cestart.exe». Далее в свойствах ярлыка в строке пути к приложению в конце добавьте пробел и строку /RunModeOrdinaryApplication и сохраните изменения в ярлыке. С помощью такого ярлыка будет запускаться 1С в режиме обычного приложения. В этом режиме и используйте обработку. В ряде конфигураций, написанных под чистое управляемое приложение обработка может не сработать на этапе удаления при получении модулей удаляемых объектов. Этот момент планирую обойти в новых версиях обработки. Сергей, все-таки сравните ее функциональность и быстродействие с иными обработками удаления, возможно вы измените свое мнение насчет зря потраченных см. Не измените — я их Вам верну 🙂
(32) m..adm,
Увы. Это неприемлемое решение.
Проведите сами эксперимент:
1. Берем например торговлю 11.2 (управляемые формы)
2. Помечаем на удаление номенклатуру.
3. Запускаем в обычном приложении.
4. Проводим поиск помеченных объектов и получаем связанные ссылки.
5. В (29) вы советуете сделать замену ссылок встроенным инструментом. Ага, попробуйте. Интересно, насколько большой будет облом.
Т.е. как минимум 1/3 часть уже просто не рабочая.
Больше чем уверен, это коснется всех последних типовых.
И это только один момент.
Второй момент заключается в комментарии (22), который так смело минусанули. А там всего лишь доброе пожелание было.
Даже не учитывая замену, при попытке удаления нескольких документов получил несколько ошибок вида передачи мутабельных значений и проблемами с подписками на события.
Понимаете, мне не столько жалко см. У меня их больше чем я потратил за все годы участия в данном проекте.
Проблема заключается в том, что они потрачены бесполезно, плюс немало потрачено времени на нее. А результат оказался пшиком.
Из всего заявленного функционала работает только быстрый поиск, который сам по себе бесполезен.
Интересное решение оценивать стоимость в строчках кода, а не в качестве обработки. Боюсь предположить, какие открытия вас ждут если будете работать сами на себя, без работодателя.
(33) СергейКа, Сергей, давайте на чистоту. В своем последнем сообщении Вы явно дали понять, что вы разбираетесь в тонкостях и специфике применения обработки на управляемых приложениях. Поэтому считаю, что Вы лукавили в посте (30) , говоря «Почему НИГДЕ не указан режим запуска». Будучи специалистом Вы не могли не увидеть, что форма обработки обычная. В посте (30) Вы акцентируете внимание на потраченных см-ах, а в (33) уже говорите что их не жалко. Ко всему Вы отстаиваете пост (22) , называя высказывание в нем «добрым пожеланием». Откройте глаза и перечитайте еще раз пост (22) «Чую, тебя ждет еще не мало открытый о структуре таблиц данных 1С. Но плюс для тебя несомненно будет — лучше запомнишь многие из этих тонкостей.» Я не вижу в этих словах «доброго пожелания». Я вижу лишь самоуверенную констатацию мнимых фактов и перевожу это так «у тебя еще будут проблемы с реализацией алгоритмов, т.к. ты не знаешь досконально структуры таблиц 1С и тебе стоит еще поучиться многому». Это не доброе пожелание. Этот человек меня не знает, поэтому заранее судить что мне стоит, а чего — нет, очень преждевременно и вызвало с моей стороны соответствующую реакцию.
http://infostart.ru/public/427180/ . В ней мой оппонент так и не предоставил оптимальны запрос, который выдал бы верные результаты, но многие его слепо поддерживали.
Подводя итоги, могу предположить, что Вы, Сергей, своими постами как и в (22) пытаетесь сформировать негативное отношение к моей разработке. Полагаю причиной этого может быть желание убрать конкурентов и оставить место для обработок, продаваемых за рубли. Ко всему, вижу на этом ресурсе коллеги отстаивают позиции друг друга и часто задавливают плюсами в комментариях, как например в моей статье
В общем, есть такие негативные предположения у меня, но я их не буду озвучивать, если не будет повторов постов вида (22) от высокорейтинговых участников.
Подведу итог:
1. Обработка на данный момент предлагается в режиме обычного приложения и точка.Об этом указано в описании. Кому она понадобиться — тот и скачает.
2. Обработка намного быстрее производит поиск ссылок и контроль ссылочности и этим она очень хорошо выделяется в сравнении с ее аналогами.
3. Обработка будет расширена по интересным предложениям, высказанным тут.
4. Покупать за 10 см и стоит ли она этих средств — дело выбора каждого. Однако я также ценю свой труд и предлагать ее даром не собираюсь.
Основными причинами ее публикации есть: поделиться с народом быстрым средством обработки, выслушать идеи по ее расширению и сделать ее максимально удобной.
Коллеги, кто скачал обработку. Оцените, стоит она 10 см или нет? Спасибо 🙂
(31) Xershi, Указал в описании, что обработка работает в режиме обычного приложения. Для запуска на конфигурациях с управляемым режимом приложения не обязательно в свойствах конфигурации менять режим по умолчанию. Возможно запускать базу с ключом (32)
)))
В итоге вижу что по конкретным указанным мной проблемам ничего не сказано. Не будет обработка предназначенная для обычных форм полноценно работать в управляемом приложении.
В обсуждении переход на личные качества.
Да, при ознакомлении была допущена мной ошибка, что предположил возможность работы на управляемых формах.
Но опять же остаюсь при своем мнении, что скачано зря.
Засим откланиваюсь, дальше холиварить не собираюсь.
Удачи всем.
(37) СергейКа, Сергей, о каких проблемах Вы говорите? О том, что она может не работать на управляемых приложениях? Так я и не писал, что она 100% работает на управляемых. Эта обработка для режима работы в обычном приложении. Поэтому, если Вы что-то себе там додумали, не стоит тут эти размышления представлять как ошибку обработки.
Да, это ваше мнение и оно имеет право на жизнь. Возможно вы преждевременно скачали, не прочитав внимательно функционал.
Спасибо за Ваше мнение, жаль, что оно отразило негатив в теме о моей разработке. До свиданья!
(33) Опубликовал новую версию обработки 1.08. Реализована возможность работы обработки в толстом клиенте управляемого приложения.
В 1.08 версии добавил управляемую форму обработки. Обычная форма осталась без изменений.
В управляемом приложении производительность обработки упала, в около 2-х раз. Но даже с таким быстродействием, она намного быстрее работает в сравнении с ее аналогами. При возникновении возможных ошибок в новой управляемой форме, прошу отписать. Спасибо.
Скачал обработку — потратил весь капитал абонемента на месяц. Была надежда получить готовый инструмент без допиливания, т.к. очень нужна быстрая обработка по удалению объектов. Однако запускать инструмент без предварительного тестирования не в моих правила.
Итак:
1. Платформа 1С:8.3.8, Конфигурация 1С;УПП практически не тронутая. Обычные формы. Провел удаление помеченных на удаление объектов с помощью штатных средств.
Запустил обработку и обнаружил, что обработка радостно разрешает удалить некоторые объекты. В частности элемент справочника «Договоры».
Провел анализ и обнаружил, что данный договор для контрагента указан как основной, т.е. реквизит справочника «Контрагенты» «Основной договор» заполнен экземпляром именно помеченного на удаление договора. Согласился с предложение удалить договор и удалил этот договор. В результате в реквизите справочника «Контрагенты» «Основной договор» получил битую ссылку. Печально.
Думаю такая же ситуация и с реквизитом «Осноной банковский счет» в справочнике «Контрагенты».
2. Попробовал запустить обработку в конфигурации «1С:Документооборот КОРП 2.1» в толстом клиенте управляемые формы. Обработка просто не запустилась — ошибка в строке:
ТипКлюч = ТипЗнч(РегистрыСведений[Регистр.Имя].ПустойКлюч());
Причина банальна — в модуле менеджера одного из регистров стоит вызов одной из процедур общего модуля «ОбщегоНазначения», который выполняется ТОЛЬКО на сервере и галочка «Вызов сервера» у него не стоит.
Вот пока такие замечания
Проблемы также с планами видов расчета — не анализируются стандартные табличные части.
Получается (22) был прав и справедливо предупредил пользователей обработки и автора об опасности.
(44) Нет, в (22) автор был не прав, по крайней мере в своих суждениях об «знаниях таблиц базы данных». Сергей, предлагаю не зацикливаться на одном, т.е. на попытке доказать какую-то правоту и опустить рейтинг обработки и ее автора. В этой обработке, как и в любых других, может быть место недоработки. Поэтому я и прошу в случае обнаружения ошибок сообщать. Ошибки исправляю более-менее оперативно и отписываю тут о результатах.
(41) Спасибо за замечания. Смоделировал ситуацию по договорах, действительно, дало удалить, хотя в контрагенте была ссылка «Основной договор». Алгоритм должен работать, но тут, видимо промах в логике при проверке владельцев. Доработаю в следующей версии.
(45) Иными словами ты согласен с «стоит быть более честным с пользователями и сразу предупредить их, что обработка может не везде находить ссылки», но почему до сих пор не написал об это в описании обработки? Вообще мой главный посыл был в том, что если у тебя поиск ссылок идет на порядки быстрее, то велика вероятность, что ты просто не везде ищешь ссылки.
Ну и надо помнить о том, что состав таблиц и структура каждой из них имеют относительно большое разнообразие и они периодически расширяются с развитием платформы. Как у тебя учтены эти проблемы?
(41) Юрий, по Вашим замечаниям внес правки в обработку. Выложил новую версию 1.09. Попробуйте запустить на Документообороте. У меня под руками несколько конфигураций и в основном на обычных формах. Поэтому проверку на разных типовых конфигурациях в управляемом приложению не выполнял. Если будут еще замечания, пишите. Доработаем.
(47) Сергей, у меня сложилось мнение, что тебе нечем заняться. Может я не прав…
(47)
О том, где обработка ищет связанные ссылки описано с самого начала в справке к обработке, в описании функции «Контроль».
Данную обработку, как и многие другие, выложенные на этом ресурсе, пользователи используют на свой страх и риск. Я не напоминаю здесь об этом и о том, что необходимости создавать копии базы, вникать в справку обработки; о важности понимания выполняемых действий и пр., т.к. уверен, что ею должны пользоваться знающие коллеги, программисты, администраторы. Поэтому, кому она надо — тот почитает справку, поймет. Если не поймет — откроет код и поймет что она может. Если не захочет понимать код — задаст тут вопрос автору.
(47)
С таким подходом можно говорить и о многих других обработках. Будет расширение платформы — будет и доработана стандартная обработка удаления помеченных. Следовательно, придется дописывать и эту. Куда уж деваться.
Скачал новую версию обработки. Проверял пока только на 1С:Документооборот КОРП. Обработка открылась без ошибок. Помеченные объекты нашла. Однако при нажатии кнопки «Контроль» опять выдала ту же ошибку на регистре сведений, что и была при открытии обработки.
Остальное гляну позже.
Сразу скажу, что 1С:Документооборот КОРП не работает в толстом клиенте даже без обработки. Вылетает по той же самой ошибке, что и обработка. (попытка открыть процедуры из общего модуля «ОбщегоНазначения»).
Похоже разработчики не тестировали свою конфигурацию в толстом клиенте. Зато в тонком клиенте работает.
И еще в качестве пожелания — хотелось бы в дереве ссылок видеть для документов — проведен, не проведен, помечен на удаление, для прочих — помечен на удаление, не помечен на удаление.
Пока обработку использую для анализа. В некоторых случаях помогает разобраться в ситуации.
Замечания:
1. Если объект является измерением регистра сведений, но это измерение не является ведущим, то обработка готова объект удалить. Это неверно.
(53) Юрий, Ваши пожелания учту в новой версии обработки.
По поводу данных в независимых регистрах сведений. В версии обработки 1.06 как раз я изменил этот механизм. Ранее обработка в плане ведущих измерений работала как типовая, но потом я переделал на удаление всех записей независимых регистров, в которых удаляемый объект в измерении. Если же удаляемый объект только в ресурсе или реквизите независимого регистра сведений, тогда обработка не даст удалить. Опция удаления записей регистров сведений завязана на кнопку в шапке формы. Эти изменения я внес с учетом потребностей в своей практике при многопользовательской разработке. Часто коллеги-программисты не ставят признак «ведущий» и при наличии не одного такого регистра в сочетании с распределенной информационной базой это вызывает неудобства при попытке удаления — необходимо править конфигурацию, обновлять базы и т.д. В своей практике я не встречал ситуаций, когда надо «не дать» возможность удалить ссылку, если она является разрезом каких-либо данных в регистре сведений и не является ведущей. Юрий, Вы можете привести пример необходимости этого? Если необходимость в этом действительно будет, я подумаю о возврате к старому варианту удаления или компромиссным настройкам обработки.
(54) Привожу пример:
1С:УПП, РАУЗ. Независимые регистры сведений «АналитикаВидаУчета», «АналитикаРаспределенияЗатрат», «АналитикаУчетаЗатрат», «АналитикаУчетаПартий», «АналитикаУчетаПрочихЗатрат». Ни одно из измерений не является ведущим.
Удаление записи в регистрах ведет к потере аналитики в проводках учета затрат. Найти такую ситуацию если специально не ищешь довольно сложно.
Запустил обработку для удаления объектов. Утром прихожу, вижу обработка вывалилась в ошибку….. Ни стоит она 10смани.. если не умеет работать с большим количеством помеченных на удаление объектов.
(56)
Какую именно ошибку? Приведите пожалуйста ее текст.
(56)
Она умеет работать с большим количеством объектов, возможна проблема с нехваткой памяти. Об этом написано в описание к обработке.
Константин, напишите свой вариант обработки с таким же функционалом и оцените стоимость ваших усилий, потраченного времени. Будет ли это стоить каких-то 10см (50 руб.) или нет. Я ценю свой труд, поэтому ее стоимость 10 см — максимальная, которую дает возможность установить сайт.
(57) 10 см = 1200 руб.
(58) Не понял. Почему 10 см = 1200 руб.? Текущий курс биржи пишет 5.24 руб. за см.
(59) Это внутренний курс для разработчиков.
http://infostart.ru/about/service/premium/
Тарифы для пользователей тут
И 10 СМ это именно 1200 руб.
Во время выполнения контроля произошла ошибка (v1.09 и платформа 8.3.8.2167)
Форма.УправляемаяФорма.Форма(2307) : Поле объекта не обнаружено (Реквизиты)
Посмотрел через отладчик, у переменной «тЧ» отсутствует свойство «Реквизиты» (на скрине видно).
Тип «ОписаниеСтандартнойТабличнойЧасти».
При этом если повторно выполнить контроль ошибка больше не возникает.
Было бы не лишним, если в Дереве ссылок была бы еще одна колонка «Тип ссылки». Либо была возможность все типы которые попали в дерево ссылок, после контроля, отметить в ДеревеУдаляемыхОбъектов. Понадобилось к примеру удалить организацию. В ДеревеУдаляемыхОбъектов, в спр.Оганизации выбрал нужную организацию, нажал на контроль, в дереве получил все ссылки. Каким образом все найденные типы отметить в дереве объектов для дальнейшего удаления?
(53) (52) Юрий, по Вашим пожеланиям отметки Проведен, Помечен отобразил в дереве связанных ссылок. Также вернул старый механизм удаления записей независимых регистров сведений.
(61) Да, есть такая опечатка. В новой версии (1.10) уже исправлено.
(62) По поводу возможности отметки к удалению связанных ссылок уже было пожелание. Пока я не придумал «красивого» механизма их обработки, поэтому эта доработка еще в планах.
(62)
Обрабатываются при поиске, контроле, удалении только строки с установленным флажком «Отметка». Установить или снять флажки для нескольких строк, групп Вы можете с помощью действий в контекстном меню дерева удаляемых объектов («Установить отметки», «Снять отметки»). Действия контекстного меню дерева работают по выделенным строкам дерева.
Мда… Скачать версию 1.9 удалось. А вот для 1.10 уже просит заплатить денюжку снова… Грабеж!
(66) Юрий, напишите мне свой электронный адрес, вышлю обновленную обработку.
Кто скачивал обработку ранее и сайт опять требует денюжки — пишите мне в сообщении свой email. Буду рассылать, обновленные версию.
Здравствуйте! Будет работать на 1с Документооборот? Пробовал ли кто-нибудь?
(68) Проверял на демо-базе Документооборот 8 КОРП редакция 1.4 — работает.
А с помощью вашей обработки удалить Номенклатуру в месте ссылками на неё.
Не могу разобраться!
(70) Если все объекты, которые содержат ссылку на удаляемую номенклатуру так же помечены на удаление и отобраны к удалению, тогда вполне возможно, что ваша номенклатура может быть удалена. Если речь идет о удалении номенклатуры и связанных всех ссылок, которые не помечены на удаление — такого механизма пока в этой обработке не реализовано, хотя пожелания были.
Можете реализовать на этой неделе, нам сейчас это очень востребовано!
(72) Павел, даже текущий функционал обработки (удаление с контролем) может быть опасен в руках не опытного пользователя. Реализовать функционал, который бы не глядя чистил все подряд по перечню помеченной на удаление номенклатуры не правильно. Т.к. помеченная на удаление номенклатура может потянуть по связям полбазы и все это будет удалено. Посему, для реализации такого функционала необходимо, чтобы пользователю был выдан список всех связей, чтобы он (пользователь) все проанализировал и принял решение. Тут без пользовательского анализа никак не обойтись и никакая обработка не поможет. В какой форме представить данные для этого функционала, какие отборы, функции обработки реализовать я пока не придумал, поэтому этот функционал отложен до «лучших времен».
Если у Вас есть идеи, представление, в каком виде Вы хотели бы получить этот функционал — поделитесь, может это подтолкнет меня к реализации. Спасибо.
Проверил на 1С:Документооборот КОРП 2.1.9.3 — валится при проведении контроля с сообщением:
{РегистрСведений.РабочиеГруппы.МодульМенеджера(94,19)}: Переменная не определена (ОбщегоНазначения)
(74) Юрий, я проверил на Документооборот КОРП 2.1.2.2 , работает нормально. В модуле менеджера регистра РабочиеГруппы есть вызов процедуры из модуля ОбщегоНазначения, который чисто серверный. У меня на этот счет предусмотрен алгоритм и очистка выполняется. На данный момент у меня нет под рукой именно вашего релиза документооборота, поэтому проверить не могу. Возможно у Вас не последняя версия моей обработки? Последняя 1.10. Если же последняя, для адаптации надо детальнее описание ошибки: в каком месте обработки возникает ошибка, что за процедура в модуле менеджера и какие свойства модуля, в котором размещена эта процедура?
удаляю организацию. и когда становлюсь на справочник банковские счета, выскакивает постоянно ошибка. скрины прилагаю
(76) Не вижу Вас в списке скачавших обработку. Подскажите, какая версия обработки у Вас? Похожая ошибка была, ее подправлял в одном из релизов. Ошибка исчезает, если после удаления сделать повторный поиск объектов. Если у Вас не последняя версия обработки и Вы ее скачивали — вышлите мне свой электронный адрес, вышлю последнюю версию.
(76) Проверил, есть опечатка в коде. Исправил и опубликовал новую версию обработки 1.12. Ошибка не критическая, возникала в ряде случаев и влияла лишь на отображение данных связанных ссылок. Кто ранее скачивал обработку и желает получить последнюю версию — напишите мне сообщение с указанием своего электронного адреса.
Есть ошибка при работе с Управление небольшой фирмой. После сообщения ничего не удаляет.
v.1.12
Вопроизводится на демо базе УНФ 1.6
mr. Script ! Проходил мимо и решил заглянуть… Обработка интересная, а главное — это видеть сквозь комментарии как работа над проектом шла.
(81) Да это не проект. Для себя написал первоначально. Потом опубликовал, расширил по пожеланиям и замечаниям.
(79) Было бы не плохо, если бы Вы выложили код строки в которой возникает такая ошибка.
{ВнешняяОбработка.УдалениеПомеченныхОбъектов.Форма.УправляемаяФорма.Форма(2409)}: Значение не является значением объектного типа (Имя)
мТип = Тип(«ПланВидовХарактеристикСсылка.»+Эл.ПланСчетов.ВидыСубконто.Имя);
А можно ли сделать, чтобы в дереве ссылок была возможность:
— пометить в панели ссылок ссылающийся объект на удаление? Например, удаляю пользователя, на него ссылается масса вариантов настроек отчетов. Искать и удалять их руками — просто дико неудобно, потому что там из формы элемента нельзя перейти в список, чтобы сделать пометку на удаление, не предусмотрено такого. А так раз бы, поклякал — пометить, пометить, пометить — и удаляй. Было бы супер.
— обнулить ссылку, заменив ее на Объект.ПустаяСсылка () с типом данных удаляемого объекта.
Здесь та же ситуация — куча контрагентов ссылаются на пользователя как на своего менеджера. Хотелось бы сделать чтобы очистка не была мучительно болезненной. Щелкнул — ссылки на менеджера в контрагенте заменились на пустые — пожалуйста, удаляй. Пока пришлось писать обработку на несколько строк для этой цели.
— переходить из дерева ссылок не только в форму объекта (двойным кликом), но и в форму списка объектов, например в журнал документов или в форму списка справочника — в принципе необязательно, если можно реализовать первые две хотелки, но полезно.
было бы еще интереснее, чтобы была возможность группового выполнения таких действий.
Пока не разобрался, может, это и можно делать? Что-то не вижу.
Насчет поля Замена. Когда я пытаюсь выбрать Замену для удаляемого элемента справочника — получаю ошибку:
{Форма.Форма.Форма(201)}: Поле объекта не обнаружено (Отбор)
Форма.Отбор.ПометкаУдаления.Использование = Истина;
Конфа УПП 1.3, платформа 8.2, формы обычные
Ошибку с отбором удалось обойти, закомментировав три строки в процедуре УдаляемыеОбъектыЗаменаНачалоВыбора
Показать
Всё просто замечательно. Но вот прям катастрофически не хватает прогресс-бара при удалении объектов…
Потестировал обработку несколько недель на УПП. И мой вердикт, господа — как бы… довольно много багов для такой цены. Во-первых, у меня не получилось сразу сделать замену на обычной форме в УПП — см. реплику (84), пришлось лезть в код и подправлять. Во-вторых, сегодня потерял довольно много времени на большой базе — сделал поиск, контроль, запустил удаление — не удалило, вылетело:
{Форма.Форма.Форма(1000)}: Ошибка при получении значения атрибута контекста (Отметка)
Если НЕ СтрокиДерева[Эл.Ключ] = Неопределено И НЕ СтрокиДерева[Эл.Ключ].Отметка Тогда
по причине:
Выполнение операции невозможно, т.к. строка была удалена.
В случае ошибок вся транзакция с удалениями откатывается, в результате я тупо потерял время. Такая же петрушка, кстати, при заменах — если не удается записать хотя бы один элемент, откатываются все замены. Вообще говоря, завертку всего пакета в транзакцию надо бы делать по выбору пользователя, потому что в результате «отката» на большой базе вполне можно потерять много часов, потраченных на поиск, контроль и собственно удаление до момента получения ошибки. Нормально, когда ты удаляешь 10000 элементов, ждешь полдня, и на 9999-м — здрасте, исключение, откатываем все? Призываю автора довести обработку до ума.
(87) Ну и замечательно…
(88) Владимир, ситуация с ошибкой в стиле «строка была удалена» может быть, мне известно об этом и по возможности я доработаю.
Ошибка может возникнуть, когда процесс удаления по какой-то причине был прерван и пользователь заново жмет «Удалить» без повторного нажатия «Контроль ссылочности». Если процесс удаления прервался необходимо повторно запустить «Контроль» и лишь потом «Удаление». В этом случае даного рода ошибка не появится.
Относительно других ошибок — я ранее отписывал и дорабатывал по мере возможности. Высылал всем, кто отписал мне, новые версии обработки.
Относительно существующих ошибок (83) ,(84), (86) — да, могут быть такие ошибки на определенных конфигурациях или определенных объектах метаданных. Как говорил в самом начале, обработку писал эту под себя и на всех типах конфигураций, с которыми я работаю, она меня вполне устраивает. Ошибки, которые озвучили тут коллеги, скачавшие обработку, будут со временем исправлены.
Рассуждать о цене обработки не хочу.Ценю свой труд, т.к. времени потрачено на написание этого объема кода было достаточно.
Решений без багов, идеальных решений нет. Но если и есть приближенные, то они будут стоять дороже.
(90)
Увы, нет. Ошибка появляется при самой обычной работе — поиск, контроль, удалить. Удаление прерывается по этой ошибке. Никаких других манипуляций с обработкой типа прерывания операций в процессе этого не делается.
ок. я посмотрю и отпишу.
(84) Владимир, выложил обновленную обработку 1.13.
В новой версии исправил код, который мог порождать ошибку в строке 1000. У меня не удалось воссоздать вашу проблемную ситуацию, проверьте, исчезла ли ошибка в новой версии обработки.
По Вашим пожеланиям добавил в обычной форме возможность групповой пометки на удаление связанных ссылок и функцию «Найти в списке»
Остальные пожелания рассмотрю позже.
Если за скачивание новой версии сайт просит денюшек — напишите свой емейл, я вышлю новую версию обработки.
(93) mr. Script, отправил почту в ЛС. Предупреждает, что спишет 10 $m при попытке скачать.
(94) Выслал на почту.
(12) РАЗРЕШЕННЫЕ?????
Вы собираетесь эту работу запускать не под полными правами?)))
(26)
надо выделить жирным и крупно в статье
(157) Вы о чем? Обработка работает в обычных и управляемых формах. Вы влезли в старую переписку.
(158) прошу прощения — в статье увидел фразу «на управляемых формах в толстом клиенте», в комментариях то и дело были распри про обычные формы — не осилил дочитать комменты до конца — сплошные междоусобные разборки….
если что-то меняете, то хорошим тоном будет дописать в статье «Изменения от 12.04.2019. Доработал для управляемых форм.»
Чтобы можно было сравнить дату комментария и дату изменения — и понять что к чему.
А то показалось, что один раз выложили и изменений не было, а потом только обсуждение.
(159) На форме я отображаю версию обработки. Если изменена обработка — сравните версию свою и ту, которая в основном описании вверху. В описании я указал на данный момент последнюю версию 1.14. Ну а все комментарии лучше читать снизу ). Версии обработки уже редко изменяются.