Универсальная поделка для редактирования движений любого документа, даже если он не проведен или помечен на удаление.
Данная поделка позволяет просматривать движения любого документа, вносить изменения в движения любого регистра по документу, даже если движений по данном регистру не было совсем.
Аналогично, можно удалять, править и т.д.
Рекомендуется к применению ленивым пользователям, которые не в состоянии разобраться, если есть бардак в учете.
Внимание!
Обработка вносит необратимые изменения в движения документа! (Исправляется только перепроведением документа, при условии, что документ нормально «проводится»)
Поэтому, перед тем как нажать на кнопку записать, думаем — надо ли нам оно ?
Способ применения: открываем поделку, далее открываем любой журнал, бегаем по документам, смотрим движения выбранного регистра, при надобности — правим.
Данная поделка использует 2 ВК «вшитые» в саму обработку — formex.dll и 1cpp.dll
+основана на классе Перехватчик. Код открыт, кому надо — правьте что хотите.
Внимание!
Тем кто уже использует 1cpp.dll в своих базах, нужно иметь 1сpp.dll 3-ей версии, на 2** работать не будет!
Вам надо либо скачать 1cpp.dll с сайта, либо удалить свою, новая версия сама распакуется в КаталогИБ() при запуске обработки
Обновление от 24.12.2010
— Исправлена критическая ошибка при изменении даты документа (см. 110 пост), спасибо andru_dv
за обнаруженный недостаток.
Обновление от 21.12.2010
— Правильное определение загруженного доп. глобального модуля, спасибо Артуру ()
— Выпадающий список переделан на список с картинками, галка — есть движения по регистру.
Обновление от 20.12.2010
-Добавлена возможность изменить дату документа, естесственно,документ остается со своими старыми движениями (или измененными редактором)
Обновление от 18.12.2010
-добавлено редактирование номера строки движения
-добавлена возможность копирования по F9
ЗЫЫ: принимаю пожертвования в качесте благодарности на
яндекс деньги 41001277400750
wmr R285258832971







Это не просто граната, это граната с неизвестным временем задержки взрыва для любителей острых ощущений.
А что, очень полезная вещь. Если конечно понимаешь что делаешь.
Замечательно.
Как сделал? все на типовых механизмах?
(3) ну почти.. Главное -результат!
ЗЫ: без ВК (формекс,1с++) не обошлось — не универсально получилось бы.
🙂
(5) Отвечу за автора, думаю, что он со мной согласится.
Ответ прост — эти ВК позволяют сильно увеличить возможности разработчика при работе с 77 + облегчить работу пользователей и т.п.
(4) Тогда, плиз, отметь в описании разработки на сайте, что нужны еще доп. ВК
(7) всё встроено в саму поделку..
(5) глядя на снеговика, становится всё совсем уныло, особенно на типовые поделки от создателей 1с, например УПП..
Ничего восторженного от юзания снеговика пока не увидел.
А 7-ка, это рабочий струмент, находить что-то новое в ней, всегда приятно.
(9) Речь-то не о типовых (унылых или веселых). А о возможностях платформы , 8.2 например.
А сам пост (5) спровоцирован содержанием темы.
Я хмыкал, чесал в затылке : «Зачем ?».
Ничего другого в голову не пришло : со скуки..
(6) На всякий случай, поставлю тебе плюс на комментарий.
Простота и непосредственность меня подкупают более всего.
(10) ну.. ничего выдающегося в платформе тоже пока не увидел.
А так да, всё от скуки..
Ничего, скоро на снеговике чего-нить напишу.
«А так да, всё от скуки.. » — ну..вообщем -то, согласен.
Ага , интересно на 8. Обязательно полюбопытствую.
(12) Клюшки гигиеничнее 🙂
Что-то не ругается у меня при загрузке. Чего сделать-то?
=== Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 Перехватчик.ПерехватитьСобытияПроведенияДокумента(Метаданные.Документ(нДок).Идентификатор, вирт<<?>>()); {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(10)}: Функция не обнаружена (вирт) === Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 Перехватчик.ПерехватитьСобытияПроведенияДокумента(Метаданные.Документ(нДок).Идентификатор, вирт()<<?>>); {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(10)}: Неопознанный оператор === Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 <<?>>КонецЦикла; {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(11)}: Ожидается ключевое слово ‘КонецПроцедуры’ (‘EndProcedure’) === Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 Перехватчик.ПерехватитьСобытияГК(КонтФормы,вирт<<?>>()); {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(27)}: Функция не обнаружена (вирт) === Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 Перехватчик.ПерехватитьСобытияГК(КонтФормы,вирт()<<?>>); {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(27)}: Неопознанный оператор === Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 Перехватчик.ПерехватитьСобытияГК(КонтФормы,вирт())<<?>>; {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(27)}: Ожидается ключевое слово ‘КонецПроцедуры’ (‘EndProcedure’) === Syntax error в модуле ‘D:ConfigPUBПерехватСобытийПроведения.prm’ 47808024 ТипОбъекта = РасшФ.ТипОбъекта();<<?>> {D:CONFIGPUBПЕРЕХВАТСОБЫТИЙПРОВЕДЕНИЯ.PRM(30)}: Обнаружено логическое завершение исходного текста модуля Класс: ПерехватСобытийПроведения Файл: D:ConfigPUBПерехватСобытийПроведения.prm компиляция не выполнена! ПерехватчикСобытийГМ = СоздатьОбъект(«ПерехватСобытийПроведения»); {Глобальный модуль(24)}: Внимание! Инициализация класса: ПерехватСобытийПроведения закончилась неудачно! глПрисвоить<<?>>(КонтекстФормыОбработки,глВзятьКонтекст(Контекст)) Функция не обнаружена (глПрисвоить)Показать
(15) в твоей конфе используются свои классы ?
+ грузишь ли доп глобальный модуль (свой) формексом перед этим ?
+16 на закладке о программе, появились вкладки от 1cpp и формекс ?
Если да, то каких версий они ?
в твоей конфе используются свои классы ? + грузишь ли доп глобальный модуль (свой) формексом перед этим ?
Пробывал на типовом ПУБе и ТиС, соот-но никаких своих классов и доп глобальных модулей нет.
+16 на закладке о программе, появились вкладки от 1cpp и формекс ? Если да, то каких версий они ?
Да, появляются. 1С++ v.2.5.0.8, Formex 2.0.5.101 beta
В Bin лежат последние версии 1cpp и formex с оф. сайта
Пробывал создать ПерехватСобытийПроведения.prm руками сам, тот же эффект
(18) а ну ясно.. 1сpp обнови до 3-ей версии.
+19 можешь просто в bin прибить 1cpp.dll, он сам нужный с обработки распакуется в каталог с базой и всё работать будет.
Ок, спасибо, заработало
(21) аккуратней с правкой, особенно в живой базе
🙂
(22) Спасибо, я аккуратно.
Пробую править вываливается ошибка:
Движения.НомерДвижения = Рег.НомерСтроки(); {H:1CREGISTERREGEDITOR.ERT(1213)}: Поле агрегатного объекта не обнаружено (НомерДвижения)Для справки: ПУБ, регистр РасчетыСПоставщиками
(23) каюсь, вкралась ошибка в последнем обновлении, исправил — скачай, пробуй.
ЗЫ: или добавь строчку
Движения.НоваяКолонка(«НомерДвижения»);
в 1198 строку
При запуске в ПУБ выдает:
глПроводка(СчетПоКоду(«76.Н»), глОтложенныйНалог<<?>>(«НДС»), КнигаПродаж.СчетФактура.Контрагент, , {Документ.УнивВзаимозачет.Модуль Документа(465)}: Функция не обнаружена (глОтложенныйНалог) глПроводка(СчетПоКоду(«76.Н»), глОтложенныйНалог(«НДС»<<?>>), КнигаПродаж.СчетФактура.Контрагент, , {Документ.УнивВзаимозачет.Модуль Документа(465)}: Недостаточно фактических параметров Операция.Дебет.Субконто(1,Спр<<?>>.ТекущийЭлемент()); {Документ.ТранспортныйНалог.Модуль Документа(7)}: Переменная не определена (Спр) Операция.Дебет.Субконто(1,Спр.ТекущийЭлемент()<<?>>); {Документ.ТранспортныйНалог.Модуль Документа(7)}: Неопознанный операторПоказать
ВК подгружаются…
(25) вк каких версий ?
Свои классы есть ?
Свои ВК не подгружены.
То что загрузилось:
Formex 2.0.5.101
1С++ 3.2.2.8
(27)дай удаленно посмотреть через тимвьювер, на демке пуба такой ошибки не наблюдается..
эм… че?
Во всяком случае, обработка то все равно работает… при старте прост чет ругается.
Еще б до кучи и автоматическое определение регистров по которым делал движение документ.
(29) а смысл ?
обработка может сделать запись в любой регистр.
Да и как это показывать ?
+ за точную формулировку 😀
Обычно документы делают движения не по одному регистру…
А показывать… ну например
— Регистр производственные затраты
|
+ Движение 1
+ Движение 2
+ Регистр Расчеты с покупателями
+ Регистр Книга продаж
С помощью формекса…
(32) не вкурил, что показывать с помощью формекса ?
Как это на форме будет выглядеть ?
Сейчас — просто поле со списком.
+33 в виде дерева что ли ?
или что ?
угу .. в виде дерева
(35) ща.. минут 5
Это то, что иногда, крайне редко, «но очень нужно»!
А в виде дерева — Это уже МЕЧТА!!
(35,37) сделано..
правда, не в виде дерева — просто активиксом.
В виде дерева, по крайней мере, то что формексом, неудобно будет крутить мышой, да и выбор лучше выпадающим списком делать.
Или вам дерево нужно в табличном поле видеть?
Вот это скорость творчества!
Про 5 минут подумала,что это ирония!
Но эта последняя версия при запуске выдала ошибку (в предыдущей все работало)
Класс: ВыпадающийСписок — ошибка синтаксиса
Строка №50 Элемент = КоллекцияЭлементов.Add(Индекс,Ключ,Заголовок<<?>>,Картинка,Картинка2,Отступ);
Переменная не определена (Заголовок)
{\Lionprw10ВыпадающийСписок.prm(50) }
Класс: ВыпадающийСписок Файл: \Lionprw10ВыпадающийСписок.prm компиляция не выполнена!
Объект = СоздатьОбъект(«ВыпадающийСписок»);
{REGEDITOR.ERT(1610)}: Внимание! Инициализация класса: ВыпадающийСписок закончилась неудачно!
Или перед запуском нужно было удалить файл ВыпадающийСписок.prm , созданный предыдущей версией?
В 1475 строке на
еще нужно кавычек добавить.
Удалив ВыпадающийСписок.prm, поняла, что дело не в нем, он создается при первом запуске обработки.
Так что наверное это действительно ошибка.
Удалив ВыпадающийСписок.prm, поняла, что дело не в нем, он создается при первом запуске обработки.
Так что наверное это действительно ошибка.
на 1475 строку подправь:
Дальше ошибка:
Объект.УстановитьАтрибут(Форма,ИдНаФорме); {REGEDITOR.ERT(1611)}: Поле агрегатного объекта не обнаружено (УстановитьАтрибут)хм, хотя базовый класс АктивИкс…
Минуточку, ща поправлю..
+46 готово, тестируйте..
ЗЫ: просто у меня сам класс в другом месте определялся..
Ща проверил на чистой конфе без всего, работает.
ЗЫ: тексты классов я удаляю, чтоб версия класса была потом всегда актуальна..
Спасибо!!!
Последняя версия работает!!!
Еще Карт сделай невидимым.
(50) ага, забыл..
(51) спс. Офигенная поделка.
При запуске SQL-ная версия вылетела сразу, баз предупреждения.
DBF-ная выдала: === Syntax error в модуле ‘unknown’ 24870224 т = КонтекстФормыОбработки<<?>> {(1)}: Переменная не определена (КонтекстФормыОбработки) глПрисвоить<<?>>(КонтекстФормыОбработки,глВзятьКонтекст(Контекст)) Функция не обнаружена (глПрисвоить)у меня такой функции нету, поделись. чё она делает-то?
(53) на вкладке о программе, вк каких версий у тебя ?
+54 «вылетела» — в смысле аварийно завершился выход из 1с ? Или сама поделка-редактор закрылась ?
Если второе — то это нормально, просто открой её еще раз.
Что-то не желает она у меня работать. В смысле — сохранять изменения. Редактирую, жму «Записать» — все движения восстанавливаются на начальные.
Кроме того, забавный момент: ставим курсор в журнале на непроведенный (или помеченный на удаление) документ, в обработке меняем дату, «Записать» — и документ в журнале показан как проведенный, хотя и без движений! ТиС — дбф, 1с++ 3.2.3.8, formex 2.0.5.93.
(56)
не верю
так и задумано, можешь просто добавить движения.
+57 в том смысле, что документ при нажатии на кнопку записать всегда проводится с нужными движениями (или без них).
(57) Как доказать? Может, картинки помогут?
(59) ну и ?
Я не вижу, чтоб ты менял движения в редакторе — даже «записать» не активна.
А так, дай тимвьювером поглядеть.
И.. не верю, что не записываются.
:))
(54)
formex — 2,0,5,93
1cpp — 2,5,0,7
(55) — «вылетела» — в смысле аварийно завершилась сама 1с
+60 а вижу, добавил картинку..
ЗЫ: Могу предположить только, что на кнопку Записать ты не нажимал при этом.
И еще, на вкладке о программе, 1сpp какой версии светится ?
Какие классы зарегистрированы ?..
(61) с тобой всё ясно — у тебя 1cpp старой версии используется (нужна 3-ей версии)
Снеси её, запусти обработку — она сама распакует 1cpp последней версии в каталогИБ.
1 картинка — начальные движения, кнопка неактивна
2 картинка — удалена вторая строчка, кнопка активна
3 картинка — кнопка нажата, вторая строчка появилась обратно, кнопка неактивна.
тимвьювером поглядеть не выйдет — фаерволл настраивать, порты пробрасывать — лень. Но зачем мне обманывать — из любви к искусству?
(63)
да, спасибо, заработало.
только это… ни по одному регистру никаких движений не показывает. как работает-то?
(64) свои классы есть в конфе ?
Что написано в вкладке о программе ?
Какая версия 1cpp зарегистрирована ?
Какие классы ?
(65) открой журнал документов (только не полный и не прочие, системные журналы не ловит) — бегай по документам, смотри движения
(66) Классы: ВыпадающийСписок, Калькулятор, Общие.Форма.Привязка, ТаблицаГруппировок, Таймер, ПерехватСобытийПроведения.
1с++ 3.2.3.8. Пробовал твою — результат тот-же.
МетаИнфо.ЗагрузитьОписаниеКлассов(«класс ПерехватСобытийПроведения = ПерехватСобытийПроведения.prm{}»);
Не удалось открыть файл определения классов:класс ПерехватСобытийПроведения = ПерехватСобытийПроведения.prm{}
Пробовал запускать в разных БД — эффект один.
при изменении строки в журнале, в случае если ячейка редактора в режиме редактирования, валится одинце — это фича такая? так делать нельзя?
(67)
вставь в 1384 строку следующий код, и запусти, выводит сообщение при записи ?
ЗЫ: попробуй еще пересоздать базу в списке выбора баз.
(68) во вкладке О программе, 1cpp какой версии ?
(69) ща проверю, так не тестил еще.
(67) можешь еще запостить информацию о настройках 1cpp из вкладке о Программе ?
(70) Вставил. сообщения нет. Пересоздал — не помогло.
(74) Информация о настройках:
EnableHookEventsGroupContext: 1
EnableCheckType: 0
EnableDebugging: 0
EnableOptimization: 1
EnableTableSourceTable: 1
EnableTurboBL: 1
(68) во вкладке О программе, 1cpp какой версии ?
нет вообще, ни одной вкладки, пробовал в SQL-базе данных (1C++ v:2.0.3.7) — та же самая ошибка.
(74) Дай пользователя код по проверке версии 1С++ или встрой его в свою обработку.
ИМХО так будет проще 🙂
(75) у тебя почему-то не перехватываются события обработки проведения — вот и нет «записи» документа.
попробуй удалить ПерехватСобытийПроведения.prm в каталогеИБ, закрыть базу, заново открыть и запустить обработку.
(78) ага, уже тоже думал над этим..
Не подскажешь, почему может не перехватываться проведение документа, как у тов. в (75) ?
(77) в каталогеИБ появился файлик
ПерехватСобытийПроведения.prm ???
(77)А ёпт.. у тебя 1с++ старой версии, используй 3**..
Или удали свою вк 1c++, и запусти обработку — она сама распакуется в каталогиб
(79) Файлик удалял — ничего не изменилось.
(82) Своих классов с использованием перехватчика нет случаем ?
(83) Пробовал уже все свои классы убирать, без результата.
(84)
в строку 1316 воткни
|Сообщить(«»назначаем проведение»»);
вызывается ?
(85) Не перепутал?
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+»Formex.dll»)=0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли; — 1316
(85) Блин, я же там уже слегка подправил, строк добавилось. Ща проверю.
(85) Да, вызывается.
(85) Понадобилось мне перегрузить машинку. После перезагрузки — заработало. Что было — не понятно.
(89) Уффф.. ну и ладушки.
(91) Ладушки — с плюсом.
(77)А ёпт.. у тебя 1с++ старой версии, используй 3**..
Или удали свою вк 1c++, и запусти обработку — она сама распакуется в каталогиб
Теперь при запуске появлется след. ошибка:
ТЗ.Очистить();
Значение не представляет агрегатный объект (Очистить)
(93) 1cpp какой версии «светится» ?
(93) 1cpp какой версии «светится» ?
3.2.2.8
Только при запущенной поделке и светится. То есть ВК загружена только во время пока твоя обработка «в эфире».
(93) 1cpp какой версии «светится» ?
3.2.2.8
Только при запущенной поделке и светится. То есть ВК загружена только во время пока твоя обработка «в эфире», вернее, только после запуска последней и до очередного сеанса с текущей БД.
(96) уже прогресс, а формекс ?
А зарегистрированные классы ?
+ попробуй пересоздать базу в окошке выбора баз и запустить по-новой.
(96) уже прогресс, а формекс ?
А зарегистрированные классы ?
+ попробуй пересоздать базу в окошке выбора баз и запустить по-новой.
FormEx 2.0
(98) на вкладке 1cpp, появились имена зарегистрированных классов ?
Можещшь дать удаленно поглядеть, что делаешь через тимвьювер ?..
ТиС типовая SQL 77.027, WinXP SP3 Prof
загружает Dll-ки
была ошибка, в system32 не было comdlg32.ocx
ВыпадающийСписок::Инициализация() : Создание элемента управления MSComctlLib.ImageComboCtl.2 не удалось
АктивИкс.СоздатьЭУ(«MSComctlLib.ImageComboCtl.2»);
{D:1Cv77ТайзерТисСклВыпадающийСписок.prm(19) }
Объект.Инициализация();
{D:1CV771СV7_ОБРАБОТКИОБРАБОТКИ ОБЩREGEDITOR.ERT(1613)}: ВыпадающийСписок::Инициализация() : Создание элемента управления MSComctlLib.ImageComboCtl.2 не удалось
АктивИкс.СоздатьЭУ(«MSComctlLib.ImageComboCtl.2»);
{D:1Cv77ТайзерТисСклВыпадающийСписок.prm(19) }
1С++ 3.2.2.0
Formex 2.0.5.101
Имена зарегистрированных классов:
ВыпадающийСписок = D:\_________ВыпадающийСписок.prm
ПерехватСобытийПроведения = D:\______________ПерехватСобытийПроведения.prm
Информация о настройках:
EnableHookEventsGroupContext: 1
EnableCheckType: 0
EnableDebugging: 0
EnableOptimization: 1
EnableTableSourceTable: 1
EnableTurboBL: 1
регистрилкой компонент нормально загрузилось,
апд
но так и не понял как сделать чтобы движения отображались в обработке: открываю журнал, бегаю, смотрю движения системным меню , но в обрабтке не появляется ничего 🙁
апд
почему то вновь заработало нормально
Ёпрст, твоя обработка, как и многие предыдущие другие,
как ценный манускрипт, выставка достижений передовой программистской мысли, достойный изучения многими «студентами» с целью практического обучения нестандартным технологиям, спасибо
Спасибо за этот программный продукт! Есть один момент. Если в конфигурации используется 1С++ и
То перед использованием данной обработки необходимо сделать
Иначе ActiveX не заработает. Второй раз с этим сталкиваюсь и все время забываю. Уже второй раз час потратил пока не вспомнил.
(169) это не используется.
ВыпадающийСписок::Инициализация() : Создание элемента управления MSComctlLib.ImageComboCtl.2 не удалось
АктивИкс.СоздатьЭУ(«MSComctlLib.ImageComboCtl.2»);
{D:1Cv77ТайзерТисСклВыпадающийСписок.prm(19) }
Объект.Инициализация();
{D:1CV771СV7_ОБРАБОТКИОБРАБОТКИ ОБЩREGEDITOR.ERT(1613)}: ВыпадающийСписок::Инициализация() : Создание элемента управления MSComctlLib.ImageComboCtl.2 не удалось
АктивИкс.СоздатьЭУ(«MSComctlLib.ImageComboCtl.2»);
{D:1Cv77ТайзерТисСклВыпадающийСписок.prm(19) }
и 1С++ и Formex последних версий и зарегистрированы