Имя: Пароль:
1C
1C 7.7
v7: Оцените очередной велосипед для перепроведения
0 QbeeQ
 
28.11.12
11:34
Сделал инструмент для себя. Пользоваться так понравилось, что решил поделиться с сообществом. В ответ от сообщества ожидаю конструктивной критики.
Обpaбomкa noзвoляem nepenpoвecmu дoкумeнmы зa nepuoд u узнamь чmo uзмeнuлocь nocлe ux nepenpoвeдeнuя.

Кaк paбomaem:

1. Ecmь двa peжuмa paбomы: no выбpaнным вuдaм дoкумeнmoв u ucnoльзуя npouзвoльную oбpaбomку noлучeнuя cnucкa дoкумeнmoв.
  Пepвый - выбupaeм гaлoчкaмu кaкue дoкумeнmы nepenpoвoдumь, выбupaeм зa кaкoй nepuoд u вnepёд!
  Bmopoй - Cнaчaлa нeoбxoдuмo нanucamь внeшнюю oбpaбoку дoлжнa вoзвpaщamь чepeз Фopмa.Пapaмemp cnucoк знaчeнuй c дoкумeнmaмu,
  кomopыe нeoбxoдuмo nepenpoвecmu. Укaзamь nуmь дo эmoй oбpaбomкu u нaжamь кнonку "GO!"
 
2. Пo кaждoму uз omмeчeнныx peгucmpoв фopмupуemcя экceлeвcкuй фaйлuк c лucmaмu "БЫЛO", "CTАЛO" u "PАЗЛИЧИЯ". Фopмupoвaнue фaйлoв
  peaлuзoвaнo чepeз ADODB, mo ecmь для фopмupoвaнuя nepвыx двуx лucmoв нaлuчue caмoгo Excel нe oбязameльнo. Зanoлнeнue mpemьeгo
  лucma onцuoнaльнo. Ecлu уcmaнoвлeн MS Excel, mo мoжнo уcmaнoвumь флaг "Bnucamь фopмулы" u нa mpemьeм лucme noявяmcя фopмулы
  cpaвнeнuя nepвыx двуx лucmoв. Ecлu жe вepcuя MS Excel нe нuжe 2007, mo мoжнo вocnoльзoвamьcя флaгoм "Paзукpacumь" u mpemuй лucт
  oбзaвeдemcя уcлoвным фopмamupoвaнueм, выдeляющuм кpacнoй зaлuвкoй нecoвnaдaющue знaчeнuя.
 
3. Bce uзмeнeнuя бaзы npouзвoдumcя в oднoй mpaнзaкцuu. Cдeлaнo эmo для moгo, чmoбы npu oшuбкe проведения "вepнуmь вcё взaд".
  Heгamuвным мoмeнmoм maкoгo peшeнuя мoжнo cчumamь meopemuчecкoe зaвucaнue 1C npu nepenpoвeдeнuu oгpoмнoгo чucлa документов.
  Поэтому не стоит злоупотреблять с космическими количествами проводимых документов. Однако, в качестве положительной компенсации,
  появилась галочка "Эмуляция". При установленном флаге после выполнения всех операций транзакция отменяется и данные информационной
  базы остаются нетронутыми.

4. Маленькие, но приятные мелочи
  4.1 Кнопка около пути до каталога отчетов позволяет открыть этот путь в проводнике
  4.2 Двойное нажатие на строке списка регистров открывает соответствующий экселевский документ
  4.3 Форму можно заставить сохранять значения штатным режимом, при этом корректно восстановятся галочки у списков
  4.4 При ошибке выполнения T-SQL запроса ниже формы появляется текстовое поле ввода, в которое вписывается текст запроса

обработка тут: http://rusfolder.com/33830656
1 mikecool
 
28.11.12
11:35
это круто вместо "и" лепить "u" ?
2 QbeeQ
 
28.11.12
11:37
(1) 1С зависла при создании описания. набирать было влом и я выхватил текст с экрана. Так распозналось, простите не заметил
3 Ёпрст
 
28.11.12
11:39
(1) там половина буковок английских..
4 syktyk
 
28.11.12
11:39
(0)Спасибо, глянем.
5 simol
 
28.11.12
11:39
насколько отвык читать "m" как "т" и "u" как "и". что аж глаза спотыкаются
6 QbeeQ
 
28.11.12
11:41
(5) в шрифте 1С-ки между ними разницы нет, поэтому Клептомания и запуталась
7 ptiz
 
28.11.12
11:41
(0) Почему не все буквы заменены на английские?
8 QbeeQ
 
28.11.12
11:44
(7) Зависание 1Ски накрыло во время написания, выхватил текст с зависшего экрана и продолжил сочинение. Визуально между буквами разницы нет, поэтому косяка не заметил.
9 Ёпрст
 
28.11.12
11:44
Попытка
           Состояние(Строка(Док.ДатаДок));
           Док.Провести();
       Исключение
           Сообщить("Ошибка проведения документа "+Док.ТекущийДокумент());
           Ошибка = 1;
           Прервать;
       КонецПопытки;

Так писать - полный моветон

Документ может и не провестись, но исключения никогда не будет - ибо Провести(), это функция, которая возвращает результат.

Исключение будет в одном случае - ошибки при блокировках, при невозможности начать/зафиксировать транзакцию самого документа , а в этой поделке её не будет никогда, т.к. в начале обработуи документов  есть метод
НачатьТранзакцию().
10 QbeeQ
 
28.11.12
11:45
(9) Учту, спасибо
11 Ёпрст
 
28.11.12
11:48
Добавлять "БухгалтерскиеПроводки" тоже моветон, перед этим, нужно как минимум проверить, есть ли вообще Операции в метаданных. (если че, в ТиСе их нема)
12 Ёпрст
 
28.11.12
11:49
Ну и перепроведение в одной большой транзакции - очень сомнтительное удовольствие, разве что пару документов перепровести.
13 QbeeQ
 
28.11.12
11:52
(11) а проверка есть при формировании списка регистров

(12) Долго думал на эту тему, но решил оставить так из тех соображений, что для обработки гораздо важнее выявить косяки, чем само перепроведение
14 QbeeQ
 
28.11.12
11:53
+13 Ой, прошу прощения, проверка только при формировании списка документов. Сюда сейчас дорисую
15 Ёпрст
 
28.11.12
11:53
(13) нету никакой проверки
16 QbeeQ
 
28.11.12
11:55
(15) Опа, а как проверить наличие компоненты бух учет?
17 Азат
 
28.11.12
12:00
(16) СоздатьОбъект("БухгалтерскиеИтоги") - если вышибет - значит, нет
18 vladko
 
28.11.12
12:06
(16) посмотри в типовой Бухне ПриНачалеРаботыСистемы(). Там по (17) сделано
19 lion11
 
28.11.12
12:22
Тогда еще надо добавить проверку на наличии Опер.учета - а вдруг проверка базы бухгалтерии понадобится?
20 QbeeQ
 
28.11.12
12:28
(19) В таком случае обработка не найдет ни одного регистра в метаданных и в списке будут только проводки
21 lion11
 
28.11.12
12:33
(20) Т.е. это учтено. Хорошо. Посмотрим...
А вообще-то Миста - не тестовая площадка. ИМХО лучше где-нибудь типа Инфостарта разместить.
22 QbeeQ
 
28.11.12
14:54
(21) Ну, раз так будет лучше, то вот: http://infostart.ru/public/164105/
Заодно поправил косяки. Желающие могут критиковать там, где им удобней
23 Злопчинский
 
28.11.12
15:04
Вот видно, что мало ты с перепроведениями возился... ;-)
.
хочу профили:
.
профиль восстановления ГП для выравнивания взаиморасчетов;
профиль восстановления ГП для выравнивания остатков;
.
профиль - набор галок и настроечных параметров для записи и восстановления "одной кнопокой";
.
хочу результат восстановления успешно/неуспешно(с логом) - автоотсылка на почту, на фтп, складирование в папочку.
.
хочу запоминание точки где остановилось перепроведение чтобы потом начать с этой точки дальше;
.
хочу чтобы было заточено в качестве использования роботом%
.
хочу (это главная хотелка!) чтобы можно было восстанавливать ОТДЕЛЬНО ПО УКАЗАННОЛМУ РЕГИСТРУ/РЕГИСТРАМ.
24 Mikeware
 
