7.7 Печатная форма

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем kible, 1 июн 2010.

  1. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Как сделать печатную форму см. рисунок.
    Код:
    Процедура Печать()
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл 
    
    ОбщКолВо=0;
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    Спр.ИспользоватьРодителя(СпецификацияИзделия);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    ОбщКолВо=Спр.Количество*Количество;
    Материал = Спр.Материал;
    Норма = Спр.Количество;
    
    КонецЦикла;
    Таб.ВывестиСекцию("Строка");
    Таб.ВывестиСекцию("Материал");
    КонецЦикла;
    
    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Акт переработки","");
    КонецПроцедуры
    
    

    Вложения:

  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вместо:
    Код:
    Таб.ВывестиСекцию("Строка");
    Таб.ВывестиСекцию("Материал");
    
    
    попробуйте:
    Код:
    Таб.ВывестиСекцию("Строка|Основнаячасть");
    Таб.ПрисоединитьСекцию("Строка|Материал");
    
    
    Создайте вертикальную секцию "ОсновнаяЧасть" только.
  3. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Сделал только теперь столбец не дублируется вообще. Хотя там 2 материала. И наименование материала не показывает.
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    Процедура Печать()
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл 
    
    Таб.ВывестиСекцию("Строка|Основнаячасть");
    
    ОбщКолВо=0;
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    Спр.ИспользоватьРодителя(СпецификацияИзделия);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    ОбщКолВо=Спр.Количество*Количество;
    Материал = Спр.Материал;
    Норма = Спр.Количество;
    Таб.ПрисоединитьСекцию("Строка|Материал");
    КонецЦикла;
    
    КонецЦикла;
    
    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Акт переработки","");
    КонецПроцедуры
    
    
    А так? Вы вертикальную секцию не забыли добавить?
  5. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    нет. Материал не отображается. В чем причина?
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Покажите пожалуйста что у вас на экране сейчас и макет.
  7. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Вот.

    Вложения:

  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Почему не выводится, теперь понятно. Если так как вы хотите, то там должно быть 2 цикла: один для шапки, другой для строк. Теперь непонятно другое: у вас есть подчиненный справочник "Справочник.СпецификацияНоменклатуры", теперь допустим в накладной у вас 5 позиций, не у всех же наименование материала будет "Цемент", как это должно будет выглядеть? Т.е. к первой строке вы то присоедените наименование с шапкой где будет "Цемент", а ко второй строке каким образом должно присоедениться, если там не цемент? Понятно о чем я спрашиваю?
    Т.е. тогда я так понимаю вам в области "Шапка|Материал" вместо <Материал> надо просто оставить текст, допустим "Наименование материала", а область "Строка|Материал" разбить на 2 строки, верхняя из них будет <Материал>, нижняя как есть сейчас (<Норма>, <ОбщКолВо>).
  9. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Можно и один с использованием ТаблицыЗначений и СпискаЗначений.

    Скорее всего должна присоединиться пустая ячейка.

    З.Ы. На нашу производственную ведомость похоже. Сейчас посмотрю - отпишусь.
  10. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    По памяти написал (может где ошибка, но принцип, я думаю, понятен):
    Код:
        // формируем матрицу значений
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Номенклатура", "Справочник");
    ТЗ.НоваяКолонка("Единица"); // !!! какой тип значения ?
    ТЗ.НоваяКолонка("Количество", "Число", 18, 3);
    Сп = СоздатьОбъект("СписокЗначений");
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл 
    ТЗ.НоваяСтрока();
    ТЗ.Номенклатура = СпецификацияИзделия.ТекущийЭлемент();
    ТЗ.Количество = Количество;
    ТЗ.Единица = Единица;
    
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    Спр.ИспользоватьРодителя(СпецификацияИзделия);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    ТекМатериал = Спр.Материал;
    
    Ном = Сп.НайтиЗначение(ТекМатериал);
    Если Ном = 0 Тогда
    Сп.ДобавитьЗначение(ТекМатериал);
    Ном = Сп.РазмерСписка();
    
    ТЗ.НоваяКолонка("К_" + СокрЛП(Ном), "Число", 18, 3);
    ТЗ.НоваяКолонка("О_" + СокрЛП(Ном), "Число", 18, 3);
    КонецЕсли;
    
    ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, "К_" + СокрЛП(Ном), Спр.Количество);
    ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, "О_" + СокрЛП(Ном), Спр.Количество * Количество);
    КонецЦикла;
    КонецЦикла;    
    
    // выводим результат
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    
    // шапка
    Таб.ВывестиСекцию("Шапка|Основнаячасть");
    Для Сч = 1 По Сп.РазмерСписка() Цикл
    Материал = Сп.ПолучитьЗначение(Сч);
    Таб.ПрисоединитьСекцию("Шапка|Материал");
    КонецЦикла;
    
    // строка
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Строка|Основнаячасть");
    Для Сч = 1 По Сп.РазмерСписка() Цикл
    ОбщКолВо = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, "О_" + СокрЛП(Сч));
    Норма = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки, "К_" + СокрЛП(Сч));
    Таб.ПрисоединитьСекцию("Строка|Материал");
    КонецЦикла;
    КонецЦикла;
    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Акт переработки","");
    
    
    
    Только переменные в макете переделайте.
  11. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Вот так. А почему Номенклатура не попадает я что-то не пойму.

    Вложения:

  12. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Я ж говорю переменные в макете переделайте:
    Вместо
    НомерСтроки - ТЗ.НомерСтроки
    Номенклатура - ТЗ.Номенклатура
    Единица - ТЗ.Единица
    Количество - ТЗ.Количество

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