Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 23:43

1с 7.7 Склад Ошибка

Автор antoha86, 20 ноя 2013, 13:13

0 Пользователей и 1 гость просматривают эту тему.

antoha86

Помогите делаю урок, задние написать в расходной накладной процедуру выдает ошибку Процедура не обнаружена: ОбработкаПроведения/Posting


Текст процедуры:
Процедура СписатьПартии()   
   РегПартии=СоздатьОбъект("Регистр.ПартииТоваров");
   СЗ=СоздатьОбъект("СписокЗначений");
   ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура");
   РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   РегПартии.ВыгрузитьИтоги(ТЗ,1);
   Если Константа.МетодСписания=Перечисление.МетодыСписания.FIFO Тогда
      Направление = "+";
   Иначе
      Направление="-";
   КонецЕсли;
   ТЗ.Сортировать("+Номенклатура,"+Направление+"Партия",1);
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОсталосьСписать=Количество;
      ТЗСтрока=0;
      ТЗ.НайтиЗначение(Номенклатура,ТЗСтрока,"Номенклатура");
      Для Ном=ТЗСтрока По ТЗ.КоличествоСтрок() Цикл
         ТЗ.ПолучитьСтрокуПоНомеру(ном);
         ОстКол=ТЗ.Количество;
         ОстСум=ТЗ.Стоимость;
         Списать=МИН(ОстКол,ОсталосьСписать);
         СебестоимостьСписания=Списать/ОстКол*ОстСум;
         

Регистр.ПартииТоваров.Номенклатура=Номенклатура;
Регистр.ПартииТоваров.Партия=ТЗ.Партия;
Регистр.ПартииТоваров.Количество=Списать;
Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания;
Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки);
Регистр.ПартииТоваров.ДвижениеРасходВыполнить();
ОсталосьСписать=ОсталосьСписать-Списать;
Если ОсталосьСписать=0 Тогда
   Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;

Если СтатусВозврата()<>1 Тогда
   Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;

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

LordWizard

А где Процедура Проведения? :xfbnsdfb:
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

start2000

Процедура СписатьПартии() должна быть в модуле документа.
Еще в модуль документа добавте процедуру:
Процедура ОбработкаПроведения()
    СписатьПартии();   
КонецПроцедуры // ОбработкаПроведения()



antoha86

Почему нельзя отвечать всегда ошибки

ВОО!!

Там я по курсу учебника делаю там процедура проведения делается отдельно, я ее восстановил
Процедура ОбработкаПроведения()
   Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество");
      Если ОстКол < Количество Тогда
         Сообщить ("В строке № "+НомерСтроки
         +"не хватает товара"""+Номенклатура+
         """, из необходимых"+Количество+
         "на складе "+Склад+" имеется" +ОстКол+",");
         СтатусВозврата(0);
      КонецЕсли;
      Если СтатусВозврата()<> 1 Тогда
         Продолжить;
      КонецЕсли;
      ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость");
      ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество");
      СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум;
      Регистр.ОстаткиТоваров.Номенклатура=Номенклатура;
      Регистр.ОстаткиТоваров.Склад=Склад;
      Регистр.ОстаткиТоваров.Количество=Количество;
      Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);
      Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
     
      Регистр.СтоимостьТоваров.Номенклатура=Номенклатура;
      Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания;
      Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить();
   КонецЦикла;
   Если СтатусВозврата()<>1 Тогда
      Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
         
   КонецЕсли;

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


//Конец первой процедуры
         

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

Регистр.ПартииТоваров.Номенклатура=Номенклатура;
Регистр.ПартииТоваров.Партия=ТЗ.Партия;
Регистр.ПартииТоваров.Количество=Списать;
Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания;
Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки);
Регистр.ПартииТоваров.ДвижениеРасходВыполнить();
ОсталосьСписать=ОсталосьСписать-Списать;
Если ОсталосьСписать=0 Тогда
   Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;

   Если СтатусВозврата()<>1 Тогда
   Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;

           
   КонецПроцедуры
Вот этот текст:
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;
нужно ввести в раздел проведения но когда я его ввожу он пишет что не видит процедуру списания, может ошибка в учебнике?

Herby

Если процедура списатьПартии находится ниже ОбработкиПроведения, то ОбработкаПроведения и не увидит ее.
Либо используйте механизм Далее, либо  перемещайте списатьПартии выше.

antoha86

Точно, СПАСИБО иду дальше)))
Добавлено: 28 ноя 2013, 13:51


Помогите пожалуйста, выдает ошибку расходная накладная:
РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
{Документ.РасходнаяНакладная.Модуль Документа(17)}: Значение не представляет агрегатный объект (УстановитьЗначениеФильтра)

Текст :

Перем Рег, СтоимРег, РегПартии;
Процедура ИнициализацияПеременых() 
   Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров"); 
   Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
   КонецЕсли;
   СЗ=СоздатьОбъект("СписокЗначений");
   ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура");
   Рег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   СтоимРег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   Если ИтогиАктуальны()=0 Тогда
      Рег.ВременныйРасчет(1);
      СтоимРег.ВременныйРасчет(1);
      Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
         РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
         РегПартии.ВременныйРасчет(1);
      КонецЕсли;
      РассчитатьРегистрыНа(ТекущийДокумент());
   КонецЕсли;
   КонецПроцедуры

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

Регистр.ПартииТоваров.Номенклатура=Номенклатура;
Регистр.ПартииТоваров.Партия=ТЗ.Партия;
Регистр.ПартииТоваров.Количество=Списать;
Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания;
Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки);
Регистр.ПартииТоваров.ДвижениеРасходВыполнить();
ОсталосьСписать=ОсталосьСписать-Списать;
Если ОсталосьСписать=0 Тогда
   Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;     
       
КонецПроцедуры 

Процедура ОбработкаПроведения()     
   ИнициализацияПеременых();
   //Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   //СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество");
      Если ОстКол < Количество Тогда
         Сообщить ("В строке № "+НомерСтроки
         +"не хватает товара"""+Номенклатура+
         """, из необходимых"+Количество+
         "на складе "+Склад+" имеется" +ОстКол+",");
         СтатусВозврата(0);
      КонецЕсли;
      Если СтатусВозврата()<> 1 Тогда
         Продолжить;
      КонецЕсли;
      ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость");
      ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество");
      СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум;
      Регистр.ОстаткиТоваров.Номенклатура=Номенклатура;
      Регистр.ОстаткиТоваров.Склад=Склад;
      Регистр.ОстаткиТоваров.Количество=Количество;
      Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);
      Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
      
      Регистр.СтоимостьТоваров.Номенклатура=Номенклатура;
      Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания;
      Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить();
   КонецЦикла;
   Если СтатусВозврата()<>1 Тогда
      Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
   
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;
         
   
  КонецПроцедуры

antoha86

АУ ЛЮДИИ!!!! ВОПРОС В ПРЕДЫДУЩЕМ СООБЩЕНИИ...
Добавлено: 29 ноя 2013, 13:10


Помогите пожалуйста, выдает ошибку расходная накладная:
РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
{Документ.РасходнаяНакладная.Модуль Документа(17)}: Значение не представляет агрегатный объект (УстановитьЗначениеФильтра)

Текст :

Перем Рег, СтоимРег, РегПартии;
Процедура ИнициализацияПеременых() 
   Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров"); 
   Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
   КонецЕсли;
   СЗ=СоздатьОбъект("СписокЗначений");
   ВыгрузитьТабличнуюЧасть(СЗ,"Номенклатура");
   Рег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   СтоимРег.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
   Если ИтогиАктуальны()=0 Тогда
      Рег.ВременныйРасчет(1);
      СтоимРег.ВременныйРасчет(1);
      Если Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
         РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2);
         РегПартии.ВременныйРасчет(1);
      КонецЕсли;
      РассчитатьРегистрыНа(ТекущийДокумент());
   КонецЕсли;
   КонецПроцедуры

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

Регистр.ПартииТоваров.Номенклатура=Номенклатура;
Регистр.ПартииТоваров.Партия=ТЗ.Партия;
Регистр.ПартииТоваров.Количество=Списать;
Регистр.ПартииТоваров.Стоимость=СебестоимостьСписания;
Регистр.ПартииТоваров.ПривязыватьСтроку(НомерСтроки);
Регистр.ПартииТоваров.ДвижениеРасходВыполнить();
ОсталосьСписать=ОсталосьСписать-Списать;
Если ОсталосьСписать=0 Тогда
   Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;     
       
КонецПроцедуры 

Процедура ОбработкаПроведения()     
   ИнициализацияПеременых();
   //Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   //СтоимРег=СоздатьОбъект("Регистр.СтоимостьТоваров");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      ОстКол=Рег.Остаток(Номенклатура,Склад,"Количество");
      Если ОстКол < Количество Тогда
         Сообщить ("В строке № "+НомерСтроки
         +"не хватает товара"""+Номенклатура+
         """, из необходимых"+Количество+
         "на складе "+Склад+" имеется" +ОстКол+",");
         СтатусВозврата(0);
      КонецЕсли;
      Если СтатусВозврата()<> 1 Тогда
         Продолжить;
      КонецЕсли;
      ОстСум=СтоимРег.Остаток(Номенклатура,"Стоимость");
      ОстКолОбщ=Рег.СводныйОстаток(Номенклатура,,"Количество");
      СебестоимостьСписания=Количество/ОстКолОбщ*ОстСум;
      Регистр.ОстаткиТоваров.Номенклатура=Номенклатура;
      Регистр.ОстаткиТоваров.Склад=Склад;
      Регистр.ОстаткиТоваров.Количество=Количество;
      Регистр.ОстаткиТоваров.ПривязыватьСтроку(НомерСтроки);
      Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
     
      Регистр.СтоимостьТоваров.Номенклатура=Номенклатура;
      Регистр.СтоимостьТоваров.Стоимость=СебестоимостьСписания;
      Регистр.СтоимостьТоваров.ДвижениеРасходВыполнить();
   КонецЦикла;
   Если СтатусВозврата()<>1 Тогда
      Сообщить ("Документ"+ТекущийДокумент()+"не проведен!");
   
Иначе
   Если  Константа.МетодСписания<>Перечисление.МетодыСписания.ПоСреднему Тогда
      СписатьПартии();
   КонецЕсли;
   КонецЕсли;
         
   
  КонецПроцедуры

start2000

Сначала выполняется Процедура ОбработкаПроведения(), в первой строке которой вызывается Процедура ИнициализацияПеременых() и в ней в 17 строке:
РегПартии.УстановитьЗначениеФильтра("Номенклатура",СЗ,2)
генерируется ошибка, потому что объект РегПартии не создан.
В процедуре ИнициализацияПеременых() добавьте третьей строчкой
РегПартии=СоздатьОбъект("Регистр.ПартииТоваров");

antoha86

Подскажите пожалуйста 1с склад провел инвентаризацию, в учете стоит позиция в количестве 6 шт по факту 0, указал в инвентаризационном документе факт 0 провел документ а он его не проводит, или он не должен проводиться? Тогда смыл его?

start2000

Цитата: antoha86 от 04 дек 2013, 15:49
Подскажите пожалуйста 1с склад провел инвентаризацию, в учете стоит позиция в количестве 6 шт по факту 0, указал в инвентаризационном документе факт 0 провел документ а он его не проводит, или он не должен проводиться? Тогда смыл его?
На основании документа инвентаризация надо создать документы СписаниеТМЦ и ОприходованиеТМЦ. Они-то и спишут или оприходуют разницу между учетным и фактическим количеством номенклатуры.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск