Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > пересчитать цены в отчете производства за смену


Автор: Vseslovur 26.4.2011, 20:00
Бухгалтерия 2.0 Платформа 8.2

 Ситуация такая:
 С начала года по текущий день в учетной политике стояла не та плановая цена. в документах отчет производства за смену, которых набралось достаточно, соответственно указана не та цена. В каждом документе около 50 наименований.

 Как массово пересчитать цену?

 В документе реализация товаров и услуг, есть кнопка "Изменить", которая вызывает обработку "ОбработкаТабличнойЧастиТовары". Там как раз есть позможность установить цену по типу.

 Попытался сделать такую же в документе "отчет производства за смену"


 В документе "Реализация Товаров и услуг" было так:

 Процедура КоманднаяПанельТоварыДействиеИзменить(Кнопка)

 // Получим контекст обработки
 ИзменениеТабличнойЧастиТовары = Обработки.ОбработкаТабличнойЧастиТовары.Создать();
 ФормаИзменениеТабличнойЧастиТовары = ИзменениеТабличнойЧастиТовары.ПолучитьФорму(,ЭтаФорма);

 //Установим реквизиты и переменные формы.
 ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект = ЭтотОбъект;
 ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента = ЭтаФорма;
 ФормаИзменениеТабличнойЧастиТовары.мЕстьНДС = УчитыватьНДС; 
 ФормаИзменениеТабличнойЧастиТовары.мЕстьЦенаВРознице = Ложь;
 ФормаИзменениеТабличнойЧастиТовары.мСпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;

 //Перенесем табличную часть
 ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Товары.Выгрузить());

 // Открываем форму обработки
 ФормаИзменениеТабличнойЧастиТовары.Открыть();

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




 При этом все работало.

 В Отчете производства за смену, сделал так:



 Процедура КоманднаяПанельТоварыДействиеИзменить(Кнопка)

 ИзменениеТабличнойЧастиТовары = Обработки.ОбработкаТабличнойЧастиТовары.Создать();
 ФормаИзменениеТабличнойЧастиТовары = ИзменениеТабличнойЧастиТовары.ПолучитьФорму(,ЭтаФорма);

 //Установим реквизиты и переменные формы.
 ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект = ДокументОбъект;
 ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента = ЭтаФорма;

 ФормаИзменениеТабличнойЧастиТовары.мЕстьНДС = Ложь; 
 ФормаИзменениеТабличнойЧастиТовары.мЕстьЦенаВРознице = Ложь;
 ФормаИзменениеТабличнойЧастиТовары.мСпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;

 //Перенесем табличную часть
 ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Продукция.Выгрузить());

 // Открываем форму обработки
 ФормаИзменениеТабличнойЧастиТовары.Открыть();

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



 Выдает ошибку "Не задан документ для обработки. Эта обработка может вызывается только из формы документа."

 Вот процедура, из модуля формы обработки:
 Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

 // Если не установлено значения объекта редактируемого документа,
 // то форму обработки открывать не нужно.
 Если ДокументОбъект = Неопределено Тогда

 Отказ = Истина;
 Предупреждение("Не задан документ для обработки! 
 |Эта обработка может вызывается только из формы документа.", , Заголовок);
 Возврат;

 КонецЕсли;

 //Товары.ЗагрузитьКолонку(Товары.ВыгрузитьКолонку("НомерСтроки"), "НомерСтрокиДокумента");

 КонецПроцедуры // ПередОткрытием()

 Не пойму, почему в реализации оно работает, а в отчета производмтва нет(((

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

Автор: _Valery_ 10.5.2011, 16:39
Возможно, что у реквизита "ДокументОбъект" обработки "ОбработкаТабличнойЧастиТовары" не предусмотрен тип документ "Отчет производства за смену".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)