28.11.12
15:10
(23) Такие вещи все-таки "кастомизированы". тут каждый себе строитель собственного велосипеда...
например, у меня - восстановление последовательности по себестоимости продаж - сделано для работы  "в онлайне",  без транзакций и т.п. Но даже рекомендовать использование такого в чьей-то чужой базе  -я не решусь...
25 Ёпрст
 
28.11.12
15:13
у мну штатное перепроведение летает, правда , его запускать не всегда есть время..
:)
26 Злопчинский
 
28.11.12
15:14
(25) мы знаем, что у тебя период не месяц ;-)..?
27 Ёпрст
 
28.11.12
15:15
(26) 5 дней
28 Злопчинский
 
28.11.12
15:18
а открытие периода как делается? роботом ночью?
29 QbeeQ
 
28.11.12
15:35
(23) Главная цель обработки - сравнить состояние до и после перепроведения. Отсюда вытекает что:
1. Необходима она больше не для администратора, который выравнивает итоги после корректировок в прошлых периодах, а для программиста, которому необходимо определить корректно ли работает модуль проведения после рефакторинга. А для выравнивания остатков итак полно велосипедов.
2. Использование роботом также не соответствует концепции использования обработки. Предполагается, что программист вдумчиво отметил те документы, которые переписывал, отметил регистры, на которые могут повлиять его изменения, нажал кнопку "Перепровести" и после этого внимательно и сосредоточено всматривается в красные квадратики и пытается понять что он сделал не так.
30 Mikeware
 
28.11.12
15:38
(25) у меня нештатное, но 4 месяца в час (это примерно 350 тысяч документов всего,товарных из них примерно четверть) Не знаю, насколько это считается "летает", но в часы наименьшей нагрузки, когда не более 10 человек в базе - незаметно для пользователей. Когда в базе человек 50-70 - жалуются на торможение... Запускается роботом ежедневно по расписанию...
(28) автоматом, при проведении нового документа новым периодом.
31 Ёпрст
 
28.11.12
15:44
(28) ручонками с утра..есть час времени на всякую х..ню, пока на складе пересменка
32 Mikeware
 
28.11.12
15:50
(31) а у нас 24*7....
33 Ёпрст
 
28.11.12
15:52
(32) не, у нас так же, просто иногда есть окна на тех. перерыв..
34 Ёпрст
 
28.11.12
15:52
да и.. ща вроде в воскресенье выходной стал у некоторых, до обеда :)
35 Злопчинский
 
28.11.12
15:53
(29) понятно, для юзания на тестовой базе...
36 Злопчинский
 
28.11.12
15:54
(30) а открытие периода в разделенном режиме штатно можно?
37 Ёпрст
 
28.11.12
15:56
(36) конечно можно, в транзакции подвинул итоги и зпиисал в систем .. всё собственно.
38 Злопчинский
 
28.11.12
15:56
(30) а средний размер в строках одного товарного документа...?
.
все никак не соберусь проведение на прямоые запросы сделать.. как-то не особо надо... работают в ТА все в основном... пересчеты запускаю изредка вручную... все из-за бл..их сетей...
39 Ёпрст
 
28.11.12
15:56
только не в дбф :(
40 Злопчинский
 
28.11.12
15:57
(37) у.. вам, скульщикам, хорошо... а для дбфа нету обработочки расчета/открытия периода итогов.. а сам я не умею...
41 Злопчинский
 
28.11.12
15:58
(39) вот это мне и непонятно - почему? какая-то принципиальная трудность?
42 Mikeware
 
28.11.12
16:01
(40) с индексами там проблема...
а открыть - не проблема...
(38) порядка 60 строк. лень считать...
43 Злопчинский
 
28.11.12
16:02
(42) все на прямых запросах..?
44 Ёпрст
 
28.11.12
16:03
(41) индекс неправильный при инсёрте
45 Cthulhu
 
28.11.12
16:03
И что, ну никто не обратит внимание на то, что п.3 в целом - бредятина на постном масле и источник глюков, кои могут появляться в том случае весьма стохастически и быть очень трудно обнаружимыми???
Я в недоумении, гспда.
По слогам.
1. Семерка НЕ ПОДДЕРЖИВАЕТ ВЛОЖЕННЫЕ ТРАНЗАКЦИИ.
2. ПРОВЕДЕНИЕ - выполняется В ТРАНЗАКЦИИ.
Использование вложенных транзакций дает порой непрогнозируемые результаты. Например (если используются попытка-исключение, обрамляющие проведение, с отменой транзакции) - наличие движений у непроведенного документа...
46 Cthulhu
 
28.11.12
16:04
в общем и целом - я хренею с вас, гспда...
47 Mikeware
 
28.11.12
16:06
(43) Ну, почти все. Чтение и запись - на них, а обработка - на клиенте... На серверную процедуру мозгов не хватило...
48 polymorph
 
28.11.12
16:07
(5) а я даже не заметил ))
49 QbeeQ
 
28.11.12
16:18
(45) Мне указали на эту ошибку ещё в (9). Я признал, раскаялся и исправился. Исправленный вариант лежит на инфостарте
50 Cthulhu
 
28.11.12
16:28
(49): нимфостартокормушка нечистоплотного "комэрсанта" доржи цыденова идет лесом, спасибоненадо.
51 Cthulhu
 
28.11.12
16:29
(49): и в (9) - сооовсем не про то, про что в (45). так, междупрочим.
52 Ёпрст
 
28.11.12
16:31
(46) нам то  че.. всё равно не используем
:)
53 acsent
 
28.11.12
16:33
Что на  небыло инструмента для перепроведения до сих пор?
54 acsent
 
28.11.12
16:33
*на 7
55 Cthulhu
 
28.11.12
16:35
я тут для унутреннего пользования слепил инструмэнт для выборочного перепроведения с выборочным сохранением движений. но только для унутреннего.
56 Mikeware
 
28.11.12
16:42
(53) просто графомания у товаристча...
57 QbeeQ
 
28.11.12
16:45
(53) Цель - не просто перепроведение, а выявление того, что изменилось
58 Mikeware
 
28.11.12
16:49
(57) Делаешь копию базы. Перепроводишь, и сравниваешь с эталонной. какие проблемы?
таких велисапедов у каждого в загашнике парочка точно...
иногда быстрее написать "на коленке", нежели депить универссальное что-то...
А уж интерфейс рисовать вообще лениво....
59 QbeeQ
 
28.11.12
16:58
(58) Расскажи, пожалуйста, как ты сравниваешь результат перепроведения? У меня всегда были проблемы со сравнением результата. Сформировать в эталонной базе отчет, сохранить в кселе, сформировать в копии. сохранить в экселе, а потом сидеть и сравнивать через формулы и фильтры. В конце концов мне надоело это делать руками и я написал этот инструмент.
60 Mikeware
 
28.11.12
17:03
(59) выборку оттуда - выборку отсюда. Загоняешь в ИТЗ, и группируешь.
можешь загнать в табличку, и построить сводную (OWC), там любые фильтры накрадываются, любые разрезы и т.п.
61 Ёпрст
 
28.11.12
17:07
я обычным запросом одновременно к обеим базам леплю, если надо..и сразу получаю различия.
62 Ёпрст
 
28.11.12
17:08
да и.. обычно это не нужно
63 Злопчинский
 
28.11.12
17:16
(59) это сильное колдунство. писать алгоритм не зная на что он влияет и к каким изменениям приведет - это сильное колдунство ;-)
64 Злопчинский
 
28.11.12
17:16
(62) угу
65 QbeeQ
 
28.11.12
17:43
(63) Когда пишешь естественно знаешь на что он должен влиять, но проверять ведь тоже надо. Тем более когда переписываешь чужой модуль.
66 ADirks
 
29.11.12
07:06
(0) Кто знает слово "рефакторинг", должен знать и слова "функциональное тестирование" а также "юнит-тестирование"

http://1c.alterplast.ru/functest/
67 Прохожий
 
29.11.12
08:33
(0) Че она делает?
68 Neg
 
29.11.12
08:51
Открыл, длинная какая-то, у меня на нетбуке не влазиет. :) Понаделают...
69 QbeeQ
 
29.11.12
11:24
(67) Формирует экселевский файлик со сравнением движений до и после перепроведения.