Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 03:58
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Создание группировки в печатной форме  (Прочитано 1669 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Djons17

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-04-11
  • Сайт: 
  • Профессия: Программист 1С
Помогите разобраться как сделать группировку уровневую по производителям. Ниже привожу фрагмент модуля

Процедура СформироватьОтчет(ДокументРезультат, ПоказыватьЗаголовок, ВысотаЗаголовка, ТолькоЗаголовок = Ложь) Экспорт

   ДокументРезультат.Очистить();
   
   Макет = ПолучитьМакет("Макет");
   Заголовок = Макет.ПолучитьОбласть("Заголовок");
   Заголовок.Параметры.НазваниеОрганизации = Организация.НаименованиеПолное;
   Заголовок.Параметры.Заголовок = "Сравнение данных об остатках в бухгалтерском учете и оперативном учете";
   Заголовок.Параметры.ОписаниеПериода = "" + Формат(ДатаНач, "ДФ = ""дд.ММ.гггг""; ДП = ""...""") + " - " +
                                    Формат(ДатаКон, "ДФ = ""дд.ММ.гггг""; ДП = ""...""");
   // Параметр для показа заголовка
   ВысотаЗаголовка = ДокументРезультат.ВысотаТаблицы;

   ДокументРезультат.Вывести(Заголовок);
   // Когда нужен только заголовок:
   Если ТолькоЗаголовок Тогда
      Возврат;
   КонецЕсли;

   ДокументРезультат.Области.Заголовок.Видимость = ПоказыватьЗаголовок;

   РезультирующаяТаблица = Новый ТаблицаЗначений;
   

   
   ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   СтрокаТаблицы    = Макет.ПолучитьОбласть("СтрокаТаблицы");
   ИтогиТаблицы     = Макет.ПолучитьОбласть("СтрокаИтогов");
   

      // Сначала формируем таблицу для сравнения
      ЗаголовокТаблицы.Параметры.ОписаниеТаблицы = "Анализ остатков:";
      ДокументРезультат.Вывести(ЗаголовокТаблицы);
      
      ВыполнитьСравнительныйЗапросОстатков(РезультирующаяТаблица);
         Для Каждого СтрокаРез Из РезультирующаяТаблица Цикл
         СтрокаТаблицы.Параметры.Код    = СтрокаРез.Код;
         СтрокаТаблицы.Параметры.Производитель    = СтрокаРез.Производитель;
         СтрокаТаблицы.Параметры.Номенклатура    = СтрокаРез.Номенклатура;
         СтрокаТаблицы.Параметры.Склад          = СтрокаРез.Склад ;
         СтрокаТаблицы.Параметры.ОстатокОпер     = СтрокаРез.ОстатокОпер;
         СтрокаТаблицы.Параметры.ОстатокБух      = СтрокаРез.ОстатокБух;
         СтрокаТаблицы.Параметры.Разница         = СтрокаРез.Разница;
         
         ДокументРезультат.Вывести(СтрокаТаблицы);
         
      КонецЦикла;
      
      Попытка
      ИтогиТаблицы.Параметры.ИтогОстатокОпер       = РезультирующаяТаблица.Итог("ОстатокОпер");
      ИтогиТаблицы.Параметры.ИтогОстатокБух        = РезультирующаяТаблица.Итог("ОстатокБух");
      ИтогиТаблицы.Параметры.ИтогРазница          = РезультирующаяТаблица.Итог("Разница");
      Исключение
      ИтогиТаблицы.Параметры.ИтогРазница          = "Ошибка";
      КонецПопытки;
      
      ДокументРезультат.Вывести(ИтогиТаблицы);
      
   
   ДокументРезультат.Автомасштаб = Истина;

КонецПроцедуры






Процедура ВыполнитьСравнительныйЗапросОстатков(РезультирующаяТаблица)

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

   Запрос.Текст = ТекстЗапроса;
   
   МассивОрганизации = Новый Массив;
   МассивОрганизации.Добавить(Справочники.Организации.НайтиПоКоду("000000001"));
   МассивОрганизации.Добавить(Справочники.Организации.НайтиПоКоду("000000004"));
    //
   
   Запрос.УстановитьПараметр("ДатаНач", ?(НЕ ЗначениеЗаполнено(ДатаНач), Неопределено, Новый Граница(НачалоДня(ДатаНач), ВидГраницы.Включая)));
   Запрос.УстановитьПараметр("ДатаКон", ?(НЕ ЗначениеЗаполнено(ДатаКон), Неопределено, Новый Граница(КонецДня (ДатаКон), ВидГраницы.Включая)));
   Запрос.УстановитьПараметр("Организация", МассивОрганизации);
   Запрос.УстановитьПараметр("Склад", Склад);
   
   МассивСчетов = Новый Массив;
   МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.Материалы); // 10
   МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.Полуфабрикаты); // 21  Товары
   МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.Товары); // 41
   МассивСчетов.Добавить(ПланыСчетов.Хозрасчетный.ГотоваяПродукция); // 43
   
   Запрос.УстановитьПараметр("Счет", МассивСчетов);
       
   РезультирующаяТаблица = Запрос.Выполнить().Выгрузить();
   РезультирующаяТаблица.Сортировать("Производитель Возр");
   
КонецПроцедуры


Теги:
 

Группа "СписокКомпоновщикНастроекПользовательскиеНастройки" в форме "Перечисления"

Автор Азамат ХубиевРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1768
Последний ответ 12 Ноя 2016, 18:08
от Азамат Хубиев
Изменение цвета при подборе сотрудника в форме списка справочника "Сотрудники организации" для документа "Зарплата к выплате организаций" ЗУП 2.5

Автор ksander-farsРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 275
Последний ответ 12 Окт 2017, 14:02
от wise
Как настроить отображение на форме "группа плательщика единого налога" при выборе системы налогообложения "Единый налог"?

Автор Nicolayci91Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2285
Последний ответ 17 Авг 2015, 07:48
от cska-fanat-kz
Добавление строки и заполнение строки в ТЗ на форме

Автор Св ЧРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 307
Последний ответ 25 Сен 2017, 09:00
от Св Ч
Ребята, срочно нужна помощь. Какую процедуру нужно написать в форме справочника, чтобы таблица заполнялась данными из другого справочника?

Автор Олька БякинаРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2771
Последний ответ 27 Май 2016, 15:19
от Олька Бякина

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
62 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 151
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal