|
Отчет производства за смену, Печатная форма | ☑ | ||
---|---|---|---|---|
0
NovichokAlena
05.06.15
✎
06:14
|
Утро доброе, помогите пожалуйста. делаю печатную форму для документа "отчет произ-ва за смену". Нужно следующее: если табличная часть "продукция" не пустая, то выводим ее и табличную часть "распределение материалов", если "продукция" пустая, то выводим табличную часть "возвратные отходы" вместе с табличной частью "распределение возвратных отходов". вот код. когда нажимаю на печать, если есть продукция, то форма открывается, если нет, то выходит ошибка: Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (ВозвратныеОтходы) 1С:Предприятие 8.3 (8.3.6.1977), Управление производственным предприятием, редакция 1.3 (1.3.24.2) Функция Печать() Экспорт КоличествоЭкземпляров = 1; НаПринтер = Ложь; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.Очистить(); ТабДокумент.Автомасштаб = Истина; Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапкаТаблицыЗатраты = Макет.ПолучитьОбласть("ШапкаТаблицыЗатраты"); ОбластьПродукцияЗатраты = Макет.ПолучитьОбласть("ПродукцияЗатраты"); ОбластьГруппаМатериальныеЗатраты = Макет.ПолучитьОбласть("ГруппаМатериальныеЗатраты"); ОбластьГруппаВозвратныеОтходы = Макет.ПолучитьОбласть("ГруппаВозвратныеОтходы"); ОбластьСтрокаЗатраты = Макет.ПолучитьОбласть("СтрокаЗатраты"); ОбластьИтогиЗатраты = Макет.ПолучитьОбласть("ИтогиЗатраты"); ОбластьСтрокаОтходы = Макет.ПолучитьОбласть("СтрокаОтходы"); ОбластьПодвалВыпуск = Макет.ПолучитьОбласть("ПодвалВыпуск"); ОбластьШапка.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект); ОбластьШапка.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=DD"); ТабДокумент.Вывести(ОбластьШапка); ТабДокумент.Вывести(ОбластьШапкаТаблицыЗатраты); ЗапросЦеныИзНезавершенки = Новый Запрос; ЗапросЦеныИзНезавершенки.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Затрата, | ВложенныйЗапрос.КоличествоОстаток, | ВложенныйЗапрос.СтоимостьОстаток |ИЗ | (ВЫБРАТЬ | НезавершенноеПроизводствоОстатки.Затрата КАК Затрата, | СУММА(НезавершенноеПроизводствоОстатки.КоличествоОстаток) КАК КоличествоОстаток, | СУММА(НезавершенноеПроизводствоОстатки.СтоимостьОстаток) КАК СтоимостьОстаток | ИЗ | РегистрНакопления.НезавершенноеПроизводство.Остатки( | &Период, | Заказ = &Заказ | И Затрата = &Затрата) КАК НезавершенноеПроизводствоОстатки | | СГРУППИРОВАТЬ ПО | НезавершенноеПроизводствоОстатки.Затрата) КАК ВложенныйЗапрос |ГДЕ | ВложенныйЗапрос.СтоимостьОстаток > 0 | И ВложенныйЗапрос.КоличествоОстаток > 0"; ЗапросЦены = Новый Запрос; ЗапросЦены.Текст = "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.Валюта, | ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &Период, | ТипЦен = &ТипЦен | И Номенклатура = &Номенклатура //| И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры |) КАК ЦеныНоменклатурыСрезПоследних"; ЗапросЦены.УстановитьПараметр("ТипЦен", Константы.ТипЦенПлановойСебестоимостиНоменклатуры.Получить()); Табл = СсылкаНаОбъект.Продукция.Выгрузить(,"УТС_ДатаПодтвержденияПоступления,Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения,Заказ,ВесОтливки,Количество"); Табл.Свернуть("УТС_ДатаПодтвержденияПоступления,Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения,Заказ,ВесОтливки","Количество"); //КоличествоИТОГО = 0; СтоимостьИТОГО = 0; Если Табл.Количество()>0 Тогда Для Каждого Стр Из Табл Цикл СтруктураПоиска = Новый Структура("Продукция,Заказ"); //ОбластьПродукцияЗатраты ОбластьПродукцияЗатраты.Параметры.Заполнить(Стр); ОбластьПродукцияЗатраты.Параметры.Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Стр.Заказ); ОбластьПродукцияЗатраты.Параметры.Вес = Стр.ВесОтливки; ЗапросЦены.УстановитьПараметр("Период", ?(ЗначениеЗаполнено(Стр.УТС_ДатаПодтвержденияПоступления),Стр.УТС_ДатаПодтвержденияПоступления,СсылкаНаОбъект.Дата)); ЗапросЦены.УстановитьПараметр("Номенклатура", Стр.Номенклатура); //ЗапросЦены.УстановитьПараметр("ХарактеристикаНоменклатуры", Стр.ХарактеристикаНоменклатуры); Выборка = ЗапросЦены.Выполнить().Выбрать(); Цена = 0; Если Выборка.Следующий() Тогда Цена = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, Стр.ЕдиницаИзмерения); //Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, Выборка.Валюта, НоваяВалюта, КурсНовойВалюты = 0, КратностьНовойВалюты = 1, СсылкаНаОбъект.Дата); КонецЕсли; ОбластьПродукцияЗатраты.Параметры.Стоимость = Стр.Количество * Цена; ТабДокумент.Вывести(ОбластьПродукцияЗатраты); //ОбластьГруппаМатериальныеЗатраты СтруктураПоиска.Продукция = (Стр.Номенклатура); СтруктураПоиска.Заказ = (Стр.Заказ); МассивСтрок = СсылкаНаОбъект.РаспределениеМатериалов.НайтиСтроки(СтруктураПоиска); Если МассивСтрок.Количество() > 0 Тогда ТабДокумент.Вывести(ОбластьГруппаМатериальныеЗатраты); Для Каждого Элемент Из МассивСтрок Цикл ОбластьСтрокаЗатраты.Параметры.Заполнить(Элемент); ОбластьСтрокаЗатраты.Параметры.Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Элемент.ЗаказНЗП); Цена = 0; ЗапросЦеныИзНезавершенки.УстановитьПараметр("Период",?(ЗначениеЗаполнено(Стр.УТС_ДатаПодтвержденияПоступления),Стр.УТС_ДатаПодтвержденияПоступления,СсылкаНаОбъект.Дата)); ЗапросЦеныИзНезавершенки.УстановитьПараметр("Затрата",Элемент.Номенклатура); ЗапросЦеныИзНезавершенки.УстановитьПараметр("Заказ", Элемент.ЗаказНЗП); Выборка = ЗапросЦеныИзНезавершенки.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Цена = Выборка.СтоимостьОстаток / Выборка.КоличествоОстаток; КонецЕсли; Если Цена = 0 Тогда ЗапросЦены.УстановитьПараметр("Период", СсылкаНаОбъект.Дата); ЗапросЦены.УстановитьПараметр("Номенклатура", Элемент.Номенклатура); //ЗапросЦены.УстановитьПараметр("ХарактеристикаНоменклатуры", Элемент.ХарактеристикаНоменклатуры); Выборка = ЗапросЦены.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Цена = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, Элемент.ЕдиницаИзмерения); //Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, Выборка.Валюта, НоваяВалюта, КурсНовойВалюты = 0, КратностьНовойВалюты = 1, СсылкаНаОбъект.Дата); КонецЕсли; КонецЕсли; ОбластьСтрокаЗатраты.Параметры.Стоимость = Элемент.Количество * Цена; //КоличествоИТОГО = КоличествоИТОГО + Элемент.Количество; СтоимостьИТОГО = СтоимостьИТОГО + Элемент.Количество * Цена; ТабДокумент.Вывести(ОбластьСтрокаЗатраты); КонецЦикла; КонецЕсли; //ОбластьГруппаВозвратныеОтходы СтруктураПоиска.Продукция = (Стр.Номенклатура); СтруктураПоиска.Заказ = (Стр.Заказ); МассивСтрок = СсылкаНаОбъект.РаспределениеВозвратныхОтходов.НайтиСтроки(СтруктураПоиска); Если МассивСтрок.Количество() > 0 Тогда ТабДокумент.Вывести(ОбластьГруппаВозвратныеОтходы); Для Каждого Элемент Из МассивСтрок Цикл ОбластьСтрокаОтходы.Параметры.Заполнить(Элемент); ОбластьСтрокаОтходы.Параметры.Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Элемент.ЗаказНЗП); Цена = 0; ЗапросЦены.УстановитьПараметр("Период", ?(ЗначениеЗаполнено(Стр.УТС_ДатаПодтвержденияПоступления),Стр.УТС_ДатаПодтвержденияПоступления,СсылкаНаОбъект.Дата)); ЗапросЦены.УстановитьПараметр("Номенклатура", Элемент.Номенклатура); //ЗапросЦены.УстановитьПараметр("ХарактеристикаНоменклатуры", Элемент.ХарактеристикаНоменклатуры); Выборка = ЗапросЦены.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Цена = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, Элемент.ЕдиницаИзмерения); //Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, Выборка.Валюта, НоваяВалюта, КурсНовойВалюты = 0, КратностьНовойВалюты = 1, СсылкаНаОбъект.Дата); КонецЕсли; ОбластьСтрокаОтходы.Параметры.Стоимость = Элемент.Количество * Цена; ТабДокумент.Вывести(ОбластьСтрокаОтходы); КонецЦикла; КонецЕсли; КонецЦикла; Иначе Табл = СсылкаНаОбъект.ВозвратныеОтходы.Выгрузить(,"Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения,Заказ,Количество"); Табл.Свернуть("Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения,Заказ","Количество"); //КоличествоИТОГО = 0; СтоимостьИТОГО = 0; Для Каждого Стр Из Табл Цикл СтруктураПоиска = Новый Структура("Продукция,Заказ"); //ОбластьПродукцияЗатраты ОбластьПродукцияЗатраты.Параметры.Заполнить(Стр); ОбластьПродукцияЗатраты.Параметры.Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Стр.Заказ); ////ОбластьПродукцияЗатраты.Параметры.Вес = Стр.ВесОтливки; ////ЗапросЦены.УстановитьПараметр("Период", ?(ЗначениеЗаполнено(Стр.УТС_ДатаПодтвержденияПоступления),Стр.УТС_ДатаПодтвержденияПоступления,СсылкаНаОбъект.Дата)); ЗапросЦены.УстановитьПараметр("Номенклатура", Стр.Номенклатура); //ЗапросЦены.УстановитьПараметр("ХарактеристикаНоменклатуры", Стр.ХарактеристикаНоменклатуры); ////Выборка = ЗапросЦены.Выполнить().Выбрать(); ////Цена = 0; ////Если Выборка.Следующий() Тогда //// Цена = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, Стр.ЕдиницаИзмерения); //// //Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, Выборка.Валюта, НоваяВалюта, КурсНовойВалюты = 0, КратностьНовойВалюты = 1, СсылкаНаОбъект.Дата); ////КонецЕсли; ////ОбластьПродукцияЗатраты.Параметры.Стоимость = Стр.Количество * Цена; ТабДокумент.Вывести(ОбластьПродукцияЗатраты); //ОбластьГруппаМатериальныеЗатраты СтруктураПоиска.ВозвратныеОтходы = (Стр.Номенклатура); СтруктураПоиска.Заказ = (Стр.Заказ); МассивСтрок = СсылкаНаОбъект.РаспределениеВозвратныхОтходов.НайтиСтроки(СтруктураПоиска); Если МассивСтрок.Количество() > 0 Тогда ТабДокумент.Вывести(ОбластьГруппаВозвратныеОтходы); Для Каждого Элемент Из МассивСтрок Цикл ОбластьСтрокаОтходы.Параметры.Заполнить(Элемент); ОбластьСтрокаОтходы.Параметры.Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Элемент.ЗаказНЗП); Цена = 0; ЗапросЦены.УстановитьПараметр("Период", ?(ЗначениеЗаполнено(Стр.УТС_ДатаПодтвержденияПоступления),Стр.УТС_ДатаПодтвержденияПоступления,СсылкаНаОбъект.Дата)); ЗапросЦены.УстановитьПараметр("Номенклатура", Элемент.Номенклатура); //ЗапросЦены.УстановитьПараметр("ХарактеристикаНоменклатуры", Элемент.ХарактеристикаНоменклатуры); Выборка = ЗапросЦены.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Цена = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, Элемент.ЕдиницаИзмерения); //Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, Выборка.Валюта, НоваяВалюта, КурсНовойВалюты = 0, КратностьНовойВалюты = 1, СсылкаНаОбъект.Дата); КонецЕсли; ОбластьСтрокаОтходы.Параметры.Стоимость = Элемент.Количество * Цена; ТабДокумент.Вывести(ОбластьСтрокаОтходы); КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; //ОбластьИтогиЗатраты //ОбластьИтогиЗатраты.Параметры.Количество = КоличествоИТОГО; ОбластьИтогиЗатраты.Параметры.Стоимость = СтоимостьИТОГО; ТабДокумент.Вывести(ОбластьИтогиЗатраты); //ОбластьПодвалВыпуск ОбластьПодвалВыпуск.Параметры.Ответственный = ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.Ответственный.Наименование); ТабДокумент.Вывести(ОбластьПодвалВыпуск); ТабДокумент.АвтоМасштаб = Истина; УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(СсылкаНаОбъект.ПолучитьОбъект()), СсылкаНаОбъект); Возврат Неопределено; КонецФункции |
|||
1
lxndr
05.06.15
✎
06:28
|
СтруктураПоиска = Новый Структура("Продукция,Заказ");
.... .... .... СтруктураПоиска.ВозвратныеОтходы = (Стр.Номенклатура); СтруктураПоиска.Заказ = (Стр.Заказ); |
|||
2
NovichokAlena
05.06.15
✎
06:35
|
(1) я правильно поняла, нужно так :
СтруктураПоиска = Новый Структура("ВозвратныеОтходы",Заказ"); |
|||
3
lxndr
05.06.15
✎
06:38
|
(2) ага, только не вместо, а вместе
|
|||
4
NovichokAlena
05.06.15
✎
06:40
|
(3) теперь такая ошибка: Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (НайтиСтроки): Неверное имя колонки |
|||
5
yavasya
05.06.15
✎
06:43
|
так ты проверяй ТаблицаПродукция=Продукция.выгрузить();
если ТаблицаПродукция.количество()=0 тогда ... |
|||
6
NovichokAlena
05.06.15
✎
06:49
|
(5) в коде есть проверка
|
|||
7
NovichokAlena
05.06.15
✎
07:03
|
Помогите!!очень нужно. я только учусь и сама не разберусь!
|
|||
8
Шестая колонна
05.06.15
✎
07:30
|
Осмелюсь предположить, что все же указано неверное имя колонки... В ТЧ РаспределениеВозвратныхОтходов точно есть колонки "ВозвратныеОтходы" И "Заказ"?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |