Ошибка при выполнении обработчика обработкаудаленияпроведения

sokol566535

0 / 0 / 0

Регистрация: 09.01.2017

Сообщений: 30

1

Ошибка в обработке удаление проведения.

18.05.2017, 18:52. Показов 3761. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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

1C
1
2
3
4
5
6
7
8
9
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Проведен=истина тогда Сообщить("Заказ уже оформлен!!!"); Отказ=истина
КонецЕсли;
КонецПроцедуры
 
Процедура ОбработкаУдаленияПроведения(Отказ)
Проведен=Ложь;
Записать();
КонецПроцедуры



0



Эксперт 1С

841 / 604 / 211

Регистрация: 24.07.2013

Сообщений: 2,101

18.05.2017, 18:58

2

sokol566535, Очистить содержимое обоих обработчиков.
Обработчик события «ПередЗаписью» запрещает любое изменение проведенного документа, в том числе и отмену проведения.



0



0 / 0 / 0

Регистрация: 09.01.2017

Сообщений: 30

18.05.2017, 19:00

 [ТС]

3

а как быть если мне нужно перед записью убедиться что документ не проведен , если проведен программа должна сообщать что «заказ уже оформлен»



0



1884 / 1289 / 460

Регистрация: 16.01.2015

Сообщений: 5,633

18.05.2017, 19:05

4

Лучший ответ Сообщение было отмечено sokol566535 как решение

Решение

Цитата
Сообщение от sokol566535
Посмотреть сообщение

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если Проведен=истина тогда Сообщить(«Заказ уже оформлен!!!»); Отказ=истина
КонецЕсли;
КонецПроцедуры

Как вариант — переместить в ОбработкаПроверкиЗаполнения, проверяется только при проведении, при распроведении игнорируется



1



0 / 0 / 0

Регистрация: 09.01.2017

Сообщений: 30

18.05.2017, 19:19

 [ТС]

5

спасибо все работает!!)))



0



Процедура ОбработкаПроведения(Отказ, Режим)

Движения.ОстаткиМатериалов.Записывать = Истина;

Движения.СтоимостьМатериалов.Записывать = Истина;

Движения.Продажи.Записывать = Истина;

// Создать менеджер временных таблиц

МенеджерВТ = Новый МенеджерВременныхТаблиц;

#Область НоменклатураДокумента

Запрос = Новый Запрос;

// Укажем, какой менеджер временных таблиц использует этот запрос

    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос.Текст = 

«ВЫБРАТЬ

| ОказаниеУслугиПереченьНоменклатуры.Номенклатура,

| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры 

|                                                    КАК ВидНоменклатуры,

|   ОказаниеУслугиПереченьНоменклатуры.НаборСвойств,

| СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) 

|                                       КАК КоличествоВДокументе,

| СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) 

|                                    КАК СуммаВДокументе

|ПОМЕСТИТЬ НоменклатураДокумента

|ИЗ

| Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры

|ГДЕ

| ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

| ОказаниеУслугиПереченьНоменклатуры.Номенклатура,

| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры

|   ОказаниеУслугиПереченьНоменклатуры.НаборСвойств «;

Запрос.УстановитьПараметр(«Ссылка», Ссылка);

РезультатЗапроса = Запрос.Выполнить();

#КонецОбласти

     #Область ДвиженияДокумента

Запрос2 = Новый Запрос;

    Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;

    Запрос2.Текст = «ВЫБРАТЬ

                    | НоменклатураДокумента.Номенклатура,

                    | НоменклатураДокумента.ВидНоменклатуры,

