7.7 Ошибка при перепроведении документов

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем bizisoft, 11 апр 2013.

  1. TopicStarter Overlay
    bizisoft
    Offline

    bizisoft

    Регистрация:
    28 июн 2012
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Здраствуйте.
    В 1С совсем недавно, понемногу осваиваю.
    Код:
    1С Предприятие 7.7 (7.70.027)
    ТиС для Украины (7.70.005), обработанная напильником еще до меня. :-)
    
    Есть задача организовать алгоритм, который бы позволил осуществлять продажу товара с отсрочкой оплаты, максимальное количество дней отсрочки устанавливается в карточке клиента. Имеющаяся в конфигурация похожая функция не работает, возможно по причине недоделанности (не знаю).

    Алгоритм использует свой регистр в который записываються движения документов РасходнаяНакладная, ПриходнаяНакладная, ПКО, РКО, ВводОстаткаКредита, БанковскаяВыписка. Вроде все работает, а правильно покажет тестирование.
    Все это делаю на копии рабочей базы.

    При тестировании все как бы нормально работает с моим регистром, определяется задолженность и по какому документу какая (полная/частичная), а также определяет по каким документам была просрочка оплаты и на сколько дней, исходя из этого контрагент блокируется.

    Но так как в базе уже имеються много документов (с начала года), то решено было перепровести все документы с начало года, чтобы они тоже попали в новый регистр и новый функционал можно было оттестировать пополной.

    Для перепроведения документов использую стандартную обработку Операции - Проведение документов.
    Задаю число с 01.01.2013 по сегодняшнее число, в группе Проведенные документы отмечаю все документы - Выполнить.

    Начинается процесс.
    Через какое-то число документов процесс прерывается с ошибкой указывающую на строку модуля документа НалоговойНакладной (№ НН-00000001 ), где вызывается нижеприведеная функция, которая в свою очередь находиться в теле Процедура ОбработкаПроведения();

    ЗАМЕЧЕНО: Эти ошибки не связаны с моим регистром и функцией работающей с ним, т.к. мой регистр я назвал ВзаиморасчетыОбщии, а тут ошибка связана с регистром ВзаиморасчетыПокупателей.

    Код:
    Регистр.ВзаиморасчетыПокупателей.ДвижениеПриход(Фирма,Контрагент,Договор,СтавкаНДС,КредДокумент,0,КодОперации, -СуммаСНДС_НУ,Флаг_НУ);
    Модуль документа НалоговаяНакладная (47) Недостаточно число параметров передано при вызове функции/процедуры объекта.
    
    Решил исключить все налоговые из перепроведения, т.к. они не влияют на взаиморасчеты (хотя ошибка есть и на нее нужно реагировать).
    Сного запустил перепроведение, и опять схожая ошибка, но уже в одной из расходных накладных с номером 000259.

    Код:
    Конт.Регистр.ВзаиморасчетыПокупателей.ДвижениеРасход(Фирма, Контрагент, Договор, 0, КредДокумент, -СуммаСНДС, КОдОперации, СуммаСНДС_НУ, Флаг_НУ);
    Глобавльный модуль (5263) Недостаточно число параметров передано при вызове функции/процедуры объекта.
    
    Посмотрел саму расходную - ничего в глаза не бросилось, посмотрел движение документа по регистру ВзаиморасчетыПокупателей не совсем понял что там за движения.

    Код:
    	
    Фирма		 СтавкаНДС	   КредДокум		   Долг	 КодОперации	  СуммаСНДС	  Флаг_НУ
    +									 Счет-Зак Г-0005		7100		Р
    +									 Счет-Зак Г-0005		1000		Г
    -  Маг ГА						 Счет-Зак Г-0005		-7100	  З						7100				5
    -  Маг ГА			20%	  Счет-Зак Г-0005		7100	  З						 7100				5
    + Маг ГА			20%	  Счет-Зак Г-0005		7100	  Р
    + Маг ГА			20%	  Счет-Зак Г-0005		1000	  Г						 1000				1
    
    Посмотрел на строку в глобальном модуле куда ссылается ошибка (строка выделена жирным шрифтом), тоже непонятно, т.к. количество параметров вроде соответствует.

    Код:
    // Процедура выполняет сторно старой ставки НДС и запись новой. Используется при
    // проведении товарных накладных по отношению к авансовым оплатам ставка НДС у которых
    // не была указана явно.
    Процедура глПоменятьСтавкуАвансовойОплаты(Конт,ЗнакОплаты, Фирма, Контрагент, Договор,
    СтавкаНДС, КредДокумент,СуммаСНДС,КодОперации, СтавкаВознаграждения=0)
    Если ПустоеЗначение(Фирма)=1 Тогда
    Возврат;
    КонецЕсли;
    СуммаСНДС_НУ = СуммаСНДС;
    Флаг_НУ = НУ_ЗаменаСтавкиНалога;
    КодОперации = ВосстановлениеАвансовойОплаты;
    Если глДоговорКонсигнации(Договор) = Да Тогда
    СуммаСНДС_НУ = СуммаСНДС * 100 / (100 - СтавкаВознаграждения);
    КонецЕсли;
    // сторно
    Если ЗнакОплаты>0 Тогда
    Конт.Регистр.ВзаиморасчетыПоставщиков.ДвижениеПриход(Фирма,Контрагент, Договор,0, КредДокумент, -СуммаСНДС, КодОперации, -СуммаСНДС_НУ, Флаг_НУ);
    Иначе										  
    [b]Конт.Регистр.ВзаиморасчетыПокупателей.ДвижениеРасход(Фирма,Контрагент, Договор,0, КредДокумент, -СуммаСНДС, КодОперации, СуммаСНДС_НУ, Флаг_НУ);[/b]
    КонецЕсли;
    // восстановление
    Если ЗнакОплаты>0 Тогда
    Конт.Регистр.ВзаиморасчетыПоставщиков.ДвижениеПриход(Фирма, Контрагент, Договор, СтавкаНДС, КредДокумент, СуммаСНДС, КодОперации, СуммаСНДС_НУ, Флаг_НУ);
    Иначе										  
    Конт.Регистр.ВзаиморасчетыПокупателей.ДвижениеРасход(Фирма, Контрагент, Договор, СтавкаНДС, КредДокумент, СуммаСНДС, КодОперации, -СуммаСНДС_НУ, Флаг_НУ);
    КонецЕсли;
    КонецПроцедуры
    
    В качестве эксперимента попробовал исключить и расходные накладные из операции перепроведения - через время высрелил и АктСписания № 00005 с аналогичной ошибкой.

    Уже не знаю куда копать, поиск в интернете не дал результатов, т.к. затрудняюсь в правильной формулировке поискового запроса.
    Если кто сталкивался с подобным или имеет представление как это можно диагностировать и решить, пожалуйста подскажите, что можно сделать или где посмотреть, чего прочитать.

    Спасибо.
    С Уважением, Дмитрий.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Попробуйте перепровести базу без ваших изменений. Рабочую.
    Может просто кривое обновление было БД?
  3. TopicStarter Overlay
    bizisoft
    Offline

    bizisoft

    Регистрация:
    28 июн 2012
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Спасибо.
    Как раз сделал еще копию рабочей БД и на ней запустил перепровести все документы с начала года.
    Скажите пожалуйста, а под "кривым обновлением БД" можно понимать, неверное отрабатывание перепроведения всех документов в предыдущий раз или что-то другое?

    Если такие нежданчики может приподносить перепроведение всех документов, то как тогда можно защититься от этого, или как тогдаможно восстановить БД после кривого обновления?
    Т.к. после запуска нового функционала прийдется перепроводить все документы в конце каждого дня, чтобы обеспечить правильную последовательность документов и коректные данные в новом регистре. В настоящий момент документы не перепроводятся.
    С Уважением, Дмитрий.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Ну я только могу предположить... Кто-то вносил изменения в типовую конфигурацию. А потом другой человек ее обновил не обратив внимания на изменения. Вот и результат.
    В данном случае изменили реквизиты регистра взаиморасчетов и не обратили внимания на код ГМ
  5. TopicStarter Overlay
    bizisoft
    Offline

    bizisoft

    Регистрация:
    28 июн 2012
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    В свою очередь могу предположить на 90%, что конфигурацию никто и никогда не обновлял, как взяли ее копию у кого-то, так и пользуются только напильником обработали под себя.

    Процесс перепроведения на новой копии вроде прошел то место (больше времени прошло, да и номера документов перевалили за те на которых прерывалось). Тогда получается, что ошибочное обновление внесло операция перепроводки, когда дала сбой.

    Но процесс все-равно прервался на другой расходной, но уже не с такой страшной ошибкой, как раньше:
    Документ не проведен, т.к. на одном из складов недостаточно товара - возможно кто-то что-то намудрил с перемещением и расходной, может местами что-то переставил нарушив последовательность (толи документ перенес перед тем перемещением, которое должно было переместить недостающую позицию на склад) - короче говоря "менеджерский фактор".

    А можно как-то вычислить из-за чего это произошло и сказать спасибо с низким поклоном, "работадателю" за предоставленный головняк.
    С Уважением, Дмитрий.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Обратимся к источникам... Метод объекта регистров ДвижениеПриход требует точного описания объекта в параметрах. Пропусков быть не должно.
    Если возникла ошибка что не достаточно фактических параметров, напрашивается вы вывод, что изменен сам регистр или текст модуля документа.
    Вы утверждаете что тез ваших изменений указанной ошибки не возникает. То что ругается на остатки - нормально.
    Выводы делайте сами......

    Искренне ваш - БУ
  7. TopicStarter Overlay
    bizisoft
    Offline

    bizisoft

    Регистрация:
    28 июн 2012
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    Сделал пару отчетов нашел в чем была ошибка
    Ввод остатков на 01.01.2013 - 2 шт.
    Продажа 09.01.2013 - 1шт. и 14.01.2013 - 1 шт.
    т.е на складе осталось 0 шт.
    Потом
    Расходная накладная №722 от 15,01,2013 время 09:10:01
    а
    Перемещение которое перенесло недостающий товар было 15.01.2013 в 13:29:12
    Причем оба документа были проведены. :blink:

    Поэтому и выдало ошибку о недостатке товара, но никак не могу понять, как такое могло пропуститься системой?
    Единственно есть предположение, но и оно очень сомнительное.
    - Была непроведеная накладная за 14 число, 15-го проводиться накладная 722 списуется оставшаяся 1 шт, а после перемещения, кто-то вспомнил о том что забыл провести РН за 14 и проводит.
    Как Вы думаете, такое возможно, и если таких ситуаций может быть много, то как тогда их можно разрулить?
    Корректно-ли будет с точки зрения 1С и документооборота посредством установки ТА на проблемный документ, отменять его проведение, изменять время на после (в данном случае перемещения) и сного его проводить, после изменять ТА на текущее время и сного запускать перепроведение?
    Извеняюсь за возможно нубские вопросы, но очень хочеться разобраться в этом, чтобы постараться не наступать на подобные грабли в будующем.

    З.Ы. Неприятно наступать на грабли. Еще неприятнее наступать на детские грабли :)
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Вариантов масса. Начиная от отключения контроля отрицательных остатков, заканчивая изменения количества во вводе остатков задним числом
  9. TopicStarter Overlay
    bizisoft
    Offline

    bizisoft

    Регистрация:
    28 июн 2012
    Сообщения:
    13
    Симпатии:
    0
    Баллы:
    1
    По крайней мере теперь хоть есть какая-то определенность и путь решения, хоть он и тернист и долог (если таких моментов будет много :) ).
    Большое Вам спасибо.
    С Уважением, Дмитрий.
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    не за что. Обращайтесь

Поделиться этой страницей