|
v8: Ошибка 8.3 при записи движений в регистре бухгалтерии. | ☑ | ||
---|---|---|---|---|
0
ChAlex
03.06.13
✎
16:51
|
Чуда не случилось, и как всегда старт новой платформы чреват наличием довольно грубых ошибок. Попробовал перевести базу на 8.3. В результате даже не очень глубоких тестов прямо сходу наткнулся на некорректную работу по перепроведению документов (без отмены проведения). Данный трабл наблюдается стабильно при просо перепроведении документа, без его модификации и при условии того, что по документу делается всего одна единственная проводка по регитсру бухгалтерии. Если модифицируется документ, либо по документу больше 1-й проводки такого поведения не словил (может просто не повезло). Исходные данные по документу:
Оперативное проведение: разрешить Удаление движений: Удалять автоматически при отмене проведения Запись движений при проведении: Записывать выбранные Режим блокировок: Управляемый Модуль обработки проведения: Процедура ОбработкаПроведения(Отказ, Режим) Ген=Новый ГенераторСлучайныхЧисел(0); Сум=Ген.СлучайноеЧисло(10,10000); Проводка=Движения.Хозрасчетный.Добавить(); Проводка.Период=Дата; Проводка.Организация=Организация; Проводка.Содержание="Приход готовой продукции"; Проводка.СчетДт=ПланыСчетов.Хозрасчетный._68_2_1; Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.СчетКт=ПланыСчетов.Хозрасчетный._68_2_2; Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.Сумма=Сум; Движения.Хозрасчетный.Записывать=Истина; Сообщить(Сум); КонецПроцедуры При перепроведении корреспонденция остается одной и той-же, меняется только сумма проводки (для тестирования специально выхолостил весь алгоритм и сумму формирую случайным образом). На выходе из процедуры в отладчике и сумма проводки верная, и признак записи регистра бухгалтерии установлена. Но после выхода в проводках сумма остается неизменной!!!! Если в результате перепроведения изменится что либо кроме суммы - то эта ситуация отлавливается и все перезаписывается, но вот сумму игнорирует. Более того, пробовал перепроводить с интерактивным изменением данных в документе - если что-то влияеет на набор записей кроме суммы - все срабатывает, если просто изменение не повлекшие изменения в данных (например сумму повтороно пробио то же самое значение в форме) - то фиг - проводки не переписываются, если же изменить какой-либо реквизит - то и тут засада, почти по всем документам проводки тогда перезаписываются (во всяком на выборочном десятке), но вот на последнем документе по времени в журнале - НЕТ!!! Я фигею, дальше только чисто по-русски... :) |
|||
3
ChAlex
03.06.13
✎
17:02
|
(2) - не беда!? Если бы сумма только зависела от значения в документе - то и хрен с ней. Но если сумма расчитывается по неким алгоритмам (например по себестоимости списанных материалов и т.п.). В базе в данных сначала что-то не верно отразили, в результате найденной ошибки изменены данные, теперь нужно перепровести докменты, в которых это сказывается - запускаем обработку (а хоть даже руками) и потом поучаем что а собственно кривизна как была так и осталась, хоть пользователь себе и не помыслит что это не так!!
|
|||
4
Волшебник
03.06.13
✎
17:04
|
(0) А зачем рапортуешь на мисте? Отправляй сразу в Контрольную группу [email protected]
|
|||
5
ChAlex
03.06.13
✎
17:05
|
Да и в принципе: как можно пользоваться системой, которая даже записи в базу делает не те, которые от нее требуют?!! Я не уверен что и по регистрам какой-нибудь аналогичной бодяги нет!!! Тупо смотреть на картинки на экране?! Нах такая система!!!
|
|||
6
fisher
03.06.13
✎
17:08
|
(0) Мда... Прикольная оптимизация записи :)
|
|||
7
fisher
03.06.13
✎
17:11
|
Видать хитрый случай с единственной проводкой проскользнул через юнит-тесты :)
|
|||
8
hhhh
03.06.13
✎
17:11
|
может просто журнал проводок барахлит?
|
|||
9
ChAlex
03.06.13
✎
17:11
|
(4) не сложилось как-то с диалогом 1С. Не знаю , может сейчас что изменилось, но раньше без предоставления данных о регистрации и прочей мути 1С даже не хотела слушать об ошибках. Я работаю на разных клиентов, и мало того что я за бесплатно тестирую ихние траблы, то мне теперь надо клиента поднять, а предоставьте ваши данные, на что мне в 90% случаев посылаю нафиг, ибо кому-то надо напрячься, перевернуть все свои мусорки во всех кабинетах в поисках регисртационных данных, то это у Мани, то это у Клавы.... У меня уже выработался стойкое убеждение: А мне оно надо?.
Может кому мое сообщение поможет в принятии решения переходить на 8.3 или нет - это для меня важнее. Может трабл не в самом прведении, а например в конвертации данных, а ж не идиот теперь все с нуля набивать. Может кто-то еще проверит и подтвердит, или опровергнет... |
|||
10
ChAlex
03.06.13
✎
17:14
|
(8) - Может и барахлит, только в журнале у меня ничего из алгоритмов ВООБЩЕ нет, просто вывод данных из регистра. И даже если это он, то мало утешений.
|
|||
11
ChAlex
03.06.13
✎
17:17
|
(7) - одна проводка - далеко не хитрый случай. Изначально наткнулся на это из реальной ситуации: акт приходования выпущенной продукции. Не замораяиваю почему, но так уж случилось, что клиенту удобно приходовать единственную позицию, а не список продукции. Потому в документе и формируется 1 единственная проводка. Но даже при таблице, запросто может оказаться аналогичная ситуация
|
|||
12
fisher
03.06.13
✎
17:22
|
(9) Ну, 1С тоже можно понять. Им нужно как-то фильтровать вал обращений к разработчикам, который без оной фильтрации на 99% будет тупо спамом.
|
|||
13
ChAlex
03.06.13
✎
17:30
|
(12) на месте 1С за сообщения об ошибках следует еще и бонус начислять! Я ж не по-поводу того, расскажите а как это сделать? Значит если регисрационные данные представляешь, то мы будем с нашими траблами разбираться, если нет, то не будем (как будто и нет их, будем ждать пока кто-то педантичный со всеми атрибутами появится). А простите собственно сам процесс исправления от этого как-то меняется? Я что прошу с ними переписки? Я сообщаю факт. Даже с регистрацией - их право рассматривать, реагировать или нет на мое сообщение. Что мешает соотвествующим людям вникать и проверять. Или что, зарегистрированного пользователя на счетчик поставят, если он их ввел в заблуждение? Не понимаю! С консультациями - да ваше право не разговаривать с незарегистрированными пользователями, но принимать сообщения об ошибках?... нонсенс. Это то же самое если кого-то в подъезде зарезали, а полиция не будет принмать фотографии того как это было, пересланные по почте... Пока -что даже заплатить пообещают, если очень надо :)
|
|||
14
fisher
03.06.13
✎
17:38
|
(13) Знаешь, сколько таких багонаходителей вчера открывших ломаную 1С будет всякой фигни слать? Кто будет эти авгиевы конюшни разгребать? Причем девочку с ресепшена не посадишь, надо спеца садить.
Другое дело, что подготовить хороший баг-репорт (особенно если проблема не простая) по которому разработчик сможет воспроизвести проблему - это тоже время/деньги. А мотивации практически нет. Ящитаю, за подтвержденные баг-репорты надо в самом деле как-то премировать. |
|||
15
ChAlex
03.06.13
✎
17:47
|
(14) - ладно суть данной темы не в том общаться или не общаться с 1С и каким образом.
(8) проверил - барахлит не журнал, отчет показывает аналогичные цифры, и перезагрузка 1С не помогает, так что все 100% трабл в записи данных |
|||
16
acsent
03.06.13
✎
17:49
|
уже на 8.3 перешел. ну ты храбр однако. или у тебя зело крепкая задница и много вазелина
|
|||
17
ChAlex
03.06.13
✎
17:50
|
(+14) если кто-то посчитает нужных сообщить об этом баге - 1С валяйте, претензий не имею :)
|
|||
18
ChAlex
03.06.13
✎
17:51
|
(16) - не перешел, а посмотрел на предмет перейти. А крепкая задница должна быть на любом релизе: покажите мне хоть один в котором нет каких-то траблов :)
|
|||
19
fisher
03.06.13
✎
18:03
|
(17) Думаю, кто-нить из партнеров сообщит. Подозреваю, что они с этого хоть какой-то профит имеют, пусть и нематериальный.
|
|||
20
ChAlex
03.06.13
✎
18:04
|
(19) +100 :)
|
|||
21
Fragster
гуру
03.06.13
✎
18:04
|
а кто-нить реально проверил (0)?
|
|||
22
ChAlex
03.06.13
✎
18:09
|
(21) Ну я озвучил трабл - сначала 2 дня кувыркался вокруг, думал я что-то накосячил. Потому и накроптал тестовое проведение, чтобы ну на все 100 быть кверенным что некие иные подводные камни не влияют. Единственное - не было времени с нуля создать пустую урезанную конфигурацию, и в ней попробовать (это что бы отмести возможный вариант конвертации базы 8.2). Хотя пробовал и в режиме 8.2. без каких-либо преобразований (теоретически) и в файловом и в серверном варианте - поведение стабильно одинаковое на моих данных (тобишь реальных данных версии 8.2). Если кто-то на пустой базе такое сварганит - и получит тот же результат, ну тогда на все 500 будет фиксированный баг
|
|||
23
pumbaEO
03.06.13
✎
18:12
|
(21) ответ "нет" удовлетворит?
|
|||
24
fisher
03.06.13
✎
18:12
|
(21) Если бы кто-нить проверил - уже отписался бы.
(22) А если не подтвердится, то может оказаться еще хуже - значит требуется какая-то совокупность условий, которые еще надо устанавливать. Ну, или как легкий вариант, ты - лох :) |
|||
25
ChAlex
03.06.13
✎
18:14
|
Какую-то мизерную вероятность оставляю, может изначальный трабл где-нибудь еще с 8.2 тянется из каких-нибудь служебных полей, хз... Пока нет времени до чистого эксперимента на пустой базе (текущую работу все-таки никто не отменял). Если у кого-то есть время и желание, может раньше проверит, если нет - чуть позже попробую сам (для очистки совести) :)
|
|||
26
acsent
03.06.13
✎
18:16
|
запости на партнерском
|
|||
27
Dethmont
03.06.13
✎
18:19
|
Подпишусь
|
|||
28
Bober
03.06.13
✎
18:22
|
(0) проверил, на пустой базе, с один документов, план счетов, РБ все работает как надо, при каждом проведении меняется сумма
|
|||
29
ChAlex
03.06.13
✎
18:34
|
(28) - это уже интересно. Попробую уточнить: Удаление движений: Удалять автоматически при отмене проведения
и Запись движений при проведении: Записывать выбранные? Ибо естественно если поставить Удалять автоматически - то все будет ок (перед проведением ясный перец движения очищаются автоматически) |
|||
30
pumbaEO
03.06.13
✎
18:34
|
(29) давай .dt с одним документом.
|
|||
31
ChAlex
03.06.13
✎
18:36
|
(30) +100. Я тоже попробовал бы, а то если блин еще железо влияете или роза ветров... - то блин... :)
|
|||
32
Bober
03.06.13
✎
18:43
|
(29) первый пункт - да
второй ( Запись движений при проведении: Записывать выбранные) не вижу где он. |
|||
33
Bober
03.06.13
✎
18:45
|
||||
34
ChAlex
03.06.13
✎
18:45
|
(32) - там же в свойствах рядом (если открыт свойства документа)
|
|||
35
Serginio1
03.06.13
✎
18:46
|
Вы еще попробуйте через
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(Ссылка); Проводка= НаборЗаписей.Добавить(); Проводка.Регистратор = Ссылка; Проводка.Период=Дата; Проводка.Организация=Организация; Проводка.Содержание="Приход готовой продукции"; Проводка.СчетДт=ПланыСчетов.Хозрасчетный._68_2_1; Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.СчетКт=ПланыСчетов.Хозрасчетный._68_2_2; Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.Сумма=Сум; Движения.Хозрасчетный.Записывать=Истина; НаборЗаписей.Записывать=Истина; НаборЗаписей.Записать(); Записывать через Набор Записей удобней, так как можно вне модуля документа в том числе когда нужно перепроведение по одному регистру. |
|||
36
Bober
03.06.13
✎
18:49
|
(34) угу, нашел, палец разработчикам в глаз, по F2 не все свойства.
|
|||
37
ChAlex
03.06.13
✎
18:54
|
Bober, в твоей базе еще круче, с каждым перепроведением добавляется еще одна строка :)
|
|||
38
ChAlex
03.06.13
✎
18:57
|
5 раз перепровел не закрываюя форму - 5 проводок! :) И вроде с первого взгляда все нормально настроено. Единственное переключив в режим совместимости 8.2 и запуск обычного приложения - н о это не должно влиять на поведение
|
|||
39
ChAlex
03.06.13
✎
19:02
|
И вопрос в неоперативном проведении!!! Если перепровести оперативно - то одна проводка, если неоперативно - то проводка добавляется!!! Но по-моему это еще один косяк в платформе! или я уже как белка в колесе закрутился...
|
|||
40
ChAlex
03.06.13
✎
19:06
|
(35) - можно и вообще фламастером раскрасить :) не в обиду, речь не в том какие способы существуют для оформления проведения. Каждому случаю свои фишки. Но по методике той же 1С - для оптимизации, что бы не делать лишних движения и бла-бла-бла рекомендуется работать с набором движений документа, и т.д и т.п. В рамках этой идеологии и написан алгоритм проведения, и в рамках этой идеологии он и не работает!!
|
|||
41
ChAlex
03.06.13
✎
19:21
|
Блин - тут еще поведение проведения зависит от формы, в которой открыт документ: не меняя ничего в модуле проведения если открыть в обычном режиме и проводить - то при неоперативном проведении документа проводки плодятся. Если проводить документ в управляемом интерфейсе - то проводки делаются по одной и да таки с изменением данных. Правда формы генерируются автоматически. Кстати вот тут и есть кажется момент в разном поведении. И поэтому тестовая база от Bober ведет себя по-иному. Попробую выудить истину
|
|||
42
ChAlex
03.06.13
✎
19:40
|
Я чего-то не въеду: http://zalil.ru/34553580 база от Bober - я в ней просто создал формы документа и настроил режимы использования как у меня. Один и тот же документ (наглядней 2-й) открываем и пробуем перепроводить несколько раз. В управляемом интерфейсе поведение нормальное, в обычном - плодятся проводки по последнему документу (при неизменном алгоритме проведения). Или я уже дошел до тупизма..? :)
|
|||
43
ChAlex
03.06.13
✎
20:12
|
Ну вот - что и требовалось доказать: http://zalil.ru/34553680 добавил минимальное количество объектов, как в моей базе (в частности субконто и т.п.) Остальное все с чистой базы от Bober. И поведение аналогичное (к выше найденному необъяснимому поведению при проведении из разных форм) - то как у меня. Сумма не переписывается!!!!
В базе готовая ситуация для демонстрации трабла. Попробуйте кто-нибудь еще - может это только на моем железе... |
|||
44
ChAlex
03.06.13
✎
21:19
|
Окончательные результаты теста: Для более детального рассмотрения немного изменил процедуру в проведении:
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Ген=Новый ГенераторСлучайныхЧисел(0); Сум=Ген.СлучайноеЧисло(10,10000); Проводка=Движения.Хозрасчетный.Добавить(); Проводка.Период=Дата; Проводка.Организация=Организация; Проводка.Содержание="Приход готовой продукции"; Проводка.СчетДт=ПланыСчетов.Хозрасчетный._68_1; Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.СчетКт=ПланыСчетов.Хозрасчетный._68_2; Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.Сумма=Сум; Сообщить(Сум); Сум=Ген.СлучайноеЧисло(10,10000); Проводка=Движения.Хозрасчетный.Добавить(); Проводка.Период=Дата; Проводка.Организация=Организация; Проводка.Содержание="Приход готовой продукции"; Проводка.СчетДт=ПланыСчетов.Хозрасчетный._68_2; Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.СчетКт=ПланыСчетов.Хозрасчетный._68_1; Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ВидыПлатежаВБюждет]=Справочники.ВидыПлатежаВБюджет._Налог; Проводка.Сумма=Сум; Движения.Хозрасчетный.Записывать=Истина; Сообщить(Сум); //Ген = Новый ГенераторСлучайныхЧисел(0); //Сум = Ген.СлучайноеЧисло(10,10000); // //Проводка = Движения.РегистрБухгалтерии1.Добавить(); //Проводка.Период=Дата; //Проводка.Содержание="Приход готовой продукции"; // //Проводка.СчетДт=ПланыСчетов.ПланСчетов1.Счет1; // //Проводка.СчетКт=ПланыСчетов.ПланСчетов1.Счет2; // // //Проводка.Сумма=Сум; //Движения.РегистрБухгалтерии1.Записывать=Истина; // //Сообщить(Сум); КонецПроцедуры Перед началом записей очистка набора движения Хозрасчетный сознательно не делается (в 8.2 такой алгоритм работал без вопросов да и должен по логике). 1. Перепроведение из обычного интерфейса: проводки плодятся с количеством проведений (добавляются всякий раз независимо от оперативно или неоперативно проводится документ). Перепроведение из управляемого интерфейса - в неоперативном режиме проводки поменются если их количество по сранению с предыдущим состоянием изменится, дальше перестают изменяться (триггерный эффект). Оперативно проводимый документ - делает правильные проводки. 2. Если в начале модуля поставить очистку набора (Движения.Хозрасчетный.Очистить();) то в обычном интерфейсе приходим к одинаковому поведению с управляемым - то бишь тогда проводки не плодятся. Резюме: грубая ошибка платформы 8.3 (в таком режиме в ней работать нельзя). Если я не прав - поправьте меня. (база с эмуляцие ошибки в посте 43, можно переписать модуль на вариант приведенный здесь). |
|||
45
GROOVY
03.06.13
✎
21:34
|
(44) 1. Это не ошибка. Так и в 8.2 было. При открытии обычной формы система считывает все данные документа, в том числе и его движения. А так как свойство очистки движений стоит "Автоматически при отмене проведения", то как следствие, перепроведение документа будет плодить записи.
|
|||
46
bazvan
03.06.13
✎
23:12
|
(45) не гони, все известно что снеговик сырой и глюченый.
|
|||
47
GROOVY
03.06.13
✎
23:32
|
(46) :) Нудануда...
|
|||
48
bazvan
03.06.13
✎
23:34
|
(47) тебе человек привел все выклпдки, код и базы. Глюкалово. Вот так вот, и не надо нам тут про СП и прочие подставки для кофия, все что там написано не правда
|
|||
49
GROOVY
03.06.13
✎
23:35
|
(48) Я этот "глюк" на ИС конференции показывал.
|
|||
50
Serginio1
04.06.13
✎
10:50
|
(40) Это просто еще один для тестов. Что неправильно работает набор или набор в составе объекта вводе движений.
|
|||
51
ChAlex
04.06.13
✎
13:04
|
(45) - да в 8.2 аналогичное поведение (по поводу размножения проводок) - но... лично я отнесу это к ошибке, которая и в 8.2. сидит (ну хотите к недоработке). От того управляемый это интерфейс или обычный поведение не должно меняться. А так лажа. Пусть разработчик и будет меня уверять что это крутая фича. Это лично мое мнение.
Ну а претензия не к размножению проводок, а к тому что они не прерписываются. Кстати провел тест на 8.2 на этой же базе (благо в режиме совместимости можно без конвертации открывать в одной или другой платформе) - в 8.2 все нормально проводится и при еоперативном проведении. |
|||
52
ChAlex
04.06.13
✎
13:16
|
(50) - уважаемый, записывать через набор далеко не удобней, и более того иногда вредно, как минимум в случае управляемых блокировок. Не моя прихоть - идеология 1С. Если хотите - можете скачать базу и измените алгоритм на ваш - проверите :)
|
|||
53
GROOVY
04.06.13
✎
13:33
|
(51) Не баг это. Попробуй создать конструктором движений движения в любом документе, при выбранном свойстве в корне конфигурации "Основной режим запуска" - "Обычное приложение". Конструктор сам напишет "Очистить()" перед формированием движений.
Надо просто понимать отличие поведения обычных форм и управляемых. |
|||
54
Serginio1
04.06.13
✎
13:45
|
(52) И что управляемые блокировки только в модуле работают?
Там нужно просто объявить транзакцию |
|||
55
ChAlex
04.06.13
✎
14:02
|
(53) - да хоть как назовите, но тогда где ж логика: для очистки нужно дать Движения.Хозрасчетный.Очистить(). Перед эти открываем в отладчике Движения.Хозрасчетный - он пустой (ведь это набор записей). И команда очистки применяется к этому набору - другой вопрос что в базе есть записи прошлого периода. Ладно - чего по этому поводу спорить - я ж говорю это мое личное мнение: это плохо. Так же как отсутствие контекстного поиска в управляемых формах (именно поиск а не отбор). Сколько бы не утверждали что отбор это лучше - извините мое личное мнение это разные вещи. Так же как и выделение строки одним фоном независимо от режима выделения (ячейки или строки). Разработчик это считает нормальным - но извините мое мнение иное. Так и по различного поведения в обычной форме и управляемой - тоже это мое мнение, в данном случае я не претендую на истину единственно допустиму.
(54). По этому поводу не стоит спорить - хотите пишите так. Долго докапываться до сути - но рекомендации 1С: при записи наборов движения документа следует использовать Движения.Записать(), а не Движения.Хозрасчетный.Записать(),Движения.Остатки.Записать() и т.п. , а тем более записывать наборы. Все упирается в конкуренцию блокировки данных (в общих словах). Тем более ничего не мешает передавать в процедуры конструкцию (Движения.Хозрасчетный и даже просто Движения) |
|||
56
Serginio1
04.06.13
✎
14:02
|
54 да и не навязываю свое видение. Просто протестировать вариант с набором.
|
|||
57
Serginio1
04.06.13
✎
14:05
|
(55) Если все действия происходят в транзакции то никаких различий просто не должно быть. Тогда непонятны рекомендации. И тем более тогда поведение в с товоей ситуацией должно быть одинаково. Тебе проверить сложно?
|
|||
58
ChAlex
04.06.13
✎
14:14
|
(57) - :) лень значится самому протестить. Ладно - набор записывается. Этого и следовало ожидать. Речь идет про движения объекта и его поведение. И запись набора никогда не будет плодить проводок (если только не убрать замещение), но... любой записанный набор будет переписан из Движения.Регистр - если это предусмотрено логикой программы (либо настройками записи движения, либо оставив для набора реквизит .Записывать=истина). Кстати в вашем листинге ошибка как раз с этим связанная (после проведения ничего нет в проводках) ибо не нужно оставлять тогда Движения.Хозрасчетный.Записывать=Истина;
|
|||
59
Serginio1
04.06.13
✎
14:31
|
(58)
Спасибо. Просто у меня куча дел делается. Там есть просто Движения.Хозрасчетный.Записывать=Истина; НаборЗаписей.Записывать=Истина; Просто я писал с листа вне 1С. Движения это и есть набор записей. Но для него автоматически заполняются регистратор, активность. Кстати а что просходит в модуле Регистра бухгалтерии при записи. |
|||
60
ChAlex
04.06.13
✎
15:02
|
Ну вот, ситуация стала еще загадочней! Добавил в модуль регистра бухгалтерии пустые процедуры "ПередЗаписью" И "ПриЗаписи" (до этого там ничего не было) в отладчике посмотрел что там при проведении - там все как и должно было быть - и ... записи проводок стали правильными!! Удалил процедуры - все работает! И теперь уже не словить не рабочую ситуацию! Кто не верит - может скачать из инета базу. Я фигею
|
|||
61
Bober
04.06.13
✎
16:11
|
(0) как вариант: кэш паразитирует на твоем рабочем месте.
|
|||
62
Bober
04.06.13
✎
16:12
|
(61) -> (60)
|
|||
63
ChAlex
04.06.13
✎
16:20
|
Только кэш паратизирует тогда везде. Ибо такие же действия наблюдаются на разных компьютерах. В добавок - те же действия провел на реальной базе - эффект оказался нулевой, не верные проводки. В общем дальше копать бессмысленно, ибо трабл внутри платформы.
|
|||
64
ChAlex
04.06.13
✎
18:12
|
(60) - блин это уже сам закрутился. Пробовал в версии 8.2 и не заметил что назад на 8.3 не переключил. :) Неа - в 8.3. все по-прежнему не работает. В процедурах модуля регистра при записи все ок - циферки правильные, а вот в базе - нет их.
|
|||
65
Serginio1
04.06.13
✎
18:39
|
А если поменять на Записывать Модифицированные?
|
|||
66
ChAlex
04.06.13
✎
19:26
|
(65) а может лучше поменять 1С? :)
|
|||
67
TormozIT
гуру
07.06.13
✎
10:33
|
Я готов отправить готовый багрепорт в 1с. Требуется четко описать
1. Конфигурацию ПО: версия платформы, тип приложения, ОС, СУБД 2. Проблема: кратко самая суть 3. Способ воспроизведения: желательно на минимальной конфигурации, приложенной к сообщению |
|||
68
ChAlex
07.06.13
✎
10:58
|
(67) - да пожалуйса:
1. Любая ОС Windows, любой вариант приложения (файловая или серверная, в серверном варианте тестил на SQL 2008). 2. Проблема: при неоперативном перепроведении документа (без предварительной отмены проведения) не перезаписывается в базу набор записей регистра бухгалтерии (как минимум если в проводках меняется только сумма). Оперативно проводимый документ записывает проводки. 3. http://zalil.ru/34553680 - dt с демонстрацией. Единственный документ в конфигурации и два документа в базе. |
|||
69
ChAlex
07.06.13
✎
11:02
|
(+68) В примере случайным при проведении случайным образом формируется сумма проводок, но после проведения проводки в базе остаются в первоначальном виде, сколько не перепроводи документ
|
|||
70
TormozIT
гуру
07.06.13
✎
11:02
|
(68) Т.е. если меняем сумму, то не перезаписывается, а если меняем измерение или субконто, то перезаписывается?
Можешь сразу привести код? |
|||
71
ChAlex
07.06.13
✎
11:10
|
(70) первоначально был такой ребус, что точно повторяемость когда и в каких случаях проводится, когда нет - ну просто уже не реально. Изначально на рабочей базе было так, что если меняется только сумма - то не переписывается, если изменяется количество, или субконто, или дата/время документа - то записывается (правда тут еще идет и изменение формы). Но в результате для отлавливания более простой ситуации и всегда повторяемой - сделана тестовая минимальная база, в ней уже варианты всевозможные не перебираю. Наверное и ежу понятно, что при изменнии любого поля в проводках, а так-же их количества и т.п. набор должен переписываться. Что касается кода он приведен в посте (44)
|
|||
72
ChAlex
07.06.13
✎
11:14
|
Опять же какой-то другой документ (например расходная накладная) - проводился - но там алгоритм проводок гораздо сложнее, и может какие-то настройки не такие - выяислить точную корреляцию действий - ну наверное не реально, в общем вот в базе есть конкретная ситуация, когда не работает.
|
|||
73
TormozIT
гуру
07.06.13
✎
11:15
|
Нужно указать минимальное изменение в демопримере, которое приведет к правильной работе программы. Там это предусмотрено?
|
|||
74
ChAlex
07.06.13
✎
11:18
|
В тестовой базе открываем документ, кликаем на перепроведение, в сообщении выдаются суммы, которые устанавливаются в проводках, смотрим движения документа - а там стабильно одни те же цифры. Никакие изменения в демопримере не приводят к нормальной работе (кроме оперативного проведения, либо изменения даты документа). То-что я писал выше - я не могу сказать до конца с уверенностью, что в этих документах точно такая же ситуация, как и в нерабочем. Возможно там что-то происходит, что приводит к обходу ошибочной ситуации, и .т.п.
|
|||
75
ChAlex
07.06.13
✎
11:23
|
Сейчас проведу еще один тест, на предмет чтобы заработало
|
|||
76
ChAlex
07.06.13
✎
11:49
|
Да - стоит при проведении в проводке изменить например субконто - первое перепровдение тогда записывает набор, последующие - не изменяет (естественно сумму, ибо остальные все поля неизменны)
|
|||
77
TormozIT
гуру
07.06.13
✎
12:34
|
Демопример сделан не достаточно хорошо.
Попробуй доработать его таким образом, чтобы - Для проверки требовалось минимум действий - желательно только в режиме предприятия - чтобы сразу открывалась нужная форма при начале работы системы - Описание этих действий было более четким - Проверка была более наглядной - Описание воспроизведения содержало также и вариант для наблюдения правильного поведения |
|||
78
ChAlex
07.06.13
✎
14:28
|
Да куда еще проще?! Все что нужно для демонстрации - запустить (для минимума движений в управляемом режиме), открыть документ, и нажать "провести" - все!!! В базе всего 2 документа ! Один проводится всегда неоперативно (поскольку не последний по дате), второй всегда проводится оперативно - поскольку последний. По первому не правильно пишутся, по второму правильно. Чего еще надо чтобы исправить ошибку?!! Написать трактат на тему ...
|
|||
79
Старик Юзергад
07.06.13
✎
14:31
|
(0) хороший у тебя бухгалтерский учет :)
Ген=Новый ГенераторСлучайныхЧисел(0); Сум=Ген.СлучайноеЧисло(10,10000); Проводка.Сумма=Сум; |
|||
80
ChAlex
07.06.13
✎
14:31
|
(+78) или 1С уже исправляет ошибки вообще не открывая конфигуратор? - там блин всего 10 строчек кода
|
|||
81
ChAlex
07.06.13
✎
14:33
|
(79) - при чем здесь бухгалтерский учет? Эмуляция изменения суммы проводки.
|
|||
82
TormozIT
гуру
07.06.13
✎
15:12
|
(78) Я потому и пишу, что я попробовал. При попытке провести последний документ получаю ошибку "Запись не верна! Значение поля "Организация" не может быть пустым! (Регистр бухгалтерии: Журнал проводок хозрасчетный; Номер строки: 1)"
|
|||
83
TormozIT
гуру
07.06.13
✎
15:14
|
Если действительно хочешь донести до производителя отчет об ошибке, постарайся выполнить мои рекомендации из (77). Трактат писать не надо, но нужно научиться ставить себя на место приемника твоего сообщения.
|
|||
84
Serginio1
07.06.13
✎
16:57
|
А ты смотрел Ген.СлучайноеЧисло(10,10000);
НачальноеЧисло=ТекущаяДата()-НачалоГода(ТекущаяДата()); Правилнее наверное Ген.СлучайноеЧисло(1000,НачальноеЧисло); |
|||
85
Serginio1
07.06.13
✎
16:59
|
Генератор генерит случайную последовательность по определенному алгоритму отталкиваясь от начального числа.
По сути у тебя одно и тоже число каждый раз. или можешь сделать так НачальноеЧисло=ТекущаяДата()-НачалоГода(ТекущаяДата()); Сум=НачальноеЧисло % ПростоеЧисло |
|||
86
ChAlex
07.06.13
✎
17:00
|
(84) - чего вы доколупались до этого генератора? да напишите что угодно - какой нах разница? не формрует случайного числа? Чего - не формирует? батенька так вы откройте конфигурацию и посмотрите
|
|||
87
ChAlex
07.06.13
✎
17:01
|
А еще не плохо было бы посмотреть доку:Синтаксис:
СлучайноеЧисло(<НижняяГраница>, <ВерхняяГраница>) |
|||
88
ChAlex
07.06.13
✎
17:02
|
Разрешаю замутить ряд Фурье - валяйте :)
|
|||
89
Serginio1
07.06.13
✎
17:09
|
Прошу прощения не посмотрел
Тогда вместо Ген=Новый ГенераторСлучайныхЧисел(0); Сум=Ген.СлучайноеЧисло(10,10000); НачальноеЧисло=ТекущаяДата()-НачалоГода(ТекущаяДата()); Ген=Новый ГенераторСлучайныхЧисел(НачальноеЧисло); Сум=Ген.СлучайноеЧисло(10,10000); |
|||
90
Serginio1
07.06.13
✎
17:13
|
86 Генератор будет всегда генерить одинаковую последовательность.
Или использовать без параметра Формирование неинициализированного объекта Синтаксис: Новый ГенераторСлучайныхЧисел() Описание: Генератор случайных чисел инициализируется временем работы операционной системы с момента старта. |
|||
91
ChAlex
07.06.13
✎
17:17
|
Слыш друг, чего ты в бутылку лезешь? :) тут об чем речь идет? об генераторе? вроде нет. Сомневаешься что работает - скачай базу запусти - и будешь удивлен, что числа формируются и притом случайным образом
|
|||
92
mehfk
07.06.13
✎
17:24
|
(90) Можешь для себя заменить ГСЧ на ВвестиЧисло.
|
|||
93
ChAlex
07.06.13
✎
17:24
|
(83) - http://zalil.ru/34564424 - все это мой последний вариант. Если это для разработчика сложно - то тогда всем нам нужно срочно искать альтернативный софт. Я не считаю, что изложил суть проблемы не доходчиво. Могут тогда просто искать свой баг просто по фразе: "заоптимизировались господа, у вас не записываются в базу проводки в регистр бухгалтерии при неоперативном перепроведении документа без его модификации и предварительной отмены проведения, когда меняется сумма проводки. В базе остается старая информация!!!"
|
|||
94
ChAlex
07.06.13
✎
17:24
|
(92) +500 :)
|
|||
95
Serginio1
07.06.13
✎
17:30
|
(91)
делал Ген=Новый ГенераторСлучайныхЧисел(0); Сум=Ген.СлучайноеЧисло(10,10000); Ген=Новый ГенераторСлучайныхЧисел(0); Сум2=Ген.СлучайноеЧисло(10,10000); Сообщить(Сум); Сообщить(сум2); Сообщить(сум=сум2); Выдает 814 814 Да Сделай правильно. Новый ГенераторСлучайныхЧисел(); |
|||
96
Лефмихалыч
07.06.13
✎
17:30
|
Автор, таки мы все уже умрем или может быть еще помучаемся?
|
|||
97
Serginio1
07.06.13
✎
17:35
|
95= Прошу прощения. Действительно внутри задействовано текущее время. Если добавить между конструкторами задержку например сообщить, то генерируются разные числа.
|
|||
98
ChAlex
07.06.13
✎
17:38
|
(95) и (97) - и чего? чего ты мучаешь эту конструкцию. Мало того что выдернул из контекста, так не вникаешь для чего это. Объект формируется каждый раз при проведении. Сделай 2 генератора, выполни одни те же команды и сравни. Усе - по поводу генератора я иссяк... :)
|
|||
99
Serginio1
07.06.13
✎
17:46
|
(98) Успокойся в 97 уже попросил прощения.
|
|||
100
ChAlex
07.06.13
✎
17:50
|
Да я спокоен, как удав :)
|
|||
101
TormozIT
гуру
07.06.13
✎
20:29
|
Подготовил, опубликовал и отправил в 1С багрепорт.
http://partners.v8.1c.ru/forum/thread.jsp?id=1152901#1152901 http://infostart.ru/public/190058/ |
|||
102
ChAlex
07.06.13
✎
20:46
|
(101) - сэнкс, глядишь может быстрей что-то хоть со скрипом едущее появится :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |