Имя: Пароль:
1C
1C 7.7
v7: Не пойму почему не сворачивает таблицу значений в клюшках
Ø (Злопчинский 24.11.2016 14:26)
0 asder117
 
24.11.16
12:03
Доброго времени суток. Не пойму почему не сворачивает таблицу значений в модуле печати УПД


    // Печать строк документа.
    ///МнЧ.ВыбратьСтроки();
    МнЧ.ВыбратьСтроки();
    МнЧ.Выгрузить(ТабЧ);
        ТабЧ.Свернуть("Номенклатура,Единица,Цена,СтавкаНДС,СтранаН,СтранаК,НомерГТД,ЕдиницаКод,АкцизЦена","Количество,Сумма,СуммаНП,СуммаНДС,ВсегоСНДС");
    ТабЧ.ВыбратьСтроки();
    
    НомерСтроки = 0;
    ТоварКод = "";
    НомерСтраницы = 1;
    
    СтрокНаСтранице = 24;
    СтрокШапки = 9;
    СтрокПодвала = 13;
    
    Если ТабЧ.КоличествоСтрок() <= 3 Тогда
        ПереноситьПоследнююСтроку = 0;
    Иначе
        ЦелыхСтраницСПодвалом = Цел((СтрокШапки + ТабЧ.КоличествоСтрок() + СтрокПодвала) / СтрокНаСтранице);
        ЦелыхСтраницБезПодвала = Цел((СтрокШапки + ТабЧ.КоличествоСтрок() - 1) / СтрокНаСтранице);
        ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
    КонецЕсли;
    
    Пока ТабЧ.ПолучитьСтроку() = 1 Цикл
        
        НомерСтроки = НомерСтроки + 1;
        
        ЦелаяСтраница = (СтрокШапки + НомерСтроки - 1) / (СтрокНаСтранице);
        
        Если (ЦелаяСтраница = Цел(ЦелаяСтраница))  
        или ((ПереноситьПоследнююСтроку = 1) и (НомерСтроки = ТабЧ.КоличествоСтрок())) Тогда
            Таб.НоваяСтраница();
            НомерСтраницы = НомерСтраницы + 1;
            Таб.ВывестиСекцию("ЗаголовокТаблицы");
        КонецЕсли;
        
        НомерСтраницыПрописью = ПолучитьСклонениеНомераСтраницы(НомерСтраницы);    
        
        Если ТипЗначения(ТабЧ.Количество) = 1 Тогда
            ТабЧ.Количество = Формат(ТабЧ.Количество, ФорматКоличества);
        КонецЕсли;
        
        Наименование = СокрЛП(ТабЧ.Номенклатура);
        ЕдиницаИзмеренияКод = ТабЧ.ЕдиницаКод;
        ЕдиницаИзмерения = ТабЧ.Единица;
        ПечКоличество = ?(ТабЧ.Количество=0, ПустойПоказатель, Формат(ТабЧ.Количество, ФорматКоличества));
        ПечЦена = ?(ТабЧ.Цена=0, ПустойПоказатель, Формат(ТабЧ.Цена,"Ч15.2"));
        ПечСумма = ?(ТабЧ.Сумма=0, ПустойПоказатель, Формат(ТабЧ.Сумма,"Ч015.2"));
        ПечАкциз = ТабЧ.АкцизЦена;
        ПредставлениеСтавкиНДС = ?(ПустоеЗначение(ТабЧ.СуммаНДС) = 1, "Без НДС", ТабЧ.СтавкаНДС);
        ПечНДС = ?(ПустоеЗначение(ТабЧ.СуммаНДС) = 1, ПустойПоказатель, ТабЧ.СуммаНДС);
        ПечВсего = ?(ТабЧ.ВсегоСНДС=0, ПустойПоказатель, Формат(ТабЧ.ВсегоСНДС,"Ч15.2"));
        СтранаКод = ТабЧ.СтранаК;
        СтранаН = ТабЧ.СтранаН;
        НомерГТД_Н = ТабЧ.НомерГТД;

        Таб.ВывестиСекцию("Строка");
        
    КонецЦикла;
    ПечИтогБезНДС = ?(Итоги.Получить("ИтогСумма")=0,ПустойПоказатель, Формат(Итоги.Получить("ИтогСумма"),"Ч15.2"));
    ПечИтогНДС = ?(Итоги.Получить("ИтогСуммаНДС")=0,ПустойПоказатель, Формат(Итоги.Получить("ИтогСуммаНДС"),"Ч15.2"));
    ПечИтогВсего = ?(Итоги.Получить("ИтогВсегоСНДС")=0,ПустойПоказатель, Формат(Итоги.Получить("ИтогВсегоСНДС"),"Ч15.2"));
    
    Таб.ВывестиСекцию("Подвал");
    
    Таб.ВывестиСекцию("ПодвалНакладной");
    
    Если Устройство = 0 Тогда
        Таб.Опции(0, 0, 0, 0, "ОпцииПечатиУПД", "ОкноУПД");

        Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
            Таб.Защита(1);
        Иначе
            Таб.Защита(0);
        КонецЕсли;
        Таб.ТолькоПросмотр(1);
        Таб.ПараметрыСтраницы(2,,,,,,,,,1,,);
        Таб.Показать("Печать универсального передаточного документа","");  
    Иначе    
        Таб.Опции(0, 0, 0, 0, "ОпцииПечатиУПД", "ОкноУПД");
        Таб.КоличествоЭкземпляров(КолвоКопий);
        Таб.Напечатать(0);
    КонецЕсли;

Должно свернуть по номенклатуре и одинаковой цене а нишиша не работает. Спасибо за помощь заранее
1 DrZombi
 
гуру
24.11.16
12:04
Отладчик забанен? :)
2 asder117
 
24.11.16
12:06
(1) почему нет. таблицу для свертки формирует и что
3 Злопчинский
 
24.11.16
12:06
(0) "Должно свернуть по номенклатуре и одинаковой цене"
- это ты из головы выдрал? наобум? в коде такого нет.
4 asder117
 
24.11.16
12:07
(3) Приветсвую Уважаемый.
а это что тогда ....делал по старым советам и вроде работало ТабЧ.Свернуть("Номенклатура,Единица,Цена,СтавкаНДС,СтранаН,СтранаК,НомерГТД,ЕдиницаКод,АкцизЦена","Количество,Сумма,СуммаНП,СуммаНДС,ВсегоСНДС");
5 Злопчинский
 
24.11.16
12:07
универсальной печатью ТЗ принтани свою таблицу после сверкти и наслаждайся втыканием...
6 ks_83
 
24.11.16
12:08
(0) Ну тогда и указывай в группировочных полях только номенклатуру и цену.
7 Злопчинский
 
24.11.16
12:09
(4) сделай такой код вместо этой строки что ты привел:
ТабЧ.Свернуть("Номенклатура,Цена","тутоставькакбыло);
ТабЧ.ВыбратьСтроку(,"тест свертки");
Возврат;
8 Злопчинский
 
24.11.16
12:09
(6) опередун! ;-)
9 Злопчинский
 
24.11.16
12:11
если в партионке бардак - то нормальной свертке будут препятстовать UNL/
а что там в ТЧ в части указания ставок НДС и прочих сверточных измерений - нам неведеомо також
10 asder117
 
24.11.16
12:12
(7) извиняюсь "тест свертки" - это что? (9) нет там вроде все норм и все указывается. пустых и левых сторк нет
11 asder117
 
24.11.16
12:14
(7) И возврат тут к чему? не ошиблись уважаемый
12 DrZombi
 
гуру
24.11.16
12:16
(0) (10) Если не сворачивает, то тут не 1С виновата. А писатель не осознающий, что ваша ТЗ содержит уникальный перечень информации.

Для отладки лучше воспользоваться Отладчиком.
И построчно рассмотреть каждую на предмет свертки.

И еще Типы для свертки должны быть одинаковые.
Если в одной строке Ссылка на Справочник, а в другой строке NULL, то чудо не произойдет.
13 asder117
 
24.11.16
12:17
(12) Это я знаю. просто клюшки ужо достали. На 8 вообще проблем нет.  тут возвращаться приходится в древний мир
14 DrZombi
 
гуру
24.11.16
12:18
(13) Это 1С 7.7? :)

Там еще проще.
Но отладчик действительно не фонтан, сори :)
15 catena
 
24.11.16
12:21
(10)ВыбратьСтроку

Открыть окно для интерактивного выбора строки в таблице значений.

Синтаксис:

ВыбратьСтроку(<Строка>, <3аголовок>, < Таймаут>)

Англоязычный синоним:

ChooseLine

Параметры:

<Строка>

Необязательный параметр. Идентификатор переменной, куда помещается значение — номер выбранной строки. При вызове метода здесь можно передавать значение начального номера строки.

<3аголовок>

Необязательный параметр. Строковое выражение, значение которого отображается в заголовке диалогового окна. Может использоваться для подсказки пользователю.

<Таймаут>

Необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя. Если не задано, то время ожидания бесконечно.
16 DrZombi
 
гуру
24.11.16
12:21
+(13) Вариант только 1, Пройдись построчно и избавься от пустых значений, типо СокрЛП().
Может даже проанализировать графу Страна, может там чего вписали.
Посмотреть ГТД он тоже то заполнен, то нет.
17 catena
 
24.11.16
12:21
(11)Возврат видимо к тому, что процедура печати дальше с такой обрезанной таблицей работать не станет. Проверить сложно?
18 DrZombi
 
гуру
24.11.16
12:23
(0)ЕдиницаКод - Зачем оно там в качестве отдельного реквизита?

1С 7.7 любит работать через ссылку и не обращается все время к БД. Т.е. один раз все считывает ;)

...т.е. работа через точку в 7.7 нормально осуществляется :)
19 aka AMIGO
 
24.11.16
12:24
(17) Угу. И потому надо работающую ТЗ выгружать в другую, которую и сворачивать. А исходную - оставлять нетронутой.
20 DrZombi
 
гуру
24.11.16
12:24
+ СтранаК - тоже лишнее
21 Масянька
 
24.11.16
12:26
(0) У меня в СФ все сворачивается до номера ГТД:
МнЧ.Свернуть("Номенклатура, Единица, Цена, Акциз, СтавкаНДС, СтранаН, СтранаК, НомерГТД", "Количество, СуммаБезНДС, СуммаНП, СуммаНДС, Сумма");
22 aka AMIGO
 
24.11.16
12:27
(20)+! там много лишнего
(4) Пишешь условие "Для каждой номенклатуры и цены", и таки сворачиваешь в скобках: ".. для каждой страны, для каждого номера ГТД, для каждого.."
В результате ТЗ остается в первоначальном виде.
23 asder117
 
24.11.16
12:28
(17) понял (19) я так и делаю (7) вывел табличку там воде все в норме только не свернуто удивило что цена в одной 8,05000 в другой 8,0509
из-за этого-может быть?
24 DrZombi
 
гуру
24.11.16
12:28
(21) У вас отсутствует код Единицы измерения :)

(0) Как вариант, загнать Единицу измерения в строку и свернуть. В виде элемента справочника сея конструкция громозка
25 asder117
 
24.11.16
12:29
(22) так как лучше. да я убрал поля но они у меня сейчас в доке пустые
26 DrZombi
 
гуру
24.11.16
12:29
+(0) Вообще, загони всю номенклатуру в Строки.
Вернее для печатной формы, сдается мне, у вас тупо дублирование Номенклатуры.
27 aka AMIGO
 
24.11.16
12:30
(23) именно! Еще раз - твое условие "Для каждой цены" - вот это и есть "каждая"

8,05000 и 8,0509 - разные!
28 Злопчинский
 
24.11.16
12:30
(13) это вообщем-то на клюшках проблем нет. а 8-ка страшное тормозное монстрище. а то что расстановщик галочек-восьмерчоник не может втыкнуть в код - ну это понятно... ;-)
29 Масянька
 
24.11.16
12:30
(24) С чего ты взял?
(23) Цену не округляй, а держи так, как есть. А округляй при печати.
30 DrZombi
 
гуру
24.11.16
12:30
(27) Я бы не догадался. Всегда думал ,что цена с двумя знаками :)
31 Злопчинский
 
24.11.16
12:31
(30) а это как точность опишешь при создании колонок - так и быдет отображать.. ;-)
32 DrZombi
 
гуру
24.11.16
12:31
(29) Так Догадки, если все нормально, Позиции идентичны на печатной форме.

То проблема в Дублировании номенклатуры и единицы измерения
33 Масянька
 
24.11.16
12:32
(30) Она 2 знака в док-ах. А ты (сто пудово) считаешь по регистру.
34 Масянька
 
24.11.16
12:33
(32) Не верны твои догадки.
35 aka AMIGO
 
24.11.16
12:33
(33) Да можно обрезать, задав формат числа в свойствах колонки ТЗ :)
36 Злопчинский
 
24.11.16
12:34
хотя в восьмерке мну тоже печально, как восьмерочникам в клюшках.. ;-)
я не знаю, как выборку номенклатуры из РС вычесть из полного списка номенклатуры как справочника.. ;-)
.
не, я конечно догадываюсь, и дажи асилил в ИР запрос состряпать на выборку из РС, но все левые, правые, иннер, аутер и юнион джойны - я пока от них далек.. ;-)
37 asder117
 
24.11.16
12:34
(32) да идентичны
38 Масянька
 
24.11.16
12:34
(35) А задано?
39 Масянька
 
24.11.16
12:35
(37) В МнЧ как садится цена?
40 aka AMIGO
 
24.11.16
12:35
(38) Твой вопрос-то бы ТС"у :)
41 Масянька
 
24.11.16
12:35
+ (39) Желательно строчку кода.
42 DrZombi
 
гуру
24.11.16
12:36
(37) Покажи полный код.
43 asder117
 
24.11.16
12:36
(41) МнЧ это сруктура
44 Масянька
 
24.11.16
12:37
(43) Писец...
45 aka AMIGO
 
24.11.16
12:39
(44) Ну, 8-рочник.. что с него возьмёшь? :)

(43) Нет, друже, это в 7-ке многострочная часть, см свойства поля в конфигураторе, в твоем документе
46 asder117
 
24.11.16
12:39
(44) Полный
Полный код УПД
Процедура ПечатьУПД(Знач Докум, Устройство=0, КолвоКопий=1) Экспорт
    
    Перем ШапкаИПодвал, МнЧ, Итоги, ФорматКоличества;
    Перем ТекстВал;
    //
    Табч = СоздатьОбъект("ТаблицаЗначений");
    
    Если Докум.ДатаДок < '01.01.2013' Тогда
        ТекстСообщения = "Универсальный передаточный документ" + РазделительСтрок + "можно сформировать, начиная с 01.01.2013 г.";
        Предупреждение(ТекстСообщения );
        Возврат;             
    КонецЕсли;
    
    СтатусУПД  = 0;
    ТекстПредупреждения = "";
    ТекДок = ПолучитьПустоеЗначение();
    
    Если Докум.Вид() = "СчетФактураВыданный" Тогда
        ТекДок = Докум;
        ТекДокОснование = ТекДок.ДокОснование;
        Если (ПустоеЗначение(ТекДокОснование.ТекущийДокумент()) = 0) Тогда
            Докум = ТекДокОснование;
        КонецЕсли;
        
        СтатусУПД = 1;
    ИначеЕсли Докум.Вид() = "ИсправлениеСчетаФактуры" Тогда
        Если Докум.ДокОснование.Вид() = "СчетФактураВыданный" Тогда
            ТекДок = Докум.ДокОснование;
        КонецЕсли;
    КонецЕсли;    
    
    Если ПустоеЗначение(ТекДок) = 0 Тогда
        СтатусУПД = 2;
    КонецЕсли;    
    
    Если (ПустоеЗначение(Докум.ТекущийДокумент()) = 0) и (СтатусУПД = 0) Тогда    
        ПодчДок = СоздатьОбъект("Документ");  
        ПодчДок.ВыбратьПодчиненныеДокументы(Докум.ДатаДок,, Докум.ТекущийДокумент());
        ТекущийПодчДок = ПолучитьПустоеЗначение("Документ");
        
        Пока ПодчДок.ПолучитьДокумент() = 1 Цикл
            Если ПодчДок.Вид() = "СчетФактураВыданный" Тогда
                Если ПодчДок.ПометкаУдаления() = 1 Тогда
                    Продолжить;
                КонецЕсли;
            
                ТекущийПодчДок = ПодчДок.ТекущийДокумент();     
                
                Прервать;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    ПодготовитьРеквизитыШапкиУПД(Докум, ТекущийПодчДок, ШапкаИПодвал);
    
    ВидОсн = Докум.Вид();
    
    Если (ВидОсн = "СчетФактураВыданный") и (Докум.КоличествоСтрок() = 0) Тогда
        ПодготовитьМнЧУПД(Докум, ТекущийПодчДок, МнЧ, Итоги, ФорматКоличества);
    ИначеЕсли Докум.Вид() = "ИсправлениеСчетаФактуры" Тогда
        ПодготовитьМнЧИспрУПД(Докум, ТекущийПодчДок, МнЧ, Итоги, ФорматКоличества);
    ИначеЕсли ВидОсн = "ОтчетКомитенту" Тогда
        ПодготовитьПоКнигеПродажУПД(Докум, МнЧ, Итоги, ФорматКоличества, "Комиссионное вознаграждение");
    ИначеЕсли ВидОсн = "ЗакрытиеМесяца" Тогда
        ПодготовитьПоКнигеПокупокУПД(Докум, МнЧ, Итоги, ФорматКоличества, "Корректировка НДС, предъявляемого к вычету");
    ИначеЕсли (ВидОсн = "ВводОстатковПокупателя") или (ВидОсн = "ОтчетКомиссионера") Тогда
        ПодготовитьМнЧоснУПД(Докум, МнЧ, Итоги, ФорматКоличества);
    ИначеЕсли (ВидОсн = "ПКО") ИЛИ (ВидОсн = "КорректировкаДолга") ИЛИ (ВидОсн = "РКО") ИЛИ (ВидОсн = "СтрокаВыпискиПриход") ИЛИ (ВидОсн = "СтрокаВыпискиРасход") Тогда
        ПодготовитьМнЧУПД(Докум, ТекущийПодчДок, МнЧ, Итоги, ФорматКоличества);
        ПечВалюта = "наименование, код " + СокрЛП(глРубли.ПолнНаименование) +", " + глРубли.Код;
    Иначе
        ПодготовитьМнЧоснУПД(Докум,МнЧ, Итоги, ФорматКоличества);
    КонецЕсли;
    
    
    ПустойПоказатель = "----";
    
         
    Таб = СоздатьОбъект("Таблица");
    
    Таб.ИсходнаяТаблица("Таблица");
    
    ПечНомерДокумента = ШапкаИПодвал.Получить("ПечНомерДокумента");
    ПечДатаДокумента = ШапкаИПодвал.Получить("ПечДатаДокумента");
    ПечНомерИсправления = ШапкаИПодвал.Получить("ПечНомерИсправления");
    ПечДатаИсправления = ШапкаИПодвал.Получить("ПечДатаИсправления");
    ПечПродавец = ШапкаИПодвал.Получить("ПечПродавец");
    ПечПродавецАдрес = ШапкаИПодвал.Получить("ПечПродавецАдрес");
    ПечСтатусУПД = ШапкаИПодвал.Получить("ПечСтатусУПД");
    ПечПродавецИННКПП = ШапкаИПодвал.Получить("ПечПродавецИННКПП");
    ПечГрузоотправитель = ШапкаИПодвал.Получить("ПечГрузоотправитель");
    ПечГрузополучатель = ШапкаИПодвал.Получить("ПечГрузополучатель");
    ПечНомерПлатРасчДок = ШапкаИПодвал.Получить("ПечНомерПлатРасчДок");
    ПечДатаПлатРасчДок = ШапкаИПодвал.Получить("ПечДатаПлатРасчДок");
    ПечПокупатель = ШапкаИПодвал.Получить("ПечПокупатель");
    ПечПокупательАдрес = ШапкаИПодвал.Получить("ПечПокупательАдрес");
    ПечПокупательИННКПП = ШапкаИПодвал.Получить("ПечПокупательИННКПП");
    ВалютаПечати = ШапкаИПодвал.Получить("ВалютаПечати");
    
    ПечОснование = ШапкаИПодвал.Получить("ПечОснование");
    ПечДатаОтгрузкиПередачи = ШапкаИПодвал.Получить("ПечДатаОтгрузкиПередачи");
    ПечПредставлениеОрганизации = ШапкаИПодвал.Получить("ПечПредставлениеОрганизации");
    ПечПредставлениеКонтрагента = ШапкаИПодвал.Получить("ПечПредставлениеКонтрагента");
    
    ПечРуководитель = ШапкаИПодвал.Получить("ПечРуководитель");
    ПечГлБухгалтер = ШапкаИПодвал.Получить("ПечГлБухгалтер");
    ПечПредприниматель = ШапкаИПодвал.Получить("ПечПредприниматель");
    ПечПредпринимательРеквизитыСвидетельства = ШапкаИПодвал.Получить("ПечПредпринимательРеквизитыСвидетельства");
    
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("ЗаголовокТаблицы");
    
    
    // Печать строк документа.
    ///МнЧ.ВыбратьСтроки();
    МнЧ.ВыбратьСтроки();
    МнЧ.Выгрузить(ТабЧ);
        //ТабЧ.Свернуть("Номенклатура,Единица,Цена,СтавкаНДС,СтранаН,СтранаК,НомерГТД,ЕдиницаКод,АкцизЦена","Количество,Сумма,СуммаНП,СуммаНДС,ВсегоСНДС");
        //ТабЧ.Свернуть("Номенклатура,Цена","Количество,Сумма,СуммаНП,СуммаНДС,ВсегоСНДС");
        ТабЧ.Свернуть("Номенклатура, Единица, Цена, Акциз, СтавкаНДС, СтранаН, СтранаК, НомерГТД", "Количество, СуммаБезНДС, СуммаНП, СуммаНДС, Сумма");
        //ТабЧ.ВыбратьСтроку(,"тест свертки");
//Возврат;
    ТабЧ.ВыбратьСтроки();
    
    НомерСтроки = 0;
    ТоварКод = "";
    НомерСтраницы = 1;
    
    СтрокНаСтранице = 24;
    СтрокШапки = 9;
    СтрокПодвала = 13;
    
    Если ТабЧ.КоличествоСтрок() <= 3 Тогда
        ПереноситьПоследнююСтроку = 0;
    Иначе
        ЦелыхСтраницСПодвалом = Цел((СтрокШапки + ТабЧ.КоличествоСтрок() + СтрокПодвала) / СтрокНаСтранице);
        ЦелыхСтраницБезПодвала = Цел((СтрокШапки + ТабЧ.КоличествоСтрок() - 1) / СтрокНаСтранице);
        ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
    КонецЕсли;
    
    Пока ТабЧ.ПолучитьСтроку() = 1 Цикл
        
        НомерСтроки = НомерСтроки + 1;
        
        ЦелаяСтраница = (СтрокШапки + НомерСтроки - 1) / (СтрокНаСтранице);
        
        Если (ЦелаяСтраница = Цел(ЦелаяСтраница))  
        или ((ПереноситьПоследнююСтроку = 1) и (НомерСтроки = ТабЧ.КоличествоСтрок())) Тогда
            Таб.НоваяСтраница();
            НомерСтраницы = НомерСтраницы + 1;
            Таб.ВывестиСекцию("ЗаголовокТаблицы");
        КонецЕсли;
        
        НомерСтраницыПрописью = ПолучитьСклонениеНомераСтраницы(НомерСтраницы);    
        
        Если ТипЗначения(ТабЧ.Количество) = 1 Тогда
            ТабЧ.Количество = Формат(ТабЧ.Количество, ФорматКоличества);
        КонецЕсли;
        
        Наименование = СокрЛП(ТабЧ.Номенклатура);
        ЕдиницаИзмеренияКод = МнЧ.ЕдиницаКод;
        ЕдиницаИзмерения = ТабЧ.Единица;
        ПечКоличество = ?(ТабЧ.Количество=0, ПустойПоказатель, Формат(ТабЧ.Количество, ФорматКоличества));
        ПечЦена = ?(ТабЧ.Цена=0, ПустойПоказатель, Формат(ТабЧ.Цена,"Ч15.2"));
        ПечСумма = ?(ТабЧ.Сумма=0, ПустойПоказатель, Формат(ТабЧ.Сумма,"Ч015.2"));
        ПечАкциз = МнЧ.АкцизЦена;
        ПредставлениеСтавкиНДС = ?(ПустоеЗначение(ТабЧ.СуммаНДС) = 1, "Без НДС", ТабЧ.СтавкаНДС);
        ПечНДС = ?(ПустоеЗначение(ТабЧ.СуммаНДС) = 1, ПустойПоказатель, ТабЧ.СуммаНДС);
        ПечВсего = ?(МнЧ.ВсегоСНДС=0, ПустойПоказатель, Формат(МнЧ.ВсегоСНДС,"Ч15.2"));
        СтранаКод = ТабЧ.СтранаК;
        СтранаН = ТабЧ.СтранаН;
        НомерГТД_Н = ТабЧ.НомерГТД;

        Таб.ВывестиСекцию("Строка");
        
    КонецЦикла;
    ПечИтогБезНДС = ?(Итоги.Получить("ИтогСумма")=0,ПустойПоказатель, Формат(Итоги.Получить("ИтогСумма"),"Ч15.2"));
    ПечИтогНДС = ?(Итоги.Получить("ИтогСуммаНДС")=0,ПустойПоказатель, Формат(Итоги.Получить("ИтогСуммаНДС"),"Ч15.2"));
    ПечИтогВсего = ?(Итоги.Получить("ИтогВсегоСНДС")=0,ПустойПоказатель, Формат(Итоги.Получить("ИтогВсегоСНДС"),"Ч15.2"));
    
    Таб.ВывестиСекцию("Подвал");
    
    Таб.ВывестиСекцию("ПодвалНакладной");
    
    Если Устройство = 0 Тогда
        Таб.Опции(0, 0, 0, 0, "ОпцииПечатиУПД", "ОкноУПД");

        Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
            Таб.Защита(1);
        Иначе
            Таб.Защита(0);
        КонецЕсли;
        Таб.ТолькоПросмотр(1);
        Таб.ПараметрыСтраницы(2,,,,,,,,,1,,);
        Таб.Показать("Печать универсального передаточного документа","");  
    Иначе    
        Таб.Опции(0, 0, 0, 0, "ОпцииПечатиУПД", "ОкноУПД");
        Таб.КоличествоЭкземпляров(КолвоКопий);
        Таб.Напечатать(0);
    КонецЕсли;
    
КонецПроцедуры // ПечатьУПД()

//******************************************************************************
// ПоКнопкеПечать()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//
Процедура ПоКнопкеПечать()
    
    Если Док.Выбран() = 0 Тогда
        Предупреждение("Не выбран документ!", 60);
        Возврат;
    КонецЕсли;
    
    ПечатьУПД(Док);
47 Злопчинский
 
24.11.16
12:41
(43) МНЧ - это ТЗ
48 Масянька
 
24.11.16
12:42
(45) Это не оправдание.
(46) Код этой процедуры давай - ПодготовитьМнЧУПД
49 asder117
 
24.11.16
12:42
(47) извиняюсь да...ошибся
50 Злопчинский
 
24.11.16
12:42
(46) так, достали. давай скайп Zlopun bl ипароль на тим, будем смотреть.
а то ты так себя этим драчовым напильником до оргазма доведешь
.
а мну сегодня чтото лениво над техпроектом трудитсяю...
51 asder117
 
24.11.16
12:43
(48)
Функция ПодготовитьМнЧУПД(Докум, ДокСФ, МнЧ, Итоги, ФорматКоличества)
    
    Если (ДокСФ.СФНаАванс = 1) И (ДокСФ.СчетНаОплату.Выбран() = 1) Тогда
        Возврат ПодготовитьМнЧПоСчетуНаОплатуУПД(Докум, ДокСФ, МнЧ, Итоги, ФорматКоличества);
    КонецЕсли;
    
    Итоги = СоздатьОбъект("СписокЗначений");
    СоздатьСтруктуру(МнЧ);
    
    ИтогСумма       = 0;
    КороткийПрочерк = "-";
    
    ДокСФ.ВыбратьСтроки();
    Пока ДокСФ.ПолучитьСтроку() = 1 Цикл
        
        МнЧ.НоваяСтрока();
        
        ВывелиСтроку     = 1;
        МнЧ.Номенклатура = СокрП(ДокСФ.Наименование);
        МнЧ.Единица      = ДокСФ.Единица;
        Если ПустоеЗначение(МнЧ.Единица) = 0 Тогда
            Если МнЧ.Единица.Вид() = "Единицы" Тогда
                МнЧ.ЕдиницаКод   = ДокСФ.Единица.ОКЕИ.Код;
            ИначеЕсли МнЧ.Единица.Вид() = "ОКЕИ" Тогда
                МнЧ.ЕдиницаКод   = ДокСФ.Единица.Код;
            Иначе
            Конецесли;    
        Иначе
            МнЧ.ЕдиницаКод = КороткийПрочерк;
            МнЧ.Единица = КороткийПрочерк;
        КонецЕсли;
        
        Если (МнЧ.Количество = 0) или (ДокСФ.СФНаАванс = 1) Тогда
            МнЧ.Количество = 0;
        Иначе
            МнЧ.Количество = ДокСФ.Количество;
        Конецесли;    
        МнЧ.АкцизЦена    = "без акциза";
        
        Если (ДокСФ.СФНаАванс = 1) Тогда
            
            МнЧ.Цена      = 0;
            МнЧ.Сумма      = 0;
            МнЧ.АкцизЦена = КороткийПрочерк;
            МнЧ.СтавкаНДС = ?(ДокСФ.СтавкаНДС = Перечисление.СтавкиНДС.безНДС, "без НДС", Строка(ДокСФ.СтавкаНДС));
            МнЧ.СуммаНДС  = ?(ДокСФ.СтавкаНДС = Перечисление.СтавкиНДС.безНДС, КороткийПрочерк, глФРМ(ДокСФ.СуммаНДС,,,""));
            МнЧ.ВсегоСНДС = ДокСФ.Сумма;                                                
            МнЧ.СтранаН      = КороткийПрочерк;
            МнЧ.СтранаК   = КороткийПрочерк;
            МнЧ.НомерГТД  = КороткийПрочерк;
            
            
        Иначе
                    
            Если ПустоеЗначение(ДокСФ.Сумма) = 1 Тогда
                МнЧ.Цена        = 0;
                МнЧ.Сумма        = КороткийПрочерк;
                МнЧ.СтавкаНДС    = "без НДС";
                МнЧ.СуммаНДС    = КороткийПрочерк;
                МнЧ.СуммаНП        = КороткийПрочерк;
                МнЧ.ВсегоСНДС    = КороткийПрочерк;
            Иначе
                МнЧ.Сумма        = ДокСФ.Сумма - ДокСФ.СуммаНДС;
                ИтогСумма        = ИтогСумма + ДокСФ.Сумма - ДокСФ.СуммаНДС;
                МнЧ.Цена        = ?(ДокСФ.Количество = 0, 0, ДокСФ.Цена - ДокСФ.СуммаНДС / ДокСФ.Количество);
                МнЧ.СтавкаНДС    = ?(ДокСФ.СтавкаНДС = Перечисление.СтавкиНДС.безНДС, "Без НДС", Строка(ДокСФ.СтавкаНДС));
                МнЧ.СуммаНДС    = ?(ДокСФ.СтавкаНДС = Перечисление.СтавкиНДС.безНДС, КороткийПрочерк, глФРМ(ДокСФ.СуммаНДС,,,""));
                МнЧ.ВсегоСНДС    = ДокСФ.Сумма;                                                
            КонецЕсли;
            
            Если ПустоеЗначение(ДокСФ.СтранаПроисхождения)=1 Тогда
                МнЧ.СтранаН        = "-";
                МнЧ.СтранаК     = "-";
                //Если не указал страну, и указал Номер ГТД, то зачем-то это было нужно
                Если ПустаяСтрока(ДокСФ.ГТД) = 1 Тогда        
                    МнЧ.НомерГТД    = "-";
                Иначе
                    МнЧ.НомерГТД    = ДокСФ.ГТД;
                КонецЕсли;
            Иначе
                МнЧ.СтранаН    = ДокСФ.СтранаПроисхождения;
                МнЧ.СтранаК    = ДокСФ.СтранаПроисхождения.Код;
                // Если номер пустой, и указана страна, то позволяем потом вписать номер ГТД
                // в напечатанном документе руками
                МнЧ.НомерГТД    = ДокСФ.ГТД;
            КонецЕсли;
            
        КонецЕсли;
        
        Если ТипЗначенияСтр(ДокСФ.Наименование) = "Справочник" Тогда
            Если ДокСФ.Наименование.Вид() = "Номенклатура" Тогда
                Если (ДокСФ.Наименование.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
                или (ДокСФ.Наименование.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
                    МнЧ.ЕдиницаКод = "-";
                    МнЧ.Единица = "-";
                    МнЧ.СтранаК = "-";
                    МнЧ.СтранаН = "-";
                    МнЧ.НомерГТД = "-";
                КонецЕсли;    
            КонецЕсли;
        КонецЕсли;
        
        Если ДокСФ.Количество - Цел(ДокСФ.Количество) > 0 Тогда
            ФорматКоличества    = "Ч10.3";
        КонецЕсли;
                
    КонецЦикла;
    
    Если ПустоеЗначение(ФорматКоличества) = 1 Тогда
        ФорматКоличества    = "Ч10.0";
    КонецЕсли;
    
    Итоги.ДобавитьЗначение(ИтогСумма, "ИтогСумма");
    Итоги.ДобавитьЗначение(Докум.Итог("СуммаНДС"), "ИтогСуммаНДС");
    Итоги.ДобавитьЗначение(Докум.Итог("Сумма"), "ИтогВсегоСНДС");
    Итоги.ДобавитьЗначение(Докум.Итог("СуммаНП"), "ИтогСуммаНП");

    Возврат "";
    
КонецФункции // ПодготовитьМнЧУПД()
52 Злопчинский
 
24.11.16
12:43
привыкли, млин. молоко в магазинах покупать, никто корову подоить не умеет.. элои, млин
53 Злопчинский
 
24.11.16
12:44
(51) товарищ, тебе посоветовали - распечатать ТЗ которая вызывает у тебя вопросы и втыкать до посинения... лень?
54 Масянька
 
24.11.16
12:44
(51) После этой строки:
МнЧ.Цена        = ?(ДокСФ.Количество = 0, 0, ДокСФ.Цена - ДокСФ.СуммаНДС / ДокСФ.Количество);
выведи сообщалку и посмотри.
55 Масянька
 
24.11.16
12:45
(52) А что такое "Корова"? :)))))))))))))
56 asder117
 
24.11.16
12:46
(50) отпишусь  (54) попробую. если что что сделать. блин они же ручками набивают цену то
57 aka AMIGO
 
24.11.16
12:47
(54) (56) Ммм.. теперь понятно, почему цена 8.0500000009... Там деление стоит.
58 aka AMIGO
 
24.11.16
12:48
(57) т.е ИМХО - ты не ту цену суёшь в ТЗ
59 Масянька
 
24.11.16
12:49
(57) Кац предлагал сдаться (С) - я говорила :)
60 Злопчинский
 
24.11.16
12:52
(56) в упормянутой строке расчета цены после этой строки впиши
МнЧ.Цена = Окр(МнЧ.Цена,2,1);
61 aka AMIGO
 
24.11.16
12:53
(59) Нее.. я про "гордого Варяга" помню :)
62 Это_mike
 
24.11.16
12:54
(36) юзай в клюшках прямые запросы - и привыкнешь.
63 asder117
 
24.11.16
12:58
(57) (60) я чувствую проще взять к черту саму табличную часть без подготовки мнч и свернуть
64 asder117
 
24.11.16
13:00
(60) ха-ха он в эту процедуру не заходит даже отладчиком
65 Это_mike
 
24.11.16
13:01
(64) за что тебя забанили в отладчике? колись, чего натворил...
66 Масянька
 
24.11.16
13:03
(64) Уверен? А в какую заходит?
67 aka AMIGO
 
24.11.16
13:04
(64) Поставь точку останова вот здесь, где стрелка на рисунке:
http://i.paste.pics/f72f73306d9d45791d820f543e2ac9a3.png
68 aka AMIGO
 
24.11.16
13:05
(66) Видимо, в другую :)
69 Злопчинский
 
24.11.16
13:08
(63) не мучай гондурас.
стукайся в скайп
70 Злопчинский
 
24.11.16
13:09
блин, подготовка МНЯ что в УПД что в СЧФ - одна и та же хрень по сути. я ее вообще вусмерть переписал.
там все прочто и прозрачно. это не снеговик где 100500 процедур одна другую выщзывают чтобы тривальное действие сделать
71 aka AMIGO
 
24.11.16
13:10
(70) Лааадно, не переживай! все через это проходят :)
72 Злопчинский
 
24.11.16
13:11
Взвод ОМОНа разогнад демонстрацию мазохистов. И те, и другие получили удовлетворение.
73 Злопчинский
 
24.11.16
13:12
после строки оригинальной свертки вставить тот же код выбора строки из ТЗ и посмотреть... это все что надо чтобы вообщем понять ситуацию.
окошко просмотра маленькое, поэтому лучше распечатата ТЗ
74 Масянька
 
24.11.16
13:13
(70) Аналогично. Только расчет цены все равно есть.
75 Масянька
 
24.11.16
13:15
+ (74) И соглашусь: в семерке косяк легче найти.
76 asder117
 
24.11.16
13:26
(67) звиняйте понял
77 Злопчинский
 
24.11.16
13:29
(75) в семерке гораздо меньше мест где косяки можно делать. поэтому семерка - это наука. а восьмерка - это магия. заместно ведь - большинство вопросов в восьмерке - чисто шаманские... какую комбинациб кнопок галок поставить методом тыка чтобы получить результат.. или заклинание об "очитить кэш!".. ;-)
78 asder117
 
24.11.16
13:30
(73) распечаталю смотрю. только цену не округляет  
даже так сделал
79 Это_mike
 
24.11.16
13:30
(75) это дело привычки...
хотя семерка сама проще и компактнее...
80 Это_mike
 
24.11.16
13:31
(77) а может этот кэш пора вообще удалить? если он так всем мешает...
81 vakor
 
24.11.16
13:32
Что бы посмотреть что получается в ТЗ очень удобно создать несколько ТЗ на форме. И через .Выгрузить смотри содержимое исследуемой ТЗ на разных этапах. Даст фору любому отладчику: быстро и удобно
82 Масянька
 
24.11.16
13:34
(77) Программирование - это не магия.
83 ADirks
 
24.11.16
13:34
(81) вообще-то, для этого есть куча разных смотрелок ТЗ
не надо ничо на форму лепит, всё уже давно сделано
84 Масянька
 
24.11.16
13:34
(81) А еще легче индексируемую таблицу. До и после свертки.
Вообще, сказка.
85 vakor
 
24.11.16
13:35
я давно не пользовался .Свернуть но по моему не сгруппирует строки и числа...
попробуй свернуть любую левую ТЗ по числам
86 aka AMIGO
 
24.11.16
13:35
(83) И так-же точно давно забыто..
87 vakor
 
24.11.16
13:37
(83) Какая смотрелка? давно их юзал? тыкнуть на форме ТЗ и писать в коде выгрузить? ты о чем???
88 ADirks
 
24.11.16
13:38
89 Масянька
 
24.11.16
13:39
Не отвлекайте ТС.
(86) Почему к порядку не призываешь? :)
90 Злопчинский
 
24.11.16
13:41
(83) например? дай полезность!
91 Это_mike
 
24.11.16
13:41
(82) " Любая достаточно развитая технология неотличима от магии"©А.Кларк
92 Злопчинский
 
24.11.16
13:41
на сотке - ветку прикрою... экономим топики для ТС
93 vakor
 
24.11.16
13:43
(88) фигня. не о чем. попробуй оба варианта и отпишись

так кто нибудь группировал цифры в ТЗ ?
94 Это_mike
 
24.11.16
13:43
(92) а чего, количество тем стало ограниченным?
95 asder117
 
24.11.16
13:44
(60) Коллега... как говорил матроскин-Заработало  стоило цену округлить блин. Но как все запутано и процедура другая отвечала за это ПодготовитьМнЧоснУПД(Докум, МнЧ, Итоги, ФорматКоличества)

Давно я так не ковырялся счас буду пробовать дальше
96 aka AMIGO
 
24.11.16
13:44
(89) Дык.. сам увлекаюсь :)
(92) ты прав. Пост мой - последний здесь.

ЗЫ. Просмотр ТЗ для отладки - среди меня довольно редкая операция.

Я давно уже использую несколько строк кода, вполне хватает для анализа и исправлений
        Таб1 = СоздатьОбъект("Таблица");
        Таб1.ИсходнаяТаблица("ТЗК");
        Таб1.ВывестиСекцию("Заг|Нач");
        Для х=1 По ТЗОст.КоличествоКолонок() Цикл
            Кол = ТЗОст.ПолучитьПараметрыКолонки(х);
            Таб1.ПрисоединитьСекцию("Заг|Кол");
        КонецЦикла;
        ТЗОст.ВыбратьСтроки();
        Пока ТЗОст.ПолучитьСтроку() = 1 Цикл
            Таб1.ВывестиСекцию("Стр|Нач");
            Для х=1 По ТЗОст.КоличествоКолонок() Цикл
                СтрТЗ = ТЗОст.ПолучитьЗначение(ТЗОст.НомерСтроки,х);
                Таб1.ПрисоединитьСекцию("Стр|Кол");
            КонецЦикла;
        КонецЦикла;    
        Таб1.Показать("ТЗ");
97 ADirks
 
24.11.16
13:45
(90) кстати, даже для восьмёрки лепил, давно дело было...
http://catalog.mista.ru/public/104099/

(93) это мне? каво я должен ещё пробовать?
98 aka AMIGO
 
24.11.16
13:47
+96 И табличка для кода: http://i.paste.pics/1e940658a705ab87218cf90388c78db4.png

Меня устраивает..
99 Злопчинский
 
24.11.16
14:26
(93) я группировал, смотри на ИС Commoniter
100 Злопчинский
 
24.11.16
14:26
Автор проблему заборол.
Ветка закрыта.
Ошибка? Это не ошибка, это системная функция.