sokol566535 0 / 0 / 0 Регистрация: 09.01.2017 Сообщений: 30 |
||||
1 |
||||
Ошибка в обработке удаление проведения.18.05.2017, 18:52. Показов 3761. Ответов 4 Метки нет (Все метки)
Подскажите как быть , провожу отмену проведения, конфигурация не снимает проведение, выдает ошибку как перед повторной записью. Что поменять в обработке удаления проведения?
0 |
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 как решение Решение
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Как вариант — переместить в ОбработкаПроверкиЗаполнения, проверяется только при проведении, при распроведении игнорируется
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С КА может возникнуть ошибка, которая может быть следствием ошибок в регистрах взаиморасчётов.
Текстовый пример ошибки:
Ошибка при выполнении обработчика — ‘ОбработкаУдаленияПроведения’
по причине: Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(405)}:Объект.Движения.Записать();
{Документ.ПоступлениеБезналичныхДенежныхСредств.МодульОбъекта(546)}:ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
по причине: Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине: Поле объекта не обнаружено (НачалоДняПорядка)
или, так «В регистрах взаиморасчётов обнаружены отрицательные остатки на дату…»:
Стоит обратить внимание на одну из ошибок в приведённом текстовом примере «Поле объекта не обнаружено», которая как правило связана, например: с некорректным обновлением нетиповой конфигурации либо обновлении на конфигурацию, в которой разработчиками не качественно зачищен код. Запросы не могут быть нормально обработаны, ведь их способ оформления в коде уже изменился.
К сожалению, если дело касается переписанных блоков конфигураций или внешних обработок и отчетов, без достаточно глубокого знания программных продуктов 1С невозможно самостоятельно понять, как исправить «Поле объекта не обнаружено». Для решения проблемы стоит пригласить специалиста, потому как причина в каждом конкретном случае может быть своя.
Приведенные выше примеры ошибок возникли у пользователя при выполнении действий с расчётно-платежными документами: Приходным кассовым ордером (ПКО) или Поступление безналичных ДС (ПБДС) по причине нарушения целостности хронологической цепочки отражения в регистрах взаиморасчётов. Такое может происходить, например: при переходе от взаиморасчетов «Офлайн» на взаиморасчеты «Онлайн».
Для устранения ошибок, описанных в примере, была использована штатная обработка «Заполнение регистров взаиморасчётов*», её можно найти, используя функцию технического специалиста. Перед запуском процедуры необходимо обязательно (!) сделать копию рабочей базы данных.
Для исправления в регистрах по одному партнёру и одному договору («Частичное перезаполнение») необходимо заполнить «Аналитику учёта по партнёрам» (Партнёр) и «Объект расчётов» (в примере этого Договор), выбрать дату если она известна, и нажать кнопку «Заполнить по указанным». После этого появится окно с предупреждением, в котором необходимо нажать «Да».
После запуска процесса обработки регистры взаиморасчетов перезаполняются, восстанавливается хронологическая последовательность записей при этом удаляются «лишние» или корректировочные записи, внесенные вручную.
После выполнения данной встроенной обработки появится возможность редактирования «проблемного» документа: отменять проведение, заменять данные, перепроводить, удалять. Дополнительно после процедуры необходимо проверить корректность заполнения отчётов по расчётам с клиентами.
Докторова С.А.
Добрый день.
При проведении поступления в 1С УПП 1.3.143.1. , вероятно битая запись в MS SQL, тестирование исправление не совсем возможно т.к. база большая, желательно решить MS SQL средствами
Ошибка при выполнении обработчика — ‘ОбработкаУдаленияПроведения’
по причине:
{ОбщийМодуль.ПолныеПрава.Модуль(1311)}: Ошибка при вызове метода контекста (Записать)
по причине:
Ошибка использования операции ‘ОБЪЕДИНИТЬ’ (‘UNION’). Допустимо объединение не более 256 результатов запросов
Ошибка использования операции ‘ОБЪЕДИНИТЬ’ (‘UNION’). Допустимо объединение не более 256 результатов запросов
Кто есть со знанием mssql может подсказать, какой скрипт лучше применить.
Заранее Спасибо