Как в excel программно объединить ячейки 1с

   4uvak

13.07.10 — 08:39

Здравствуйте помогите разобраться, необходимо чтобы из 1с выгружался документ, но при форматировании возникла проблема с объединением ячеек.

При проверке на ошибки ругается на код

Лист.Range(Лист.Cells(4,1),Лист.Cells(6,1)).Select;

Лист.Selection.Merge;

и выдает ошибку

{Форма.Форма(53,52)}: Неопознанный оператор

   Лист.Range(Лист.Cells(4,1),Лист.Cells(6,1)).Select<<?>>;

{Форма.Форма(54,22)}: Неопознанный оператор

Подскажите что не правильно и как с этим бороться

   Лист.Selection.Merge<<?>>;

   RomaH

1 — 13.07.10 — 08:49

Лист.Range(Лист.Cells(4,1),Лист.Cells(6,1)).Select;
Лист.Selection.Merge;

ну если на селект ругается — то:
Лист.Range(Лист.Cells(4,1),Лист.Cells(6,1)).Merge;

Как программно объединить ячейки в табличном документе 1С?

Для объединения ячеек предназначена функция Объединить(). Функция применяется к прямоугольной область табличного документа.

Пример

В результате формирования отчета была получена таблица.

Товар Склад Остаток
Яблоки Склад 1 6
Яблоки Склад 2 8
Яблоки Склад 3 9
Груши Склад 1 7
Груши Склад 2 2

Необходимо объединить ячейки с одинаковыми товарами.

ОбъединениеНачало=2;
Для Строка=2 По ПоследняяСтрока Цикл
Если ТабДок.Область(«R»+Строка+«C1»).Текст=ТабДок.Область(«R»+Строка(Строка1)+«C1»).Текст
ИЛИ ОбъединениеНачало=Строка ТогдаПродолжить;
Иначе
ТабДок.Область(«R»+ОбъединениеНачало+«C1»+«:»+«R»+Строка(Строка1)+«C1»).Объединить();
ОбъединениеНачало=Строка;
КонецЕсли;
КонецЦикла;

В результате получим следующую таблицу.

Товар Склад Остаток
Яблоки Склад 1 6
Склад 2 8
Склад 3 9
Груши Склад 1 7
Склад 2 2

Коротко о том, что мы сделали.

  1. Создаем цикл, который будет обходить строки табличного документа со второй (заголовок нам не нужен) по последнюю. Переменную ПоследняяСтрока нужно каким-то образом рассчитать.
  2. Переменная ОбъединениеНачало содержит номер строки, с которой нужно будет начать объединение. Первоначально этот номер равен номеру строки начала обхода таблицы.
  3. Обходим последовательно каждую строку табличного документа. При этом проверяем, равен ли текст текущей строки и столбца 1 тексту предыдущей строки того же столбца. Если равно, продолжаем цикл.
  4. Если текст отличается от предыдущей строки, значит объединяем ячейки в первой колонке, начиная с ячейки начала объединения, по последнюю с тем же значением.
  5. После объединения меняем значение переменной НачалоОбъединения, чтобы следующее объединение начиналось уже со следующей строки.

Цитата: LexaK от 01 фев 2021, 11:31
да в общем, в правильном направлении двигаетесь.
вот описание из СП

Цитировать
ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
Объединить (Merge)
Синтаксис:
Объединить()
Описание:
Объединяет ячейки области.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
Область = ТабДок.Область(2,2,3,3);
Область.Объединить();

а что конкретно не получается-то? как ошибки выглядят? в чем они проявляются?

Само объединение не происходит,полностью выводит печатную форму без объединения нужных ячеек…
Есть мысли создать вертикальную область и ее сцепить

Добавлено: 02 фев 2021, 10:08


Функция ПечатьОтчетаКомитенту(МассивОбъектов, ОбъектыПечати)


УстановитьПривилегированныйРежим(Истина);

ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОтчетКомитентуОПродажах_ОтчетКомитентуОПродажах";

ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
КонецЕсли;
ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;

Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов", ДополнительнаяКолонкаПечатныхФормДокументов);

Запрос.Текст =
"ВЫБРАТЬ
| ТЧПоставщики.Ссылка КАК Ссылка,
| ТЧПоставщики.НомерСтроки КАК НомерСтроки,
| ТЧПоставщики.КлючСтроки КАК КлючСтроки,
| ТЧПоставщики.Поставщик КАК Поставщик,
| ТЧПоставщики.Партия КАК Партия,
| ДокПоступления.Дата КАК ДатаПартии,
| ВЫБОР
| КОГДА НЕ СчетФактураПолученный.Ссылка ЕСТЬ NULL
| ТОГДА СчетФактураПолученный.Ссылка.ДатаВходящегоДокумента
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаВходящегоСчетаФактуры,
| ВЫБОР
| КОГДА НЕ СчетФактураПолученный.Ссылка ЕСТЬ NULL
| ТОГДА СчетФактураПолученный.Ссылка.НомерВходящегоДокумента
| ИНАЧЕ """"
| КОНЕЦ КАК НомерВходящегоСчетаФактуры,
| ЕСТЬNULL(ДокПоступления.ДатаВходящегоДокумента, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаВходящегоДокумента,
| ЕСТЬNULL(ДокПоступления.НомерВходящегоДокумента, """") КАК НомерВходящегоДокумента,
| ТЧПоставщики.СчетФактура КАК СчетФактураВыданный,
| ВЫБОР
| КОГДА ТЧПоставщики.ПолученСФ
| ТОГДА ЕСТЬNULL(ТЧПоставщики.СчетФактура.Дата, ТЧПоставщики.ДатаСФ)
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаВыданногоСчетаФактуры,
| ВЫБОР
| КОГДА ТЧПоставщики.ПолученСФ
| ТОГДА ЕСТЬNULL(ТЧПоставщики.СчетФактура.Номер, """")
| ИНАЧЕ """"
| КОНЕЦ КАК НомерВыданногоСчетаФактуры
|ПОМЕСТИТЬ ВТ_РеквизитыПартий
|ИЗ
| Документ.ОтчетКомитентуОПродажах.Поставщики КАК ТЧПоставщики
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ДокПоступления
| ПО ТЧПоставщики.Партия = ДокПоступления.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученный
| ПО (ДокПоступления.Ссылка = СчетФактураПолученный.ДокументОснование)
|ГДЕ
| ТЧПоставщики.Ссылка В(&МассивОбъектов)
| И ТЧПоставщики.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОЗакупках)
|
|ИНДЕКСИРОВАТЬ ПО
| ТЧПоставщики.Ссылка,
| ТЧПоставщики.КлючСтроки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СчетФактураВыданныйДокументыОснования.Ссылка КАК Ссылка,
| ОтчетКомитентуОПродажахТовары.ДокументРасчетов КАК ДокументРасчетов,
| СчетФактураВыданныйДокументыОснования.Ссылка.Дата КАК Дата,
| СчетФактураВыданныйДокументыОснования.Ссылка.Номер КАК Номер
|ПОМЕСТИТЬ ТаблицаСчетовФактур
|ИЗ
| Документ.ОтчетКомитентуОПродажах.Товары КАК ОтчетКомитентуОПродажахТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
| ПО ОтчетКомитентуОПродажахТовары.ДокументРасчетов = СчетФактураВыданныйДокументыОснования.ДокументОснование
|ГДЕ
| ОтчетКомитентуОПродажахТовары.Ссылка В(&МассивОбъектов)
| И ОтчетКомитентуОПродажахТовары.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОПродажах)
| И НЕ СчетФактураВыданныйДокументыОснования.Ссылка.ПометкаУдаления
|
|СГРУППИРОВАТЬ ПО
| СчетФактураВыданныйДокументыОснования.Ссылка,
| ОтчетКомитентуОПродажахТовары.ДокументРасчетов,
| СчетФактураВыданныйДокументыОснования.Ссылка.Дата,
| СчетФактураВыданныйДокументыОснования.Ссылка.Номер
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетФактураВыданный.Ссылка,
| ОтчетКомитентуОПродажахТовары.ДокументРасчетов,
| СчетФактураВыданный.Дата,
| СчетФактураВыданный.Номер
|ИЗ
| Документ.ОтчетКомитентуОПродажах.Товары КАК ОтчетКомитентуОПродажахТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
| ПО ОтчетКомитентуОПродажахТовары.ДокументРасчетов = СчетФактураВыданный.Ссылка
|ГДЕ
| ОтчетКомитентуОПродажахТовары.Ссылка В(&МассивОбъектов)
| И ОтчетКомитентуОПродажахТовары.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОПродажах)
| И НЕ СчетФактураВыданный.Ссылка ЕСТЬ NULL
| И НЕ СчетФактураВыданный.ПометкаУдаления
|
|СГРУППИРОВАТЬ ПО
| ОтчетКомитентуОПродажахТовары.ДокументРасчетов,
| СчетФактураВыданный.Ссылка,
| СчетФактураВыданный.Дата,
| СчетФактураВыданный.Номер
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОтчетКомитентуОПродажах.Ссылка КАК Ссылка,
| ОтчетКомитентуОПродажах.Ссылка.ВидОперации КАК ВидОперации,
| ОтчетКомитентуОПродажах.Ссылка.Номер КАК Номер,
| ОтчетКомитентуОПродажах.Ссылка.Дата КАК Дата,
| ОтчетКомитентуОПродажах.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента,
| ОтчетКомитентуОПродажах.Ссылка.Контрагент КАК Контрагент,
| ОтчетКомитентуОПродажах.Ссылка.Организация КАК Организация,
| ОтчетКомитентуОПродажах.Ссылка.СуммаДокумента КАК СуммаДокумента,
| ОтчетКомитентуОПродажах.Ссылка.ВалютаДокумента КАК ВалютаДокумента,
| ОтчетКомитентуОПродажах.Ссылка.СтавкаНДСВознаграждения КАК СтавкаНДСВознаграждения,
| ОтчетКомитентуОПродажах.Ссылка.СуммаВознаграждения КАК СуммаВознаграждения,
| ОтчетКомитентуОПродажах.Ссылка.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ОтчетКомитентуОПродажах.НомерСтроки КАК НомерСтроки,
| 0 КАК НомерСтрокиПоставщики,
| ОтчетКомитентуОПродажах.Номенклатура КАК Товар,
| ВЫБОР
| КОГДА НЕ ОтчетКомитентуОПродажах.Содержание ПОДОБНО """"
| ТОГДА ОтчетКомитентуОПродажах.Содержание
| КОГДА СправочникНоменклатура.НаименованиеПолное ПОДОБНО """"
| ТОГДА СправочникНоменклатура.Наименование
| ИНАЧЕ СправочникНоменклатура.НаименованиеПолное
| КОНЕЦ КАК ТоварНаименование,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА ОтчетКомитентуОПродажах.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА ОтчетКомитентуОПродажах.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ КАК КодАртикул,
| ОтчетКомитентуОПродажах.КоличествоМест КАК КоличествоМест,
| ОтчетКомитентуОПродажах.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ОтчетКомитентуОПродажах.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаХранения,
| ОтчетКомитентуОПродажах.Количество КАК Количество,
| ОтчетКомитентуОПродажах.Цена КАК Цена,
| ОтчетКомитентуОПродажах.Сумма КАК Сумма,
| ОтчетКомитентуОПродажах.СуммаНДС КАК СуммаНДС,
| ОтчетКомитентуОПродажах.Покупатель КАК ПокупательПоставщик,
| ОтчетКомитентуОПродажах.ДатаРеализации КАК ДатаПродажи,
| ОтчетКомитентуОПродажах.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
| НЕОПРЕДЕЛЕНО КАК Партия,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПартии,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаВходящегоСчетаФактуры,
| """" КАК НомерВходящегоСчетаФактуры,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаВходящегоДокумента,
| """" КАК НомерВходящегоДокумента,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаВыданногоСчетаФактуры,
| """" КАК НомерВыданногоСчетаФактуры,
| ОтчетКомитентуОПродажах.Покупатель КАК ПолеДляИтогов,
| СправочникНоменклатура.ПериодичностьУслуги КАК ПериодичностьУслуги,
| ОтчетКомитентуОПродажах.ДокументРасчетов КАК ДокументРасчетов,
| ТаблицаСчетовФактур.Ссылка КАК СчетФактураПокупателю,
| ВЫБОР
| КОГДА ОтчетКомитентуОПродажах.Количество > 0
| И НЕ ОтчетКомитентуОПродажах.ДокументРасчетов ССЫЛКА Документ.КорректировкаРеализации
| ТОГДА ""Реализация товаров и услуг""
| КОГДА ОтчетКомитентуОПродажах.Количество < 0
| И НЕ ОтчетКомитентуОПродажах.ДокументРасчетов ССЫЛКА Документ.КорректировкаРеализации
| ТОГДА ""Возврат товаров""
| ИНАЧЕ ""Прочее""
| КОНЕЦ КАК ВидСобытия,
| ТаблицаСчетовФактур.Номер КАК НомерСФКомиссионера,
| ТаблицаСчетовФактур.Дата КАК ДатаСФКомиссионера,
| ВЫБОР
| КОГДА ОтчетКомитентуОПродажах.Количество < 0
| ИЛИ ОтчетКомитентуОПродажах.ДокументРасчетов ССЫЛКА Документ.КорректировкаРеализации
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозврат,
| ОтчетКомитентуОПродажах.СуммаНДСВознаграждения КАК СуммаНДСВознаграждения,
| ОтчетКомитентуОПродажах.СтавкаНДС КАК СтавкаНДС
|ИЗ
| Документ.ОтчетКомитентуОПродажах.Товары КАК ОтчетКомитентуОПродажах
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ОтчетКомитентуОПродажах.Номенклатура = СправочникНоменклатура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаСчетовФактур КАК ТаблицаСчетовФактур
| ПО ОтчетКомитентуОПродажах.ДокументРасчетов = ТаблицаСчетовФактур.ДокументРасчетов
|ГДЕ
| ОтчетКомитентуОПродажах.Ссылка В(&МассивОбъектов)
| И ОтчетКомитентуОПродажах.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОПродажах)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОтчетКомитентуОПродажахТовары.Ссылка,
| ОтчетКомитентуОПродажахТовары.Ссылка.ВидОперации,
| ОтчетКомитентуОПродажахТовары.Ссылка.Номер,
| ОтчетКомитентуОПродажахТовары.Ссылка.Дата,
| ОтчетКомитентуОПродажахТовары.Ссылка.ДоговорКонтрагента,
| ОтчетКомитентуОПродажахТовары.Ссылка.Контрагент,
| ОтчетКомитентуОПродажахТовары.Ссылка.Организация,
| ОтчетКомитентуОПродажахТовары.Ссылка.СуммаДокумента,
| ОтчетКомитентуОПродажахТовары.Ссылка.ВалютаДокумента,
| ОтчетКомитентуОПродажахТовары.Ссылка.СтавкаНДСВознаграждения,
| ОтчетКомитентуОПродажахТовары.Ссылка.СуммаВознаграждения,
| ОтчетКомитентуОПродажахТовары.Ссылка.ПодразделениеОрганизации,
| ОтчетКомитентуОПродажахТовары.НомерСтроки,
| ВТ_РеквизитыПартий.НомерСтроки,
| ОтчетКомитентуОПродажахТовары.Номенклатура,
| ВЫБОР
| КОГДА НЕ ОтчетКомитентуОПродажахТовары.Содержание ПОДОБНО """"
| ТОГДА ОтчетКомитентуОПродажахТовары.Содержание
| КОГДА СправочникНоменклатура.НаименованиеПолное ПОДОБНО """"
| ТОГДА СправочникНоменклатура.Наименование
| ИНАЧЕ СправочникНоменклатура.НаименованиеПолное
| КОНЕЦ,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА ОтчетКомитентуОПродажахТовары.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА ОтчетКомитентуОПродажахТовары.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ,
| ОтчетКомитентуОПродажахТовары.КоличествоМест,
| ОтчетКомитентуОПродажахТовары.ЕдиницаИзмерения.Представление,
| ОтчетКомитентуОПродажахТовары.Номенклатура.ЕдиницаИзмерения,
| ОтчетКомитентуОПродажахТовары.Количество,
| ОтчетКомитентуОПродажахТовары.Цена,
| ОтчетКомитентуОПродажахТовары.Сумма,
| ОтчетКомитентуОПродажахТовары.СуммаНДС,
| ЕСТЬNULL(ВТ_РеквизитыПартий.Поставщик, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)),
| ДАТАВРЕМЯ(1, 1, 1),
| ОтчетКомитентуОПродажахТовары.Ссылка.СуммаВключаетНДС,
| ВТ_РеквизитыПартий.Партия,
| ВТ_РеквизитыПартий.ДатаПартии,
| ВТ_РеквизитыПартий.ДатаВходящегоСчетаФактуры,
| ВТ_РеквизитыПартий.НомерВходящегоСчетаФактуры,
| ВТ_РеквизитыПартий.ДатаВходящегоДокумента,
| ВТ_РеквизитыПартий.НомерВходящегоДокумента,
| ВТ_РеквизитыПартий.ДатаВыданногоСчетаФактуры,
| ВТ_РеквизитыПартий.НомерВыданногоСчетаФактуры,
| ВТ_РеквизитыПартий.Партия,
| НЕОПРЕДЕЛЕНО,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| NULL,
| ОтчетКомитентуОПродажахТовары.СуммаНДСВознаграждения,
| ОтчетКомитентуОПродажахТовары.СтавкаНДС
|ИЗ
| Документ.ОтчетКомитентуОПродажах.Товары КАК ОтчетКомитентуОПродажахТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РеквизитыПартий КАК ВТ_РеквизитыПартий
| ПО ОтчетКомитентуОПродажахТовары.КлючСтроки = ВТ_РеквизитыПартий.КлючСтроки
| И ОтчетКомитентуОПродажахТовары.Ссылка = ВТ_РеквизитыПартий.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ОтчетКомитентуОПродажахТовары.Номенклатура = СправочникНоменклатура.Ссылка
|ГДЕ
| ОтчетКомитентуОПродажахТовары.Ссылка В(&МассивОбъектов)
| И ОтчетКомитентуОПродажахТовары.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОЗакупках)
|
//|ОБЪЕДИНИТЬ ВСЕ
//|
//|ВЫБРАТЬ
//| ТЧПоставщики.Ссылка,
//| ТЧПоставщики.Ссылка.ВидОперации,
//| ТЧПоставщики.Ссылка.Номер,
//| ТЧПоставщики.Ссылка.Дата,
//| ТЧПоставщики.Ссылка.ДоговорКонтрагента,
//| ТЧПоставщики.Ссылка.Контрагент,
//| ТЧПоставщики.Ссылка.Организация,
//| ТЧПоставщики.Ссылка.СуммаДокумента,
//| ТЧПоставщики.Ссылка.ВалютаДокумента,
//| ТЧПоставщики.Ссылка.СтавкаНДСВознаграждения,
//| ТЧПоставщики.Ссылка.СуммаВознаграждения,
//| ТЧПоставщики.Ссылка.ПодразделениеОрганизации,
//| ДокПоступленияТранспортныеУслуги.НомерСтроки,
//| ТЧПоставщики.НомерСтроки,
//| ДокПоступленияТранспортныеУслуги.Номенклатура,
//| ВЫБОР
//| КОГДА НЕ ДокПоступленияТранспортныеУслуги.Содержание ПОДОБНО """"""""
//| ТОГДА ДокПоступленияТранспортныеУслуги.Содержание
//| КОГДА ДокПоступленияТранспортныеУслуги.Номенклатура.НаименованиеПолное ПОДОБНО """"""""
//| ТОГДА ДокПоступленияТранспортныеУслуги.Номенклатура.Наименование
//| ИНАЧЕ ДокПоступленияТранспортныеУслуги.Номенклатура.НаименованиеПолное
//| КОНЕЦ,
//| ВЫБОР
//| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
//| ТОГДА ДокПоступленияТранспортныеУслуги.Номенклатура.Артикул
//| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
//| ТОГДА ДокПоступленияТранспортныеУслуги.Номенклатура.Код
//| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
//| ТОГДА """"""""
//| КОНЕЦ,
//| ДокПоступленияТранспортныеУслуги.Количество,
//| ДокПоступленияТранспортныеУслуги.Номенклатура.ЕдиницаИзмерения.Представление,
//| ДокПоступленияТранспортныеУслуги.Номенклатура.ЕдиницаИзмерения,
//| ДокПоступленияТранспортныеУслуги.Количество,
//| ДокПоступленияТранспортныеУслуги.Цена,
//| ДокПоступленияТранспортныеУслуги.Сумма,
//| ДокПоступленияТранспортныеУслуги.СуммаНДС,
//| ДокПоступленияТранспортныеУслуги.Ссылка.Контрагент,
//| ДАТАВРЕМЯ(1, 1, 1),
//| ДокПоступленияТранспортныеУслуги.Ссылка.СуммаВключаетНДС,
//| ДокПоступленияТранспортныеУслуги.Ссылка,
//| ДокПоступленияТранспортныеУслуги.Ссылка.Дата,
//| ДАТАВРЕМЯ(1, 1, 1),
//| 0,
//| ДокПоступленияТранспортныеУслуги.Ссылка.ДатаВходящегоДокумента,
//| ДокПоступленияТранспортныеУслуги.Ссылка.НомерВходящегоДокумента,
//| ДАТАВРЕМЯ(1, 1, 1),
//| 0,
//| ДокПоступленияТранспортныеУслуги.Ссылка.Ссылка,
//| НЕОПРЕДЕЛЕНО,
//| NULL,
//| NULL,
//| NULL,
//| NULL,
//| NULL,
//| NULL,
//| 0,
//| ДокПоступленияТранспортныеУслуги.СтавкаНДС
//|ИЗ
//| Документ.ОтчетКомитентуОПродажах.Поставщики КАК ТЧПоставщики
//| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ДокПоступления
//| ПО ТЧПоставщики.Партия = ДокПоступления.Ссылка
//| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Услуги КАК ДокПоступленияТранспортныеУслуги
//| ПО ТЧПоставщики.Партия = ДокПоступленияТранспортныеУслуги.Ссылка
//|ГДЕ
//| ТЧПоставщики.Ссылка В(&МассивОбъектов)
//| И ТЧПоставщики.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОЗакупках)
//| И НЕ ТЧПоставщики.ПолученСФ
//|
//|УПОРЯДОЧИТЬ ПО
//| Дата,
//| НомерСтрокиПоставщики,
//| ПолеДляИтогов,
//| ОтчетКомитентуОПродажах.НомерСтроки,
//| ЭтоВозврат,
//| СчетФактураПокупателю
|ИТОГИ
| МАКСИМУМ(Ссылка),
| МАКСИМУМ(ВидОперации),
| МАКСИМУМ(Номер),
| МАКСИМУМ(Дата),
| МАКСИМУМ(Контрагент),
| МАКСИМУМ(Организация),
| МАКСИМУМ(ВалютаДокумента),
| МАКСИМУМ(СуммаВознаграждения),
| МИНИМУМ(НомерСтрокиПоставщики),
| СУММА(КоличествоМест),
| СУММА(Количество),
| СУММА(Сумма),
| СУММА(СуммаНДС),
| МАКСИМУМ(ПокупательПоставщик),
| МАКСИМУМ(ДатаПартии),
| МАКСИМУМ(ДатаВходящегоСчетаФактуры),
| МАКСИМУМ(НомерВходящегоСчетаФактуры),
| МАКСИМУМ(ДатаВходящегоДокумента),
| МАКСИМУМ(НомерВходящегоДокумента),
| МАКСИМУМ(ДатаВыданногоСчетаФактуры),
| МАКСИМУМ(НомерВыданногоСчетаФактуры),
| МАКСИМУМ(НомерСФКомиссионера),
| МАКСИМУМ(ДатаСФКомиссионера),
| МАКСИМУМ(ЭтоВозврат)
|ПО
| Ссылка,
| ВидСобытия,
| ПолеДляИтогов,
| СчетФактураПокупателю";

ВыборкаДокументов = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка");

Итого = 0;
НомерПП = 1;
СуммаНДСВознаграждения = 0;

ПервыйДокумент = Истина;

ОтчетНапечатан = Ложь;
Пока ВыборкаДокументов.Следующий() Цикл

Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ОтчетНапечатан = Истина;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

Макет = ПолучитьМакет("ПФ_ОтчетКомитентуОЗакупках");
ЭтоКомиссияПоПродаже = Ложь;


// Выводим шапку накладной

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(ВыборкаДокументов.Ссылка, НСтр("ru = 'Отчет'"));
ТабличныйДокумент.Вывести(ОбластьМакета);

СведенияОбОрганизации    = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ВыборкаДокументов.Организация, ВыборкаДокументов.Дата);
ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,");

СведенияОКонтрагенте     = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ВыборкаДокументов.Контрагент, ВыборкаДокументов.Дата);
ПредставлениеКонтрагента = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,ИНН,");

ОбластьМакета = Макет.ПолучитьОбласть("Организация");
ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеОрганизации;
ОбластьМакета.Параметры.Получатель              = ВыборкаДокументов.Организация;
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Комитент");
ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеКонтрагента;
ОбластьМакета.Параметры.Поставщик               = ВыборкаДокументов.Контрагент;
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Основание");
ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
ОбластьМакета.Параметры.Спецификация = ВыборкаДокументов.Ссылка.АВ_Спецификация;
ТабличныйДокумент.Вывести(ОбластьМакета);


ОбластьШапки = ?(ВыводитьКоды, "ШапкаСКодом", "ШапкаТаблицы");
ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ОбластьМакета.Параметры.ИмяКодАртикул = "Артикул";
ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ОбластьМакета.Параметры.ИмяКодАртикул = "Код";
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);

Итого = 0;
ИтогоНДС = 0;
НомерПП = 1;
ОбластьСтроки = ?(ВыводитьКоды, "СтрокаСКодом", "Строка");
ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);

КоличествоТоваров = 0;

ПечататьСВидомСобытия = ЭтоКомиссияПоПродаже И НЕ Макет.Области.Найти("ВидСобытия") = Неопределено;

Если ПечататьСВидомСобытия Тогда

ОбластьМакетаСобытия = Макет.ПолучитьОбласть("ВидСобытия");

Иначе

ОбластьМакетаСобытия = Неопределено;

КонецЕсли;

ВыборкаПоВидуСобытия = ВыборкаДокументов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ВидСобытия");
Пока ВыборкаПоВидуСобытия.Следующий() Цикл

Если ПечататьСВидомСобытия Тогда
// Выводит вид события
ОбластьМакетаСобытия.Параметры.ПредставлениеСобытия = ВыборкаПоВидуСобытия.ВидСобытия;
ТабличныйДокумент.Вывести(ОбластьМакетаСобытия);
КонецЕсли;

ВыборкаКонтрагентов = ВыборкаПоВидуСобытия.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаКонтрагентов.Следующий() Цикл

СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ВыборкаКонтрагентов.ПокупательПоставщик, ВыборкаДокументов.Дата);
Если ЭтоКомиссияПоПродаже Тогда
ТекстКонтрагент = НСтр("ru = 'Покупатель: '") + ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
Иначе
// Поставщик
ТекстКонтрагент = НСтр("ru = ''") + ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,");
КонецЕсли;

Если НЕ ЭтоКомиссияПоПродаже Тогда
     

ТекстКонтрагент = ТекстКонтрагент + Символы.ПС;

Если ЗначениеЗаполнено(ВыборкаКонтрагентов.НомерВходящегоДокумента)
И ЗначениеЗаполнено(ВыборкаКонтрагентов.ДатаВходящегоДокумента) Тогда
ТекстКонтрагент = ТекстКонтрагент + НСтр("ru = 'Поступление от поставщика: № '") + ВыборкаКонтрагентов.НомерВходящегоДокумента
+ НСтр("ru = ' от '") + Формат(ВыборкаКонтрагентов.ДатаВходящегоДокумента, "ДЛФ=Д");
Иначе
ТекстКонтрагент = ТекстКонтрагент + НСтр("ru = 'Поступление от поставщика: № '") + Формат(ВыборкаКонтрагентов.ДатаПартии, "ДЛФ=Д");
КонецЕсли;

Если ЗначениеЗаполнено(ВыборкаКонтрагентов.ДатаВходящегоСчетаФактуры)
И ЗначениеЗаполнено(ВыборкаКонтрагентов.НомерВходящегоСчетаФактуры) Тогда
ТекстКонтрагент = ТекстКонтрагент + Символы.ПС;
ТекстКонтрагент = ТекстКонтрагент + НСтр("ru = 'Получен счет-фактура поставщика: № '") + ВыборкаКонтрагентов.НомерВходящегоСчетаФактуры
+ НСтр("ru = ' от '") + Формат(ВыборкаКонтрагентов.ДатаВходящегоСчетаФактуры, "ДЛФ=Д");
КонецЕсли;

Если ЗначениеЗаполнено(Символы.ПС)
И ЗначениеЗаполнено(ВыборкаКонтрагентов.НомерВыданногоСчетаФактуры) Тогда

ТекстКонтрагент = ТекстКонтрагент + Символы.ПС;
ТекстКонтрагент = ТекстКонтрагент + НСтр("ru = 'Выдан счет-фактура принципалу: № '")
+ ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаКонтрагентов.НомерВыданногоСчетаФактуры, Истина, Ложь)
+ " от " + Формат(ВыборкаКонтрагентов.ДатаВыданногоСчетаФактуры, "ДЛФ=Д");
КонецЕсли;

КонецЕсли;





ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ОбластьМакета.Параметры.ПредставлениеКонтрагента = ТекстКонтрагент;
ОбластьМакета.Параметры.ТекстКонтрагент = ТекстКонтрагент;

//ТабличныйДокумент.Область("R21"+строка(номерячейки+1)):"C32"+строка(номерячейки+2)).Объединить();
    //ТабличныйДокумент.Область("R32"+строка(+1) +":C21"+строка(+2)).Объединить();

//ТабличныйДокумент.Вывести(ОбластьМакета);

Если ПечататьСВидомСобытия Тогда
ОбластьМакетаДокументПоПокупателю = Макет.ПолучитьОбласть("ДокументПокупателю");
КонецЕсли;

ИтогоПоКонтрагенту = 0;
ИтогоНДСПоКонтрагенту = 0;

ВыборкаПоСчетФактуре = ВыборкаКонтрагентов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СчетФактураПокупателю");
Пока ВыборкаПоСчетФактуре.Следующий() Цикл

Если ПечататьСВидомСобытия Тогда

ПредставлениеДокумента = ПолучитьПредставлениеДокументаВыданногоПокупателю(ВыборкаПоСчетФактуре);

Если ЗначениеЗаполнено(ПредставлениеДокумента) Тогда

ОбластьМакетаДокументПоПокупателю.Параметры.ПредставлениеДокумента = ПредставлениеДокумента;
ТабличныйДокумент.Вывести(ОбластьМакетаДокументПоПокупателю);

КонецЕсли;

КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);

ВыборкаТоваров = ВыборкаПоСчетФактуре.Выбрать();
КолСтрок = 0;
Пока ВыборкаТоваров.Следующий() Цикл
//ОбластьМакета.Параметры.сумма_отчета= ("R21C32"+строка(+1));
//Объединить();

//ТабличныйДокумент.Область("R21"+строка(номерячейки+1))":C32"+строка(номерячейки+2)).Объединить();
    //ТабличныйДокумент.Область("R32"+строка(+1) +":C21"+строка(+2)).Объединить();

//ТабличныйДокумент.Вывести(ОбластьМакета)

КоличествоТоваров = КоличествоТоваров + 1;
КолСтрок = КолСтрок + 1;
//СуммаВознаграждения= ВыборкаДокументов.СуммаВознаграждения - ВыборкаТоваров.СтавкаНДС ;
//
//ОбластьМакета.Параметры.завоз1тонны9=ВыборкаТоваров.Сумма/2 ;
//ОбластьМакета.Параметры.суммасниж9_1= ВыборкаТоваров.цена*2 ;
//ОбластьМакета.Параметры.размеррасходов9_2=ВыборкаТоваров.Количество*2 ;
//ОбластьМакета.Параметры.сумма_возграж=ВыборкаДокументов.СуммаВознаграждения*1.20;
//ОбластьМакета.Параметры.возн_делькред=(ВыборкаДокументов.СуммаВознаграждения/ОбластьМакета.Параметры.сумма_возграж)*25 ;
//ОбластьМакета.Параметры.сумма_ндс_агента= ОбластьМакета.Параметры.возн_делькред*25;
//ОбластьМакета.Параметры.сумма_отчета=ОбластьМакета.Параметры.суммасниж9_1 * 2;
//
ОбластьМакета.Параметры.Заполнить(ВыборкаТоваров);
Если КолСтрок = 1 Тогда
ОбластьМакета.Параметры.НомерСтроки = НомерПП;
Иначе
ОбластьМакета.Параметры.НомерСтроки = "";
КонецЕсли;

Если НЕ ВыборкаТоваров.СуммаВключаетНДС Тогда
СуммаПоСтроке = ВыборкаТоваров.Сумма + ВыборкаТоваров.СуммаНДС;
ОбластьМакета.Параметры.Цена = ?(ВыборкаТоваров.Количество <> 0, СуммаПоСтроке/ВыборкаТоваров.Количество, 0);
ОбластьМакета.Параметры.Сумма = СуммаПоСтроке;

Иначе
Если ВыборкаТоваров.СуммаНДС = 0 Тогда
ОбластьМакета.Параметры.СуммаНДС= "-";


ОбластьМакета.Параметры.ПредставлениеКонтрагента = ТекстКонтрагент;
ОбластьМакета.Параметры.ТекстКонтрагент = ТекстКонтрагент;  //НСтр("ru = 'Поступление от поставщика: № '") + ВыборкаКонтрагентов.НомерВходящегоДокумента
//+ НСтр("ru = ' от '") + Формат(ВыборкаКонтрагентов.ДатаВходящегоДокумента, "ДЛФ=Д")+
//НСтр("ru = 'Поступление от поставщика: № '") + Формат(ВыборкаКонтрагентов.ДатаПартии, "ДЛФ=Д")+
// НСтр("ru = 'Получен счет-фактура поставщика: № '") + ВыборкаКонтрагентов.НомерВходящегоСчетаФактуры
//+ НСтр("ru = ' от '") + Формат(ВыборкаКонтрагентов.ДатаВходящегоСчетаФактуры, "ДЛФ=Д");
////+ ВыборкаКонтрагентов.НомерВходящегоСчетаФактуры+ ВыборкаКонтрагентов.НомерВыданногоСчетаФактуры;



КонецЕсли;

Если ВыборкаТоваров.ТоварНаименование = "Транспортные услуги" Тогда
сообщить ( "Транспортные услуги есть в строке");

КонецЕсли;






СуммаПоСтроке = ВыборкаТоваров.Сумма;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);

Итого = Итого + СуммаПоСтроке;
ИтогоНДС = ИтогоНДС + ВыборкаТоваров.СуммаНДС;
//НомерПП = НомерПП + 1;
ИтогоПоКонтрагенту = ИтогоПоКонтрагенту + СуммаПоСтроке;
ИтогоНДСПоКонтрагенту = ИтогоНДСПоКонтрагенту + ВыборкаТоваров.СуммаНДС;
СуммаНДСВознаграждения = СуммаНДСВознаграждения + ВыборкаТоваров.СуммаНДСВознаграждения;


КонецЦикла;

КонецЦикла;

НомерПП = НомерПП + 1;

//Если КолСтрок > 1 тогда
// ОбластьМакета = Макет.ПолучитьОбласть("СтрокаКонтрагентИтог");
// ОбластьМакета.Параметры.Заполнить(ВыборкаКонтрагентов);
// ОбластьМакета.Параметры.Итого = ИтогоПоКонтрагенту;
// ОбластьМакета.Параметры.ИтогоНДС = ИтогоНДСПоКонтрагенту;
// ТабличныйДокумент.Вывести(ОбластьМакета);
//КонецЕсли;

КонецЦикла;

КонецЦикла;

ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = Итого;
Если ИтогоНДС = 0 Тогда
ОбластьМакета.Параметры.ВсегоНДС = "без НДС";
Иначе
ОбластьМакета.Параметры.ВсегоНДС = ИтогоНДС;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");

ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(Итого, ВыборкаДокументов.ВалютаДокумента);

//ОбластьМакета.Параметры.СуммаВознаграждения = НСтр("ru = 'Сумма агентского вознаграждения составила'") + " "
//+ ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(ВыборкаДокументов.СуммаВознаграждения, ВыборкаДокументов.ВалютаДокумента);




//ОбластьМакета.Параметры.СуммаВознаграждения = НСтр("ru = 'Сумма агентского вознаграждения составила'") + " "
//+ ВыборкаДокументов.СуммаВознаграждения +" руб., в т.ч. НДС - "   + СуммаНДСВознаграждения  ;//



ОбластьМакета.Параметры.ИтоговаяСтрока = НСтр("ru = 'Всего наименований %Количество%, на сумму'") + " "
+ ОбщегоНазначенияБПВызовСервера.ФорматСумм(Итого, ВыборкаДокументов.ВалютаДокумента) + ?(ИтогоНДС = 0,"без НДС","в т.ч. НДС " + ИтогоНДС);

//ОбластьМакета.Параметры.ИтоговаяСтрока = СтрЗаменить(ОбластьМакета.Параметры.ИтоговаяСтрока, "%Количество%", КоличествоТоваров);
ОбластьМакета.Параметры.ИтоговаяСтрока = СтрЗаменить(ОбластьМакета.Параметры.ИтоговаяСтрока, "%Количество%", НомерПП-1);

ТабличныйДокумент.Вывести(ОбластьМакета);



КонецЦикла;

Если НЕ ОтчетНапечатан Тогда
Шаблон = МассивОбъектов[0];

Если Шаблон.ВидОперации = Перечисления.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОПродажах Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ОтчетКомитентуОПродажах.ПФ_MXL_ОтчетКомитентуОПродажах");
ЭтоКомиссияПоПродаже = Истина;
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ОтчетКомитентуОПродажах.ПФ_MXL_ОтчетКомитентуОЗакупках");
ЭтоКомиссияПоПродаже = Ложь;
КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шаблон, НСтр("ru = 'Отчет агента1266'"));
ТабличныйДокумент.Вывести(ОбластьМакета);

СведенияОбОрганизации    = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шаблон.Организация, Шаблон.Дата);
ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,НомерСчета,Банк,КоррСчет,БИК,ЮридическийАдрес");

СведенияОКонтрагенте     = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шаблон.Контрагент, Шаблон.Дата);
ПредставлениеКонтрагента = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,ИНН,КПП,НомерСчета,Банк,КоррСчет,БИК,ЮридическийАдрес");

ОбластьМакета = Макет.ПолучитьОбласть("Организация");
ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеОрганизации;
ОбластьМакета.Параметры.Получатель              = ВыборкаДокументов.Организация;
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Комитент");
ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеКонтрагента;
ОбластьМакета.Параметры.Поставщик               = ВыборкаДокументов.Контрагент;
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Основание");
ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
ОбластьМакета.Параметры.Спецификация = ВыборкаДокументов.Ссылка.АВ_Спецификация;
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабличныйДокумент.Вывести(ОбластьМакета);

ПечататьСВидомСобытия = ЭтоКомиссияПоПродаже И НЕ Макет.Области.Найти("ВидСобытия") = Неопределено;

Если ПечататьСВидомСобытия Тогда

ОбластьМакета = Макет.ПолучитьОбласть("ВидСобытия");
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ТабличныйДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ТабличныйДокумент.Вывести(ОбластьМакета);

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
ТабличныйДокумент.ВысотаТаблицы + 1, ОбъектыПечати, Шаблон);
КонецЕсли;

Возврат ТабличныйДокумент;

Дайте мне пинок,что не так делаю?

Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто.
1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» .
https://helpf.pro/uploads/img


Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая » примерно» делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего:
Процедура РасчетШириныКолонок(Табличный


Активация открытой книги Excel для корректировки 0
Нужно было получить для изменения уже открытую книгу Excel, а если она закрыта, то открыть и изменять.
Ниже код, который данную задачу решает.
Попытка
Эксель = Неопределено;
Книга = Неопределено;
Лист = Неопределено;
Состояние(» Выполняется


Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX
Перем СерверExcel;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС);
КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count;
КоличествоКолонокДанных=ФайлХЛС.ActiveSheet


Быстрая функция чтения данных с листа Excel 10
При чтении файла Excel я использую вариантный массив. Он позволяет быстро получить ВСЮ таблицу листа в память, а также получать данные массива целыми колонками. Тем самым время на чтение области файла Excel в таблицу значений сокращается в десятки ра


Посмотреть все результаты поиска похожих

В этой статье я покажу, как работать с ячейками табличного документа. Мы создадим табличный документ и заполним его какими-нибудь данными, не обращаясь при этом к макету табличного документа, как мы это делали раньше, а получая напрямую доступ к ячейкам табличного документа.

Также, как и во всех предыдущих статьях, для демонстрации создадим обработку и основную форму обработки, на которую поместим команду.

Обработка и форма обработки

Создадим обработчик команды в клиентском контексте, и функцию тоже в клиентском контексте, в которой создадим табличный документ, и этот табличный документ функция вернет. А в обработчике команды покажем возвращаемый функцией табличный документ.

&НаКлиенте
Функция ВозвратТабличногоДокумента()
	ТабличныйДокумент = Новый ТабличныйДокумент;
	Возврат ТабличныйДокумент;
КонецФункции // ВозвратТабличногоДокумента()

&НаКлиенте
Процедура Вывести(Команда)	
	ТабличныйДокумент = ВозвратТабличногоДокумента();
	ТабличныйДокумент.Показать("Пример работы с ячейками");	
КонецПроцедуры

В дальнейшем весь код будет из метода ВозвратТабличногоДокумента(). В этом коде мы будем обращаться к ячейкам табличного документа по их наименованию. А для удобства работы с именами ячеек табличного документа создадим пустой макет табличного документа. Он нам нужен только как вспомогательный инструмент. Для вывода табличного документ этот макет не требуется.

Макет табличного документа 1С

Макет табличного документа 1С

Если необходимо узнать имя ячейки или группы ячеек (области), следует выделить ячейку, открыть палитру свойств этой ячейки, и в этой палитре свойств интересует одно свойство Имя.

Имя ячейки табличного документа 1С

Зная имя ячейки или области ячеек, мы можем получить эту область из уже созданного документа при помощи метода Область().

ОбластьШапка = ТабличныйДокумент.Область("R2C1:R3C5");
ОбластьШапка.Объединить();
ОбластьШапка.Текст = "Шапка примера табличного документа";
ОбластьШапка.Примечание.Текст = "Это примечание";
ОбластьШапка.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбластьШапка.ВертикальноеПоложение   = ВертикальноеПоложение.Центр;

В коде выше мы получили область ячеек табличного документа по имени, которое определили при помощи пустого макета табличного документа (он и нужен только для выяснения названий ячеек). Потом, мы объединили область ячеек в одну ячейку, указали текст ячейки, примечание, и отцентрировали текст в объединенной ячейке.

Если мы попробуем выполнить команду обработки, то как результат будет показан табличный документ.

Табличный документ 1С

Пойдем дальше. Создадим таблицу в нашем табличном документе. Сначала сделаем шапку таблицы из ячеек, которые идут после области, из которой сделали шапку отчета. У нас будет две колонки у шапки таблицы.

Ячейки первой колонки.

Ячейки табличного документа 1С

Получим область для этих ячеек, объединим ячейки этой области, напишем какой-нибудь текст и обведем эту область, используя метод Обвести табличного документа.

ЛинияОбвода = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
	
ОбластьШапкаТаблицы1 = ТабличныйДокумент.Область("R4C1:R4C2");
ОбластьШапкаТаблицы1.Объединить();
ОбластьШапкаТаблицы1.Текст = "Номер";
ОбластьШапкаТаблицы1.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбластьШапкаТаблицы1.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);

Точно также получим область для соседней колонки.

Первым делом узнаем имя ячеек. Ячейки второй колонки.

Ячейки табличного документа 1С

А потом получим область, и выполним над ней те же самые манипуляции, что и над соседней областью.

ОбластьШапкаТаблицы2 = ТабличныйДокумент.Область("R4C3:R4C5");
ОбластьШапкаТаблицы2.Объединить();
ОбластьШапкаТаблицы2.Текст = "Номер (строка)";
ОбластьШапкаТаблицы2.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбластьШапкаТаблицы2.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);

 А дальше, для вывода таблицы сделаем цикл от 0 до 9, в котором в каждой итерации цикла будем обращаться к областям табличного документа, но в этот раз мы будем использовать не имена областей, а номера ячеек.

Для н = 0 По 9 Цикл
	
	ОбластьСтрока1 = ТабличныйДокумент.Область(5 + н,1,5 + н,2);
	ОбластьСтрока1.Объединить();
	ОбластьСтрока1.Текст = Строка(н + 1);
	ОбластьСтрока1.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
        ОбластьСтрока1.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);
	 
	ОбластьСтрока2 = ТабличныйДокумент.Область(5 + н,3, 5 + н, 5);  		 
	ОбластьСтрока2.Объединить();
	ОбластьСтрока2.Текст = ЧислоПрописью(н + 1,"НП = Ложь",",,,,,,,,0");
	ОбластьСтрока2.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
	ОбластьСтрока2.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);	 
	 
КонецЦикла;	

На этом мы закончим изменять табличный документ. Полная версия кода в функции ВозвратТабличногоДокумента будет следующей:

&НаКлиенте
Функция ВозвратТабличногоДокумента()

	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	ОбластьШапка = ТабличныйДокумент.Область("R2C1:R3C5");
	ОбластьШапка.Объединить();
	ОбластьШапка.Текст = "Шапка примера табличного документа";
	ОбластьШапка.Примечание.Текст = "Это примечание";
	ОбластьШапка.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
	ОбластьШапка.ВертикальноеПоложение   = ВертикальноеПоложение.Центр;
	
	ЛинияОбвода = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
	
	ОбластьШапкаТаблицы1 = ТабличныйДокумент.Область("R4C1:R4C2");
	ОбластьШапкаТаблицы1.Объединить();
	ОбластьШапкаТаблицы1.Текст = "Номер";
	ОбластьШапкаТаблицы1.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
	ОбластьШапкаТаблицы1.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);
	
	ОбластьШапкаТаблицы1 = ТабличныйДокумент.Область("R4C3:R4C5");
	ОбластьШапкаТаблицы1.Объединить();
	ОбластьШапкаТаблицы1.Текст = "Номер (строка)";
	ОбластьШапкаТаблицы1.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
	ОбластьШапкаТаблицы1.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);
	
	Для н = 0 По 9 Цикл
	
		 ОбластьСтрока1 = ТабличныйДокумент.Область(5 + н,1,5 + н,2);
		 ОбластьСтрока1.Объединить();
		 ОбластьСтрока1.Текст = Строка(н + 1);
		 ОбластьСтрока1.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
		 ОбластьСтрока1.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);
		 
		 ОбластьСтрока2 = ТабличныйДокумент.Область(5 + н,3, 5 + н, 5);  
		 ОбластьСтрока2.Объединить();
		 ОбластьСтрока2.Текст = ЧислоПрописью(н + 1,"НП = Ложь",",,,,,,,,0");
		 ОбластьСтрока2.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
		 ОбластьСтрока2.Обвести(ЛинияОбвода,ЛинияОбвода,ЛинияОбвода,ЛинияОбвода);
		 
	КонецЦикла;	
	
	Возврат ТабличныйДокумент;

КонецФункции // ВозвратТабличногоДокумента() 

Проверим, что у нас выведет табличный документ.

Табличный документ 1С

Таким образом, обращаясь напрямую к областям (ячейкам) табличного документа, мы можем изменять этот табличный документ без использования макета.

Другие статьи про табличные документы в 1С:

Создание макета табличного документа 1С

Вывод на печать табличного документа в 1С 8.3

Области табличного документа 1С 8.3

Табличный документ на управляемой форме 1С 8.3

Группировка в табличном документе 1С 8.3

Расшифровка табличного документа 1С 8.3

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Это изображение имеет пустой атрибут alt; его имя файла - 1C-в-желтом-цвете-3D-221x300.png

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Это изображение имеет пустой атрибут alt; его имя файла - 1_в-желтом-цвете-3D-маленькая-221x300.jpg

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как в excel про
  • Как в excel провести черту
  • Как в excel присвоить ячейке текст значение
  • Как в excel провести формулу по всем ячейкам
  • Как в excel присвоить числовое значение текстовой ячейке

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии