Добрый день подскажите пожалуйста в чем ошибка, есть 2 запроса, необходимо выбрать документы за указанный период, и поместить все на печатную форму, на печатную форму попадает только 1 документ и тот не весь не выходят цена и сумма.
ТабДокумент = Новый ТабличныйДокумент;
ЗапросСсылка=Новый Запрос;
ЗапросСсылка.Текст="ВЫБРАТЬ
| АктСписанияМЗ.Ссылка КАК Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ
|ГДЕ
| АктСписанияМЗ.Проведен = ИСТИНА
| И АктСписанияМЗ.Дата МЕЖДУ &ДатаН И &ДатаК";
Если ЗначениеЗаполнено(ЭтотОбъект.Учреждение) тогда
ЗапросСсылка.Текст=ЗапросСсылка.Текст+"
| И АктСписанияМЗ.Организация = &Учреждение";
КонецЕсли;
Если ЗначениеЗаполнено(ЭтотОбъект.МОЛ) тогда
ЗапросСсылка.Текст=ЗапросСсылка.Текст+"
| И АктСписанияМЗ.ЦМООтправитель = &МОЛ";
КонецЕсли;
ЗапросСсылка.УстановитьПараметр("МОЛ", ЭтотОбъект.Мол);
ЗапросСсылка.УстановитьПараметр("Учреждение", ЭтотОбъект.Учреждение);
ЗапросСсылка.УстановитьПараметр("ДатаН", ЭтотОбъект.ДатаНачало);
ЗапросСсылка.УстановитьПараметр("ДатаК", КонецДня(ЭтотОбъект.ДатаКонец));
Рез=ЗапросСсылка.Выполнить().Выбрать();
Пока Рез.Следующий() цикл
Ссылка=Рез.Ссылка;
КонецЦикла;
Если ЗначениеЗаполнено(Ссылка) тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("МОЛ", ЭтотОбъект.Мол);
Запрос.УстановитьПараметр("Учреждение", ЭтотОбъект.Учреждение);
Запрос.УстановитьПараметр("ДатаН", ЭтотОбъект.ДатаНачало);
Запрос.УстановитьПараметр("ДатаК", КонецДня(ЭтотОбъект.ДатаКонец));
//Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| АктСписанияМЗ.Ссылка КАК Ссылка,
| ЕПСБУ.Ссылка КАК Счет
|ПОМЕСТИТЬ СчетаДокументов
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Ссылка = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка = &ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| АктСписанияМЗ.Ссылка,
| ЕПСБУ.Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Родитель = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка В(&ссылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| АктСписанияМЗ.Ссылка,
| ЕПСБУ.Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Родитель.Родитель = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка = &ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| АктСписанияМЗ.Ссылка,
| ЕПСБУ.Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Родитель.Родитель.Родитель = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка = &ссылка
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.СчетДт, ЗНАЧЕНИЕ(ПланСчетов.ЕПСБУ.ПустаяСсылка)) КАК СчетДт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КПСДт, ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)) КАК КПСДт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КЭКДт, ЗНАЧЕНИЕ(Справочник.КОСГУ.ПустаяСсылка)) КАК КЭКДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КФО КАК КФО,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт, ЗНАЧЕНИЕ(ПланСчетов.ЕПСБУ.ПустаяСсылка)) КАК СчетКт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КПСКт, ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)) КАК КПСКт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КЭККт, ЗНАЧЕНИЕ(Справочник.КОСГУ.ПустаяСсылка)) КАК КЭККт,
| ВЫБОР
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт2 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт3 КАК Справочник.Номенклатура)
| КОНЕЦ КАК Номенклатура,
| ЖурналПроводокЕПСБУДвиженияССубконто.Регистратор КАК Регистратор,
| СУММА(ЖурналПроводокЕПСБУДвиженияССубконто.КоличествоКт) КАК Количество,
| СУММА(ЖурналПроводокЕПСБУДвиженияССубконто.Сумма) КАК Сумма
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(
| ,
| ,
| Регистратор В (&МассивОбъектов)
| И Регистратор ССЫЛКА Документ.АктСписанияМЗ,
| ,
| ) КАК ЖурналПроводокЕПСБУДвиженияССубконто
|ГДЕ
| ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт В
| (ВЫБРАТЬ
| СчетаДокументов.Счет
| ИЗ
| СчетаДокументов КАК СчетаДокументов
| ГДЕ
| СчетаДокументов.Ссылка = ЖурналПроводокЕПСБУДвиженияССубконто.Регистратор)
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт2 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт3 КАК Справочник.Номенклатура)
| КОНЕЦ,
| ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КЭКДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КЭККт,
| ЖурналПроводокЕПСБУДвиженияССубконто.Регистратор,
| ЖурналПроводокЕПСБУДвиженияССубконто.КПСКт,
| ЖурналПроводокЕПСБУДвиженияССубконто.СчетДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КПСДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КФО
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| АктСписанияМЗ.Ссылка КАК Ссылка,
| АктСписанияМЗ.Номер КАК ТекстНомер,
| АктСписанияМЗ.Дата КАК ТекстДата,
| АктСписанияМЗ.Организация КАК Организация,
| АктСписанияМЗ.Организация.НаименованиеПолное КАК НаименованиеОрганизации,
| АктСписанияМЗ.Организация.КодОКПО КАК КодОКПО,
| АктСписанияМЗ.Организация.ИНН КАК ИНН,
| АктСписанияМЗ.Организация.КПП КАК КПП,
| АктСписанияМЗ.ПодразделениеОтправитель КАК ПодразделениеОтправитель,
| АктСписанияМЗ.ПодразделениеОтправитель.Наименование КАК Подразделение,
| АктСписанияМЗ.ЦМООтправитель КАК ЦМООтправитель,
| АктСписанияМЗ.ЦМООтправитель.Сотрудник.Контрагент КАК ЦМО,
| АктСписанияМЗ.ДолжностьПредседательКомиссии КАК ДолжностьПредседателяКомиссии,
| АктСписанияМЗ.ФамилияПредседательКомиссии КАК ФамилияПредседателяКомиссии,
| АктСписанияМЗ.ИмяПредседательКомиссии КАК ИмяПредседателяКомиссии,
| АктСписанияМЗ.ОтчествоПредседательКомиссии КАК ОтчествоПредседателяКомиссии,
| АктСписанияМЗ.НомерПриказа КАК ТекстНомерПриказа,
| АктСписанияМЗ.ДатаПриказа КАК ТекстДатаПриказа,
| АктСписанияМЗ.Руководитель.Контрагент КАК ДиректорСсылка,
| АктСписанияМЗ.ЗаключениеКомиссии КАК ЗаключениеКомиссии,
| АктСписанияМЗ.Материалы.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК НоменклатураСсылка,
| ВЫБОР
| КОГДА АктСписанияМЗ.Материалы.Номенклатура.НаименованиеПолное = """"
| ТОГДА АктСписанияМЗ.Материалы.Номенклатура.Наименование
| ИНАЧЕ АктСписанияМЗ.Материалы.Номенклатура.НаименованиеПолное
| КОНЕЦ КАК НоменклатураПредставление,
| Номенклатура.Наименование КАК НоменклатураНаименование,
| Номенклатура.НаименованиеПолное КАК НоменклатураНаименованиеПолное,
| КоличествоНорма КАК НормаРасхода,
| Количество КАК Количество,
| ПричинаСписания КАК ПричинаСписания,
| ПРЕДСТАВЛЕНИЕ(АктСписанияМЗ.Материалы.Номенклатура.ЕдиницаИзмерения) КАК Единица,
| Номенклатура.Код КАК КодНоменклатуры,
| Номенклатура.НоменклатурныйНомер КАК НоменклатурныйНомерНоменклатуры,
| ВЫБОР
| КОГДА АктСписанияМЗ.Материалы.Номенклатура.НоменклатурныйНомер = """"
| ТОГДА АктСписанияМЗ.Материалы.Номенклатура.Код
| ИНАЧЕ АктСписанияМЗ.Материалы.Номенклатура.НоменклатурныйНомер
| КОНЕЦ КАК НоменклатурныйНомер,
| СчетУчета КАК СчетУчета,
| КПС КАК КПС
| ) КАК Материалы,
| АктСписанияМЗ.СоставКомиссии.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ДолжностьЧленаКомиссии КАК ДолжностьЧленаКомиссии,
| ФамилияЧленаКомиссии КАК ФамилияЧленаКомиссии,
| ИмяЧленаКомиссии КАК ИмяЧленаКомиссии,
| ОтчествоЧленаКомиссии КАК ОтчествоЧленаКомиссии
| ) КАК СоставКомиссии
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ
|ГДЕ
| АктСписанияМЗ.Дата МЕЖДУ &ДатаН И &ДатаК
| И АктСписанияМЗ.Организация = &Учреждение
| И АктСписанияМЗ.ЦМООтправитель = &МОЛ
| И АктСписанияМЗ.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| АктСписанияМЗ.Дата,
| АктСписанияМЗ.Номер,
| НомерСтроки";
//Запрос.УстановитьПараметр("Ссылка", Ссылка);
//Запрос.УстановитьПараметр("МОЛ", ЭтотОбъект.Мол);
//Запрос.УстановитьПараметр("Учреждение", ЭтотОбъект.Учреждение);
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
//Запрос.УстановитьПараметр("ДатаН", ЭтотОбъект.ДатаНачало);
//Запрос.УстановитьПараметр("ДатаК", КонецДня(ЭтотОбъект.ДатаКонец));
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДвиженияДокументов = РезультатЗапроса[1].Выгрузить();
ВыборкаДокументы = РезультатЗапроса[2].Выбрать();
ПоказатьПо теме из базы знаний
- Выборка в запросе из регистра сведений данных на дату из строки запроса. Оптимизация.
- История оптимизации одного большого запроса средствами MSSQL Profiler и 1С
- Запрос стоимости партии на даты документов одним запросом (УТ 10)
- Работа со схемой запроса
- Быстрое перепроведение всех документов за период. Управляемые формы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Вероятнее всего ошибка именно тут. Так как получается, что если в выборке будет несколько документов, то выберете Вы самый последний и печатная форма будет строится по его данным. Поместите конец цикла в самый конец выполнения всех запросов. В таком случае у Вас будет выполняться большой запрос для каждого документа из выборки.
Рез=ЗапросСсылка.Выполнить().Выбрать();
Пока Рез.Следующий() цикл
Ссылка=Рез.Ссылка;
КонецЦикла;
Пока Рез.Следующий() цикл
Ссылка=Рез.Ссылка;
КонецЦикла;
Вероятнее всего ошибка именно тут. Так как получается, что если в выборке будет несколько документов, то выберете Вы самый последний и печатная форма будет строится по его данным. Поместите конец цикла в самый конец выполнения всех запросов. В таком случае у Вас будет выполняться большой запрос для каждого документа из выборки.
вопрос решен на половину, прописал правильное значение параметра
теперь вопрос в следующем нужно что бы на печать выходил только 1 печатная форма в которой будут данные из таблицы всех выбранных документов
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", ЗапросСсылка.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
теперь вопрос в следующем нужно что бы на печать выходил только 1 печатная форма в которой будут данные из таблицы всех выбранных документов
Пока ВыборкаДокументы.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
ОбластьМакетаЗаголовок.Параметры.Заполнить(ВыборкаДокументы);
ДанныеДиректора = Новый Структура("СсылкаНаОбъект, Период, Фамилия, Имя, Отчество",
ВыборкаДокументы.ДиректорСсылка, ВыборкаДокументы.ТекстДата);
Справочники.Контрагенты.ПолучитьДанныеКонтрагента(ДанныеДиректора, Истина);
ДанныеЦМО = Новый Структура("СсылкаНаОбъект, Период, Фамилия, Имя, Отчество",
ВыборкаДокументы.ЦМО, ВыборкаДокументы.ТекстДата);
Справочники.Контрагенты.ПолучитьДанныеКонтрагента(ДанныеЦМО, Истина);
ГлавныйБухгалтер = ОрганизационнаяСтруктураКлиентСервер.ОтветственноеЛицоОрганизации(
Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер, ВыборкаДокументы.Организация,
ВыборкаДокументы.ТекстДата, ВыборкаДокументы.ПодразделениеОтправитель);
ДанныеГлБухгалтера = Новый Структура("СсылкаНаОбъект, Период, Фамилия, Имя, Отчество",
ГлавныйБухгалтер.ОтветственноеЛицоСсылка, ВыборкаДокументы.ТекстДата);
Справочники.Сотрудники.ПолучитьДанныеСотрудника(ДанныеГлБухгалтера, Истина);
ПараметрыОтметкиБухгалтерии = Новый Структура;
ПараметрыОтметкиБухгалтерии.Вставить("Дата", Формат(ВыборкаДокументы.ТекстДата,"ДФ='MMMM yyyy'"));
ПараметрыОтметкиБухгалтерии.Вставить("ФИОГлавныйБухгалтер",
КорреспондентыКлиентСервер.ФИО(ДанныеГлБухгалтера));
Для каждого ТекОбластьКомиссия Из МассивДопОбластейКомиссия Цикл
ТекОбластьКомиссия.Параметры.Заполнить(ПараметрыОтметкиБухгалтерии);
КонецЦикла;
СтрокаКомиссия = "";
ВыборкаКомиссия = ВыборкаДокументы.СоставКомиссии.Выбрать();
ОбластьКомиссия = СформироватьОбластьКомиссия(
ВыборкаДокументы, ВыборкаКомиссия, МассивДопОбластейКомиссия, 3, СтрокаКомиссия, Истина);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Директор", КорреспондентыКлиентСервер.ФИО(ДанныеДиректора, Истина));
СтруктураПараметров.Вставить("МОЛ", "" + ДанныеЦМО.Фамилия + " " + ДанныеЦМО.Имя + " "
+ ДанныеЦМО.Отчество);
СтруктураПараметров.Вставить("ДатаПриказа", ?(ЗначениеЗаполнено(ВыборкаДокументы.ТекстДатаПриказа),
Формат(ВыборкаДокументы.ТекстДатаПриказа, "ДЛФ=DD"),
"_______________"));
СтруктураПараметров.Вставить("НомерПриказа", ?(ЗначениеЗаполнено(ВыборкаДокументы.ТекстНомерПриказа),
СокрЛП(ВыборкаДокументы.ТекстНомерПриказа),
"_______________"));
СтруктураПараметров.Вставить("Номер", РегистрыСведений.НастройкиПечатиПрефиксаНомера
.ПолучитьНомерДляПечатиПоСсылкеИдентификаторуДокумента(
"АктСписанияМЗ", ВыборкаДокументы.ТекстНомер));
СтруктураПараметров.Вставить("Дата", Формат(ВыборкаДокументы.ТекстДата, "ДЛФ=D"));
СтруктураПараметров.Вставить("пДатаЗаголовка1", Формат(ЭтотОбъект.ДатаНачало, "ДЛФ=DD"));
СтруктураПараметров.Вставить("пДатаЗаголовка2", Формат(ЭтотОбъект.ДатаКонец, "ДЛФ=DD"));
//СтруктураПараметров.Вставить("ДатаЗаголовка", Формат(ВыборкаДокументы.ТекстДата, "ДЛФ=DD"));
СтруктураПараметров.Вставить("ЧленыКомиссии", СтрокаКомиссия);
ОбластьМакетаЗаголовок.Параметры.Заполнить(СтруктураПараметров);
ТабДокумент.Вывести(ОбластьМакетаЗаголовок);
ТабДокумент.Вывести(ОбластьМакетаШапка);
ОбластьЗаключение = Новый ТабличныйДокумент;
ВыведеноСтрокЗаключения = ВывестиДлиннуюСтроку(ВыборкаДокументы.ЗаключениеКомиссии,
ОбластьЗаключение,
ОбластьМакетаЗаключение1,
ОбластьМакетаЗаключение2,
"ЗаключениеЯчейка1",
"ЗаключениеЯчейка2");
Для Счетчик = ВыведеноСтрокЗаключения + 1 По 3 Цикл
ПустаяОбластьМакетаЗаключение2 = Макет.ПолучитьОбласть("Заключение2");
ОбластьЗаключение.Вывести(ПустаяОбластьМакетаЗаключение2);
КонецЦикла;
СтрокиДвижений = ДвиженияДокументов.НайтиСтроки(Новый Структура("Регистратор", ВыборкаДокументы.Ссылка));
ТаблицаДвижений = ДвиженияДокументов.Скопировать(СтрокиДвижений);
ВыборкаМатериалы = ВыборкаДокументы.Материалы.Выбрать();
СуммаИтого = 0;
КоличествоИтого = 0;
КоличествоСтрок = ВыборкаМатериалы.Количество();
Пока ВыборкаМатериалы.Следующий() Цикл
ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаМатериалы);
СтруктураПараметров = Новый Структура("Цена, Сумма, СчетДебета, СчетКредита");
Цена = 0;
Сумма = 0;
ЗаполнитьЗначенияСвойств(СтруктураОтбора, ВыборкаМатериалы);
СтруктураОтбора.Номенклатура = ВыборкаМатериалы.НоменклатураСсылка;
СтруктураОтбора.СчетКт = ВыборкаМатериалы.СчетУчета;
СтруктураОтбора.КПСКт = ВыборкаМатериалы.КПС;
ТекущиеДвижения = ТаблицаДвижений.НайтиСтроки(СтруктураОтбора);
Если ТекущиеДвижения.Количество() > 0 Тогда
ТекущееДвижение = ТекущиеДвижения[0];
Если ТекущееДвижение.Количество <> 0 Тогда
Цена = Окр(ТекущееДвижение.Сумма / ТекущееДвижение.Количество, 2);
Иначе
Цена = 0;
КонецЕсли;
Если ВыборкаМатериалы.Количество = ТекущееДвижение.Количество Тогда
Сумма = ТекущееДвижение.Сумма;
ИначеЕсли ВыборкаМатериалы.Количество < ТекущееДвижение.Количество Тогда
Сумма = ВыборкаМатериалы.Количество * Цена;
Иначе
Сумма = 0;
КонецЕсли;
УчтенноеКоличество = Мин(ТекущееДвижение.Количество, ВыборкаМатериалы.Количество);
ТекущееДвижение.Количество = ТекущееДвижение.Количество - УчтенноеКоличество;
ТекущееДвижение.Сумма = ТекущееДвижение.Сумма - Сумма;
Если ЗначениеЗаполнено(ТекущееДвижение.СчетДт) Тогда
СтруктураПараметров.СчетДебета = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета(
ТекущееДвижение.КПСДт, ТекущееДвижение.КФО, ТекущееДвижение.СчетДт, ТекущееДвижение.КЭКДт,,)
КонецЕсли;
СтруктураПараметров.СчетКредита = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета(
ТекущееДвижение.КПСКт, ТекущееДвижение.КФО, ТекущееДвижение.СчетКт, ТекущееДвижение.КЭККт,,);
КонецЕсли;
СтруктураПараметров.Цена = Формат(Цена, "ЧДЦ=2");
СтруктураПараметров.Сумма = Формат(Сумма, "ЧДЦ=2");
ОбластьМакетаСтрока.Параметры.Заполнить(СтруктураПараметров);
Если ВыборкаМатериалы.НомерСтроки <> КоличествоСтрок Тогда
Если Не ТабДокумент.ПроверитьВывод(ОбластьМакетаСтрока) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
КонецЕсли;
Иначе
Области = Новый Массив;
Области.Добавить(ОбластьМакетаСтрока);
Области.Добавить(ОбластьМакетаИтого);
Области.Добавить(ОбластьМакетаПодвал);
Области.Добавить(ОбластьЗаключение);
Области.Добавить(ОбластьКомиссия);
Области.Добавить(ОбластьМакетаДата);
Если Не ТабДокумент.ПроверитьВывод(ОбластьМакетаСтрока) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
КонецЕсли;
КонецЕсли;
СуммаИтого = СуммаИтого + Сумма;
КоличествоИтого = КоличествоИтого + ВыборкаМатериалы.Количество;
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("КоличествоИтого", КоличествоИтого);
СтруктураПараметров.Вставить("СуммаИтого", Формат(СуммаИтого, "ЧДЦ=2"));
СтруктураПараметров.Вставить("СуммаИтогоПрописью",
ОбщегоНазначенияБГУ.СформироватьСуммуПрописью(СуммаИтого, Неопределено));
ОбластьМакетаИтого.Параметры.Заполнить(СтруктураПараметров);
ТабДокумент.Вывести(ОбластьМакетаИтого);
ОбластьМакетаПодвал.Параметры.Заполнить(СтруктураПараметров);
ТабДокумент.Вывести(ОбластьМакетаПодвал);
ТабДокумент.Вывести(ОбластьЗаключение);
МассивОбластейПроверки = Новый Массив;
МассивОбластейПроверки.Добавить(ОбластьКомиссия);
МассивОбластейПроверки.Добавить(ОбластьМакетаДата);
Если Не ТабДокумент.ПроверитьВывод(МассивОбластейПроверки) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДокумент.Вывести(ОбластьКомиссия);
ТабДокумент.Вывести(ОбластьМакетаДата);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент,
НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
Для каждого ТекДвижение Из СтрокиДвижений Цикл
ДвиженияДокументов.Удалить(ТекДвижение);
КонецЦикла;
КонецЦикла;
Показать
(8)Выберите в разных запросах - отдельно шапку документов, отдельно данные табличных частей, чтобы в одном запросе все строки табличной части Материалов всех отбираемых документов возвращались сразу.
У вас не рассчитана процедура печати на печать нескольких документов, ее надо переделывать.
У вас не рассчитана процедура печати на печать нескольких документов, ее надо переделывать.
Табличная часть подтягивается, но цена, сумма, причина списания СчетДебета СчетКкредит не выходит, прошу помочь.
Функция ПечатьАкта230(МассивОбъектов, ОбъектыПечати, ИмяМакета)
ТабДокумент = Новый ТабличныйДокумент;
ЗапросСсылка=Новый Запрос;
ЗапросСсылка.Текст="ВЫБРАТЬ
| АктСписанияМЗ.Ссылка КАК Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ
|ГДЕ
| АктСписанияМЗ.Проведен = ИСТИНА
| И АктСписанияМЗ.Дата МЕЖДУ &ДатаН И &ДатаК";
Если ЗначениеЗаполнено(ЭтотОбъект.Учреждение) тогда
ЗапросСсылка.Текст=ЗапросСсылка.Текст+"
| И АктСписанияМЗ.Организация = &Учреждение";
КонецЕсли;
Если ЗначениеЗаполнено(ЭтотОбъект.МОЛ) тогда
ЗапросСсылка.Текст=ЗапросСсылка.Текст+"
| И АктСписанияМЗ.ЦМООтправитель = &МОЛ";
КонецЕсли;
ЗапросСсылка.УстановитьПараметр("МОЛ", ЭтотОбъект.Мол);
ЗапросСсылка.УстановитьПараметр("Учреждение", ЭтотОбъект.Учреждение);
ЗапросСсылка.УстановитьПараметр("ДатаН", ЭтотОбъект.ДатаНачало);
ЗапросСсылка.УстановитьПараметр("ДатаК", КонецДня(ЭтотОбъект.ДатаКонец));
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", ЗапросСсылка.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
//Запрос.УстановитьПараметр("МассивОбъектов", Ссылка);
Запрос.УстановитьПараметр("МОЛ", ЭтотОбъект.Мол);
Запрос.УстановитьПараметр("Учреждение", ЭтотОбъект.Учреждение);
Запрос.УстановитьПараметр("ДатаН", ЭтотОбъект.ДатаНачало);
Запрос.УстановитьПараметр("ДатаК", КонецДня(ЭтотОбъект.ДатаКонец));
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| АктСписанияМЗ.Ссылка КАК Ссылка,
| ЕПСБУ.Ссылка КАК Счет
|ПОМЕСТИТЬ СчетаДокументов
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Ссылка = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| АктСписанияМЗ.Ссылка,
| ЕПСБУ.Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Родитель = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| АктСписанияМЗ.Ссылка,
| ЕПСБУ.Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Родитель.Родитель = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| АктСписанияМЗ.Ссылка,
| ЕПСБУ.Ссылка
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ,
| ПланСчетов.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Родитель.Родитель.Родитель = АктСписанияМЗ.СчетУчета
| И ЕПСБУ.ЭлементГруппа = ЛОЖЬ
| И АктСписанияМЗ.Ссылка В(&МассивОбъектов)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.СчетДт, ЗНАЧЕНИЕ(ПланСчетов.ЕПСБУ.ПустаяСсылка)) КАК СчетДт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КПСДт, ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)) КАК КПСДт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КЭКДт, ЗНАЧЕНИЕ(Справочник.КОСГУ.ПустаяСсылка)) КАК КЭКДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КФО КАК КФО,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт, ЗНАЧЕНИЕ(ПланСчетов.ЕПСБУ.ПустаяСсылка)) КАК СчетКт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КПСКт, ЗНАЧЕНИЕ(Справочник.КлассификационныеПризнакиСчетов.ПустаяСсылка)) КАК КПСКт,
| ЕСТЬNULL(ЖурналПроводокЕПСБУДвиженияССубконто.КЭККт, ЗНАЧЕНИЕ(Справочник.КОСГУ.ПустаяСсылка)) КАК КЭККт,
| ВЫБОР
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт2 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт3 КАК Справочник.Номенклатура)
| КОНЕЦ КАК Номенклатура,
| ЖурналПроводокЕПСБУДвиженияССубконто.Регистратор КАК Регистратор,
| СУММА(ЖурналПроводокЕПСБУДвиженияССубконто.КоличествоКт) КАК Количество,
| СУММА(ЖурналПроводокЕПСБУДвиженияССубконто.Сумма) КАК Сумма
|ИЗ
| РегистрБухгалтерии.ЖурналПроводокЕПСБУ.ДвиженияССубконто(
| ,
| ,
| Регистратор В (&МассивОбъектов)
| И Регистратор ССЫЛКА Документ.АктСписанияМЗ,
| ,
| ) КАК ЖурналПроводокЕПСБУДвиженияССубконто
|ГДЕ
| ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт В
| (ВЫБРАТЬ
| СчетаДокументов.Счет
| ИЗ
| СчетаДокументов КАК СчетаДокументов
| ГДЕ
| СчетаДокументов.Ссылка = ЖурналПроводокЕПСБУДвиженияССубконто.Регистратор)
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт2 КАК Справочник.Номенклатура)
| КОГДА ЖурналПроводокЕПСБУДвиженияССубконто.ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Номенклатура)
| ТОГДА ВЫРАЗИТЬ(ЖурналПроводокЕПСБУДвиженияССубконто.СубконтоКт3 КАК Справочник.Номенклатура)
| КОНЕЦ,
| ЖурналПроводокЕПСБУДвиженияССубконто.СчетКт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КЭКДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КЭККт,
| ЖурналПроводокЕПСБУДвиженияССубконто.Регистратор,
| ЖурналПроводокЕПСБУДвиженияССубконто.КПСКт,
| ЖурналПроводокЕПСБУДвиженияССубконто.СчетДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КПСДт,
| ЖурналПроводокЕПСБУДвиженияССубконто.КФО
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| АктСписанияМЗ.Ссылка КАК Ссылка,
| АктСписанияМЗ.Номер КАК ТекстНомер,
| АктСписанияМЗ.Дата КАК ТекстДата,
| АктСписанияМЗ.Организация КАК Организация,
| АктСписанияМЗ.Организация.НаименованиеПолное КАК НаименованиеОрганизации,
| АктСписанияМЗ.Организация.КодОКПО КАК КодОКПО,
| АктСписанияМЗ.Организация.ИНН КАК ИНН,
| АктСписанияМЗ.Организация.КПП КАК КПП,
| АктСписанияМЗ.ПодразделениеОтправитель КАК ПодразделениеОтправитель,
| АктСписанияМЗ.ПодразделениеОтправитель.Наименование КАК Подразделение,
| АктСписанияМЗ.ЦМООтправитель КАК ЦМООтправитель,
| АктСписанияМЗ.ЦМООтправитель.Сотрудник.Контрагент КАК ЦМО,
| АктСписанияМЗ.ДолжностьПредседательКомиссии КАК ДолжностьПредседателяКомиссии,
| АктСписанияМЗ.ФамилияПредседательКомиссии КАК ФамилияПредседателяКомиссии,
| АктСписанияМЗ.ИмяПредседательКомиссии КАК ИмяПредседателяКомиссии,
| АктСписанияМЗ.ОтчествоПредседательКомиссии КАК ОтчествоПредседателяКомиссии,
| АктСписанияМЗ.НомерПриказа КАК ТекстНомерПриказа,
| АктСписанияМЗ.ДатаПриказа КАК ТекстДатаПриказа,
| АктСписанияМЗ.Руководитель.Контрагент КАК ДиректорСсылка,
| АктСписанияМЗ.ЗаключениеКомиссии КАК ЗаключениеКомиссии,
| АктСписанияМЗ.Материалы.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК НоменклатураСсылка,
| ВЫБОР
| КОГДА АктСписанияМЗ.Материалы.Номенклатура.НаименованиеПолное = """"
| ТОГДА АктСписанияМЗ.Материалы.Номенклатура.Наименование
| ИНАЧЕ АктСписанияМЗ.Материалы.Номенклатура.НаименованиеПолное
| КОНЕЦ КАК НоменклатураПредставление,
| Номенклатура.Наименование КАК НоменклатураНаименование,
| Номенклатура.НаименованиеПолное КАК НоменклатураНаименованиеПолное,
| КоличествоНорма КАК НормаРасхода,
| Количество КАК Количество,
| ПричинаСписания КАК ПричинаСписания,
| ПРЕДСТАВЛЕНИЕ(АктСписанияМЗ.Материалы.Номенклатура.ЕдиницаИзмерения) КАК Единица,
| Номенклатура.Код КАК КодНоменклатуры,
| Номенклатура.НоменклатурныйНомер КАК НоменклатурныйНомерНоменклатуры,
| ВЫБОР
| КОГДА АктСписанияМЗ.Материалы.Номенклатура.НоменклатурныйНомер = """"
| ТОГДА АктСписанияМЗ.Материалы.Номенклатура.Код
| ИНАЧЕ АктСписанияМЗ.Материалы.Номенклатура.НоменклатурныйНомер
| КОНЕЦ КАК НоменклатурныйНомер,
| СчетУчета КАК СчетУчета,
| КПС КАК КПС
| ) КАК Материалы,
| АктСписанияМЗ.СоставКомиссии.(
| Ссылка КАК Ссылка,
| НомерСтроки КАК НомерСтроки,
| ДолжностьЧленаКомиссии КАК ДолжностьЧленаКомиссии,
| ФамилияЧленаКомиссии КАК ФамилияЧленаКомиссии,
| ИмяЧленаКомиссии КАК ИмяЧленаКомиссии,
| ОтчествоЧленаКомиссии КАК ОтчествоЧленаКомиссии
| ) КАК СоставКомиссии
|ИЗ
| Документ.АктСписанияМЗ КАК АктСписанияМЗ
|ГДЕ
| АктСписанияМЗ.Дата МЕЖДУ &ДатаН И &ДатаК
| И АктСписанияМЗ.Организация = &Учреждение
| И АктСписанияМЗ.ЦМООтправитель = &МОЛ
| И АктСписанияМЗ.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| АктСписанияМЗ.Дата,
| АктСписанияМЗ.Номер,
| НомерСтроки
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.НоменклатураПредставление КАК НоменклатураПредставление,
| ВложенныйЗапрос.НормаРасхода КАК НормаРасхода,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.ПричинаСписания КАК ПричинаСписания,
| ВложенныйЗапрос.Единица КАК Единица,
| ВложенныйЗапрос.КодНаименование КАК КодНаименование,
| ВложенныйЗапрос.НоменклатурныйНомерНоменклатуры КАК НоменклатурныйНомерНоменклатуры,
| ВложенныйЗапрос.НоменклатурныйНомер КАК НоменклатурныйНомер,
| ВложенныйЗапрос.СчетУчета КАК СчетУчета,
| ВложенныйЗапрос.КПС КАК КПС,
| ВложенныйЗапрос.НоменклатураСсылка КАК НоменклатураСсылка,
| ВложенныйЗапрос.НоменклатураНаименование КАК НоменклатураНаименование,
| ВложенныйЗапрос.НоменклатураНаименованиеПолное КАК НоменклатураНаименованиеПолное
|ИЗ
| (ВЫБРАТЬ
| АктСписанияМЗМатериалы.Ссылка КАК Ссылка,
| АктСписанияМЗМатериалы.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА АктСписанияМЗМатериалы.Номенклатура.НаименованиеПолное = """"
| ТОГДА АктСписанияМЗМатериалы.Номенклатура.Наименование
| ИНАЧЕ АктСписанияМЗМатериалы.Номенклатура.НаименованиеПолное
| КОНЕЦ КАК НоменклатураПредставление,
| АктСписанияМЗМатериалы.КоличествоНорма КАК НормаРасхода,
| АктСписанияМЗМатериалы.Количество КАК Количество,
| АктСписанияМЗМатериалы.ПричинаСписания КАК ПричинаСписания,
| ПРЕДСТАВЛЕНИЕ(АктСписанияМЗМатериалы.Номенклатура.ЕдиницаИзмерения) КАК Единица,
| АктСписанияМЗМатериалы.Номенклатура.Код КАК КодНаименование,
| АктСписанияМЗМатериалы.Номенклатура.НоменклатурныйНомер КАК НоменклатурныйНомерНоменклатуры,
| ВЫБОР
| КОГДА АктСписанияМЗМатериалы.Номенклатура.НоменклатурныйНомер = """"
| ТОГДА АктСписанияМЗМатериалы.Номенклатура.Код
| ИНАЧЕ АктСписанияМЗМатериалы.Номенклатура.НоменклатурныйНомер
| КОНЕЦ КАК НоменклатурныйНомер,
| АктСписанияМЗМатериалы.Номенклатура.СчетУчета КАК СчетУчета,
| АктСписанияМЗМатериалы.КПС КАК КПС,
| АктСписанияМЗМатериалы.Номенклатура КАК НоменклатураСсылка,
| АктСписанияМЗМатериалы.Номенклатура.Наименование КАК НоменклатураНаименование,
| АктСписанияМЗМатериалы.Номенклатура.НаименованиеПолное КАК НоменклатураНаименованиеПолное
| ИЗ
| Документ.АктСписанияМЗ.Материалы КАК АктСписанияМЗМатериалы
| ГДЕ
| АктСписанияМЗМатериалы.Ссылка В(&МассивОбъектов)) КАК ВложенныйЗапрос";
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДвиженияДокументов = РезультатЗапроса[1].Выгрузить();
ВыборкаДокументы = РезультатЗапроса[2].Выбрать();
ВыборкаМатериалы = РезультатЗапроса[3].выбрать();
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.Автомасштаб = Истина;
ТабДокумент.ПолеСлева = 5;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ИмяПараметровПечати = "ПараметрыПечати_АктСписанияМЗ_0504230";
Макет = ПолучитьМакет("ПФ_MXL_АктСписанияМЗ0504230_52н");;
ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаИтого = Макет.ПолучитьОбласть("Итого");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьМакетаКомиссия = Макет.ПолучитьОбласть("Комиссия");
ОбластьМакетаДата = Макет.ПолучитьОбласть("Дата");
ОбластьМакетаЗаключение1 = Макет.ПолучитьОбласть("Заключение1");
ОбластьМакетаЗаключение2 = Макет.ПолучитьОбласть("Заключение2");
ЕстьДопОбластиКомиссия = Макет.Области.Найти("Комиссия1") <> Неопределено;
МассивДопОбластейКомиссия = Новый Массив;
Если ЕстьДопОбластиКомиссия Тогда
МассивДопОбластейКомиссия.Добавить(Макет.ПолучитьОбласть("Комиссия1"));
МассивДопОбластейКомиссия.Добавить(Макет.ПолучитьОбласть("Комиссия2"));
МассивДопОбластейКомиссия.Добавить(Макет.ПолучитьОбласть("Комиссия3"));
МассивДопОбластейКомиссия.Добавить(Макет.ПолучитьОбласть("Комиссия4"));
МассивДопОбластейКомиссия.Добавить(ОбластьМакетаКомиссия);
Иначе
МассивДопОбластейКомиссия.Добавить(ОбластьМакетаКомиссия);
КонецЕсли;
ПервыйДокумент = Истина;
СтруктураОтбора = Новый Структура("Номенклатура, СчетКт, КПСКт");
ВыборкаДокументы.Следующий();
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
ОбластьМакетаЗаголовок.Параметры.Заполнить(ВыборкаДокументы);
ДанныеДиректора = Новый Структура("СсылкаНаОбъект, Период, Фамилия, Имя, Отчество",
ВыборкаДокументы.ДиректорСсылка, ВыборкаДокументы.ТекстДата);
Справочники.Контрагенты.ПолучитьДанныеКонтрагента(ДанныеДиректора, Истина);
ДанныеЦМО = Новый Структура("СсылкаНаОбъект, Период, Фамилия, Имя, Отчество",
ВыборкаДокументы.ЦМО, ВыборкаДокументы.ТекстДата);
Справочники.Контрагенты.ПолучитьДанныеКонтрагента(ДанныеЦМО, Истина);
ГлавныйБухгалтер = ОрганизационнаяСтруктураКлиентСервер.ОтветственноеЛицоОрганизации(
Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер, ВыборкаДокументы.Организация,
ВыборкаДокументы.ТекстДата, ВыборкаДокументы.ПодразделениеОтправитель);
ДанныеГлБухгалтера = Новый Структура("СсылкаНаОбъект, Период, Фамилия, Имя, Отчество",
ГлавныйБухгалтер.ОтветственноеЛицоСсылка, ВыборкаДокументы.ТекстДата);
Справочники.Сотрудники.ПолучитьДанныеСотрудника(ДанныеГлБухгалтера, Истина);
ПараметрыОтметкиБухгалтерии = Новый Структура;
ПараметрыОтметкиБухгалтерии.Вставить("Дата", Формат(ВыборкаДокументы.ТекстДата,"ДФ='MMMM yyyy'"));
ПараметрыОтметкиБухгалтерии.Вставить("ФИОГлавныйБухгалтер",
КорреспондентыКлиентСервер.ФИО(ДанныеГлБухгалтера));
Для каждого ТекОбластьКомиссия Из МассивДопОбластейКомиссия Цикл
ТекОбластьКомиссия.Параметры.Заполнить(ПараметрыОтметкиБухгалтерии);
КонецЦикла;
СтрокаКомиссия = "";
ВыборкаКомиссия = ВыборкаДокументы.СоставКомиссии.Выбрать();
ОбластьКомиссия = СформироватьОбластьКомиссия(
ВыборкаДокументы, ВыборкаКомиссия, МассивДопОбластейКомиссия, 3, СтрокаКомиссия, Истина);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Директор", КорреспондентыКлиентСервер.ФИО(ДанныеДиректора, Истина));
СтруктураПараметров.Вставить("МОЛ", "" + ДанныеЦМО.Фамилия + " " + ДанныеЦМО.Имя + " "
+ ДанныеЦМО.Отчество);
СтруктураПараметров.Вставить("ДатаПриказа", ?(ЗначениеЗаполнено(ВыборкаДокументы.ТекстДатаПриказа),
Формат(ВыборкаДокументы.ТекстДатаПриказа, "ДЛФ=DD"),
"_______________"));
СтруктураПараметров.Вставить("НомерПриказа", ?(ЗначениеЗаполнено(ВыборкаДокументы.ТекстНомерПриказа),
СокрЛП(ВыборкаДокументы.ТекстНомерПриказа),
"_______________"));
СтруктураПараметров.Вставить("Номер", РегистрыСведений.НастройкиПечатиПрефиксаНомера
.ПолучитьНомерДляПечатиПоСсылкеИдентификаторуДокумента(
"АктСписанияМЗ", ВыборкаДокументы.ТекстНомер));
СтруктураПараметров.Вставить("Дата", Формат(ВыборкаДокументы.ТекстДата, "ДЛФ=D"));
СтруктураПараметров.Вставить("ДатаЗаголовка", Формат(ВыборкаДокументы.ТекстДата, "ДЛФ=DD"));
СтруктураПараметров.Вставить("ЧленыКомиссии", СтрокаКомиссия);
ОбластьМакетаЗаголовок.Параметры.Заполнить(СтруктураПараметров);
ТабДокумент.Вывести(ОбластьМакетаЗаголовок);
ТабДокумент.Вывести(ОбластьМакетаШапка);
ОбластьЗаключение = Новый ТабличныйДокумент;
ВыведеноСтрокЗаключения = ВывестиДлиннуюСтроку(ВыборкаДокументы.ЗаключениеКомиссии,
ОбластьЗаключение,
ОбластьМакетаЗаключение1,
ОбластьМакетаЗаключение2,
"ЗаключениеЯчейка1",
"ЗаключениеЯчейка2");
Для Счетчик = ВыведеноСтрокЗаключения + 1 По 3 Цикл
ПустаяОбластьМакетаЗаключение2 = Макет.ПолучитьОбласть("Заключение2");
ОбластьЗаключение.Вывести(ПустаяОбластьМакетаЗаключение2);
КонецЦикла;
//Ошибка начинается отсюдаа
//СтрокиДвижений = ДвиженияДокументов.НайтиСтроки(Новый Структура("Регистратор", ВыборкаДокументы.Ссылка));
ТаблицаДвижений = ДвиженияДокументов.Скопировать();
//ВыборкаМатериалы = ВыборкаДокументы.Материалы.Выбрать();
СуммаИтого = 0;
КоличествоИтого = 0;
КоличествоСтрок = ВыборкаМатериалы.Количество();
Пока ВыборкаМатериалы.Следующий() Цикл
ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаМатериалы);
СтруктураПараметров = Новый Структура("Цена, Сумма, СчетДебета, СчетКредита");
Цена = 0;
Сумма = 0;
ЗаполнитьЗначенияСвойств(СтруктураОтбора, ВыборкаМатериалы);
СтруктураОтбора.Номенклатура = ВыборкаМатериалы.НоменклатураСсылка;
СтруктураОтбора.СчетКт = ВыборкаМатериалы.СчетУчета;
СтруктураОтбора.КПСКт = ВыборкаМатериалы.КПС;
//Ошибка начинается отсюдаа-----------------------------------------------------------------------------------------------
ТекущиеДвижения = ТаблицаДвижений.НайтиСтроки(СтруктураОтбора);
Если ТекущиеДвижения.Количество() > 0 Тогда
ТекущееДвижение = ТекущиеДвижения[0];
Если ТекущееДвижение.Количество <> 0 Тогда
Цена = Окр(ТекущееДвижение.Сумма / ТекущееДвижение.Количество, 2);
Иначе
Цена = 0;
КонецЕсли;
Если ВыборкаМатериалы.Количество = ТекущееДвижение.Количество Тогда
Сумма = ТекущееДвижение.Сумма;
ИначеЕсли ВыборкаМатериалы.Количество < ТекущееДвижение.Количество Тогда
Сумма = ВыборкаМатериалы.Количество * Цена;
Иначе
Сумма = 0;
КонецЕсли;
УчтенноеКоличество = Мин(ТекущееДвижение.Количество, ВыборкаМатериалы.Количество);
ТекущееДвижение.Количество = ТекущееДвижение.Количество - УчтенноеКоличество;
ТекущееДвижение.Сумма = ТекущееДвижение.Сумма - Сумма;
Если ЗначениеЗаполнено(ТекущееДвижение.СчетДт) Тогда
СтруктураПараметров.СчетДебета = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета(
ТекущееДвижение.КПСДт, ТекущееДвижение.КФО, ТекущееДвижение.СчетДт, ТекущееДвижение.КЭКДт,,)
КонецЕсли;
СтруктураПараметров.СчетКредита = УправлениеПечатьюБГУ.ПредставлениеРабочегоСчета(
ТекущееДвижение.КПСКт, ТекущееДвижение.КФО, ТекущееДвижение.СчетКт, ТекущееДвижение.КЭККт,,);
КонецЕсли;
СтруктураПараметров.Цена = Формат(Цена, "ЧДЦ=2");
СтруктураПараметров.Сумма = Формат(Сумма, "ЧДЦ=2");
ОбластьМакетаСтрока.Параметры.Заполнить(СтруктураПараметров);
Если ВыборкаМатериалы.НомерСтроки <> КоличествоСтрок Тогда
Если Не ТабДокумент.ПроверитьВывод(ОбластьМакетаСтрока) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
КонецЕсли;
Иначе
Области = Новый Массив;
Области.Добавить(ОбластьМакетаСтрока);
Области.Добавить(ОбластьМакетаИтого);
Области.Добавить(ОбластьМакетаПодвал);
Области.Добавить(ОбластьЗаключение);
Области.Добавить(ОбластьКомиссия);
Области.Добавить(ОбластьМакетаДата);
Если Не ТабДокумент.ПроверитьВывод(ОбластьМакетаСтрока) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаШапка);
КонецЕсли;
КонецЕсли;
СуммаИтого = СуммаИтого + Сумма;
КоличествоИтого = КоличествоИтого + ВыборкаМатериалы.Количество;
ТабДокумент.Вывести(ОбластьМакетаСтрока);
КонецЦикла;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("КоличествоИтого", КоличествоИтого);
СтруктураПараметров.Вставить("СуммаИтого", Формат(СуммаИтого, "ЧДЦ=2"));
СтруктураПараметров.Вставить("СуммаИтогоПрописью",
ОбщегоНазначенияБГУ.СформироватьСуммуПрописью(СуммаИтого, Неопределено));
ОбластьМакетаИтого.Параметры.Заполнить(СтруктураПараметров);
ТабДокумент.Вывести(ОбластьМакетаИтого);
ОбластьМакетаПодвал.Параметры.Заполнить(СтруктураПараметров);
ТабДокумент.Вывести(ОбластьМакетаПодвал);
ТабДокумент.Вывести(ОбластьЗаключение);
МассивОбластейПроверки = Новый Массив;
МассивОбластейПроверки.Добавить(ОбластьКомиссия);
МассивОбластейПроверки.Добавить(ОбластьМакетаДата);
Если Не ТабДокумент.ПроверитьВывод(МассивОбластейПроверки) Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДокумент.Вывести(ОбластьКомиссия);
ТабДокумент.Вывести(ОбластьМакетаДата);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент,
НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
//Для каждого ТекДвижение Из ТаблицаДвижений Цикл
//
// ДвиженияДокументов.Удалить(ТекДвижение);
//
//КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот