На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> 1c бух 3.0 "в данной транзакции уже происходили ошибки"
    Опять 25. Что-то мне не везет с базами!

    Вот что ему не хватает?

    Ставлю галку раздельный учет НДС

    Прикреплённый файлПрикреплённый файл1c.png (23,45 Кбайт, скачиваний: 917)
      Надо включить отладку, чтобы появилась кнопка "Подробно..." ;)
        ExpandedWrap disabled
          {ОбщаяФорма.НалогиИОтчеты.Форма(2169)}: Ошибка при вызове метода контекста (Записать)
                  МенеджерЗаписи.Записать(Истина);
          по причине:
          В данной транзакции уже происходили ошибки!
          ^D^ima, теперь лезем в код и курим причину ошибки.
            Это видимо не всё описание ошибки, там еще по-хорошему причина ошибки записи должна присутствовать.
              Цитата evGenius @
              Это видимо не всё описание ошибки, там еще по-хорошему причина ошибки записи должна присутствовать.

              Надо глянуть, что в регистр пишется. Скорее всего в этом проблема.
                Цитата kosten @
                регистр

                Журнал регистрации. Да, надо посмотреть.
                  В журнале пусто
                    Цитата ^D^ima @
                    В журнале пусто

                    А он настроен на запись всех событий?
                      Вот такие записи появились:
                      Прикреплённый файлПрикреплённый файл1c.png (36,85 Кбайт, скачиваний: 886)
                        Цитата ^D^ima @
                        Вот такие записи появились

                        Это видимо не все, надо самый конец с ошибками видеть.
                          Вклнце нет ошибок
                            Как включить логирование повышенного уровня и все-же получить строку(или документ) в коде где ошибка появляется?
                              Цитата ^D^ima @
                              Как включить логирование повышенного уровня и все-же получить строку(или документ) в коде где ошибка появляется?

                              Посмотри настройки журнала регистрации, вроде нижний пункт подойдет.

                              Добавлено
                              Я бы на твоем месте под отладчиком глянул, что пишется в тот самый регистр на котором все валится.

                              Добавлено
                              Или поставь остановку по ошибке включи (при отладке).
                              Сообщение отредактировано: kosten -
                                Цитата kosten @
                                Или поставь остановку по ошибке включи (при отладке).

                                Классная штука!
                                Уже ближе.
                                Уже к конфигуратор вываливается!
                                Вот эта процедура:
                                ExpandedWrap disabled
                                  Процедура ПрименитьПараметрыУчета(ПараметрыУчета, ИзмененыПараметрыСубконто = Ложь, Отказ = Ложь) Экспорт
                                      
                                      ПризнакиУчета             = ПолучитьСтруктуруПризнаковУчетаСубконто();
                                      ДействияИзмененияСубконто = ПолучитьДействияИзмененияСубконто(ПараметрыУчета); // Иерархическая коллекция: на первом уровне действия с субконто на каждом из счетов, на втором - действия с призаками учета.
                                      
                                      // Сгруппируем изменения по счетам, так как записывать будем именно счет
                                      СчетаКИзменению = ОбщегоНазначения.ВыгрузитьКолонку(ДействияИзмененияСубконто, "Счет", Истина);
                                      ДействияИзмененияСубконто.Индексы.Добавить("Счет");
                                      Отбор = Новый Структура("Счет");
                                      
                                      НачатьТранзакцию();
                                   
                                      Для Каждого Счет Из СчетаКИзменению Цикл
                                          
                                          Отбор.Счет = Счет;
                                          ДействияДляСчета = ДействияИзмененияСубконто.НайтиСтроки(Отбор);
                                          
                                          Объект = Счет.ПолучитьОбъект();
                                          
                                          ПротоколИзменений = Новый Массив;
                                          
                                          Для Каждого Действие Из ДействияДляСчета Цикл
                                              
                                              // Действие: -1 удалить; 0 - не менять; 1 - установить
                                              
                                              // Действия с видом субконто
                                              Если Действие.Действие = 1 Тогда
                                                  
                                                  // Добавить субконто
                                                  
                                                  Если Счет = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда Тогда
                                                      ВидыСубконтоСтрока = Объект.ВидыСубконто.Вставить(0);
                                                  Иначе          
                                                      ВидыСубконтоСтрока = Объект.ВидыСубконто.Добавить();
                                                  КонецЕсли;
                                              
                                                  ВидыСубконтоСтрока.ВидСубконто = Действие.Субконто;
                                                  
                                                  ДобавитьВПротоколИзменениеСубконто(ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, Действие.Действие);
                                                  
                                              Иначе
                                                  
                                                  ВидыСубконтоСтрока = Объект.ВидыСубконто.Найти(Действие.Субконто, "ВидСубконто");
                                                  Если ВидыСубконтоСтрока = Неопределено Тогда
                                                      Продолжить;
                                                  КонецЕсли;
                                                  
                                              КонецЕсли;
                                              
                                              Если Действие.Действие = -1 Тогда
                                                  
                                                  ДобавитьВПротоколИзменениеСубконто(ПротоколИзменений, ВидыСубконтоСтрока.ВидСубконто, Действие.Действие);
                                                  
                                                  Объект.ВидыСубконто.Удалить(ВидыСубконтоСтрока);
                                                  
                                                  Продолжить;
                                                  
                                              КонецЕсли;
                                              
                                              // Действия с признаками учета
                                              
                                              Для Каждого ПризнакУчета Из ПризнакиУчета Цикл
                                                  
                                                  ДействиеСПризнаком = Действие[ПризнакУчета.Ключ];
                                   
                                                  Если ДействиеСПризнаком = 1 Тогда
                                                      ЗначениеПризнака = Истина;
                                                  ИначеЕсли ДействиеСПризнаком = -1 Тогда
                                                      ЗначениеПризнака = Ложь;
                                                  Иначе
                                                      Продолжить;
                                                  КонецЕсли;
                                                  
                                                  Если ВидыСубконтоСтрока[ПризнакУчета.Ключ] = ЗначениеПризнака Тогда
                                                      Продолжить;
                                                  КонецЕсли;
                                                  
                                                  ВидыСубконтоСтрока[ПризнакУчета.Ключ] = ЗначениеПризнака;
                                                  
                                                  ДобавитьВПротоколИзменениеПризнакаУчета(
                                                      ПротоколИзменений,
                                                      ВидыСубконтоСтрока.ВидСубконто,
                                                      ПризнакУчета.Значение,
                                                      ДействиеСПризнаком);
                                                  
                                              КонецЦикла; // По признакам учета
                                              
                                          КонецЦикла; // По ДействияДляСчета
                                          
                                          Если Не Объект.Модифицированность() Тогда
                                              Продолжить;
                                          КонецЕсли;
                                          
                                          ПротоколИзмененийСтрокой = СтрСоединить(ПротоколИзменений, Символы.ПС);
                                          
                                          Попытка
                                              Объект.Записать();//ВОТ ТУТ ВАЛИТСЯ
                                          Исключение
                                              ОписаниеОшибки = ИнформацияОбОшибке();
                                              ОтменитьТранзакцию();
                                              
                                              Отказ = Истина;
                                              
                                              ШаблонТекста = НСтр("ru = 'Ошибка при записи счета [КодСчета]:
                                                  |[ОписаниеОшибки]
                                                  |Ошибка произошла при попытке выполнить следующие изменения:
                                                  |[ПротоколИзменений]'");
                                                  
                                              ПараметрыТекста = Новый Структура;
                                              ПараметрыТекста.Вставить("КодСчета",          Объект.Код);
                                              ПараметрыТекста.Вставить("ПротоколИзменений", ПротоколИзмененийСтрокой);
                                              
                                              // В журнал регистрации выведем подробную информацию
                                              ПараметрыТекста.Вставить("ОписаниеОшибки", ПодробноеПредставлениеОшибки(ОписаниеОшибки));
                                              
                                              Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонТекста, ПараметрыТекста);
                                              ЗаписьЖурналаРегистрации(
                                                  СобытиеЖурналаРегистрацииПараметрыУчета(),
                                                  УровеньЖурналаРегистрации.Ошибка,
                                                  Счет.Метаданные(),
                                                  Счет, // Данные
                                                  Текст);
                                                  
                                              // Пользователю выведем краткое сообщение
                                              ШаблонТекста = НСтр("ru = 'Ошибка при записи счета [КодСчета]
                                                  |Подробности см. в Журнале регистрации.'");
                                              Текст = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ШаблонТекста, ПараметрыТекста);
                                              ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Текст);
                                              
                                              Возврат;
                                              
                                          КонецПопытки;
                                          
                                          // Запишем в журнал регистрации подробную информацию об изменениях
                                          ЗаписьЖурналаРегистрации(
                                              СобытиеЖурналаРегистрацииПараметрыУчета(),
                                              УровеньЖурналаРегистрации.Информация,
                                              Счет.Метаданные(),
                                              Счет,
                                              ПротоколИзмененийСтрокой,
                                              РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
                                          
                                      КонецЦикла; // По СчетаКИзменению
                                   
                                      БухгалтерскийУчетПереопределяемый.УстановитьПараметрыУчетаРасчетовПоЗарплате(?(ПараметрыУчета.ВестиУчетПоРаботникам = 1, Ложь, Истина));
                                      БухгалтерскийУчетПереопределяемый.УстановитьУчетЗарплатыИКадровВоВнешнейПрограмме(?(ПараметрыУчета.УчетЗарплатыИКадровВоВнешнейПрограмме = 1, Истина, Ложь));
                                      БухгалтерскийУчетПереопределяемый.УстановитьНастройкиКадровогоУчета(ПараметрыУчета.КадровыйУчет, ?(ПараметрыУчета.УчетЗарплатыИКадровВоВнешнейПрограмме = 0, Истина, Ложь));
                                      
                                      ЗафиксироватьТранзакцию();
                                      ОбновитьПовторноИспользуемыеЗначения();
                                   
                                  КонецПроцедуры

                                Прикреплённый файлПрикреплённый файл1c.png (56,51 Кбайт, скачиваний: 827)

                                Добавлено
                                Какие мои дальнейшие шаги?
                                  Цитата ^D^ima @
                                  Какие мои дальнейшие шаги?

                                  Дальше копать )
                                    Вот эта шляпа!!!
                                    Только что с этим делать и на что указывает данная ошибка?
                                    Что проверить?
                                    Прикреплённый файлПрикреплённый файл1c.png (21,98 Кбайт, скачиваний: 797)

                                    Добавлено
                                    проверил счет 19.08 в другой бухе 3.0. где эта галка ставится и убирается, заметил разницу с субконто3, в сломанной поставил субконто3 как в нормальной и ВСЕ ЗАВИЛОСЬ!!! :wall: :wall: :wall: :wall: :wall:

                                    это полный ппц

                                    Добавлено
                                    kosten
                                    спасибо за галку
                                      Цитата ^D^ima @
                                      спасибо за галку

                                      Пожалуйста.
                                          В целом ясно. Как понимаю без этого(запись объекта внутри объекта) не обойтись совсем, вот и ставят в коде, который так ведет себя при ошибке в 1 транзакции
                                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                          0 пользователей:


                                          Рейтинг@Mail.ru
                                          [ Script execution time: 0,0562 ]   [ 22 queries used ]   [ Generated: 11.12.24, 15:34 GMT ]