| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > пересчитать цены в отчете производства за смену |
| Автор: Vseslovur 26.4.2011, 20:00 |
| Бухгалтерия 2.0 Платформа 8.2 Ситуация такая: С начала года по текущий день в учетной политике стояла не та плановая цена. в документах отчет производства за смену, которых набралось достаточно, соответственно указана не та цена. В каждом документе около 50 наименований. Как массово пересчитать цену? В документе реализация товаров и услуг, есть кнопка "Изменить", которая вызывает обработку "ОбработкаТабличнойЧастиТовары". Там как раз есть позможность установить цену по типу. Попытался сделать такую же в документе "отчет производства за смену" В документе "Реализация Товаров и услуг" было так: Процедура КоманднаяПанельТоварыДействиеИзменить(Кнопка) // Получим контекст обработки ИзменениеТабличнойЧастиТовары = Обработки.ОбработкаТабличнойЧастиТовары.Создать(); ФормаИзменениеТабличнойЧастиТовары = ИзменениеТабличнойЧастиТовары.ПолучитьФорму(,ЭтаФорма); //Установим реквизиты и переменные формы. ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект = ЭтотОбъект; ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента = ЭтаФорма; ФормаИзменениеТабличнойЧастиТовары.мЕстьНДС = УчитыватьНДС; ФормаИзменениеТабличнойЧастиТовары.мЕстьЦенаВРознице = Ложь; ФормаИзменениеТабличнойЧастиТовары.мСпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры; //Перенесем табличную часть ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Товары.Выгрузить()); // Открываем форму обработки ФормаИзменениеТабличнойЧастиТовары.Открыть(); КонецПроцедуры При этом все работало. В Отчете производства за смену, сделал так: Процедура КоманднаяПанельТоварыДействиеИзменить(Кнопка) ИзменениеТабличнойЧастиТовары = Обработки.ОбработкаТабличнойЧастиТовары.Создать(); ФормаИзменениеТабличнойЧастиТовары = ИзменениеТабличнойЧастиТовары.ПолучитьФорму(,ЭтаФорма); //Установим реквизиты и переменные формы. ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект = ДокументОбъект; ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента = ЭтаФорма; ФормаИзменениеТабличнойЧастиТовары.мЕстьНДС = Ложь; ФормаИзменениеТабличнойЧастиТовары.мЕстьЦенаВРознице = Ложь; ФормаИзменениеТабличнойЧастиТовары.мСпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры; //Перенесем табличную часть ИзменениеТабличнойЧастиТовары.Товары.Загрузить(Продукция.Выгрузить()); // Открываем форму обработки ФормаИзменениеТабличнойЧастиТовары.Открыть(); КонецПроцедуры Выдает ошибку "Не задан документ для обработки. Эта обработка может вызывается только из формы документа." Вот процедура, из модуля формы обработки: Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) // Если не установлено значения объекта редактируемого документа, // то форму обработки открывать не нужно. Если ДокументОбъект = Неопределено Тогда Отказ = Истина; Предупреждение("Не задан документ для обработки! |Эта обработка может вызывается только из формы документа.", , Заголовок); Возврат; КонецЕсли; //Товары.ЗагрузитьКолонку(Товары.ВыгрузитьКолонку("НомерСтроки"), "НомерСтрокиДокумента"); КонецПроцедуры // ПередОткрытием() Не пойму, почему в реализации оно работает, а в отчета производмтва нет((( Еще есть вариант написать внешнюю обработку. с двумя формами, в одной задается документ для обработки, затем открывается основная форма обработки, но опять та же ошибка(( |
| Автор: _Valery_ 10.5.2011, 16:39 |
| Возможно, что у реквизита "ДокументОбъект" обработки "ОбработкаТабличнойЧастиТовары" не предусмотрен тип документ "Отчет производства за смену". |