Имя: Пароль:
1C
1С v8
Измерения регистра накопления
0 trv5
 
09.10.13
18:02
Уточню сразу, база досталась в наследство от другого программера...

Этот нехороший человек решил использовать в регистре накопления (реквизит "ЕдиницаИзмерения"), в измерении составной тип данных, который состоит из типов "строка (длина 150 переменная)" и типа "справочник.Единицыизмерения.ссылка".
В результате естественно в остатках регистра есть записи у которых идентичные строковые значения реквизита "ЕдиницаИзмерения", при этом запрос выдает остатки двумя строками.
То есть, получается 2 одинаковых строки.

При попытке "закрыть" остатки по регистру документом Корриктировка движений (просто заполняем - он делает записи в регистр, никаких расчетов) происходит следующее:
1. Естественно ничего не закрывается.
2. Самое интересное. При выполнении запроса на любую!!!! дату (и даже на 01.01.0001 0:00:01) в регистре появляются остатки!!!! для данных измерений!!!!

Какие будут мысли?
1 bugz2003
 
09.10.13
18:06
2.пересчет итогов сделай
2 Fragster
 
модератор
09.10.13
18:06
база файловая? ТиИ не пробовали?
3 trv5
 
09.10.13
18:07
(1) делал, и тестирование полное делал... не помогает..
Провел документ Корриктировка движений  - остатки на непонятно когда появились, отменил проведение - пропали...
4 Rie
 
09.10.13
18:08
(3) Ну так и смотри, что за косяк в этом документе.
5 trv5
 
09.10.13
18:16
(2) и в файловой и в SQL ситуация одинаковая
6 trv5
 
09.10.13
18:16
(4) косяка в документе нет.
Там все просто, РУКАМИ выбираем нужные измерения, нажимаем провести, делаем запись в регистр
7 Enders
 
09.10.13
18:31
(6) ну посмотри, какие движения он сделал в регистре.
(0) после закрытия остатков, этот РН больше не будет использоваться?
8 trv5
 
09.10.13
18:35
(7) сделано одно движение, период 31.12.2012 23:59:59, заполнены измерения, суммы, вид движения "расход". ВСЕ, больше никаких движений нет.
А запрос выдает что есть остатки по этим измерениям на любую дату...
9 Rie
 
09.10.13
18:41
(8) На какую "любую"?
10 trv5
 
09.10.13
18:42
(9) читай (0)

2. Самое интересное. При выполнении запроса на любую!!!! дату (и даже на 01.01.0001 0:00:01) в регистре появляются остатки!!!! для данных измерений!!!!
11 Enders
 
09.10.13
18:43
(8)а сам запрос то правильный?)
Посмотрите какой регистратор у тех остатков)
12 Rie
 
09.10.13
18:43
(10) Запрос покажи.
13 trv5
 
09.10.13
18:44
(12) ВЫБРАТЬ
    РасшифровкаЗатратОстаткиИОбороты.СчетЗатрат,
    РасшифровкаЗатратОстаткиИОбороты.Субконто1,
    РасшифровкаЗатратОстаткиИОбороты.Субконто2,
    РасшифровкаЗатратОстаткиИОбороты.Субконто3,
    РасшифровкаЗатратОстаткиИОбороты.Номенклатура,
    РасшифровкаЗатратОстаткиИОбороты.Ед,
    РасшифровкаЗатратОстаткиИОбороты.КоличествоНачальныйОстаток,
    РасшифровкаЗатратОстаткиИОбороты.КоличествоКонечныйОстаток,
    РасшифровкаЗатратОстаткиИОбороты.СуммаНачальныйОстаток,
    РасшифровкаЗатратОстаткиИОбороты.СуммаКонечныйОстаток
ИЗ
    РегистрНакопления.РасшифровкаЗатрат.ОстаткиИОбороты(&НачДата, &НачДата, , , ) КАК РасшифровкаЗатратОстаткиИОбороты

НачДата= 01.01.0001  0:00:01

Через консоль запросов строится...
14 Rie
 
09.10.13
18:49
(13) А на _другую_ дату - что выдаёт?
15 trv5
 
09.10.13
18:52
(14) вплоть до даты 31.12.2009 ТОЖЕ САМОЕ
в 2010 году работать начали в базе, данные естественно начинают меняться
16 Enders
 
09.10.13
18:52
(13)Выбери периодичность "регистратор" и вытащи его в запрос.
Увидишь какой документ сделал эти движения.
17 Rie
 
09.10.13
18:54
(15) Чудес не бывает. Загляни в регистр - есть ли там записи до 31.12.2009.
18 trv5
 
09.10.13
18:55
(16) делал, поле регистратор ПУСТОЕ
19 trv5
 
09.10.13
18:56
(17) первым делом заглядывал... еще днем... НЕТУ
20 trv5
 
09.10.13
18:57
Нужно убегать.... смогу ответить завтра...
21 trv5
 
10.10.13
11:35
проблема так и не решена ((((
Может еще у кого будут мысли???
22 Fragster
 
модератор
10.10.13
11:39
ну так убери все "строки" в имеющихся движениях (без корректировки) и после этого сделай тип несоставным, что
23 trv5
 
10.10.13
11:54
(22) проблема в том, что убрать все строки нельзя...

На основании данного регистра считается себестоимость продукции, а цикл производства больше года.
Проблема в том, что в регистре некорректно закрыты года 2010 - 2012.
Вот я и пытаюсь их "почистить" чтобы можно было нормально работать на данный момент.
Причем проблема возникает ТОЛЬКО при ситуации когда в измерении "ЕдиницаИзмерения" кто-то додумался (ну или случайно получилось) вбить единицы "Запчасти" и "Запчасти " (все типа строка), при этом значение остальных измерений идентичны.
В любом другом случае (там 10-ки тысяч строк) все закрывается без проблем.
А вот если сделать движение по данному набору измерений, и не важно по "Запчасти" или "Запчасти ", начинается бред.

Мало того, что ничего не закрывается, так и еще остатки (при выполнении запроса через консоль) появляются НА ЛЮБУЮ дату!!! При этом если построить запрос на дату 01.01.0001 0:00:01, то есть уже остатки на начало дня!!!!
А запрос с параметров в виде дата начала пустая не выполняется..

Я уже думаю.... может глюк в платформе....
24 Fragster
 
модератор
10.10.13
11:56
(23) почему нельзя-то? ну создай недостающие элементы справочников....
25 trv5
 
10.10.13
11:59
(24) хорошо, какой план действий должен быть приблизительно?
26 Fragster
 
модератор
10.10.13
12:06
(25)
создать новый регистр с правильной структурой
перенести все данные в него (создав необходимые элементы справочников)
переименовать старый и новый регистры
грохнуть старый регистр
27 trv5
 
10.10.13
12:09
(26) а что делать с документами? отчетами и тд?
28 Fragster
 
модератор
10.10.13
12:10
(27) поскольку новый регистр будет иметь такую же структуру и имя, как и старый - ничего не надо переделывать (ну, конечно, если вы перестали туда писать строки)
29 trv5
 
10.10.13
12:12
(28) а со строками что делать то? заменить на новый справочник куда их добавить?
Да и документы и отчеты об этом изменении не знают...
Надо будет переделать все документы, как-то заменив в них реквизиты, и при этом чтобы ничего не порушить в остатках..

я правильно понимаю?
30 trv5
 
10.10.13
12:13
(28) да и это не ответ на вопрос почему 1С так себя ведет?
31 Fragster
 
модератор
10.10.13
12:15
(29) строки заменить на элементы справочника единицы измерения.

ничего переделывать, если вы убрали запись "строк" в это измерение не надо
32 Fragster
 
модератор
10.10.13
12:16
(30) выбрав из реальной таблицы записи и проанализироваав их - можно понять. Ну и есть еще в файловых базах нюансы со строками фиксированной и нефиксированной длины - плохо сворачиваются они.
33 trv5
 
10.10.13
12:22
(31) боюсь что бухгалтерии это не понравится мягко говоря...
Там чувак сделал чтобы велся учет в разрезе фактически примечаний (не знаю зачем!!!!) и там их скорее всего тысячи..
Мне проще свернуть все кроме этих "Запчасти", чем портить справочник единицы измерения.

На базе SQL работает так же, проверял лично.
34 trv5
 
10.10.13
13:01
(32) Жаль тут картинки вставлять нельзя. На инфостате тоже общаюсь, там скрин выложил где все четко видно..
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший