Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.168] |
|
Сообщ.
#1
,
|
|
|
Опять 25. Что-то мне не везет с базами!
Вот что ему не хватает? Ставлю галку раздельный учет НДС Прикреплённый файл1c.png (23,45 Кбайт, скачиваний: 917) |
Сообщ.
#2
,
|
|
|
Надо включить отладку, чтобы появилась кнопка "Подробно..."
|
Сообщ.
#3
,
|
|
|
{ОбщаяФорма.НалогиИОтчеты.Форма(2169)}: Ошибка при вызове метода контекста (Записать) МенеджерЗаписи.Записать(Истина); по причине: В данной транзакции уже происходили ошибки! |
Сообщ.
#4
,
|
|
|
^D^ima, теперь лезем в код и курим причину ошибки.
|
Сообщ.
#5
,
|
|
|
Это видимо не всё описание ошибки, там еще по-хорошему причина ошибки записи должна присутствовать.
|
Сообщ.
#6
,
|
|
|
Цитата evGenius @ Это видимо не всё описание ошибки, там еще по-хорошему причина ошибки записи должна присутствовать. Надо глянуть, что в регистр пишется. Скорее всего в этом проблема. |
Сообщ.
#7
,
|
|
|
Цитата kosten @ регистр Журнал регистрации. Да, надо посмотреть. |
Сообщ.
#8
,
|
|
|
В журнале пусто
|
Сообщ.
#9
,
|
|
|
Цитата ^D^ima @ В журнале пусто А он настроен на запись всех событий? |
Сообщ.
#11
,
|
|
|
Цитата ^D^ima @ Вот такие записи появились Это видимо не все, надо самый конец с ошибками видеть. |
Сообщ.
#12
,
|
|
|
Вклнце нет ошибок
|
Сообщ.
#13
,
|
|
|
Как включить логирование повышенного уровня и все-же получить строку(или документ) в коде где ошибка появляется?
|
Сообщ.
#14
,
|
|
|
Цитата ^D^ima @ Как включить логирование повышенного уровня и все-же получить строку(или документ) в коде где ошибка появляется? Посмотри настройки журнала регистрации, вроде нижний пункт подойдет. Добавлено Я бы на твоем месте под отладчиком глянул, что пишется в тот самый регистр на котором все валится. Добавлено Или поставь остановку по ошибке включи (при отладке). |
Сообщ.
#15
,
|
|
|
Цитата kosten @ Или поставь остановку по ошибке включи (при отладке). Классная штука! Уже ближе. Уже к конфигуратор вываливается! Вот эта процедура: Процедура ПрименитьПараметрыУчета(ПараметрыУчета, ИзмененыПараметрыСубконто = Ложь, Отказ = Ложь) Экспорт ПризнакиУчета = ПолучитьСтруктуруПризнаковУчетаСубконто(); ДействияИзмененияСубконто = ПолучитьДействияИзмененияСубконто(ПараметрыУчета); // Иерархическая коллекция: на первом уровне действия с субконто на каждом из счетов, на втором - действия с призаками учета. // Сгруппируем изменения по счетам, так как записывать будем именно счет СчетаКИзменению = ОбщегоНазначения.ВыгрузитьКолонку(ДействияИзмененияСубконто, "Счет", Истина); ДействияИзмененияСубконто.Индексы.Добавить("Счет"); Отбор = Новый Структура("Счет"); НачатьТранзакцию(); Для Каждого Счет Из СчетаКИзменению Цикл Отбор.Счет = Счет; ДействияДляСчета = ДействияИзмененияСубконто.НайтиСтроки(Отбор); Объект = Счет.ПолучитьОбъект(); ПротоколИзменений = Новый Массив; Для Каждого Действие Из ДействияДляСчета Цикл // Действие: -1 удалить; 0 - не менять; 1 - установить // Действия с видом субконто Если Действие.Действие = 1 Тогда // Добавить субконто Если Счет = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда Тогда ВидыСубконтоСтрока = Объект.ВидыСубконто.Вставить(0); Иначе ВидыСубконтоСтрока = Объект.ВидыСубконто.Добавить(); КонецЕсли; ВидыСубконтоСтрока.ВидСубконто = Действие.Субконто; ДобавитьВПротоколИзменениеСубконто(ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, Действие.Действие); Иначе ВидыСубконтоСтрока = Объект.ВидыСубконто.Найти(Действие.Субконто, "ВидСубконто"); Если ВидыСубконтоСтрока = Неопределено Тогда Продолжить; КонецЕсли; КонецЕсли; Если Действие.Действие = -1 Тогда ДобавитьВПротоколИзменениеСубконто(ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, Действие.Действие); Объект.ВидыСубконто.Удалить(ВидыСубконтоСтрока); Продолжить; КонецЕсли; // Действия с признаками учета Для Каждого ПризнакУчета Из ПризнакиУчета Цикл ДействиеСПризнаком = Действие[ПризнакУчета.Ключ]; Если ДействиеСПризнаком = 1 Тогда ЗначениеПризнака = Истина; ИначеЕсли ДействиеСПризнаком = -1 Тогда ЗначениеПризнака = Ложь; Иначе Продолжить; КонецЕсли; Если ВидыСубконтоСтрока[ПризнакУчета.Ключ] = ЗначениеПризнака Тогда Продолжить; КонецЕсли; ВидыСубконтоСтрока[ПризнакУчета.Ключ] = ЗначениеПризнака; ДобавитьВПротоколИзменениеПризнакаУчета( ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, ПризнакУчета.Значение, ДействиеСПризнаком); КонецЦикла; // По признакам учета КонецЦикла; // По ДействияДляСчета Если Не Объект.Модифицированность() Тогда Продолжить; КонецЕсли; ПротоколИзмененийСтрокой = СтрСоединить(ПротоколИзменений, Символы.ПС); Попытка Объект.Записать();//ВОТ ТУТ ВАЛИТСЯ Исключение ОписаниеОшибки = ИнформацияОбОшибке(); ОтменитьТранзакцию(); Отказ = Истина; ШаблонТекста = НСтр("ru = 'Ошибка при записи счета [КодСчета]: |[ОписаниеОшибки] |Ошибка произошла при попытке выполнить следующие изменения: |[ПротоколИзменений]'"); ПараметрыТекста = Новый Структура; ПараметрыТекста.Вставить("КодСчета", Объект.Код); ПараметрыТекста.Вставить("ПротоколИзменений", ПротоколИзмененийСтрокой); // В журнал регистрации выведем подробную информацию ПараметрыТекста.Вставить("ОписаниеОшибки", ПодробноеПредставлениеОшибки(ОписаниеОшибки)); Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонТекста, ПараметрыТекста); ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрацииПараметрыУчета(), УровеньЖурналаРегистрации.Ошибка, Счет.Метаданные(), Счет, // Данные Текст); // Пользователю выведем краткое сообщение ШаблонТекста = НСтр("ru = 'Ошибка при записи счета [КодСчета] |Подробности см. в Журнале регистрации.'"); Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонТекста, ПараметрыТекста); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст); Возврат; КонецПопытки; // Запишем в журнал регистрации подробную информацию об изменениях ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрацииПараметрыУчета(), УровеньЖурналаРегистрации.Информация, Счет.Метаданные(), Счет, ПротоколИзмененийСтрокой, РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная); КонецЦикла; // По СчетаКИзменению БухгалтерскийУчетПереопределяемый.УстановитьПараметрыУчетаРасчетовПоЗарплате(?(ПараметрыУчета.ВестиУчетПоРаботникам = 1, Ложь, Истина)); БухгалтерскийУчетПереопределяемый.УстановитьУчетЗарплатыИКадровВоВнешнейПрограмме(?(ПараметрыУчета.УчетЗарплатыИКадровВоВнешнейПрограмме = 1, Истина, Ложь)); БухгалтерскийУчетПереопределяемый.УстановитьНастройкиКадровогоУчета(ПараметрыУчета.КадровыйУчет, ?(ПараметрыУчета.УчетЗарплатыИКадровВоВнешнейПрограмме = 0, Истина, Ложь)); ЗафиксироватьТранзакцию(); ОбновитьПовторноИспользуемыеЗначения(); КонецПроцедуры Прикреплённый файл1c.png (56,51 Кбайт, скачиваний: 827) Добавлено Какие мои дальнейшие шаги? |
Сообщ.
#16
,
|
|
|
Цитата ^D^ima @ Какие мои дальнейшие шаги? Дальше копать ) |
Сообщ.
#17
,
|
|
|
Вот эта шляпа!!!
Только что с этим делать и на что указывает данная ошибка? Что проверить? Прикреплённый файл1c.png (21,98 Кбайт, скачиваний: 797) Добавлено проверил счет 19.08 в другой бухе 3.0. где эта галка ставится и убирается, заметил разницу с субконто3, в сломанной поставил субконто3 как в нормальной и ВСЕ ЗАВИЛОСЬ!!! это полный ппц Добавлено kosten спасибо за галку |
Сообщ.
#18
,
|
|
|
Цитата ^D^ima @ спасибо за галку Пожалуйста. |
Сообщ.
#19
,
|
|
|
Сообщ.
#20
,
|
|
|
В целом ясно. Как понимаю без этого(запись объекта внутри объекта) не обойтись совсем, вот и ставят в коде, который так ведет себя при ошибке в 1 транзакции
|