7.7 Помогите, пожалуйста, с формированием печатной формы

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем Hedinnk, 21 апр 2011.

  1. TopicStarter Overlay
    Hedinnk
    Offline

    Hedinnk

    Регистрация:
    21 апр 2011
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Есть следующий код:
    Код:
    перем Комплект;
    
    ВыбратьСтроки();
    
    НомерПП = 0;
    
    Пока ПолучитьСтроку() = 1 Цикл
    
    Комплект = Комплектующие.Комплект;
    
    Если Комплект > 0 Тогда
    
    Спр = СоздатьОбъект("Справочник.Комплектация");
    
    Спр.ИспользоватьВладельца(Комплектующие);
    
    Спр.ВыбратьЭлементы();
    
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    
    ТабКомплектующие = Спр.Товар;
    
    ТабКоличество = Спр.Количество * Количество;
    
    ТабПримечание = Спр.Товар.Примечание;
    
    ТабМестоЗакупки = Спр.Товар.Фирмы;
    
    НомерПП = НомерПП + 1;
    
    Таб.ВывестиСекцию("Строка");
    
    КонецЦикла;
    
    Иначе
    
    ТабКомплектующие = Комплектующие;
    
    ТабКоличество = Количество;
    
    ТабПримечание = ПримечаниеТабличное;
    
    ТабМестоЗакупки = МестоЗакупки;
    
    НомерПП = НомерПП + 1;
    
    Таб.ВывестиСекцию("Строка");
    
    КонецЕсли;
    
    КонецЦикла;
    
    
    Помогите сделать так, чтобы он производил группировку по ТабКомплектующие и выводил их в печатную форму с суммой количества, вместо того чтобы каждый отобранный элемент выводил в новой строке.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    
    перем Комплект;
    
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    
    ТЗ.НоваяКолонка("Товар");
    
    ТЗ.НоваяКолонка("Количество");
    
    
    
    ТолькоГруппы=1; //переменная отвечающая за группировку
    
    //=1 вы водит комплектующие сгруппированными (отсутствуют фирмы и примечания)
    
    //=0 выводит как было раньше
    
    
    
    ВыбратьСтроки();
    
    НомерПП = 0;
    
    Пока ПолучитьСтроку() = 1 Цикл
    
    Комплект = Комплектующие.Комплект;
    
    Если Комплект > 0 Тогда
    
    Спр = СоздатьОбъект("Справочник.Комплектация");
    
    Спр.ИспользоватьВладельца(Комплектующие);
    
    Спр.ВыбратьЭлементы();
    
    ТЗ.УдалитьСтроки();
    
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    
    ТабКомплектующие = Спр.Товар;
    
    ТабКоличество = Спр.Количество * Количество;
    
    ТабПримечание = Спр.Товар.Примечание;
    
    ТабМестоЗакупки = Спр.Товар.Фирмы;
    
    НомерПП = НомерПП + 1;
    
    Если ТолькоГруппы=0 Тогда
    
    Таб.ВывестиСекцию("Строка");
    
    Иначе
    
    ТЗ.НоваяСтрока();
    
    ТЗ.Товар= Спр.Товар;
    
    ТЗ.Количество= Спр.Количество * Количество;
    
    КонецЕсли;
    
    КонецЦикла;
    
    Если ТолькоГруппы=1 Тогда
    
    ТЗ.Свернуть("Товар","Количество");
    
    ТЗ.ВыбратьСтроки();
    
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    
    Таб.ВывестиСекцию("СтрокаТЗ");// придется добавить секцию в макете
    
    КонецЦикла;
    
    КонецЕсли;
    
    Иначе
    
    ТабКомплектующие = Комплектующие;
    
    ТабКоличество = Количество;
    
    ТабПримечание = ПримечаниеТабличное;
    
    ТабМестоЗакупки = МестоЗакупки;
    
    НомерПП = НомерПП + 1;
    
    Таб.ВывестиСекцию("Строка");
    
    КонецЕсли;
    
    КонецЦикла;
    
    
    
    
    
  3. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    тяжелая постановка вопроса..

    Код:
    Пока ПолучитьСтроку() = 1 Цикл
    
    Комплект = Комплектующие.Комплект;
    
    Если Комплект > 0 Тогда
    
    Спр.ИспользоватьВладельца(Комплектующие);
    
    Спр.ВыбратьЭлементы();
    
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
    
    ТабКоличество = ТабКоличество+Спр.Количество*Количество;
    
    КонецЦикла;
    
    Иначе
    
    ТабКоличество = Количество;
    
    КонецЕсли;
    
    ТабКомплектующие = Комплектующие;
    
    ТабПримечание = ПримечаниеТабличное;
    
    ТабМестоЗакупки = МестоЗакупки;
    
    НомерПП = НомерПП + 1;
    
    Таб.ВывестиСекцию("Строка");
    
    КонецЦикла;
    
    
    
    
    
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А элементы комплекта где, фобец?)))))))))))
    Мне кажется они нужны
  5. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    сейчас выложу третий вариант трактовки :)
  6. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Код:
    <pre><FONT COLOR="blue"><FONT FACE="Courier"><span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/перем')">перем</span> Комплект;
    
    oVT = CreateObject("ValueTable");
    oVT.InsertColumn("ТабКомплектующие");
    oVT.InsertColumn("ТабКоличество");
    ВыбратьСтроки();
    НомерПП = 0;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/пока')">Пока</span> ПолучитьСтроку() = 1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл</span>
    Комплект = Комплектующие.Комплект;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/если')">	Если</span> Комплект > 0 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда</span>
    Спр = СоздатьОбъект("Справочник.Комплектация");
    Спр.ИспользоватьВладельца(Комплектующие);
    Спр.ВыбратьЭлементы();
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/пока')">		Пока</span> Спр.ПолучитьЭлемент() = 1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл</span>
    oVT.NewLine();
    oVT.ТабКомплектующие = Спр.Товар;
    oVT.ТабКоличество = Спр.Количество * Количество;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конеццикла')">		КонецЦикла</span>;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе</span>
    oVT.NewLine();
    oVT.ТабКомплектующие = Комплектующие;
    oVT.ТабКоличество = Количество;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецесли')">	КонецЕсли</span>;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конеццикла')">КонецЦикла</span>;
    oVT.GroupBy("ТабКомплектующие","ТабКоличество");
    oVT.SelectLines();
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/while')">While</span> oVT.GetLine() = 1 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/do')">Do</span>
    ТабКомплектующие = oVT.ТабКомплектующие;
    ТабКоличество = oVT.ТабКоличество;
    НомерПП = НомерПП + 1;
    Таб.ВывестиСекцию("Строка");
    EndDo;
    
    </FONT></FONT></span></pre>
    всё, подругому не "схлопнешь"
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А Hedin как интересно надо))))
    В моем варианте можно "откатиться" на старый вариант отчета.
    Информация там думаю не маловажная
  8. TopicStarter Overlay
    Hedinnk
    Offline

    Hedinnk

    Регистрация:
    21 апр 2011
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Приведу небольшой пример того что есть и того что должно быть:

    1. В подборе выбраны ключ - шт., модуль - 1 шт., винт - 2 шт. и гайка - 2 шт.
    2. Допустим ключ состоит из элементов Элем1 - 1 шт., Элем2 - 1 шт. и Элем3 - 1 шт., модуль состоит из Элем2 - 2 шт., Элем3 - 2 шт. и Элем4 - 2 шт., винт - это Элем4 - 1 шт., гайка - это Элем5 - 1 шт.

    В данный момент в печатную форму выводит таблицу в следующем порядке:
    1. Элем1 - 1 шт.
    2. Элем2 - 1 шт.
    3. Элем3 - 1 шт.
    4. Элем2 - 2 шт.
    5. Элем3 - 2 шт.
    6. Элем4 - 2 шт.
    7. Элем4 - 1 шт.
    8. Элем5 - 1 шт.

    А нужно чтобы выводил вот так:
    1. Элем1 - 1 шт.
    2. Элем2 - 3 шт.
    3. Элем3 - 3 шт.
    4. Элем4 - 3 шт.
    5. Элем5 - 1 шт.

    Надеюсь что правильно объяснил что хочу получить
  9. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    третий вариант, только выводиться будет
    1. Элем1 - 1 шт.
    2. Элем2 - 3 шт.
    3. Элем3 - 3 шт.
    4. Гайка - 1 шт
    5. Винт - 1 шт

    ибо не понятно откуда их цеплять
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    А дополнительная информация как в старом варианте вам совсем не нужна?
  11. TopicStarter Overlay
    Hedinnk
    Offline

    Hedinnk

    Регистрация:
    21 апр 2011
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Дополнительная информация очень важна.
    Тот вариант, который Вы написали последним подходит и работает как надо, осталось только добавить информация о месте закупки, единице измерения и примечание.
  12. TopicStarter Overlay
    Hedinnk
    Offline

    Hedinnk

    Регистрация:
    21 апр 2011
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Всем большое спасибо, все работает отлично.

Поделиться этой страницей