|
Приемо сдаточный акт внешняя печатная форма | ☑ | ||
---|---|---|---|---|
0
NovichokAlena
10.06.15
✎
10:06
|
Здравствуйте, в упп, редакция 1.3 (1.3.24.2)1С:Предприятие 8.3 (8.3.6.1977) имеется внешняя печатная форма "Приемо сдаточный акт" для Фокумента "отчет производства за смену", Тут если табличная часть "продукция" заполнена, то акт выходит на печать. Нужно добавить код, чтобы выходило на печать если ТЧ "Продукция" не заполнена, но заполнена ТЧ "возвратные отходы". не могу понять как это реализовать. Код ПФ:
Перем ОбластьШапка, ОбластьОписаниеЗатраты, ОбластьОписаниеСклад, ОбластьШапкаТаблицы, ОбластьСтрока, ОбластьПодвалСклад, ОбластьПодвалЦех, ТабДокумент, ОбластьИтого; Функция Печать() Экспорт форма = ПолучитьФорму("Форма"); форма.Открыть(); ТабДокумент = форма.ЭлементыФормы.ПолеТабличногоДокумента; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДокумент.Автомасштаб = Истина; Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьОписаниеЗатраты = Макет.ПолучитьОбласть("ОписаниеЗатраты"); ОбластьОписаниеСклад = Макет.ПолучитьОбласть("ОписаниеСклад"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ВозвратныеОтходы"); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьПодвалСклад = Макет.ПолучитьОбласть("ПодвалСклад"); ОбластьПодвалЦех = Макет.ПолучитьОбласть("ПодвалЦех"); ОбластьИтого = Макет.ПолучитьОбласть("Итого"); ТЗНаСклад = Новый ТаблицаЗначений; ТЗНаЗатраты = Новый ТаблицаЗначений; ТЗНаСклад.Колонки.Добавить("Номенклатура" , Новый ОписаниеТипов("СправочникСсылка.Номенклатура"), "Номенклатура"); ТЗНаСклад.Колонки.Добавить("ПодразделениеПолучатель", Новый ОписаниеТипов("СправочникСсылка.Подразделения"), "Подразделения"); ТЗНаСклад.Колонки.Добавить("Количество" , Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)), "Количество"); ТЗНаСклад.Колонки.Добавить("Стоимость" , Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Любой)), "Количество"); ТЗНаСклад.Колонки.Добавить("ВидВыпуска" , Новый ОписаниеТипов("Строка"), "ВидВыпуска"); ТЗНаСклад.Колонки.Добавить("Заказ" , , "Заказ"); ТЗНаЗатраты = ТЗНаСклад.СкопироватьКолонки(); Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ВложенныйЗапрос.Номенклатура, | ВложенныйЗапрос.Количество, | ВложенныйЗапрос.Склад, | ВложенныйЗапрос.Цена, | ВложенныйЗапрос.Стоимость, | ВложенныйЗапрос.ПодразделениеПолучатель, | ВложенныйЗапрос.НаправлениеВыпуска, | ВложенныйЗапрос.Заказ |ИЗ | (ВЫБРАТЬ | ОтчетПроизводстваЗаСменуПродукция.Номенклатура КАК Номенклатура, | ОтчетПроизводстваЗаСменуПродукция.Количество КАК Количество, | ОтчетПроизводстваЗаСменуПродукция.Ссылка.Склад КАК Склад, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ОтчетПроизводстваЗаСменуПродукция.Количество КАК Стоимость, | ОтчетПроизводстваЗаСменуПродукция.НомерСтроки КАК НомерСтроки, | ОтчетПроизводстваЗаСменуПродукция.ПодразделениеПолучатель КАК ПодразделениеПолучатель, | ОтчетПроизводстваЗаСменуПродукция.НаправлениеВыпуска КАК НаправлениеВыпуска, | ВЫБОР | КОГДА ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска = НЕОПРЕДЕЛЕНО | ТОГДА ВЫБОР | КОГДА ОтчетПроизводстваЗаСменуПродукция.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) | ТОГДА """" | ИНАЧЕ ОтчетПроизводстваЗаСменуПродукция.НоменклатурнаяГруппа | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска = ЗНАЧЕНИЕ(Документ.ЗаказНаПроизводство.ПустаяСсылка) | ТОГДА ВЫБОР | КОГДА ОтчетПроизводстваЗаСменуПродукция.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) | ТОГДА """" | ИНАЧЕ ОтчетПроизводстваЗаСменуПродукция.НоменклатурнаяГруппа | КОНЕЦ | ИНАЧЕ ОтчетПроизводстваЗаСменуПродукция.ЗаказВыпуска | КОНЕЦ | КОНЕЦ КАК Заказ | ИЗ | Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних | ПО ОтчетПроизводстваЗаСменуПродукция.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | ГДЕ | ОтчетПроизводстваЗаСменуПродукция.Ссылка = &Регистратор) КАК ВложенныйЗапрос"; Запрос.УстановитьПараметр("Регистратор", СсылкаНаОбъект.Ссылка); Запрос.УстановитьПараметр("Дата" , КонецДня(СсылкаНаОбъект.Ссылка.Дата)); Запрос.УстановитьПараметр("ТипЦен" , Константы.ТипЦенПлановойСебестоимостиНоменклатуры.Получить()); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.НаправлениеВыпуска = Перечисления.НаправленияВыпуска.НаСклад Тогда новСтрока = ТЗНаСклад.Добавить(); ЗаполнитьЗначенияСвойств(новСтрока, Выборка); новСтрока.ВидВыпуска = "Склад"; ИначеЕсли Выборка.НаправлениеВыпуска = Перечисления.НаправленияВыпуска.НаЗатраты Тогда новСтрока = ТЗНаЗатраты.Добавить(); ЗаполнитьЗначенияСвойств(новСтрока, Выборка); новСтрока.ВидВыпуска = "Затраты"; КонецЕсли; КонецЦикла; Если ТЗНаСклад.Количество() <> 0 тогда СформироватьОтчет(ТЗНаСклад, "Склад"); КонецЕсли; Если ТЗНаЗатраты.Количество() <> 0 тогда СформироватьОтчет(ТЗНаЗатраты, "Затраты"); КонецЕсли; КонецФункции Функция СформироватьОтчет(ТЗ, НаправлениеВыпуска) //Шапка ОбластьШапка.Параметры.Отправитель = СсылкаНаОбъект.Подразделение; Если СсылкаНаОбъект.Продукция.Количество() > 0 Тогда Если СсылкаНаОбъект.Продукция[0].НаправлениеВыпуска = Перечисления.НаправленияВыпуска.НаСклад Тогда ОбластьШапка.Параметры.Получатель = СсылкаНаОбъект.Склад; Иначе ОбластьШапка.Параметры.Получатель = СсылкаНаОбъект.Продукция[0].ПодразделениеПолучатель; КонецЕсли; КонецЕсли; Если НаправлениеВыпуска = "Склад" тогда ОбластьШапка.Параметры.Организация = СсылкаНаОбъект.Организация.НаименованиеСокращенное; ОбластьШапка.Параметры.Номер = СсылкаНаОбъект.Номер; Если СсылкаНаОбъект.Склад.СкладОтгрузки=Истина Тогда ОбластьШапка.Параметры.Дата="Дата _____________________ г." Иначе ОбластьШапка.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=DD"); КонецЕсли; ОбластьШапка.Параметры.Ответственный = ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.Ответственный.Наименование); ОбластьШапка.Параметры.ТекущаяДата = Формат(ТекущаяДата(), "ДЛФ=DT"); ТабДокумент.Вывести(ОбластьШапка); ТабДокумент.Вывести(ОбластьОписаниеСклад); ПечатьЗатратыНаВыпуск(ТЗ, ""); ПечатьПодвала(НаправлениеВыпуска, СсылкаНаОбъект.Склад); иначеЕсли НаправлениеВыпуска = "Затраты" тогда //шапка СписокПолучателей = ТЗ.Скопировать(); СписокПолучателей.Свернуть("ПодразделениеПолучатель"); СписокПолучателей.Сортировать("ПодразделениеПолучатель"); Первый = Истина; Для каждого текПолучатель ИЗ СписокПолучателей Цикл Если НЕ Первый тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ОбластьШапка.Параметры.Организация = СсылкаНаОбъект.Организация.НаименованиеСокращенное; ОбластьШапка.Параметры.Номер = СсылкаНаОбъект.Номер; ОбластьШапка.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=DD"); ОбластьШапка.Параметры.Ответственный = ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.Ответственный.Наименование); ОбластьШапка.Параметры.ТекущаяДата = Формат(ТекущаяДата(), "ДЛФ=DT"); ТабДокумент.Вывести(ОбластьШапка); ТабДокумент.Вывести(ОбластьОписаниеЗатраты); ПечатьЗатратыНаВыпуск(ТЗ, текПолучатель.ПодразделениеПолучатель); ПечатьПодвала(НаправлениеВыпуска, текПолучатель.ПодразделениеПолучатель); Первый = Ложь; КонецЦикла; КонецЕсли; КонецФункции Процедура ПечатьПодвала(НаправлениеВыпуска, ПодразделениеПолучатель) Если НаправлениеВыпуска = "Склад" Тогда ТабДокумент.Вывести(ОбластьПодвалСклад); Иначе ТабДокумент.Вывести(ОбластьПодвалЦех); КонецЕсли; КонецПроцедуры Функция ПечатьЗатратыНаВыпуск(ТЗ, ПодразделениеПолучатель) //Затраты ТабДокумент.Вывести(ОбластьШапкаТаблицы); Если Строка(ПодразделениеПолучатель) = "" тогда НайденныеСтроки = ТЗ.Скопировать(); иначе Отбор = новый Структура; Отбор.Вставить("ПодразделениеПолучатель", ПодразделениеПолучатель); НайденныеСтроки = ТЗ.НайтиСтроки(Отбор); КонецЕсли; ном = 0; ВесИтого = 0; Количество = 0; Стоимость = 0; Для каждого текПродукция из НайденныеСтроки Цикл ном = ном + 1; ОбластьСтрока.Параметры.Заполнить(текПродукция); ОбластьСтрока.Параметры.Количество = "" + текПродукция.Количество; Количество = Количество + текПродукция.Количество; ОбластьСтрока.Параметры.Артикул = текПродукция.Номенклатура.Артикул; ОбластьСтрока.Параметры.Вес = текПродукция.Номенклатура.ЕдиницаХраненияОстатков.Вес; ОбластьСтрока.Параметры.ВесИтого = текПродукция.Номенклатура.ЕдиницаХраненияОстатков.Вес * текПродукция.Количество; ВесИтого = ВесИтого + текПродукция.Номенклатура.ЕдиницаХраненияОстатков.Вес * текПродукция.Количество; ОбластьСтрока.Параметры.Цена = текПродукция.Стоимость / текПродукция.Количество; ОбластьСтрока.Параметры.Стоимость = текПродукция.Стоимость; Стоимость = Стоимость + текПродукция.Стоимость; ОбластьСтрока.Параметры.ном = ном; Заказ = текПродукция.Заказ; Если ТипЗнч(Заказ) = Тип("ДокументСсылка.ЗаказНаПроизводство") Тогда Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Заказ); КонецЕсли; ОбластьСтрока.Параметры.Заказ = Заказ; ТабДокумент.Вывести(ОбластьСтрока); КонецЦикла; ОбластьИтого.Параметры.Количество = Количество; ОбластьИтого.Параметры.ВесИтого = ВесИтого; ОбластьИтого.Параметры.Стоимость = Стоимость; ТабДокумент.Вывести(ОбластьИтого); Возврат ТабДокумент; КонецФункции |
|||
1
lxndr
10.06.15
✎
10:12
|
||||
2
NovichokAlena
10.06.15
✎
10:43
|
(1) как выполнить проверку я знаю...а как вывести все реквизиты табл части "возвратные отходы". это не пойму
|
|||
3
Бовка
10.06.15
✎
10:48
|
(2) У тебя же в коде используется обращение к ТЧ Продукция, сделай по аналогии
|
|||
4
NovichokAlena
10.06.15
✎
10:50
|
(3)вы эту часть имеете ввиду?
Для каждого текПродукция из НайденныеСтроки Цикл ном = ном + 1; ОбластьСтрока.Параметры.Заполнить(текПродукция); ОбластьСтрока.Параметры.Количество = "" + текПродукция.Количество; Количество = Количество + текПродукция.Количество; ОбластьСтрока.Параметры.Артикул = текПродукция.Номенклатура.Артикул; ОбластьСтрока.Параметры.Вес = текПродукция.Номенклатура.ЕдиницаХраненияОстатков.Вес; ОбластьСтрока.Параметры.ВесИтого = текПродукция.Номенклатура.ЕдиницаХраненияОстатков.Вес * текПродукция.Количество; ВесИтого = ВесИтого + текПродукция.Номенклатура.ЕдиницаХраненияОстатков.Вес * текПродукция.Количество; ОбластьСтрока.Параметры.Цена = текПродукция.Стоимость / текПродукция.Количество; ОбластьСтрока.Параметры.Стоимость = текПродукция.Стоимость; Стоимость = Стоимость + текПродукция.Стоимость; ОбластьСтрока.Параметры.ном = ном; Заказ = текПродукция.Заказ; Если ТипЗнч(Заказ) = Тип("ДокументСсылка.ЗаказНаПроизводство") Тогда Заказ = ОбщегоНазначения.ПолучитьНомерНаПечать(Заказ); КонецЕсли; ОбластьСтрока.Параметры.Заказ = Заказ; ТабДокумент.Вывести(ОбластьСтрока); КонецЦикла; |
|||
5
Бовка
10.06.15
✎
10:54
|
Если ТЗНаСклад.Количество() <> 0 тогда
СформироватьОтчет(ТЗНаСклад, "Склад"); КонецЕсли; Если ТЗНаЗатраты.Количество() <> 0 тогда СформироватьОтчет(ТЗНаЗатраты, "Затраты"); КонецЕсли; Сюда нужен кусок про возвраты + запрос выборку данных тч возвраты |
|||
6
NovichokAlena
10.06.15
✎
11:06
|
(5) запрос выборку тч возвраты понятно, а что это за кусок про возвраты, что там должно быть..?
|
|||
7
Вася Чез
10.06.15
✎
11:08
|
(6) а ты новичок в программировании или новичок в 1С (Спрашиваю на будущее, чтобы знать на каком языке потом подсказывать).
|
|||
8
NovichokAlena
10.06.15
✎
11:13
|
(7) и там и там
|
|||
9
Бовка
10.06.15
✎
11:22
|
(6) вестимо аналогичная выборка тех реквизитов, которые должны попасть в макет.
Если структура ТЧ продукции и возврата совпадает по реквизитам, то скопируй выборку и замени таблицы в запросе |
|||
10
NovichokAlena
10.06.15
✎
11:22
|
(5) и кстати у ТЧ "возвратные отходы" нет реквизита НаправлениеВыпуска
|
|||
11
Бовка
10.06.15
✎
11:22
|
(10) ахах, ну потому что это не выпуск)
|
|||
12
NovichokAlena
10.06.15
✎
11:27
|
(11) ну и что тогда в этот кусок (5) вставлять то нужно?
|
|||
13
NovichokAlena
10.06.15
✎
11:58
|
Вася Чез ну и где твои подсказки?
|
|||
14
NovichokAlena
10.06.15
✎
12:20
|
Пойду повешусь
|
|||
15
Вася Чез
11.06.15
✎
04:16
|
(13) подсказываю сменить профессию, ну или если очень хочется заниматься программированием, то пойти в падаваны во франч, читать кучу книг, решать задач и практиковаться каждый день, и через какое-то время (возможно) таких вопросов больше не будет возникать, максимум будешь задавать какие-нибудь бух, нал, упр вопросы.
|
|||
16
Вася Чез
11.06.15
✎
04:16
|
(14) см. (15)
|
|||
17
NovichokAlena
11.06.15
✎
06:53
|
тога к чему был этот вопрос....(7)
|
|||
18
hhhh
11.06.15
✎
07:27
|
(17) а ваш вопрос к чему? Ведь в (5) ничего нет про направление выпуска.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |