Меню

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

sokol566535

0 / 0 / 0

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

Сообщений: 30

1

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

18.05.2017, 18:52. Показов 3458. Ответов 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



1783 / 1208 / 437

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

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

18.05.2017, 19:05

4

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

Решение

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

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

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



1



0 / 0 / 0

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

Сообщений: 30

18.05.2017, 19:19

 [ТС]

5

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



0



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

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

Бух-ия 1,6,25,5. Есть проведенный и заполненый документ Регистрация отплаты поставщику для НДС. Нажимаю Заполнить, 1 с спрашивает отменить проведение, нажимаю Да, табличное поле будет очищено -да. и вылетает ошибка

{Документ.РегистрацияОплатыПоставщикуДляНДС(14)}: Ошибка при вызове метода контекста (Записать)

           Записать(РежимЗаписиДокумента.ОтменаПроведения);

по причине:

по причине:

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

по причине:

{ОбщийМодуль.ОбщегоНазначения(941)}: Операция не выполнена

           Записать(РежимЗаписиДокумента.ОтменаПроведения);

В конфигураторе строка 941

   Для Каждого СтрокаДвижения ИЗ ТаблицаДвижений Цикл        

       Попытка

           СтрокаДвижения.НаборЗаписей.Записать();

       Исключение

           // возможно «сработал» RLS или механизм даты запрета изменения

           СообщитьОбОшибке(ОписаниеОшибки(), Отказ, СтрокаДвижения.Имя);

           ВызватьИсключение «Операция не выполнена»;

       КонецПопытки;

   КонецЦикла;

Что значит возможно сработал RLS? Дата запрета стоит 30,09,2010. документ от 31,12,2010

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Авторитет:

0

Рейтинг пользователя:

4

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

#1

0

24.01.2014 17:12:23

При выгрузке товаров получаем вот такое окно:

Код
{Обработка.ОбменССайтом.МодульОбъекта(3481)}: Ошибка при вызове метода контекста (ЗаписатьКонецЭлемента)
   ЗаписьXML.ЗаписатьКонецЭлемента();
по причине:
Ошибочный порядок записи XML

Ошибка возникает в последнем дополнении Битрикса для «1С Управление торговлей» 10.3.26.2.

Ошибка возникает при выгрузке файла offers.xml, если ни у одного товара нет цен.

//////////////////////////

Зачем написал? Чтобы все знали.

Когда уже будет

публичный баг-трекер

, где можно увидеть все косяки той или иной версии? У нас 2 программиста 3 часа искали в 1С, почему такая ошибка.

Модуль «Продвинутый обмен с 1C» http://marketplace.1c-bitrix.ru/solutions/askaron.pro1c/, создание сайтов и интеграция с 1С http://askaron.ru,

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Авторитет:

0

Рейтинг пользователя:

4

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

#2

0

27.01.2014 16:48:46

Найден баг. Строка 2404.  Внутренняя обработка ОбменССайтом

Кто-то из старой версии не убрал важный фрагмент и сделал одно лишнее закрытие тега XML.

Код
Если РезультатЗапроса.Пустой() Тогда 
   ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента(); 
КонецЕсли;

Этот фрагмент следует убрать. Например так:

Исходный текст:

Код
   Если РезультатЗапроса.Пустой() Тогда
      ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента();
   КонецЕсли;

   Выборка = РезультатЗапроса.Выбрать();
   Всего = Выборка.Количество();
   ОбъектCMLПакетПредложений.ЗаписатьНачалоЭлемента("Предложения" ) ;
   
   Пока Выборка.Следующий() Цикл
      
      СписокЗначенийCML = Новый СписокЗначений;
      СтруктураВозврата.ВыгруженоПредложений = СтруктураВозврата.ВыгруженоПредложений + 1;
      
      #Если Клиент Тогда
      Если СтруктураВозврата.ВыгруженоПредложений % 100 = 0 Тогда
         
         ОтобразитьСостояние("Каталог """ + ПараметрыКаталога.Каталог + """: Выгружено объектов пакета предложений: " + СтруктураВозврата.ВыгруженоПредложений + " из " + Всего + ". Выгружается: " + Выборка.НоменклатураСсылка + " " + Выборка.ХарактеристикаСсылка);
         
      КонецЕсли;
      #КонецЕсли
      
      РИ_ЗаполнитьСписокЗначенийПредложения(СписокЗначенийCML, Выборка, МассивСкладов, ВыгрузкаКраткихИзменений);
      
      ОбъектCMLПакетПредложений.ЗаписатьНачалоЭлемента("Предложение" ) ;
      ЗаписатьCMLПоСпискуЗначений(ОбъектCMLПакетПредложений, СписокЗначенийCML);
      ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента();
      
   КонецЦикла;
   ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента();

Заменить на

Код
   Если РезультатЗапроса.Пустой() Тогда
      //   ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента(); 
   Иначе

      Выборка = РезультатЗапроса.Выбрать();
      Всего = Выборка.Количество();
      ОбъектCMLПакетПредложений.ЗаписатьНачалоЭлемента("Предложения" ) ;
      
      Пока Выборка.Следующий() Цикл
         
         СписокЗначенийCML = Новый СписокЗначений;
         СтруктураВозврата.ВыгруженоПредложений = СтруктураВозврата.ВыгруженоПредложений + 1;
         
         #Если Клиент Тогда
         Если СтруктураВозврата.ВыгруженоПредложений % 100 = 0 Тогда
            
            ОтобразитьСостояние("Каталог """ + ПараметрыКаталога.Каталог + """: Выгружено объектов пакета предложений: " + СтруктураВозврата.ВыгруженоПредложений + " из " + Всего + ". Выгружается: " + Выборка.НоменклатураСсылка + " " + Выборка.ХарактеристикаСсылка);
            
         КонецЕсли;
         #КонецЕсли
         
         РИ_ЗаполнитьСписокЗначенийПредложения(СписокЗначенийCML, Выборка, МассивСкладов, ВыгрузкаКраткихИзменений);
         
         ОбъектCMLПакетПредложений.ЗаписатьНачалоЭлемента("Предложение") ;
         ЗаписатьCMLПоСпискуЗначений(ОбъектCMLПакетПредложений, СписокЗначенийCML);
         ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента();
         
      КонецЦикла;
      
      ОбъектCMLПакетПредложений.ЗаписатьКонецЭлемента();
   
   КонецЕсли;

Модуль «Продвинутый обмен с 1C» http://marketplace.1c-bitrix.ru/solutions/askaron.pro1c/, создание сайтов и интеграция с 1С http://askaron.ru,

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

В ближайшей версии модуля обмена эта бага будет поправлена.

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Авторитет:

0

Рейтинг пользователя:

4

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

А можно тупо выложить дополнение-фикс для той же версии 1С?

Вот идея — исправлять критическе ошибки в тот же день

http://idea.1c-bitrix.ru/significantly-accelerate-product-updates-fix-critical-bugs/

Сколько еще ждать ближайшую версию модуля? Пол-года?

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

Я пересобрал версию модуля вчера. На днях должна обновиться на сайте. Я кста, тоже считаю, что критичные ошибки должны правиться очень оперативно. Другое дело с адаптациями… И да, много кто уже поставил последний модуль и только от вас пришло сообщение о ошибке, поэтому ошибка не столь критична. Она вылазит только при определенных условиях.

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Авторитет:

0

Рейтинг пользователя:

4

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

Спасибо. Я надеюсь ошибка с частями архива тоже будет исправлена:

http://dev.1c-bitrix.ru/community/forums/forum26/topic60094/

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

Она тоже. Но в тоже время для УПП, КА и продуктов стран СНГ пока обновлена.

 

Пользователь 238860

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

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

#8

0

29.01.2014 11:12:24

Цитата
Александр Денисюк пишет:
много кто уже поставил последний модуль

Поставили, ошибку получили.
Использовали фикс из темы, все заработало. Но потом нас настиг шок: Выгрузка вместо 40 мегабайтов стала весить 400.

КА 1.1.42.2

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

В КА исправлено в модуле версии 1.1.42.4. Просто она еще не обновлена на сайте.  

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

#10

0

29.01.2014 12:25:44

По поводу размера — нужно смотреть сами XML файлы.

 

Пользователь 238860

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

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

#11

0

30.01.2014 14:10:45

Обновленный модуль для КА России выложен неправильно. Внутри модуль от УТ Беларуси

 

Александр Денисюк

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

#12

0

30.01.2014 16:03:35

Цитата
Илья пишет:
Обновленный модуль для КА России выложен неправильно. Внутри модуль от УТ Беларуси

Сообщил людям. Сейчас должны поправить.

 

Пользователь 238860

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

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

#13

0

30.01.2014 16:28:22

Что то как то не сложилось с этим обновлением. Пытаюсь удалить реализацию. Вылетает ошибка

Код
Ошибка при выполнении обработчика - 'ОбработкаУдаленияПроведения'
по причине:
{ОбщийМодуль.ПроцедурыОбменаССайтом.Модуль(272)}: Метод объекта не обнаружен (ЕстьТабЧастьДокумента) 

Если закоментировать

Код
Если ОбщегоНазначения.ЕстьТабЧастьДокумента("Товары", МетаданныеДокумента) Тогда
         Для каждого СтрокаТЧ Из Объект.Товары Цикл
            // РИ ++
            //ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, СтрокаТЧ.Номенклатура);
            Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
               ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, СтрокаТЧ.Номенклатура);
            КонецЕсли;
            // РИ --
         КонецЦикла;
      ИначеЕсли ОбщегоНазначения.ЕстьТабЧастьДокумента("Заказы", МетаданныеДокумента) Тогда
         Для каждого Заказ Из Объект.Заказы Цикл
            // РИ ++
            //Для каждого СтрокаТЧ Из Заказ.ЗаказПокупателя.Товары Цикл
            //   ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, СтрокаТЧ.Номенклатура);
            //КонецЦикла;
            Если МетаданныеДокумента.Имя = "ЗакрытиеВнутреннихЗаказов" Тогда
               ИмяРеквизитаТЧ = "ВнутреннийЗаказ";
            Иначе
               ИмяРеквизитаТЧ = "ЗаказПокупателя";
            КонецЕсли;
            Для каждого СтрокаТЧ Из Заказ[ИмяРеквизитаТЧ].Товары Цикл
               Если ЗначениеЗаполнено(СтрокаТЧ.Номенклатура) Тогда
                  ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, СтрокаТЧ.Номенклатура);
               КонецЕсли;
            КонецЦикла;
            // РИ --
         КонецЦикла;
      КонецЕсли;
 

То все удаляется, но опять с ошибками.

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

#14

0

30.01.2014 21:21:45

Это все из за конфигурации. Модуль для КА делался на основе УТ. А конфигурации немного отличаются. Всех отличий не учтешь.  Посмотрю в чем дело. Оказалось, что в КА(да и скорее всего УПП), нет функции ОбщегоНазначения.ЕстьТабЧастьДокумента.  

 

Пользователь 238860

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

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

#15

0

31.01.2014 11:02:18

Цитата
Александр Денисюк пишет:
Модуль для КА делался на основе УТ

И тут понеслось. Обмен заказами не обновляет заказы.

Код
{ОбщийМодуль.РИ_ПроцедурыОбменаССайтомБитрикс.Модуль(1786)}: Ошибка при вызове метода контекста (ВыполнитьПакет)
   МассивРезультатов = Запрос.ВыполнитьПакет();
по причине:
Ошибка выполнения запроса
по причине:
В данной транзакции уже происходили ошибки!
 
 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

#16

0

31.01.2014 11:17:47

Вполне вероятно — связано с предыдущей ошибкой. Посмотрю. Сегодня думаю поправлю.

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

#17

0

31.01.2014 11:50:23

Тут можно скачать новую версию КА. На Сайте она обновится чуть позже. Проверил подписки на события + перезапись заказов.

http://yadi.sk/d/iZGB0A6fH47cC

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Авторитет:

0

Рейтинг пользователя:

4

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

#18

0

31.01.2014 16:28:37

исправленная версия для 10.3.26.4

http://1c.1c-bitrix.ru/ecommerce/download.php

Версия с ошибками версия была для 10.3.26.2.

Мы не смогли у 1С найти 10.3.26.4. Её не бывает. Следующая после 10.3.26.2 идет 10.3.27.1

Будет ли работать дополнение и оказываться техническая поддержка если мы поставим дополнение для 10.3.26.4 на  10.3.26.2?

 

Администратор

Сообщений: 4915
Баллов: 827
Авторитет:

1

Рейтинг пользователя:

3

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

#19

0

31.01.2014 19:29:36

Эм. Это версия модуля. При запуске установщика пишется для какой она версии. Если память не изменяет 10.3.26.2.

 

Пользователь 25773

Эксперт

Сообщений: 848
Баллов: 150
Авторитет:

0

Рейтинг пользователя:

4

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

#20

0

31.01.2014 20:03:09

Да верно, в коде у вас 2.9.26.4 для УТ 10.3.26.2.

Исправьте на странице

http://1c.1c-bitrix.ru/ecommerce/download.php

 название версии. Это ошибка. Мы заставили заказчика искать несуществующую версию 1С.

Модуль «Продвинутый обмен с 1C» http://marketplace.1c-bitrix.ru/solutions/askaron.pro1c/, создание сайтов и интеграция с 1С http://askaron.ru,

Добрый день!
После обновления программы (Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.23.165) ) перестали проводится документы Начисление зарплаты и взносов.

Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
Значение индекса выходит за границы диапазона
{ОбщийМодуль.УчетСреднегоЗаработка.Модуль(5222)}: Начисления.Удалить(ИсключаемаяСтрока);
{ОбщийМодуль.УчетСреднегоЗаработка.Модуль(3405)}: РаспределитьВТНачисленияПоБазе(МенеджерВременныхТаблиц, Регистратор, ИсключатьВПериодКомандировок);
{ОбщийМодуль.УчетСреднегоЗаработка.Модуль(3009)}: ЗарегистрироватьНачисленияДляРасчетаОбщегоСреднегоЗаработка(Движения, Отказ, МенеджерВременныхТаблиц, ИсключатьВПериодКомандировок, ЗаписыватьДвижения);
{ОбщийМодуль.УчетСреднегоЗаработка.Модуль(237)}: ЗарегистрироватьДанныеОбщегоСреднегоЗаработка(Движения, Отказ, МенеджерВременныхТаблиц, ЗаписыватьДвижения);
{Документ.НачислениеЗарплаты.МодульМенеджера(265)}: УчетСреднегоЗаработка.ЗарегистрироватьДанныеСреднегоЗаработка(Движения, Отказ, ДанныеДляПроведения.НачисленияДляСреднегоЗаработка);
{Документ.НачислениеЗарплаты.МодульОбъекта(124)}: Документы.НачислениеЗарплаты.ПровестиПоУчетам(Ссылка, РежимПроведения, Отказ, Неопределено, Движения, ЭтотОбъект, ДополнительныеСвойства);

по причине:
Значение индекса выходит за границы диапазона

В чем может быть причина?

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

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

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

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

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

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

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

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

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

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

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

«ВЫБРАТЬ

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

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

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

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

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

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

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

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

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

|ИЗ

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

|ГДЕ

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

|

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

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

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

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

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

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

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

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

Запрос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

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при выполнении обработчика обработкапроверкизаполнения
  • Ошибка при выполнении запроса get к ресурсу e1cib cmi commands