|    НоменклатураДокумента.НаборСвойств,

                    | НоменклатураДокумента.КоличествоВДокументе,

                    | НоменклатураДокумента.СуммаВДокументе,

                    | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,

                    | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество

                    |ИЗ

                    | НоменклатураДокумента КАК  НоменклатураДокумента

                    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(

                    | ,

                    | Материал В

                    | (ВЫБРАТЬ

                    | НоменклатураДокумента.Номенклатура

                    | ИЗ

                    | НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки

                    | ПО  НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал

                    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(

                    | ,

                    | Материал В

                    | (ВЫБРАТЬ

                    | НоменклатураДокумента.Номенклатура

                    | ИЗ

                    | НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки

                    | ПО  НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал  «;

// Установим необходимость блокировки данных в регистрах СтоимостьМатериалов

         // и ОстаткиМатериалов

      Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;

      Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;

// Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе

    Движения.СтоимостьМатериалов.Записать();

    Движения.ОстаткиМатериалов.Записать();

РезультатЗапроса = Запрос2.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда

              СтоимостьМатериала = 0;

         Иначе

              СтоимостьМатериала =

              ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;

        КонецЕсли;

Если ВыборкаДетальныеЗаписи.ВидНоменклатуры =

Перечисления.ВидыНоменклатуры.Материал Тогда 

// регистр ОстаткиМатериалов Расход

Движение = Движения.ОстаткиМатериалов.Добавить();

Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

Движение.Период = Дата;

Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;

Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств;

Движение.Склад = Склад;

Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;

// регистр СтоимостьМатериалов Расход

        Движение = Движения.СтоимостьМатериалов.Добавить();

        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

        Движение.Период = Дата;

        Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;

        Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;

КонецЕсли;

// Регистр Продажи

        Движение = Движения.Продажи.Добавить();

        Движение.Период = Дата;

        Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;

        Движение.Клиент = Клиент;

        Движение.Мастер = Мастер;

        Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;

        Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;

        Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;

КонецЦикла;

Движения.Записать();

#КонецОбласти

    #Область КонтрольОстатков

           Если Режим = РежимПроведенияДокумента.Оперативный Тогда

           // Проверить отрицательные остатки

   Запрос3 = Новый Запрос;

           Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;

           Запрос3.Текст = «ВЫБРАТЬ

                           | ОстаткиМатериаловОстатки.Материал,

   |    ОстаткиМатериаловОстатки.НаборСвойств,

                           | ОстаткиМатериаловОстатки.КоличествоОстаток

                           |ИЗ

                           | РегистрНакопления.ОстаткиМатериалов.Остатки(,(Материал, НаборСвойств)В

                           | (ВЫБРАТЬ

                           | НоменклатураДокумента.Номенклатура

   |                        НоменклатураДокумента.НаборСвойств

                           | ИЗ

                           | НоменклатураДокумента)

                           | И Склад = &Склад) КАК ОстаткиМатериаловОстатки

                           |ГДЕ

                           | ОстаткиМатериаловОстатки.КоличествоОстаток < 0 «;

   Запрос3.УстановитьПараметр(«Склад», Склад);

           РезультатЗапроса = Запрос3.Выполнить();

           ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

              Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

              Сообщение = Новый СообщениеПользователю();

              Сообщение.Текст = «Не хватает » + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) +

                       » единиц материала «»» + ВыборкаДетальныеЗаписи.Материал + «»»» + 

   » из набора свойств «»» + ВыборкаДетальныеЗаписи.НаборСвойств + «»»»;

               Сообщение.Сообщить();

                    Отказ = Истина;

КонецЦикла;

            КонецЕсли;

#КонецОбласти

КонецПроцедуры

ОбработкаУдаленияПроведения

Предопределенная процедура обработки
удаления проведения доку­мента.

Синтаксис:

ОбработкаУдаленияПроведения()

Англоязычный синоним:

UnPostingProcess

Описание:

Процедура ОбработкаУдаленияПроведения
— предопределенная проце­дура. Она
не является встроенной процедурой
языка. Для нее определено толь­ко
название и синтаксис. Тело процедуры
должно быть написано разработчи­ком
конфигурации в Модуле документа (см.
«Виды программных модулей»). Вызов
процедуры ОбработкаУдаленияПроведения
производится в системе 1С:Предприятие
неявно при отмене проведения документа
или при удалении проведенных документов
в любом режиме — интерактивно или
программно. (см. СделатьНеПроведенным,
Удалить).

Замечание.
В предопределенных процедурах
ОбработкаПроведения
и ОбработкаУдаленияПроведения
система 1С:Предприятие сама выполняет
все действия через транзакцию (см.
«Процедуры работы с транзак­циями»),
поэтому никаких специальных действий
по обработке транзакций в этих
предопределенных процедурах предпринимать
не нужно.

Если в данной предопределенной
процедуре установить статус возврата
— 0 (например, если данному пользователю
нельзя отменять проведение докумен­та)
то отмена проведения документа не будет
выполнена и будет отменена сис­темная
транзакция.

Замечание.
В предопределенных процедурах
ОбработкаУдаленияПроведения
и ОбработкаПроведения
нельзя использовать элементы интерактивного
управления (например, операторы
Предупреждение,
Вопрос,
ВвестиЧисло
и т. п.), т. к. в этом случае при открытой
транзакции система ожидает отклика
пользователя, а все ос­тальные
пользователи ждут завершения транзакции
(в результате доку­менты у всех
остальных пользователей в этот момент
не могут проводить­ся). Если в
конфигурации необходимо при проведении
документа выда­вать пользователю
некоторые сообщения, то следует
использовать опера­торы Сообщить
или Состояние.

Данная предопределенная процедура
может располагаться только в Моду­лях
документов (см. «Виды программных
модулей»).

Пример:

Процедура
ОбработкаУдаленияПроведения()

//
Процедура выполняется при отмене
проведения

// или
удалении документа

//
Сотрудник — это реквизит документа

СпрСотрудники.НайтиЭлемент(Сотрудник);

// если
нашли сотрудника…

Если
СпрСотрудники.Выбран() = 1 Тогда

//
СтРасч — это реквизит документа

СпрСотрудники.НайтиЭлемент(СтРасч);

ВозвратРасч
= 0;

Если
СпрСотрудники.Выбран() = 1 Тогда

//
если старый расчетчик еще есть — откатим!

ВозвратРасч
= 1;

КонецЕсли;

СпрСотрудники.НайтиЭлемент(Сотрудник);

Если
ВозвратРасч = 1 Тогда

СпрСотрудники.Родитель
= СтРасч;

КонецЕсли;

СпрСотрудники.Записать();

КонецЕсли;

КонецПроцедуры

См. также:
СтатусВозврата,
СделатьНеПроведенным,
Удалить

АрхивироватьДокумент

Предопределенная процедура обработки
архивирования документа.

Синтаксис:

АрхивироватьДокумент()

Англоязычный синоним:

ArchiveDocument

Описание:

Вызов процедуры АрхивироватьДокумент
производится в системе 1С:Предприятие
неявно в процессе смены расчетного
периода журнала расче­тов «вперед»
(т. н. архивация данных расчета), если
в журнале расчетов содер­жатся записи,
порожденные данным документом.

Тело процедуры должно быть
написано разработчиком конфигурации
в Модуле документа, вызываемом в
конфигураторе: Документ — Редактировать
— Модуль документа.

Пример:

Процедура
АрхивироватьДокумент()

//
Процедура выполняется при архивации
документа расчета

ЖР =
СоздатьОбъект(«ЖурналРасчетов.Зарплата»);

Если
Окончание > ЖР.КонецТекущегоПериода()
Тогда

Зарегистрировать(ТекущийДокумент());

КонецЕсли;

КонецПроцедуры

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #

    20.03.2015288.77 Кб317.doc

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Главная »
Линия консультаций » Комплексные решения 1С (КА, ERP, УПП), управленческий учет (УНФ), корпорациям » 1С:Предприятие 8. ERP Управление предприятием 2.0 » ERP Подсистема управленческого учета » Ошибка при выполнении обработчика — ‘ОбработкаУдаленияПроведения’
по причине:
Поле объекта не обнаружено (НачалоДняПорядка)
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(433)}: Объект.Движения.Записать();
{Документ.ПоступлениеБезналичныхДенежныхСредств.МодульОбъекта(543)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);

по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
Поле объекта не обнаружено (НачалоДняПорядка)
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(287)}: ВызватьИсключение(СтрШаблон(НСтр(«ru = ‘В регистрах взаиморасчетов обранужены отрицательные остатки на дату %1. Проведение невозможно.’;
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(1570)}: ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры);
{РегистрНакопления.РасчетыСКлиентами.МодульНабораЗаписей(659)}: ОперативныеВзаиморасчетыСервер.РаспределитьПоИзменениям(ПараметрыИзменений, ДополнительныеСвойства);
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(433)}: Объект.Движения.Записать();
{Документ.ПоступлениеБезналичныхДенежныхСредств.МодульОбъекта(543)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);

Ошибка в регистрах взаиморасчетов в 1С КА

Ошибка проведения:

«В регистрах взаиморасчётов обнаружены отрицательные остатки на дату…» в 1С КА

При «перепроведении», «распроведении», попытке изменить или удалить документ в 1С КА может возникнуть ошибка, которая может быть следствием ошибок в регистрах взаиморасчётов.
Текстовый пример ошибки:
Ошибка при выполнении обработчика — ‘ОбработкаУдаленияПроведения’
по причине: Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(405)}:Объект.Движения.Записать();
{Документ.ПоступлениеБезналичныхДенежныхСредств.МодульОбъекта(546)}:ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
по причине: Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине: Поле объекта не обнаружено (НачалоДняПорядка)
или, так «В регистрах взаиморасчётов обнаружены отрицательные остатки на дату…»:

Стоит обратить внимание на одну из ошибок в приведённом текстовом примере «Поле объекта не обнаружено», которая как правило связана, например: с некорректным обновлением нетиповой конфигурации либо обновлении на конфигурацию, в которой разработчиками не качественно зачищен код. Запросы не могут быть нормально обработаны, ведь их способ оформления в коде уже изменился.

К сожалению, если дело касается переписанных блоков конфигураций или внешних обработок и отчетов, без достаточно глубокого знания программных продуктов 1С невозможно самостоятельно понять, как исправить «Поле объекта не обнаружено». Для решения проблемы стоит пригласить специалиста, потому как причина в каждом конкретном случае может быть своя.

Приведенные выше примеры ошибок возникли у пользователя при выполнении действий с расчётно-платежными документами: Приходным кассовым ордером (ПКО) или Поступление безналичных ДС (ПБДС) по причине нарушения целостности хронологической цепочки отражения в регистрах взаиморасчётов. Такое может происходить, например: при переходе от взаиморасчетов «Офлайн» на взаиморасчеты «Онлайн».

 Для устранения ошибок, описанных в примере, была использована штатная обработка «Заполнение регистров взаиморасчётов*», её можно найти, используя функцию технического специалиста. Перед запуском процедуры необходимо обязательно (!) сделать копию рабочей базы данных.

Для исправления в регистрах по одному партнёру и одному договору («Частичное перезаполнение») необходимо заполнить «Аналитику учёта по партнёрам» (Партнёр) и «Объект расчётов» (в примере этого Договор), выбрать дату если она известна, и нажать кнопку «Заполнить по указанным». После этого появится окно с предупреждением, в котором необходимо нажать «Да».
После запуска процесса обработки регистры взаиморасчетов перезаполняются, восстанавливается хронологическая последовательность записей при этом удаляются «лишние» или корректировочные записи, внесенные вручную.

После выполнения данной встроенной обработки появится возможность редактирования «проблемного» документа: отменять проведение, заменять данные, перепроводить, удалять. Дополнительно после процедуры необходимо проверить корректность заполнения отчётов по расчётам с клиентами.

Докторова С.А.

Добрый день.

При проведении поступления в 1С УПП 1.3.143.1. , вероятно битая запись в MS SQL, тестирование исправление не совсем возможно т.к. база большая, желательно решить MS SQL средствами

Ошибка при выполнении обработчика — ‘ОбработкаУдаленияПроведения’

по причине:

{ОбщийМодуль.ПолныеПрава.Модуль(1311)}: Ошибка при вызове метода контекста (Записать)

по причине:

Ошибка использования операции ‘ОБЪЕДИНИТЬ’ (‘UNION’). Допустимо объединение не более 256 результатов запросов

Ошибка использования операции ‘ОБЪЕДИНИТЬ’ (‘UNION’). Допустимо объединение не более 256 результатов запросов

Кто есть со знанием mssql может подсказать, какой скрипт лучше применить.

Заранее Спасибо

Понравилась статья? Поделить с друзьями:
  • Ошибка при выполнении обработчика обработкапроведения что это
  • Ошибка при выполнении операции амортизация и износ
  • Ошибка при выполнении обработчика обработкапроведения общиймодуль
  • Ошибка при выполнении операции visual studio 2008 redistributable files
  • Ошибка при выполнении обработчика обработкапроведения конфликт блокировок