|
присоединение области макета | ☑ | ||
---|---|---|---|---|
0
userqwerty
12.11.19
✎
10:37
|
моиогите разобраться юной программистке 1с,
у меня при присоединении области макета ПоДате она дублируется несколько раз, Функция СформироватьПечатнуюФормуЗаказПоставщику(МассивОбъектов, ТабличныйДокумент) // =============================================================================================== // Области макета Макет = ПолучитьМакет("ПФ_MXL_ЗаказПоставщику"); Заголовок = Макет.ПолучитьОбласть("Заголовок"); ШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы|Основное"); СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы|Основное"); Подвал = Макет.ПолучитьОбласть("ПодвалТаблицы|Основное"); Подписи = Макет.ПолучитьОбласть("Подписи"); ШапкаТаблицыПоДате = Макет.ПолучитьОбласть("ШапкаТаблицы|ПоДате"); СтрокаТаблицыПоДате = Макет.ПолучитьОбласть("СтрокаТаблицы|ПоДате"); ПодвалПоДате = Макет.ПолучитьОбласть("ПодвалТаблицы|ПоДате"); // =============================================================================================== // Заполнение макета Запрос = Новый Запрос("ВЫБРАТЬ | ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура, | ЗаказПоставщикуТовары.ХХ_КоличествоКонтейнеров КАК КоличествоКонтейнеров, | ЗаказПоставщикуТовары.КоличествоУпаковок КАК КоличествоУпаковок, | ЗаказПоставщикуТовары.Цена КАК Цена, | ЗаказПоставщикуТовары.Сумма КАК Сумма, | ЗаказПоставщикуТовары.Склад КАК Склад, | ЗаказПоставщикуТовары.ДатаПоступления КАК ДатаПоступления, | ХХ_КодыДляИнвойсов.ID КАК ID, | ЗаказПоставщикуТовары.Ссылка.ХХ_Порт КАК Порт, | ЗаказПоставщикуТовары.Номенклатура.ХХ_НаименованиеАнгл КАК НоменклатураНаАнглийском, | ДополнительныеСведения.Значение КАК СкладНаАнглийском, | ЗаказПоставщикуТовары.Ссылка.Валюта КАК Валюта |ИЗ | Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХХ_ВЭД_КодыДляИнвойсов КАК ХХ_КодыДляИнвойсов | ПО ЗаказПоставщикуТовары.Номенклатура = ХХ_КодыДляИнвойсов.Номенклатура | И ЗаказПоставщикуТовары.Характеристика = ХХ_КодыДляИнвойсов.Характеристика | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения | ПО ЗаказПоставщикуТовары.Склад = ДополнительныеСведения.Объект |ГДЕ | ЗаказПоставщикуТовары.Ссылка = &Ссылка | И ДополнительныеСведения.Свойство = &Свойство | |СГРУППИРОВАТЬ ПО | ЗаказПоставщикуТовары.Номенклатура, | ЗаказПоставщикуТовары.ХХ_КоличествоКонтейнеров, | ЗаказПоставщикуТовары.КоличествоУпаковок, | ЗаказПоставщикуТовары.Цена, | ЗаказПоставщикуТовары.Сумма, | ЗаказПоставщикуТовары.Склад, | ЗаказПоставщикуТовары.ДатаПоступления, | ХХ_КодыДляИнвойсов.ID, | ЗаказПоставщикуТовары.Ссылка.ХХ_Порт, | ЗаказПоставщикуТовары.Номенклатура.ХХ_НаименованиеАнгл, | ДополнительныеСведения.Значение, | ЗаказПоставщикуТовары.Ссылка.Валюта"); Шаблон = ".*(\d\d)_(\d\d)"; // регулярное выражение соответствует номеру заказа RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.MultiLine = Ложь; RegExp.Global = Истина; RegExp.IgnoreCase = Истина; RegExp.Pattern = Шаблон; Для каждого ДокументСсылка Из МассивОбъектов Цикл Запрос.УстановитьПараметр("Ссылка", ДокументСсылка); Запрос.УстановитьПараметр("Свойство",ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку(Новый УникальныйИдентификатор("aa7f776e-0217-11ea-910c-6805ca468e7c"))); //Запрос.УстановитьПараметр("Свойство2",ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку(Новый УникальныйИдентификатор("1d9ff284-044d-11ea-910c-6805ca468e7c"))); Рез = Запрос.Выполнить(); СоответствиеКолонокДатПоступления = Новый Соответствие; ТЗ = Рез.Выгрузить(); ТЗ.Свернуть("ДатаПоступления, Склад, Порт, СкладНаАнглийском", "КоличествоУпаковок, КоличествоКонтейнеров"); Пока ТЗ.Найти(null,"ДатаПоступления") <> Неопределено Цикл ТЗ.Удалить(ТЗ.Найти(null,"ДатаПоступления")); КонецЦикла; ТЗ.Сортировать("ДатаПоступления, Склад, Порт, СкладНаАнглийском"); Заголовок.Параметры.НомерПриложения = RegExp.Replace(ДокументСсылка.ХХ_НомерЗаказаВЭД, "$1.$2") + "." + ДокументСсылка.ХХ_НомерПоставки; Заголовок.Параметры.ДатаПриложения = Формат(ДокументСсылка.Дата, "ДФ=dd.MM.yyyy") + "г."; Заголовок.Параметры.НомерКонтракта = ДокументСсылка.Договор.Номер; Заголовок.Параметры.ДатаКонтракта = Формат(ДокументСсылка.Договор.Дата, "ДФ=dd.MM.yyyy") + "г."; ТабличныйДокумент.Вывести(Заголовок); ТабличныйДокумент.Вывести(ШапкаТаблицы); Для Каждого СтрокаТЗ Из ТЗ Цикл ШапкаТаблицыПоДате.Параметры.СкладНазначения = СтрокаТЗ.Склад; ШапкаТаблицыПоДате.Параметры.СкладНаАнглийском = СтрокаТЗ.СкладНаАнглийском; ШапкаТаблицыПоДате.Параметры.Порт = СтрокаТЗ.Порт; ТабличныйДокумент.Присоединить(ШапкаТаблицыПоДате); КонецЦикла; Выборка = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); НомерПП = 1; ИтогоКоличествоУпаковок = 0; ИтогоКоличествоКонтейнеров = 0; ИтогоСумма = 0; Пока Выборка.Следующий() Цикл СтрокаТаблицы.Параметры.Заполнить(Выборка); СтрокаТаблицы.Параметры.Цена = Строка(Выборка.Валюта) + " " + Формат(СтрокаТаблицы.Параметры.Цена, "ЧДЦ=1"); СтрокаТаблицы.Параметры.Сумма = Строка(Выборка.Валюта) + " " + Строка(Формат(СтрокаТаблицы.Параметры.Сумма, "ЧДЦ=1")); СтрокаТаблицы.Параметры.НомерПП = НомерПП; СтрокаТаблицы.Параметры.НоменклатураНаАнглийском = Выборка.НоменклатураНаАнглийском; СтрокиСДатами = Выборка.Выбрать(); НомерПП = НомерПП + 1; ТабличныйДокумент.Вывести(СтрокаТаблицы); СоответствиеДанныхПоДате = Новый Соответствие; Пока СтрокиСДатами.Следующий() Цикл СтруктураРесурсов = Новый структура("КоличествоУпаковок", СтрокиСДатами.КоличествоУпаковок); СоответствиеДанныхПоДате.Вставить("" + СтрокиСДатами.ДатаПоступления + СтрокиСДатами.Склад, СтруктураРесурсов); КонецЦикла; Для Каждого СтрокаТЗ Из ТЗ Цикл НайденнаяСтруктураРесурсов = СоответствиеДанныхПоДате["" + СтрокаТЗ.ДатаПоступления + СтрокаТЗ.Склад]; СтрокаТаблицыПоДате.Параметры.КоличествоУпаковок = Выборка.КоличествоУпаковок; Если ЗначениеЗаполнено(НайденнаяСтруктураРесурсов) Тогда СтрокаТаблицыПоДате.Параметры.Заполнить(НайденнаяСтруктураРесурсов); КонецЕсли; ТабличныйДокумент.Присоединить(СтрокаТаблицыПоДате); КонецЦикла; ИтогоКоличествоУпаковок = ИтогоКоличествоУпаковок + Выборка.КоличествоУпаковок; ИтогоКоличествоКонтейнеров = ИтогоКоличествоКонтейнеров + Выборка.КоличествоКонтейнеров; ИтогоСумма = ИтогоСумма + Выборка.Сумма; КонецЦикла; Подвал.Параметры.ИтогоКоличествоУпаковок = ИтогоКоличествоУпаковок; СтрокаТаблицыПоДате.Параметры.КоличествоУпаковок = Выборка.КоличествоУпаковок; Подвал.Параметры.ИтогоСумма = Строка(Выборка.Валюта) + " " + (Формат(ИтогоСумма,"ЧДЦ=1")); ТабличныйДокумент.Вывести(Подвал); Для Каждого СтрТЗ Из ТЗ Цикл ПодвалПоДате.Параметры.ИтогоКоличествоУпаковок = СтрТЗ.КоличествоУпаковок; СтрокаТаблицыПоДате.Параметры.КоличествоУпаковок = СтрТЗ.КоличествоУпаковок; ТабличныйДокумент.Присоединить(ПодвалПоДате); КонецЦикла; ТабличныйДокумент.Вывести(Подписи); ТабличныйДокумент.Область(1,1,1, ТабличныйДокумент.ШиринаТаблицы).Объединить(); ТабличныйДокумент.Область(2,1,2, ТабличныйДокумент.ШиринаТаблицы).Объединить(); КонецЦикла; // =============================================================================================== Возврат ТабличныйДокумент; КонецФункции |
|||
1
Радим1987
12.11.19
✎
11:00
|
Скорее всего из за цикл в цикле
|
|||
2
Радим1987
12.11.19
✎
11:01
|
Пока Выборка.Следующий() Цикл
СтрокаТаблицы.Параметры.Заполнить(Выборка); СтрокаТаблицы.Параметры.Цена = Строка(Выборка.Валюта) + " " + Формат(СтрокаТаблицы.Параметры.Цена, "ЧДЦ=1"); СтрокаТаблицы.Параметры.Сумма = Строка(Выборка.Валюта) + " " + Строка(Формат(СтрокаТаблицы.Параметры.Сумма, "ЧДЦ=1")); СтрокаТаблицы.Параметры.НомерПП = НомерПП; СтрокаТаблицы.Параметры.НоменклатураНаАнглийском = Выборка.НоменклатураНаАнглийском; СтрокиСДатами = Выборка.Выбрать(); НомерПП = НомерПП + 1; ТабличныйДокумент.Вывести(СтрокаТаблицы); СоответствиеДанныхПоДате = Новый Соответствие; Пока СтрокиСДатами.Следующий() Цикл СтруктураРесурсов = Новый структура("КоличествоУпаковок", СтрокиСДатами.КоличествоУпаковок); СоответствиеДанныхПоДате.Вставить("" + СтрокиСДатами.ДатаПоступления + СтрокиСДатами.Склад, СтруктураРесурсов); КонецЦикла; Для Каждого СтрокаТЗ Из ТЗ Цикл НайденнаяСтруктураРесурсов = СоответствиеДанныхПоДате["" + СтрокаТЗ.ДатаПоступления + СтрокаТЗ.Склад]; СтрокаТаблицыПоДате.Параметры.КоличествоУпаковок = Выборка.КоличествоУпаковок; Если ЗначениеЗаполнено(НайденнаяСтруктураРесурсов) Тогда СтрокаТаблицыПоДате.Параметры.Заполнить(НайденнаяСтруктураРесурсов); КонецЕсли; ТабличныйДокумент.Присоединить(СтрокаТаблицыПоДате); КонецЦикла; ИтогоКоличествоУпаковок = ИтогоКоличествоУпаковок + Выборка.КоличествоУпаковок; ИтогоКоличествоКонтейнеров = ИтогоКоличествоКонтейнеров + Выборка.КоличествоКонтейнеров; ИтогоСумма = ИтогоСумма + Выборка.Сумма; КонецЦикла; |
|||
3
dka80
12.11.19
✎
11:16
|
У тебя в один день может быть несколько поступлений
ТЗ.Свернуть("ДатаПоступления, Склад, Порт, СкладНаАнглийском"); ТЗ.Сортировать("ДатаПоступления, Склад, Порт, СкладНаАнглийском"); |
|||
4
userqwerty
12.11.19
✎
11:18
|
Разобралась. у меня в ТЗ попадало три ДатыПоступления поэтому дублировалась область.
|
|||
5
userqwerty
12.11.19
✎
11:19
|
всем большое спасибо))!!!!!!!!!!!!!!!!!!!!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |