Версия для печати темы (https://pro1c.org.ua/index.php?s=ae7f41fe7e7d83e213245348ab9415f5&showtopic=3909)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Таблица значений

Автор: gorik77 23.06.11, 14:22

помогите разобраться с кодом пожалуйста

Если КоличествоСтрок() > 5 Тогда 
        Предупреждение (" Количество строк более 5");
        ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
        ВыбратьСтроки();
        ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ");
        ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5);
        Пока ПолучитьСтроку() = 1 Цикл
            Товар = ТМЦ.Родитель;
            ТаблТМЦ.Товар=Товар;
            СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
            СпрЕд.ИспользоватьВладельца(ТМЦ);
            СпрЕд.НайтиПоНаименованию("т.");
            Если СпрЕд.Выбран()>0 Тогда
                Тон = СпрЕд.Коэффициент;
                ТоннаПр = (Коэффициент/Тон)*Кво;
                ТаблТМЦ.ТоннаПр=ТоннаПр;
            Иначе
                Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
                Продолжить;
            КонецЕсли;
            ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр;
            СпрЕд.НайтиПоНаименованию("Место");
            Если СпрЕд.Выбран()>0 Тогда
                Место = СпрЕд.Коэффициент;            
                КвоМест = (Коэффициент/Место)*Кво;
                ТаблТМЦ.КвоМест=КвоМест;
            КонецЕсли;    
            ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест;
            ЦенаСНДС=СуммаСНДС/Кво;
            ТаблТМЦ.ЦенаСНДС=ЦенаСНДС;
        КонецЦикла;
        ВыбратьСтроки();
        ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,СуммаСНДС,КвоМест,ТоннаПр");
        ТаблТМЦ.Сортировать("Товар,Ед");
        Таб.ВывестиСекцию("Строка");
        Ном = Ном+1;

КонецЕсли;



Итоги выводит по всей таблице значений, а при выводе секции берет только последнюю строку и с нее показывает только "КвоМест", "ТоннаПр", "ЦенаСНДС",и родителя, "Ед вообще не показывает" а "СуммаСНДС" и "Кво" показует нули. ничего не могу понять. я так понимаю что трабла именно с выводом секции, а что делать не пойму.

всем откликнувшимся заранее спасибо!!!

Автор: Ardi 23.06.11, 14:31

ТаблТМЦ.ВыбратьСтроки();
ТаблТМЦ.ПолучитьСтроку()


и тому подобное.

Автор: gorik77 23.06.11, 14:39

Цитата(Ardi @ 23.06.11, 15:31) *
ТаблТМЦ.ВыбратьСтроки();
ТаблТМЦ.ПолучитьСтроку()

и тому подобное.



если так сделать то остается только Итог("СуммаСНДС"), все остальное не показывает ваще

Автор: Ardi 23.06.11, 14:45

http://pro1c.org.ua/redirect.php?http://bookmix.ru/book.phtml?id=257623&buybook=yes#buy

Автор: gorik77 23.06.11, 15:03

Цитата(Ardi @ 23.06.11, 15:45) http://pro1c.org.ua/index.php?act=findpost&pid=25946


Не смешно

Автор: -=VJ=- 23.06.11, 15:24

Если КоличествоСтрок() > 5 Тогда 
        Предупреждение (" Количество строк более 5");
        ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
        ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ");
        ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5);
        CпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
        ИтогТоннаПр=0;
        ИтогКвоМест=0;
        ТаблТМЦ.ВыбратьСтроки();
        Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл
            Товар = ТаблТМЦ.ТМЦ.Родитель;
            ТаблТМЦ.Товар=Товар;
            СпрЕд.ИспользоватьВладельца(ТаблТМЦ.ТМЦ);
            СпрЕд.НайтиПоНаименованию("т.");
            Если СпрЕд.Выбран()>0 Тогда
                Тон = СпрЕд.Коэффициент;
                ТоннаПр = (Коэффициент/Тон)*Кво;
                ТаблТМЦ.ТоннаПр=ТоннаПр;
            Иначе
                Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
                Продолжить;
            КонецЕсли;
            ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр;
            СпрЕд.НайтиПоНаименованию("Место");
            Если СпрЕд.Выбран()>0 Тогда
                Место = СпрЕд.Коэффициент;            
                КвоМест = (Коэффициент/Место)*Кво;
                ТаблТМЦ.КвоМест=КвоМест;
            КонецЕсли;    
            ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест;
            ЦенаСНДС=ТаблТМЦ.СуммаСНДС/Кво;
            ТаблТМЦ.ЦенаСНДС=ЦенаСНДС;
        КонецЦикла;
        ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,СуммаСНДС,КвоМест,ТоннаПр");
        ТаблТМЦ.Сортировать("Товар,Ед");
        ТаблТМЦ.ВыбратьСтроки();
        Пока ТаблТМЦ.ПолучитьСтроку()=1 Цикл
                Ном = Ном+1;
                Таб.ВывестиСекцию("Строка");
        КонецЦикла;
КонецЕсли;

Автор: 5_kopeek 23.06.11, 15:48

Цитата
я так понимаю что трабла именно с выводом секции, а что делать не пойму.

Смешно.
Зачем вообще перебирать строки документа, если его таблчасть выгружена в таблицу?..
Особо не вникала, но нужно, как минимум, внести такие изменения:
Если КоличествоСтрок() > 5 Тогда 
        Предупреждение (" Количество строк более 5");
        ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
        ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ");
        ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5);
        ВыбратьСтроки();
        Пока ПолучитьСтроку() = 1 Цикл
            Товар = ТМЦ.Родитель;
            //ТаблТМЦ.Товар=Товар;
            ТаблТМЦ.УстановитьЗначение(НомерСтроки,"Товар",Товар);
            СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
            СпрЕд.ИспользоватьВладельца(ТМЦ);
            //СпрЕд.НайтиПоНаименованию("т.");
            //Если СпрЕд.Выбран()>0 Тогда
            Если СпрЕд.НайтиПоНаименованию("т.")=1 Тогда
                Тон = СпрЕд.Коэффициент;
                ТоннаПр = (Коэффициент/Тон)*Кво;
                //ТаблТМЦ.ТоннаПр=ТоннаПр;
                ТаблТМЦ.УстановитьЗначение(НомерСтроки,"ТоннаПр",ТоннаПр);
            Иначе
                Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
                Продолжить;
            КонецЕсли;
            //ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр;
            //СпрЕд.НайтиПоНаименованию("Место");
            //Если СпрЕд.Выбран()>0 Тогда
            Если СпрЕд.НайтиПоНаименованию("Место")=1 Тогда
                Место = СпрЕд.Коэффициент;            
                КвоМест = (Коэффициент/Место)*Кво;
                //ТаблТМЦ.КвоМест=КвоМест;
                ТаблТМЦ.УстановитьЗначение(НомерСтроки,"КвоМест",КвоМест);
            КонецЕсли;    
            //ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест;
            ЦенаСНДС=СуммаСНДС/Кво;
            //ТаблТМЦ.ЦенаСНДС=ЦенаСНДС;
            ТаблТМЦ.УстановитьЗначение(НомерСтроки,"ЦенаСНДС",ЦенаСНДС);
        КонецЦикла;
        ИтогТоннаПр=ТаблТМЦ.Итог("ТоннаПр");
        ИтогКвоМест=ТаблТМЦ.Итог("КвоМест");
        ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,СуммаСНДС,КвоМест,ТоннаПр");
        ТаблТМЦ.Сортировать("Товар,Ед");
        ном=1;
        ТаблТМЦ.ВыбратьСтроки();
        Пока ТаблТМЦ.ВыбратьСтроки()=1 Цикл
            Таб.ВывестиСекцию("Строка");
            Ном = Ном+1;
        КонецЦикла;
КонецЕсли;



Пока правила Ваш код, предложили другой вариант. Так что у Вас появился выбор.

Автор: gorik77 24.06.11, 9:31

Уважаемый -=VJ=- ближе всего к сути, но все равно почему то не работает нормально, так как вы предложили выводит на печать все строки, а не групирует по группе товара и единице измерения и к тому же показывает правильно только "Ед" и "Кво" а все остальное берет почему то с последней строки таблицы.

Автор: Ardi 24.06.11, 9:39

Я знаю что делать:
http://pro1c.org.ua/redirect.php?http://bookmix.ru/book.phtml?id=257623

Автор: -=VJ=- 24.06.11, 9:58

Цитата(gorik77 @ 24.06.11, 10:31) *
так как вы предложили выводит на печать все строки, а не групирует по группе товара и единице измерения
и к тому же показывает правильно только "Ед" и "Кво" а все остальное берет почему то с последней строки таблицы.


Потому что единица, скорее всего, это элемент подчиненного справочника.
Перед

Товар = ТаблТМЦ.ТМЦ.Родитель;


поставьте строку

ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;


Тогда единицы превратятся в простые строки, которые можно будет свернуть.

Автор: gorik77 24.06.11, 10:51

Цитата(-=VJ=- @ 24.06.11, 10:58) *
Потому что единица, скорее всего, это элемент подчиненного справочника.

Тогда единицы превратятся в простые строки, которые можно будет свернуть.


тут кажись проблема немного глубже, даже если я вообще убираю "Ед" из сворачивания и сортировки то ничего совсем не меняется.

Автор: -=VJ=- 24.06.11, 10:57

Цитата(gorik77 @ 24.06.11, 11:51) *
тут кажись проблема немного глубже, даже если я вообще убираю "Ед" из сворачивания и сортировки то ничего совсем не меняется.


В отладчике используйте к таблице ВыбратьСтроку() и проверьте, что в ней не так.

Автор: gorik77 26.06.11, 21:15

подскажите пожалуйста как вставить сюда картинку, мне что, сперва на какойто ресурс ее выкладывать а потом сюда вставлять ссылку? если так то посоветуйте куда. а то я на пальцах рассказую суть проблемы. скрины должны пролить свет. я разобрался что создает проблемы в коде, но поборотьего не могу. а чтоб объяснить нужно выложить скрины.
спасибо.

Автор: logist 26.06.11, 21:19

Цитата(gorik77 @ 26.06.11, 21:15) *
подскажите пожалуйста как вставить сюда картинку, мне что, сперва на какойто ресурс ее выкладывать а потом сюда вставлять ссылку?

Правила, п.9. там и один из сайтов указан.

Автор: gorik77 28.06.11, 13:50

вот что у меня получилось!!! Что то все равно делаю не так. В код повставлял "ВыбратьСтроку()" Для того чтоб просмотреть на разных этапах что получается.

Если КоличествоСтрок() > 5 Тогда  
    Предупреждение (" Количество строк более 5");
    ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
        ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ");
        ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5);
        ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5);
        ТаблТМЦ.ВыбратьСтроки();
        СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
    Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл
    //    ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;
        Товар = ТаблТМЦ.ТМЦ.Родитель;
        ТаблТМЦ.Товар=Товар;
        ТаблТМЦ.ВыбратьСтроку();
        СпрЕд.ИспользоватьВладельца(ТаблТМЦ.ТМЦ);
        СпрЕд.НайтиПоНаименованию("т.");
        Если СпрЕд.Выбран()>0 Тогда
            Тон = СпрЕд.Коэффициент;
            ТоннаПр = (ТаблТМЦ.Коэффициент/Тон)*ТаблТМЦ.Кво;
            ТаблТМЦ.ТоннаПр = ТоннаПр;
                Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
            Продолжить;
        КонецЕсли;
        ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр;             
        СпрЕд.НайтиПоНаименованию("Место");
        Если СпрЕд.Выбран()>0 Тогда
            Место = СпрЕд.Коэффициент;            
            КвоМест = (ТаблТМЦ.Коэффициент/Место)*ТаблТМЦ.Кво;
            ТаблТМЦ.КвоМест=КвоМест;
        КонецЕсли;
        ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест;
        ЦенаСНДС=ТаблТМЦ.СуммаСНДС/ТаблТМЦ.Кво;
        ТаблТМЦ.ЦенаСНДС=ЦенаСНДС;
КонецЦикла;
    ТаблТМЦ.ВыбратьСтроку();    
    ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,КвоМест,ТоннаПр");  
    ТаблТМЦ.Сортировать("Товар,Ед");
    Таб.ИсходнаяТаблица("ТранспортнаяНакладная_Укр");
    ТаблТМЦ.ВыбратьСтроку();
    ТаблТМЦ.ВыбратьСтроки();
    Пока ТаблТМЦ.ПолучитьСтроку()=1 Цикл
                Ном = Ном+1;
                Таб.ВывестиСекцию("Строка");
        КонецЦикла;
КонецЕсли;

Тут оставил "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Закоментированным


Ветом варианте "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Разкоментировал.


ни один вариант не работает как следует. хотя вывожу на печать док с количеством строк не нуждающихся в группировке, то все отлично.


код для вывода в печать без группировок:
Иначе    //Если количество строк менее 5     
        Пока ПолучитьСтроку() = 1 Цикл  
            //*********************************    
            // Получение кол-ва тонн и мест используемого товаром
            //*********************************
            СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
            Товар = Тмц.ПолнНаименование;
            
            СпрЕд.ИспользоватьВладельца(ТМЦ);
            СпрЕд.НайтиПоНаименованию("т.");
            Если СпрЕд.Выбран()>0 Тогда
                Тон = СпрЕд.Коэффициент;
                ТоннаПр = (Коэффициент/Тон)*Кво;
            Иначе
                Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
                Продолжить;
            КонецЕсли;
            
            ИтогТоннаПр=ИтогТоннаПр+ТоннаПр;
            СпрЕд.НайтиПоНаименованию("Место");
            Если СпрЕд.Выбран()>0 Тогда
                Место = СпрЕд.Коэффициент;            
                КвоМест = (Коэффициент/Место)*Кво;
            КонецЕсли;    
            ИтогКвоМест=ИтогКвоМест+КвоМест;
            ЦенаСНДС=СуммаСНДС/Кво;
            //**************************************      
            Ном = Ном+1;
            Таб.ВывестиСекцию("Строка");
            
            
            
        КонецЦикла;


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

Да. Вот еще. Если "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Разкомментирован,а в документе получается больше одной группы товара и больше двух единиц измерения



то просчитывает только первую группу

Автор: -=VJ=- 28.06.11, 14:00

Цитата(gorik77 @ 28.06.11, 14:50) http://pro1c.org.ua/index.php?act=findpost&pid=26181
Ветом варианте "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Разкоментировал.


Единицы и не будет сворачивать в данном случае.

Цитата(gorik77 @ 28.06.11, 14:50) *
ни один вариант не работает как следует.


Вы бы сами определились, что Вам нужно.
В "как надо" всё разложено по товарам, а сами в коде вставили "ТаблТМЦ.Товар = ТаблТМЦ.ТМЦ.Родитель;" - то есть никаких наименований товара, только название группы элементов "материалы".

Как выглядит ТаблицаЗначений - уже видели.
Дальше играйтесь с группировкой - до запятой колонки группирующие, после - те, которые свернутся и просуммируются.
А что именно от неё нужно получить - Вам виднее.

Автор: gorik77 28.06.11, 15:53

Цитата(-=VJ=- @ 28.06.11, 15:00) *
Вы бы сами определились, что Вам нужно.
В "как надо" всё разложено по товарам, а сами в коде вставили "ТаблТМЦ.Товар = ТаблТМЦ.ТМЦ.Родитель;" - то есть никаких наименований товара, только название группы элементов "материалы".


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

вот я прописал вручную типа как нужно, но добиться етого не могу.чтоб само доставало нужную инфу и выводила все что нужно на печать.


Автор: 5_kopeek 28.06.11, 17:47

Для вывода на печать свернутого (больше 5 стр.) и не свернутого варианта используете одну и ту же исходную таблицу или разные? Учли разницу в формулах при выводе на печать?

Автор: gorik77 28.06.11, 18:17

Цитата(5_kopeek @ 28.06.11, 18:47) *
Для вывода на печать свернутого (больше 5 стр.) и не свернутого варианта используете одну и ту же исходную таблицу или разные? Учли разницу в формулах при выводе на печать?


Для вывода на печать использую одну и ту же таблицу, т.е. использую в обеих случаях одинаковые идентификаторы. а разницы в формулах при выводе как по мне я не вижу, если "до 5 строк" то просто выводится через цикл результат сразу в ячейку с нужным идентификатором, а если "больше 5 строк" то все данные сперва вводятся в таблицу значения по тому же принципу , в таблице значений группируются и после етого через цикл выводятся на печать сгруппированные строки тз.
идентификаторы в ячейках таблицы имеют тип выражение.

если я не прав то поправьте плиз.

Автор: dmiter 28.06.11, 22:42

Цитата(gorik77 @ 28.06.11, 19:17) *
Для вывода на печать использую одну и ту же таблицу, т.е. использую в обеих случаях одинаковые идентификаторы. а разницы в формулах при выводе как по мне я не вижу, если "до 5 строк" то просто выводится через цикл результат сразу в ячейку с нужным идентификатором, а если "больше 5 строк" то все данные сперва вводятся в таблицу значения по тому же принципу , в таблице значений группируются и после етого через цикл выводятся на печать сгруппированные строки тз.
идентификаторы в ячейках таблицы имеют тип выражение.

если я не прав то поправьте плиз.

Проверьте - может быть типизированная колонка (после загрузки табличной части документа). Поэтому не работает присваивание ТаблТМЦ.Ед. (т.е. присваивает пустое значение с типом Справочник.ЕдИзм). Можно отладчиком после присваивания - если да тогда необходимо будет заводить новую колонку...

Автор: 5_kopeek 28.06.11, 23:18

Цитата(gorik77 @ 28.06.11, 18:17) http://pro1c.org.ua/index.php?act=findpost&pid=26194
Проверь - может быть типизированная колонка (после загрузки табличной части документа). Поэтому не работает присваивание ТаблТМЦ.Ед. (т.е. присваивает пустое значение с типом Справочник.ЕдИзм). Можно отладчиком после присваивания - если да тогда необходимо будет заводить новую колонку...

Об этом тоже думала, но, поскольку тип колонки задан неявно, не факт, что в этом месте возникает проблема, но проверить стоит.

Автор: gorik77 29.06.11, 14:05

Цитата(5_kopeek @ 29.06.11, 0:18) *
Поскольку во втором варианте Вы используете формулы, правильные для первого варианта, в результате получаете последние значения, записанные в переменные еще при обработке таблицы значений.

Об этом тоже думала, но, поскольку тип колонки задан неявно, не факт, что в этом месте возникает проблема, но проверить стоит.


Все проверил, исправил, добавил новую колону. все стало группировать и выводить, но единицы измерения так и не выводит на печать. Хотя в ТаблицеЗначений все нормально. "Ед" в таблице с типом выражение.



Если КоличествоСтрок() > 5 Тогда  
    
        Предупреждение (" Количество строк более 5");
    ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
    ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ");
    ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,2);
    ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5);
    ТаблТМЦ.НоваяКолонка("Единица");
    ТаблТМЦ.ВыбратьСтроки();
    Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл
        СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
        Товар = ТаблТМЦ.ТМЦ.Родитель;
        ТаблТМЦ.Товар=Товар;
        ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;
        ТаблТМЦ.ВыбратьСтроку();
        СпрЕд.ИспользоватьВладельца(ТаблТМЦ.ТМЦ);
        СпрЕд.НайтиПоНаименованию("т.");
        Если СпрЕд.Выбран()>0 Тогда
            Тон = СпрЕд.Коэффициент;
            ТоннаПр = (ТаблТМЦ.Коэффициент/Тон)*ТаблТМЦ.Кво;
            ТаблТМЦ.ТоннаПр = ТоннаПр;
        Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
            Продолжить;
        КонецЕсли;
        ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр;             
        СпрЕд.НайтиПоНаименованию("Место");
        Если СпрЕд.Выбран()>0 Тогда
            Место = СпрЕд.Коэффициент;            
            КвоМест = (ТаблТМЦ.Коэффициент/Место)*ТаблТМЦ.Кво;
            ТаблТМЦ.КвоМест=КвоМест;
            Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент Место");
            Продолжить;
        КонецЕсли;
        ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест;
    КонецЦикла;
    ТаблТМЦ.ВыбратьСтроку();    
    ТаблТМЦ.Свернуть("Товар,Единица","Кво,СуммаСНДС,КвоМест,ТоннаПр");  
    ТаблТМЦ.Сортировать("Товар,Единица");
    Таб.ИсходнаяТаблица("ТранспортнаяНакладная_Укр");
    ТаблТМЦ.ВыбратьСтроку();
    ТаблТМЦ.ВыбратьСтроки();
    Пока ТаблТМЦ.ПолучитьСтроку()=1 Цикл
        
        Товар=ТаблТМЦ.Товар;
        Ед=ТаблТМЦ.Единица;
        Кво=ТаблТМЦ.Кво;
        СуммаСНДС=ТаблТМЦ.СуммаСНДС;
        ЦенаСНДС=ТаблТМЦ.СуммаСНДС/ТаблТМЦ.Кво;
        КвоМест=ТаблТМЦ.КвоМест;
        ТоннаПр=ТаблТМЦ.ТоннаПр;
        Ном = Ном+1;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
КонецЕсли;

Автор: 5_kopeek 29.06.11, 15:34

Это что такое?

Цитата(gorik77 @ 29.06.11, 14:05) *
"Ед" в таблице с типом выражение.
...
        ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;
...

Возможно, имели ввиду
ТаблТМЦ.Единица=ТаблТМЦ.Ед.Наименование

, а в таблице формула
ТаблТМЦ.Единица

Да, и тип колонки Единица можно указать явно -- "Строка".

Автор: Kutuzov 29.06.11, 18:27

А у меня другой вопрос.
А можно ли свернуть печатную таблицу перед тем как вывести ее, или надо ее сворачивать или формировать правильно до того как ее вывел???

Автор: 5_kopeek 29.06.11, 18:46

Цитата(Kutuzov @ 29.06.11, 18:27) *
А у меня другой вопрос.
А можно ли свернуть печатную таблицу перед тем как вывести ее, или надо ее сворачивать или формировать правильно до того как ее вывел???

Какая разница между "перед тем как вывести ее" и "до того как ее вывел"? И что Вы понимаете под термином "печатная таблица"?

Автор: Kutuzov 29.06.11, 19:17

Цитата(5_kopeek @ 29.06.11, 19:46) *
Какая разница между "перед тем как вывести ее" и "до того как ее вывел"? И что Вы понимаете под термином "печатная таблица"?


таблица которая выводит данные на печать, то что макетом в 8-ке называется

Автор: kalyamov 29.06.11, 20:30

Цитата(Kutuzov @ 29.06.11, 20:17) *
таблица которая выводит данные на печать, то что макетом в 8-ке называется


Как Вы себе представляете "Свернуть макет"? Да и зачем?

Автор: Kutuzov 29.06.11, 21:48

Цитата(kalyamov @ 29.06.11, 21:30) *
Как Вы себе представляете "Свернуть макет"? Да и зачем?


Как я себе это представляю я знаю... вопрос в другом как это можно сделать open_file.gif ну я решил делать по другому путем формирования сразу нужной мне таблицы

Автор: kalyamov 29.06.11, 21:52

Цитата(Kutuzov @ 29.06.11, 22:48) *
Как я себе это представляю я знаю... вопрос в другом как это можно сделать open_file.gif ну я решил делать по другому путем формирования сразу нужной мне таблицы


Нормальные люди сразу и формируют, то что им надо. Знаю и умею - разные вещи.

Автор: Kutuzov 29.06.11, 21:58

Цитата(kalyamov @ 29.06.11, 21:30) *
Как Вы себе представляете "Свернуть макет"? Да и зачем?



НУ в 8-ке макет нормально сворачивается по группам... правда в 8-ке скд есть throw.gif

Автор: kalyamov 29.06.11, 22:02

Цитата(Kutuzov @ 29.06.11, 22:58) *
НУ в 8-ке макет нормально сворачивается по группам... правда в 8-ке скд есть throw.gif


Да у Вас просто супер восьмерка, обзавидуешься.

Автор: Kutuzov 29.06.11, 22:42

Цитата(kalyamov @ 29.06.11, 23:02) *
Да у Вас просто супер восьмерка, обзавидуешься.


Я чето не понял???!!! ну да ладно... Я вообще то говорил в сравнении, а вопрос мне надо решить в 7.7

Автор: kalyamov 30.06.11, 9:21

Цитата(Kutuzov @ 29.06.11, 23:42) *
Я вообще то говорил в сравнении, а вопрос мне надо решить в 7.7


А вопрос можно услышать? То что было перед этим мало похоже на вопрос по семерке.

Автор: 5_kopeek 30.06.11, 9:25

Kutuzov, Вы как-то так изъясняетесь, что я не могу понять Ваш вопрос. Если речь идет о группировании строк в печатной форме, как в Excel, то штатными средствами в 7.7 это невозможно. А вообще, подготовленные данные выводятся в печатную форму. Тем, что уже выведено, можно манипулировать в определенных рамках как с областью.

Автор: Kutuzov 30.06.11, 11:40

Цитата(5_kopeek @ 30.06.11, 10:25) *
Kutuzov, Вы как-то так изъясняетесь, что я не могу понять Ваш вопрос. Если речь идет о группировании строк в печатной форме, как в Excel, то штатными средствами в 7.7 это невозможно. А вообще, подготовленные данные выводятся в печатную форму. Тем, что уже выведено, можно манипулировать в определенных рамках как с областью.


вот и ответ на вой вопрос.

Автор: gorik77 30.06.11, 22:11

Цитата(5_kopeek @ 29.06.11, 16:34) *
Это что такое?
ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;

Возможно, имели ввиду
ТаблТМЦ.Единица=ТаблТМЦ.Ед.Наименование

, а в таблице формула
ТаблТМЦ.Единица

Да, и тип колонки Единица можно указать явно -- "Строка".



Да. вы почти правы, для полного и безконфликтного вывода всех данных пришлось изменить формулы после ввода новых колонок.
ета строка возвращает первичное значение и структуру колонки "Ед".
ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;

может я и сам еще не до конца понял весь процес, но добился того что все работает.
я понимаю, со стороны полный бред, но если вы вставите етот код в расходную накладную внутри цыкла встравите "ВыбратьСтроку()" то вы сами все увидите. Без етого выражения "Ед" с каждым циклом будет пропадать, я полностью еще не разобрался с "ТаблицамиЗначений", но я точно могу утверждать что ета строчка возвращаед колонке "Ед", свое первоначальное значение. может как то и коряво, через плече, но код закончен и работает отлично. вот только бухгалтеров сложно приучить содержать справочники в порядке, а то у них вместо группы товара стоит название фирмы которая поставляет товар, а не как положено к примеру ( "Крупы", "Запчасти","Топливо", и Т.Д.).
вот полностью законченый и рабочий код, я очень благодарен всем за дельные советы.
Если КоличествоСтрок() > 5 Тогда  
    
        Предупреждение (" Количество строк более 5");
    ВыгрузитьТабличнуюЧасть(ТаблТМЦ);
    ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ");
    ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,2);
    ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5);
    ТаблТМЦ.НоваяКолонка("Единица");
    ТаблТМЦ.ВыбратьСтроки();
    Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл
        СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
        Товар = ТаблТМЦ.ТМЦ.Родитель;
        ТаблТМЦ.Товар=Товар;
        ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;
        СпрЕд.ИспользоватьВладельца(ТаблТМЦ.ТМЦ);
        СпрЕд.НайтиПоНаименованию("т.");
        Если СпрЕд.Выбран()>0 Тогда
            Тон = СпрЕд.Коэффициент;
            ТоннаПр = (ТаблТМЦ.Коэффициент/Тон)*ТаблТМЦ.Кво;
            ТаблТМЦ.ТоннаПр = ТоннаПр;
        Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
            Продолжить;
        КонецЕсли;
        ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр;             
        СпрЕд.НайтиПоНаименованию("Место");
        Если СпрЕд.Выбран()>0 Тогда
            Место = СпрЕд.Коэффициент;            
            КвоМест = (ТаблТМЦ.Коэффициент/Место)*ТаблТМЦ.Кво;
            ТаблТМЦ.КвоМест=КвоМест;
            Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент Место");
            Продолжить;
        КонецЕсли;
        ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест;
    КонецЦикла;    
    ТаблТМЦ.Свернуть("Товар,Единица","Кво,СуммаСНДС,КвоМест,ТоннаПр");  
    ТаблТМЦ.Сортировать("Товар,Единица");
    Таб.ИсходнаяТаблица("ТранспортнаяНакладная_Укр");
    ТаблТМЦ.ВыбратьСтроки();
    Пока ТаблТМЦ.ПолучитьСтроку()=1 Цикл
        
        Товар=ТаблТМЦ.Товар;
        ЕдТовар =ТаблТМЦ.Единица;
        КвоТовар=ТаблТМЦ.Кво;
        ЦенаСНДСТовар=ТаблТМЦ.СуммаСНДС/ТаблТМЦ.Кво;
        СуммаСНДСТовар=ТаблТМЦ.СуммаСНДС;
        КвоМест=ТаблТМЦ.КвоМест;
        ТоннаПр=ТаблТМЦ.ТоннаПр;
        Ном = Ном+1;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    

Иначе    //Если количество строк менее 5
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл  
        СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения");
        Товар = Тмц.ПолнНаименование;
        
        СпрЕд.ИспользоватьВладельца(ТМЦ);
        СпрЕд.НайтиПоНаименованию("т.");
        Если СпрЕд.Выбран()>0 Тогда
            Тон = СпрЕд.Коэффициент;
            ТоннаПр = (Коэффициент/Тон)*Кво;
        Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна");
            Продолжить;
        КонецЕсли;
        
        ИтогТоннаПр=ИтогТоннаПр+ТоннаПр;
        СпрЕд.НайтиПоНаименованию("Место");
        Если СпрЕд.Выбран()>0 Тогда
            Место = СпрЕд.Коэффициент;            
            КвоМест = (Коэффициент/Место)*Кво;
            Иначе
            Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент Место");
            Продолжить;
        КонецЕсли;    
        ИтогКвоМест=ИтогКвоМест+КвоМест;
        //**************************************
        ЕдТовар =Ед;
        КвоТовар=ТаблТМЦ.Кво;
        СуммаСНДСТовар=СуммаСНДС;
        ЦенаСНДСТовар=СуммаСНДС/Кво;
        Ном = Ном+1;
        Таб.ВывестиСекцию("Строка");
        
        
    КонецЦикла;    
КонецЕсли;


может кому и пригодится, не жалко поделиться рабочим кодом когда Вам так помогают, хотя и самому не мало пришлось поламать голову почему то одно то другое не работало)).
Всем спасибо.
почти уверен что кому то точно пригодится.
и не мешало бы чтоб большинство тем заканчивались рабочим кодом. а то дискусии, дискусии, а в конце фраза "0 боже, меня осенило, теперь все нормально". ведь даже если кто то и найдет тему его интерисующую, то с таким финалом можно ничего и не понять.

хотя может я и не прав, пока сам не подумаеш до Вас не дойдет, хотя если есть кто то с кем можно почоветоваться ето очень хорошо. потому что в дискуссии рождается истинна.

Автор: 5_kopeek 30.06.11, 22:32

Цитата(gorik77 @ 30.06.11, 22:11) *
ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;

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

Это не бред. Если Вы используете конструкцию ТаблТМЦ.Ед, то получаете значение типа Справочник.ЕдиницыИзмерения. Поскольку такой справочник является подчиненным справочнику ТМЦ, то его элементы, принадлежащие разным товарам, но имеющие одинаковое наименование, являются разными. (Для примера: Товар1 имеет ед.изм. шт. и Товар2 имеет ед.изм. шт., но шт.<>шт., потому что эти эелементы разные -- имеют разных владельцев). Поэтому свернуть такую колонку и не получается.
А когда Вы используете конструкцию ТаблТМЦ.Ед.Ед, то ссылаетесь на реквизит справочника ЕдиницыИзмерения с идентификатором Ед, т.е. получаете значение типа Перечисление.ЕдиницыИзмерения, значения которого автономны и не зависят от товара. (Элемент справочника ЕдиницыИзмерения шт., принадлежащий Товар1, имеет реквизит Ед (Перечисление.ЕдиницыИзмерения) со значением шт., и элемент шт., принадлежащий Товар2, имеет реквизит Ед со значением шт. Но в этом случае Ед=Ед, т.е. шт.=шт.).
Не уверена, что объяснила понятно, но, может, это поможет Вам разобраться smile.gif

Цитата
хотя может я и не прав, пока сам не подумаеш до Вас не дойдет...

А вот эту фразу не поняла.

Автор: gorik77 30.06.11, 23:00

Цитата(5_kopeek @ 30.06.11, 23:32) *
"" хотя может я и не прав, пока сам не подумаеш до Вас не дойдет...""

А вот эту фразу не поняла.


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

PS для администрации:
Вам ипользую как имя собственное

я понял, ето администрация вставляет замену, вместо т е б е на вас, хотя без етого слова иногда нельзя правильно выразить мысль.

Автор: 5_kopeek 30.06.11, 23:06

Цитата(gorik77 @ 30.06.11, 23:00) *
я понял, ето администрация вставляет замену, вместо т е б е на вас, хотя без етого слова иногда нельзя правильно выразить мысль.

Пожалуй с этим администрация несколько погорячилась -- не всегда Т Ы -- это неуважение и невежливость smile.gif В результате очень интересные предложения получаются.

Автор: kalyamov 01.07.11, 0:30

Цитата(5_kopeek @ 01.07.11, 0:06) http://pro1c.org.ua/index.php?act=findpost&pid=26327
хотя может я и не прав, пока сам не подумаеш до Вас не дойдет...


Наверное в этом случае "Вас" надо брать в кавычки . smile.gif

По поводу кода можно несколько советов на будущее ? Просто если сам во всем разбираешься, не на все хватает времени и внимания. Есть ошибки, для данного случая не существеные но в будущем - можно взять за правило.

Автор: Vofka 01.07.11, 6:57

Цитата
Пожалуй с этим администрация несколько погорячилась

Да, это я решил провести такой эксперимент icon_poke.gif 32541560.gif

Цитата
Вам ипользую как имя собственное

А разве непонятно, что в русском/украинском языке нельзя охватить все возможные варианты фраз с n_ы/вы и правильно их перефразировать. Поэтому имеем что имеем.

ЗЫ. ещё посмотрим, если это будет "портить" посты - уберу. Если есть какие-то вопросы/предложения/пожелания - пишите или в соответствующем разделе или в личку.
Тема закрыта.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua