Имя: Пароль:
1C
1С v8
передать значение переменной между процедурами модуля
0 Zika
 
20.08.21
16:37
ут11.4.8
сильно допереписанная поэтому не обновлялась весьма давно.
добавил макет для новой версии упд, нужно заполнять строку 5а.
в модуле обработки "печать общих форм" сначала процедура заполнения шапки, потом процедура заполнения табличной части, в которой считается собственно количество строк.
Вот мне это количество нужно передавать в заполнение шапки как-то.
темы читал, пробовал но не получилось, видимо где то чтото все таки не так делал.
Я не программист 1с вообще поэтому прошу сильно не глумиться.
1 ДенисЧ
 
20.08.21
16:41
Предлагаю или стать программистом 1с или пригласить такового
2 polosov
 
20.08.21
16:42
(0) "Не лезь туда, д..., б...! Она тебя сожрет!"
3 lodger
 
20.08.21
16:43
а забить болт на 5а не желаете? https://www.diadoc.ru/blog/7979
4 Zika
 
20.08.21
16:50
(3) А если бумажный?
5 Zika
 
20.08.21
16:51
(2) все еще не сожрало... и к сожалению как показывает практика работы с программистами реально на простых задачах получается проще и быстрее сделать самому...

когда в чеках ндс сделали неделю моск мучали.. сам сделал.
а тут вот один маленький нюансик
6 Kassern
 
20.08.21
16:55
(5) да маленький, если понимать как работать с печатными формами, как редактировать макеты и задавать параметры, как это выводить и откуда цеплять данные, а так да, плевое дело
7 Kassern
 
20.08.21
16:57
имхо, вам проще скачать рабочую обработку, или расширение, которое УПДшку правит и не парится, пару килорублей заплатите, зато без головняка.
8 Zika
 
20.08.21
17:02
(6) как работать с макетами и задавать параметры я знаю. это все работает.
я могу просто тупо так же пересчет строк прописать и в обработке шапки да но это путь неправильный. я так понимаю вы сами не знаете что именно делать.
скачать рабочую я с радостью, не подскажете где?
расширение которое правит я бы опасался так как у нас посторюсь 1с не стандартная.
9 Kassern
 
20.08.21
17:04
(8) как пример https://infostart.ru/public/1468487/
10 Kassern
 
20.08.21
17:05
(8) ну раз с макетами умеете управляться, то добавьте там эту строчку с параметром, посмотрите как пункт 5 заполняется и в каком месте, рядышком заполните 5а ваш нужными данными (заполните ваш параметр/шаблон) для области шапки.
11 Zika
 
20.08.21
17:20
(10) у меня все заполняется кроме номера последней строки. в 5 строке просто номер какого то документа другого он нормально заполняется по другому... вы по моему невнимательно читаете в чем у меня затык.
строка 5а - заполнение
номера строк документа с 1 по конечную (вот ее мне не передать), номер документа дата документа.
12 Kassern
 
20.08.21
17:22
(11) вы не можете получить количество строк документа? Обращаетесь к табличной части и метод Количество() вам вернет количество строк.
13 Kassern
 
20.08.21
17:22
(11) скиньте кусок кода где у вас затык
14 Zika
 
20.08.21
17:26
(12) количество получается но в другой процедуре, где выводится сама табличная часть.
а мне их количество надо вывести в шапке.
добраться до кода смогу через час где то
15 Zika
 
20.08.21
18:33
Из второй процедуры надо в первую передать КоличествоСтрок

Процедура ЗаполнитьРеквизитыШапкиУПД(ДанныеПечати, СведенияОПоставщике, ДанныеКонтрагентов, Макет, ТабличныйДокумент)
    
    СведенияОГрузоотправителе = СведенияОГрузоотправителе(ДанныеПечати);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета,
        ДанныеПечати.Ссылка);
    ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
    
    ПараметрыШапки = Новый Структура;
    
    ПараметрыШапки.Вставить("Номер", НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения));
    ПараметрыШапки.Вставить("Дата", Формат(ДанныеПечати.Дата, "ДЛФ=ДД"));
    ПараметрыШапки.Вставить("НомерИсправления", ?(ДанныеПечати.Исправление, ДанныеПечати.НомерИсправления, "--"));
    ПараметрыШапки.Вставить("ДатаИсправления",
        ?(ДанныеПечати.Исправление, Формат(ДанныеПечати.ДатаИсправления, "ДЛФ=ДД"), "--"));
    
    // Выводим данные о поставщике.
    ПредставлениеПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        СведенияОПоставщике.ОфициальноеНаименование);
    
    АдресПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес"));
    
    ИННПоставщика = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1%2'"),
        ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН", Ложь),
        ?(Не ПустаяСтрока(ДанныеПечати.КПППоставщика), "/" + ДанныеПечати.КПППоставщика, ""));
        
    //ТекстДокументыОбОтгрузке = "";
    
        
    ПараметрыШапки.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
    ПараметрыШапки.Вставить("АдресПоставщика", АдресПоставщика);
    ПараметрыШапки.Вставить("ИННПоставщика", ИННПоставщика);
    //СтрокаТовары = ВыборкаПоДокументам.Выбрать();
    //КоличествоСтрок = СтрокаТовары.Количество();
    ВыборкаПоДокументам = ДанныеПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
    ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
    СтрокаТовары = ВыборкаПоДокументам.Выбрать();
    КоличествоСтрок = СтрокаТовары.Количество();

    
    ПараметрыШапки.Вставить("КоличествоСтрок", КоличествоСтрок);

    
    
    // Выводим данные грузоотправителя.
    ТекстГрузоотправителя = "";
    Если ДанныеПечати.ТолькоУслуги ИЛИ ДанныеПечати.Грузоотправитель = Неопределено Тогда
        ТекстГрузоотправителя = "--";
    ИначеЕсли ДанныеПечати.Организация = ДанныеПечати.Грузоотправитель Тогда
        ТекстГрузоотправителя = НСтр("ru='он же'");
    Иначе
        ТекстГрузоотправителя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
            СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес");
    КонецЕсли;
    
    ПредставлениеГрузоотправителя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        ТекстГрузоотправителя);
    
    ПараметрыШапки.Вставить("ПредставлениеГрузоотправителя", ПредставлениеГрузоотправителя);
    
    // Выводим данные грузополучателя и покупателя.
    ТекстГрузополучателя = "--";
    
    ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        ТекстГрузополучателя);
    СтрокаПоДокументу = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        ?(ПустаяСтрока(ДанныеПечати.СтрокаПоДокументу),
            НСтр("ru='-- от --'"),
            ДанныеПечати.СтрокаПоДокументу));
    
    ПараметрыШапки.Вставить("ПоДокументу", СтрокаПоДокументу);
    
    ЕстьГрузополучатель = Не ДанныеПечати.ТолькоУслуги;
    
    ТаблицаКонтрагентов = ТаблицаКонтрагентовСчетаФактуры(ДанныеПечати, ДанныеКонтрагентов);
    
    ПредставлениеПокупателя       = "";
    ПредставлениеАдресаПокупателя = "";
    ПредставлениеИННПокупателя    = "";
    ПредставлениеГрузополучателя  = "";
    
    Для Каждого СтрокаТаблицы Из ТаблицаКонтрагентов Цикл
        
        СведенияОПокупателе = СтрокаТаблицы.СведенияОПокупателе;
        
        ПредставлениеПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru='%1; %2'"),
            ПредставлениеПокупателя,
            ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование", Ложь));
        
        ПредставлениеАдресаПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru='%1; %2'"),
            ПредставлениеАдресаПокупателя,
            ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес", Ложь));
            
        ПредставлениеИННПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru='%1; %2%3'"),
            ПредставлениеИННПокупателя,
            ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ИНН", Ложь),
            ?(Не ПустаяСтрока(СтрокаТаблицы.КПП), "/" + СтрокаТаблицы.КПП, ""));
        
        Если ЕстьГрузополучатель Тогда
            СведенияОГрузополучателе = СтрокаТаблицы.СведенияОГрузополучателе;
            ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='%1; %2'"),
                ПредставлениеГрузополучателя,
                ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес", Ложь));
        КонецЕсли;
        
    КонецЦикла;
    
    ПредставлениеПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        Сред(ПредставлениеПокупателя, 3));
    
    ПредставлениеАдресаПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        Сред(ПредставлениеАдресаПокупателя, 3));
    
    ПредставлениеИННПокупателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        Сред(ПредставлениеИННПокупателя, 3));
        
    ПредставлениеГрузополучателя = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='%1'"),
        ?(ЕстьГрузополучатель, Сред(ПредставлениеГрузополучателя, 3), "--"));
        
    ПараметрыШапки.Вставить("ПредставлениеПокупателя", ПредставлениеПокупателя);
    ПараметрыШапки.Вставить("АдресПокупателя", ПредставлениеАдресаПокупателя);
    ПараметрыШапки.Вставить("ИННПокупателя", ПредставлениеИННПокупателя);
    ПараметрыШапки.Вставить("ПредставлениеГрузополучателя", ПредставлениеГрузополучателя);
    ПараметрыШапки.Вставить("Валюта", НСтр("ru='Российский рубль, 643'"));
    
    СтруктураПараметровИдентификаторГосКонтракта = Новый Структура("ИдентификаторГосКонтракта");
    ЗаполнитьЗначенияСвойств(СтруктураПараметровИдентификаторГосКонтракта, ДанныеПечати);
    Если ДействуетПостановление981(ДанныеПечати.Дата,ДанныеПечати.ДатаИсправления) Тогда
        ПредставлениеИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru='%1'"),
            СокрЛП(СтруктураПараметровИдентификаторГосКонтракта.ИдентификаторГосКонтракта));
    Иначе
        ПредставлениеИдентификаторГосКонтракта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru='%1'"),
            СокрЛП(СтруктураПараметровИдентификаторГосКонтракта.ИдентификаторГосКонтракта));
    КонецЕсли;
    ПараметрыШапки.Вставить("ИдентификаторГосКонтракта", ПредставлениеИдентификаторГосКонтракта);
    
    ОбластьМакета.Параметры.Заполнить(ПараметрыШапки);
    
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
КонецПроцедуры



Процедура ЗаполнитьТабличныйДокументУПД(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати) Экспорт
    
    
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
    МакетУПД = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_УниверсальныйПередаточныйДокумент");
    МакетУПД_625 = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_УниверсальныйПередаточныйДокумент_625");
    МакетУПД_981 = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_УниверсальныйПередаточныйДокумент981");
    МакетУПД_534 = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьОбщихФорм.ПФ_MXL_УниверсальныйПередаточныйДокумент534"); //Дима 30.06.21
    
    ДанныеПечати        = ДанныеДляПечати.РезультатПоШапке.Выбрать();
    ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Если ДанныеДляПечати.Свойство("РезультатПоКонтрагентам") Тогда
        ВыборкаКонтрагентов = ДанныеДляПечати.РезультатПоКонтрагентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Иначе
        ВыборкаКонтрагентов = Неопределено;
    КонецЕсли;
    Если ДанныеДляПечати.Свойство("РезультатПоИсходнымДанным") Тогда
        ВыборкаОснований = ДанныеДляПечати.РезультатПоИсходнымДанным.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Иначе
        ВыборкаОснований = Неопределено;
    КонецЕсли;
    
    ЕстьПостановление981 = ЛОЖЬ;
    ЕстьПостановление1137_625 = ЛОЖЬ;
    ЕстьПостановление1137 = ЛОЖЬ;
    ЕстьПостановление534 = ЛОЖЬ;          //Дима 30.06.21

    
    ПервыйДокумент = Истина;
    Пока ДанныеПечати.Следующий() Цикл
        
        // Данное условие срабатывает, когда печать ведется из учетного документа (не из СФ),
        // но при этом требуется печать СФ (в этом случае нужно печатать УПД в статусе 1).
        // Условие "ТребуетсяНаличиеСФ" добавлено для документов, для которых необходимо
        // печатать УПД в статусе 2, но наличия СФ не обязательно.
        // Например, Возврат товаров между организациями и Возврат товаров поставщику.
        Если ДанныеПечати.СтатусУПД = 2
            И ЗначениеЗаполнено(ДанныеПечати.НалогообложениеНДС)
            И ДанныеПечати.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС
            И НЕ ДанныеПечати.ЭтоПередачаНаКомиссию
            И ДанныеПечати.ТребуетсяНаличиеСФ Тогда
            
            Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru = 'Для документа %1 не введен %2'"),
                ДанныеПечати.Ссылка,
                ДанныеПечати.ПредставлениеДокумента);
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                Текст,
                ДанныеПечати.Ссылка,
                ,
                "ТекстСчетФактура");
                
            Продолжить;
        КонецЕсли;
        
        Если ДействуетПостановление534(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда            //Дима 30.06.21
            Макет = МакетУПД_534;                                                                        //Дима 30.06.21
            ЕстьПостановление534 = Истина;                                                               //Дима 30.06.21
        ИначеЕсли ДействуетПостановление981(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда       //Дима 30.06.21
            Макет = МакетУПД_981;
            ЕстьПостановление981 = Истина;
        ИначеЕсли ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда
            Макет = МакетУПД_625;
            ЕстьПостановление1137_625 = Истина;
        Иначе
            Макет = МакетУПД;
            ЕстьПостановление1137 = Истина;
        КонецЕсли;
        
        Если ЕстьПостановление1137_625 И ЕстьПостановление1137 Тогда
            
            Текст = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов,
                |сформированных до и после начала применения постановления Правительства РФ №625 от 25 мая 2017 г.'");
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                Текст,
                ДанныеПечати.Ссылка);
            
            ТабличныйДокумент.Очистить();
            Прервать;
            
        КонецЕсли;
        
        Если (ЕстьПостановление1137_625 ИЛИ ЕстьПостановление1137) И ЕстьПостановление981 Тогда
            
            Текст = НСтр("ru = 'Недоступна одновременная печать универсальных передаточных документов,
                |сформированных до и после начала применения постановления Правительства РФ №981 от 19 августа 2017 г.'");
            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
                Текст,
                ДанныеПечати.Ссылка);
            
            ТабличныйДокумент.Очистить();
            Прервать;
            
        КонецЕсли;
        
        
        Если Не ПервыйДокумент Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        ПервыйДокумент = Ложь;
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
            
        // Выводим общие реквизиты шапки
        СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);
        ЗаполнитьРеквизитыШапкиУПД(ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов, Макет, ТабличныйДокумент);
        
        // Выводим заголовок таблицы
        ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
        ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
        
        НомерСтраницы = 1;
        
        // Инициализация итогов в документе
        ИтоговыеСуммы = СтруктураИтоговыеСуммы();
        
        // Создаем массив для проверки вывода
        МассивВыводимыхОбластей = Новый Массив;
        
        // Выводим многострочную часть документа
        ОбластьСтрокаСтандарт = Макет.ПолучитьОбласть("Строка");
        ОбластьИтого = Макет.ПолучитьОбласть("Итого");
        ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");  
        Если Макет = МакетУПД_534 Тогда
        ОбластьПодвалНакладной = Макет.ПолучитьОбласть("ПодвалНакладной");  // дима
        КонецЕсли;
        
        ЗаполнитьРеквизитыПодвалаУПД(ОбластьПодвал, ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов);
        Если Макет = МакетУПД_534 Тогда
        ЗаполнитьРеквизитыПодвалаУПД(ОбластьПодвалНакладной, ДанныеПечати, СведенияОбОрганизации, ВыборкаКонтрагентов);
        КонецЕсли;
        
        Если ДанныеДляПечати.РезультатПоШапке.Колонки.Найти("ВыводитьКодНоменклатуры") <> Неопределено Тогда
            ВыводитьКодНоменклатуры = ДанныеПечати.ВыводитьКодНоменклатуры;
        Иначе
            ВыводитьКодНоменклатуры = Истина;
        КонецЕсли;
        
        СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
        ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
            
        ИспользоватьНаборы = Ложь;
        Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
            ИспользоватьНаборы = Истина;
            ОбластьСтрокаНабор         = Макет.ПолучитьОбласть("СтрокаНабор");
            ОбластьСтрокаКомплектующие = Макет.ПолучитьОбласть("СтрокаКомплектующие");
        КонецЕсли;
        
        ВыводитьКодыТНВЭД = ВыводитьКодыТНВЭД(ДанныеПечати, ЕстьПостановление981);
        
        ОперацияОблагаетсяНДСУПокупателя = Ложь;
        Если ДанныеПечати.СтатусУПД = 1
        И ДанныеПечати.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя Тогда
            ОперацияОблагаетсяНДСУПокупателя = Истина;
        КонецЕсли;
        
        СтрокаТовары = ВыборкаПоДокументам.Выбрать();
        КоличествоСтрок = СтрокаТовары.Количество();
        //КвоСтрок = КоличествоСтрок;
        
        ТолькоСтавкаБезНДС = Истина;
        НомерСтроки = 0;
        Пока СтрокаТовары.Следующий() Цикл
            
            Если ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ОтчетКомиссионера")
                ИЛИ ТипЗнч(ДанныеПечати.Ссылка) = Тип("ДокументСсылка.ОтчетПоКомиссииМеждуОрганизациями") Тогда
                Если СтрокаТовары.Покупатель <> ДанныеПечати.Покупатель
                    И СтрокаТовары.Покупатель <> НЕОПРЕДЕЛЕНО Тогда
                        Продолжить;
                КонецЕсли;
            КонецЕсли;
            
            Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
                ОбластьСтрока = ОбластьСтрокаНабор;
            ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                ОбластьСтрока = ОбластьСтрокаКомплектующие;
            Иначе
                ОбластьСтрока = ОбластьСтрокаСтандарт;
            КонецЕсли;
            
            Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьСтрока, Неопределено, , ВыводитьКодыТНВЭД);
            Иначе
                НомерСтроки = НомерСтроки + 1;
                ЗаполнитьРеквизитыСтрокиТовара(СтрокаТовары, ОбластьСтрока, НомерСтроки, , ВыводитьКодыТНВЭД);
                ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьСтрока);
            КонецЕсли;
            
            СтруктураПараметров = Новый Структура;
            Если ОперацияОблагаетсяНДСУПокупателя Тогда
                СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='НДС исчисляется налоговым агентом'"));
                СтруктураПараметров.Вставить("СуммаСНДС", "--");
                ТолькоСтавкаБезНДС = Ложь;
            ИначеЕсли СтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
                СтруктураПараметров.Вставить("СтавкаНДС", НСтр("ru='без НДС'"));
                СтруктураПараметров.Вставить("СуммаНДС", НСтр("ru='без НДС'"));
            ИначеЕсли СтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
                СтруктураПараметров.Вставить("СуммаНДС", 0);
                ТолькоСтавкаБезНДС = Ложь;
            Иначе
                ТолькоСтавкаБезНДС = Ложь;
            КонецЕсли;
            Если Не НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                СтруктураПараметров.Вставить("Акциз", НСтр("ru='без акциза'"));
            КонецЕсли;
            ОбластьСтрока.Параметры.Заполнить(СтруктураПараметров);
            
            МассивВыводимыхОбластей.Очистить();
            МассивВыводимыхОбластей.Добавить(ОбластьСтрока);
            
            Если НомерСтроки = КоличествоСтрок Тогда
                МассивВыводимыхОбластей.Добавить(ОбластьИтого);
                МассивВыводимыхОбластей.Добавить(ОбластьПодвал);
            КонецЕсли;
            
            Если НомерСтроки <> 1 И НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
                
                НомерСтраницы = НомерСтраницы + 1;
                ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                
                ОбластьНумерацияЛистов = Макет.ПолучитьОбласть("НумерацияЛистов");
                ОбластьНумерацияЛистов.Параметры.Номер = НомерСчетаФактурыНаПечать(ДанныеПечати.Номер, ДанныеПечати.ИндексПодразделения);
                Если ДействуетПостановление534(ДанныеПечати.Дата, ДанныеПечати.ДатаИсправления) Тогда              //Дима 30.06.21
                    ОбластьНумерацияЛистов.Параметры.НомерЛиста = НомерСтраницы;                                   //Дима 30.06.21
                Иначе                                                                                              //Дима 30.06.21
                    ОбластьНумерацияЛистов.Параметры.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=ДД; ДП=--");
                    ОбластьНумерацияЛистов.Параметры.НомерСтраницы = НомерСтраницы;
                КонецЕсли;                                                                                         //Дима 30.06.21

                ТабличныйДокумент.Вывести(ОбластьНумерацияЛистов);
                ТабличныйДокумент.Вывести(ЗаголовокТаблицы);
                
            КонецЕсли;
            
            ТабличныйДокумент.Вывести(ОбластьСтрока);
            
            Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                РассчитатьИтоговыеСуммы(ИтоговыеСуммы, СтрокаТовары);
            КонецЕсли;
        КонецЦикла;
        КвоСтрок = НомерСтроки;
        Сообщить (КвоСтрок);
        СтруктураПараметров.Вставить("КвоСтрок", КвоСтрок);
        // Выводим итоги по документу
        ДобавитьИтоговыеДанныеПодвала(ИтоговыеСуммы, НомерСтроки, ВалютаРегламентированногоУчета);
        
        Если ТолькоСтавкаБезНДС Тогда
            ИтоговыеСуммы.ИтогоСуммаНДС = НСтр("ru='без НДС'");
        КонецЕсли;
        
        Если ОперацияОблагаетсяНДСУПокупателя Тогда
            ИтоговыеСуммы.Вставить("ИтогоСуммаСНДС", "--");
            ИтоговыеСуммы.Вставить("ИтогоСуммаСНДСНаСтранице", "--");
        КонецЕсли;
        
        ОбластьИтого.Параметры.Заполнить(ИтоговыеСуммы);
        ПроставитьПрочеркиВПустыеПоляСтроки(ОбластьИтого);
        ТабличныйДокумент.Вывести(ОбластьИтого);
        
        КоличествоСтраниц = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Документ составлен на %1 %2'"),
            НомерСтраницы,
            ОбщегоНазначенияУТКлиентСервер.ФормаМножественногоЧисла(
                НСтр("ru = 'листе'"), НСтр("ru = 'листах'"), НСтр("ru = 'листах'"), НомерСтраницы));
        СтруктураПараметров = Новый Структура("КоличествоСтраниц", КоличествоСтраниц);
        ОбластьПодвал.Параметры.Заполнить(СтруктураПараметров);
        ТабличныйДокумент.Вывести(ОбластьПодвал);
        Если Макет = МакетУПД_534 Тогда
        ТабличныйДокумент.Вывести(ОбластьПодвалНакладной);
        КонецЕсли;
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
            ДанныеПечати.Ссылка);
            
    КонецЦикла;
    
КонецПроцедуры
16 ДедМорроз
 
20.08.21
19:40
Так шапка-то поди это ВыборкаИзРезультатаЗапроса - в нее можно поместить только то,что в запросе.
Видимо,придется менять логику и переносить заполнение после выборки всех данных.
17 hhhh
 
20.08.21
19:46
(14) количество строк равно

ДанныеПечати.Ссылка.Товары.Количество()

а вторую процедуру шлите лесом
18 Zika
 
20.08.21
20:05
(17) поле объекта не обнаружено
19 Zika
 
20.08.21
20:09
(16) во второй процедуре есть обращение к процедуре заполнения шапки.
правда до получения количества
20 hawksib
 
20.08.21
20:25
(15) КоличествоСтрок = СтрокаТовары.Количество();


в процедуре ЗаполнитьРеквизитыШапкиУПД не правильное значение показывает?
21 Zika
 
20.08.21
20:34
(20) это я пробовал кусок из второй процедуры перенести - это не родное и не работает :)
22 Хосе
 
20.08.21
20:35
(15) поищите, есть ли в структуре данных ЭДО ссылка, напишите свой подсчет количества и выведите его в шапку.
23 Хосе
 
20.08.21
20:35
https://infostart.ru/1c/articles/1453038/ вот тут можете почитать, ксатит
24 hawksib
 
20.08.21
20:45
(21) не работает, зачем я это читаю и пытаюсь разобраться? зачем ты это кинул? не делай так
передать значение из процедуры которая сейчас работает в ту, которая уже выполнилась, не возможно
считать количество трок придётся или при заполнении шапки, что не очень, наверно, правильно, или после заполнения подвала и возвращаясь к области шапки, что мне тоже не очень нравится, поэтому, так как ты сам указал, что не являешься разработчиком, предложение по обращению к профессионалам я бы поддержал
25 Zika
 
20.08.21
20:47
(24) забыл убрать после эксперимента... там 4 строки
26 Zika
 
20.08.21
20:48
(22) не очень понял при чем тут эдо но почитаю, но опять же у нас версия от середины 19 года
27 hawksib
 
20.08.21
20:53
(18) как табличная часть у документа называется?
28 hawksib
 
20.08.21
20:58
(27) в документах ОтчетКомиссионера и ОтчетПоКомиссииМеждуОрганизациями
29 Zika
 
20.08.21
21:33
(28) это название вкладки или в конфигураторе надо смотреть?

но мы обычные реализации товаров и услуг используем.
30 hawksib
 
20.08.21
21:51
(29) не надо изучать программирование через форум, начни с книжги Радченко "Практическое пособие разработчика", все через него проходят
31 Zika
 
20.08.21
22:04
(30) теоретически я программирование (и даже на 1с) изучал...
но это был обычный 8 и в общем то прошло 15 лет, и оно мне и нужно было для минимальных правок и тд и тп...
повторюсь это сейчас слегка внезапно оказалось с вот этой штукой

тут слишком мудреная у них все....
32 Злопчинский
 
21.08.21
00:00
Выведи строки, после вывода строк запихни это в графу 5а. всё. на клюшках - без проблем.
33 Zika
 
21.08.21
00:09
(32) я не очень понял что значит на клюшках.
вы мне предлагаете переменную указанную в шаблоне в во второй процедуре просто присвоить значение а не  первой?
34 hawksib
 
21.08.21
05:45
(31) обычно, тот кто маломальски понимает в программировании 1С, не задаёт вопросы типа "что такое табличная часть"
35 Zika
 
21.08.21
18:04
(34) я знаючто такое табличная часть, я 1 не знаю где именно смотреть ее название и 2 не понимаю при чем тут отчет комиссионера
36 Zika
 
21.08.21
18:06
все получилось
спасибо за (24)  я подвинул все процедуры вывода данных в макет, и сдвинул обращение к процедуре шапки после расчета строк, и тогда количество нормально передалось и все вывелось.
AdBlock убивает бесплатный контент. 1Сергей