27.01.2011, 09:36 | #1 |
Участник
|
Производство и настройка ГК
Добрый час, уважаемые господа!
Версия Ax-2009, Rollup 5. При обработке производственного заказа, на стадии завершения, когда производится разноска на бухгалтерские счета Система выдает ошибку (скриншот прилагается). В параметрах модуля «Производства» в поле «Разноска ГК» выбрано значение «Производственные группы». В данном производственном заказе используется производственная группа, с настройками указанными в скриншоте. Исходя из ранних версий Axapt’ы (3 и 4 версии), и согласно электронного Help’а содержащегося в данной версии (скриншот прилагается). Если не указаны счета в поле «Расход» («Приход») производственной группы, то используются счета из номенклатурной группы. Счета учета в производственной группе указаны, но Система к ним не обращается, а выходит в ошибку. Просил программистов смотреть код. Говорят что нет такого в коде: Если счет не указан в производственной группе, то брать из номенклатурной группы. Вопрос: это действительно сейчас так сделали в Ах-2009 с Rollup 5 или у нас неверные настройки или в коде плохо смотрели? Последний раз редактировалось greenfin; 27.01.2011 в 09:42. Причина: вставка скриншотов с настройками. |
|
27.01.2011, 09:55 | #2 |
Участник
|
Про настройки ничего не скажу, но вы уверены, что программисты смотрели? По-хорошему нужно зайти в код, где выдается ошибка (либо по кнопке из инфолога, либо если там перехода нет - то через точку останова в Info.add()) и смотреть в процессе обработки заказа, почему передается неверный счет.
__________________
Ivanhoe as is.. |
|
27.01.2011, 10:06 | #3 |
северный Будда
|
В справочнике счетов на закладке "Настройки" есть поле "Разноска". Тип счёта задаётся именно там. Проверьте, что указанные вами в производственной группе счета имеют правильные типы (те, которые указаны в инфологе). Скорее всего, у вас по ним типы просто не заданы.
__________________
С уважением, Вячеслав |
|
27.01.2011, 10:22 | #4 |
Участник
|
Спасибо за ответ. В наших программистах уверен на все 100, не было ещё ни разу повода усомниться в их профессионализме.
Цитата:
По используемым счетам тип разноски не указан и в поле "проверка разноски" выбрано значение "Дополнительно => Проверка не выполняется и следовательно в нашей ситуации данные параметры не являются причиной возникшей ошибки. Последний раз редактировалось greenfin; 27.01.2011 в 10:39. |
|
27.01.2011, 11:17 | #5 |
северный Будда
|
А вы всё-таки попробуйте указать там соответствующие типы разноски. Ну так, чисто для проверки. У меня как-то была ситуация, когда в поле "Проверка разноски" стояло Опционально, а система всё равно матюгнулась при разноске
__________________
С уважением, Вячеслав |
|
27.01.2011, 11:42 | #6 |
Участник
|
Цитата:
Система именно ругается, что не указаны счета: обращается в производственную группу, счета там не указаны и уходит в ошибку (там не указаны счета в поле "Приход" и "Расход"). И при этом не обращается за ними в номенклатурную группу в случае их не указания, как это было в предыдущих версиях (3-ке и 4-ке) и как сказано в документации. Плюс к сказанному - если счета указаны непосредственно в производственной группе, то производственный заказ обрабатывается и тип разноски указанный в плане счетов в нашем случае роли не играет. Последний раз редактировалось greenfin; 27.01.2011 в 13:36. |
|
27.01.2011, 13:20 | #7 |
Участник
|
Посмотрите в классе InventMov_ProdLine метод accountOperations. Есть там код поиска счета в разноске, если не задан в группе?
Поставьте на методе точку останова, проверьте по какому пути идет. |
|
27.01.2011, 13:33 | #8 |
Участник
|
Цитата:
А под рукой к сожалению 3-ки или 4-ки у нас нет, чтобы посмотреть как там код написан. У кого какие ещё будут соображения по данному вопросу? |
|
27.01.2011, 14:12 | #9 |
Участник
|
Код из AX 2009 SP1 RU5:
X++: LedgerAccount accountOperations() { if (! cacheAccountOperations) { if (prodBOM.prodTable().ProdPostingType == ProdPostingType::ProdGroup) cacheAccountOperations = ProdGroup::find(prodBOM.prodTable().ProdGroupId).AccountIssueOffset; else /* <SYS> cacheAccountOperations = InventPosting::item(InventAccountType::ProdIssueOffsetAccount,prodBOM.ItemId,this.inventTable().ItemGroupId); </SYS> */ // <GEEU> cacheAccountOperations = InventPosting::item(InventAccountType::ProdIssueOffsetAccount,prodBOM.ItemId,this.inventTable().ItemGroupId,this.inventdim()); // </GEEU> } return cacheAccountOperations; }
__________________
Ivanhoe as is.. |
|
27.01.2011, 14:31 | #10 |
Участник
|
У нас именно такой код который Вы указали. У Вас при таких же настройках (указанных в первом сообщении) тоже ошибка или Система всё таки инициализирует не указанные счета в производственной группе из номенклатурной группы?
Последний раз редактировалось greenfin; 27.01.2011 в 14:40. |
|
27.01.2011, 14:42 | #11 |
Участник
|
Пишете, что код такой же, но при этом в вашем примере есть дополнительная строка. Или это вы ее добавили? Стандартный код (который я привел) работает ровно по хелпу:
Цитата:
Производственные группы — в случае выбора разноска потребления номенклатуры и потребления по рабочему центру выполняется исключительно на основе значения в форме Производственные группы (форма).
__________________
Ivanhoe as is.. |
|
27.01.2011, 14:52 | #12 |
Участник
|
Цитата:
Сообщение от Ivanhoe
Пишете, что код такой же, но при этом в вашем примере есть дополнительная строка. Или это вы ее добавили? Стандартный код (который я привел) работает ровно по хелпу:
Т.е. поведение системы, судя по хелпу и коду, правильное - если у вас заказ идет с типом разноски "Производственные группы", то данные берутся только оттуда - вот и ошибка. Насчет хелпа: в хелпе так же сказано: "...Если оставить это поле пустым...используется счет из номенклатурной группы" (смотрите скриншот "Электронный хелп"). Данный хелп вызывается непосредственно из производственной группы. Последний раз редактировалось greenfin; 27.01.2011 в 15:19. |
|
27.01.2011, 15:17 | #13 |
Участник
|
Уточнил. Изначально был код, который выложил Ivanhoe. Но в данном случае у нас возникает ошибка, из-за которой задан вопрос. Для того что бы Система вела согласно хелпа были внесены следующие изменения в данном коде и код выглядит так:
X++: LedgerAccount accountOperations() { if (! cacheAccountOperations) { if (prodBOM.prodTable().ProdPostingType == ProdPostingType::ProdGroup) { cacheAccountOperations = ProdGroup::find(prodBOM.prodTable().ProdGroupId).AccountIssueOffset; if (! cacheAccountOperations) cacheAccountOperations = InventPosting::item(InventAccountType::ProdIssueOffsetAccount,prodBOM.ItemId,this.inventTable().ItemGroupId,this.inventdim()); } else /* <SYS> cacheAccountOperations= InventPosting::item(InventAccountType::ProdIssueOffsetAccount,prodBOM.ItemId,this.inventTable().ItemGroupId); </SYS> */ // <GEEU> cacheAccountOperations= InventPosting::item(InventAccountType::ProdIssueOffsetAccount,prodBOM.ItemId,this.inventTable().ItemGroupId,this.inventdim()); // </GEEU> } return cacheAccountOperations; } X++: if (! cacheAccountOperations)
cacheAccountOperations =
InventPosting::item(InventAccountType::ProdIssueOffsetAccount,prodBOM.ItemId,this.inventTable().ItemGroupId,this.inventdim());
} Последний раз редактировалось greenfin; 27.01.2011 в 15:21. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|