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

КонецЕсли;



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

всем откликнувшимся заранее спасибо!!!
Ardi
ТаблТМЦ.ВыбратьСтроки();
ТаблТМЦ.ПолучитьСтроку()


и тому подобное.
gorik77
Цитата(Ardi @ 23.06.11, 15:31) необходимо зарегистрироваться для просмотра ссылки
ТаблТМЦ.ВыбратьСтроки();
ТаблТМЦ.ПолучитьСтроку()

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



если так сделать то остается только Итог("СуммаСНДС"), все остальное не показывает ваще
Ardi
необходимо зарегистрироваться для просмотра ссылки
gorik77
Цитата(Ardi @ 23.06.11, 15:45) необходимо зарегистрироваться для просмотра ссылки
необходимо зарегистрироваться для просмотра ссылки


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

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



Пока правила Ваш код, предложили другой вариант. Так что у Вас появился выбор.
gorik77
Уважаемый -=VJ=- ближе всего к сути, но все равно почему то не работает нормально, так как вы предложили выводит на печать все строки, а не групирует по группе товара и единице измерения и к тому же показывает правильно только "Ед" и "Кво" а все остальное берет почему то с последней строки таблицы.
Ardi
Я знаю что делать:
необходимо зарегистрироваться для просмотра ссылки
-=VJ=-
Цитата(gorik77 @ 24.06.11, 10:31) необходимо зарегистрироваться для просмотра ссылки
так как вы предложили выводит на печать все строки, а не групирует по группе товара и единице измерения
и к тому же показывает правильно только "Ед" и "Кво" а все остальное берет почему то с последней строки таблицы.


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

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


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

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


Тогда единицы превратятся в простые строки, которые можно будет свернуть.
gorik77
Цитата(-=VJ=- @ 24.06.11, 10:58) необходимо зарегистрироваться для просмотра ссылки
Потому что единица, скорее всего, это элемент подчиненного справочника.

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


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


В отладчике используйте к таблице ВыбратьСтроку() и проверьте, что в ней не так.
gorik77
подскажите пожалуйста как вставить сюда картинку, мне что, сперва на какойто ресурс ее выкладывать а потом сюда вставлять ссылку? если так то посоветуйте куда. а то я на пальцах рассказую суть проблемы. скрины должны пролить свет. я разобрался что создает проблемы в коде, но поборотьего не могу. а чтоб объяснить нужно выложить скрины.
спасибо.
logist
Цитата(gorik77 @ 26.06.11, 21:15) необходимо зарегистрироваться для просмотра ссылки
подскажите пожалуйста как вставить сюда картинку, мне что, сперва на какойто ресурс ее выкладывать а потом сюда вставлять ссылку?

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

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


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


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


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


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

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



то просчитывает только первую группу
-=VJ=-
Цитата(gorik77 @ 28.06.11, 14:50) необходимо зарегистрироваться для просмотра ссылки
Тут оставил "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Закоментированным


А откуда колонка суммы, если в сворачивании её нет?

Цитата(gorik77 @ 28.06.11, 14:50) необходимо зарегистрироваться для просмотра ссылки
Ветом варианте "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Разкоментировал.


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

Цитата(gorik77 @ 28.06.11, 14:50) необходимо зарегистрироваться для просмотра ссылки
ни один вариант не работает как следует.


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

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


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

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

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


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

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

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

Проверьте - может быть типизированная колонка (после загрузки табличной части документа). Поэтому не работает присваивание ТаблТМЦ.Ед. (т.е. присваивает пустое значение с типом Справочник.ЕдИзм). Можно отладчиком после присваивания - если да тогда необходимо будет заводить новую колонку...
5_kopeek
Цитата(gorik77 @ 28.06.11, 18:17) необходимо зарегистрироваться для просмотра ссылки
Для вывода на печать использую одну и ту же таблицу, т.е. использую в обеих случаях одинаковые идентификаторы. а разницы в формулах при выводе как по мне я не вижу,
...
если я не прав то поправьте плиз.

При заполнении таблицы в варианте "меньше 5" Вы используете данные из таблицы документа, перебирая в цикле его строки, и в том же цикле рассчитанные переменные, т.е. формулы вида
Товар
Ед

и т.д.
При заполнении таблицы в варианте "больше 5" Вы используете данные из таблицы значений, поэтому формулы должны быть вида
ТаблТМЦ.Товар
ТаблТМЦ.Ед

и т.д.
Поскольку во втором варианте Вы используете формулы, правильные для первого варианта, в результате получаете последние значения, записанные в переменные еще при обработке таблицы значений.
Цитата(dmiter @ 28.06.11, 22:42) необходимо зарегистрироваться для просмотра ссылки
Проверь - может быть типизированная колонка (после загрузки табличной части документа). Поэтому не работает присваивание ТаблТМЦ.Ед. (т.е. присваивает пустое значение с типом Справочник.ЕдИзм). Можно отладчиком после присваивания - если да тогда необходимо будет заводить новую колонку...

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

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


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



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

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

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

Да, и тип колонки Единица можно указать явно -- "Строка".
Kutuzov
А у меня другой вопрос.
А можно ли свернуть печатную таблицу перед тем как вывести ее, или надо ее сворачивать или формировать правильно до того как ее вывел???
5_kopeek
Цитата(Kutuzov @ 29.06.11, 18:27) необходимо зарегистрироваться для просмотра ссылки
А у меня другой вопрос.
А можно ли свернуть печатную таблицу перед тем как вывести ее, или надо ее сворачивать или формировать правильно до того как ее вывел???

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


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


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


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


Нормальные люди сразу и формируют, то что им надо. Знаю и умею - разные вещи.
Kutuzov
Цитата(kalyamov @ 29.06.11, 21:30) необходимо зарегистрироваться для просмотра ссылки
Как Вы себе представляете "Свернуть макет"? Да и зачем?



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


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


Я чето не понял???!!! ну да ладно... Я вообще то говорил в сравнении, а вопрос мне надо решить в 7.7
kalyamov
Цитата(Kutuzov @ 29.06.11, 23:42) необходимо зарегистрироваться для просмотра ссылки
Я вообще то говорил в сравнении, а вопрос мне надо решить в 7.7


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


вот и ответ на вой вопрос.
gorik77
Цитата(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
Цитата(gorik77 @ 30.06.11, 22:11) необходимо зарегистрироваться для просмотра ссылки
ТаблТМЦ.Единица=ТаблТМЦ.Ед.Ед;

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

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

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

А вот эту фразу не поняла.
gorik77
Цитата(5_kopeek @ 30.06.11, 23:32) необходимо зарегистрироваться для просмотра ссылки
"" хотя может я и не прав, пока сам не подумаеш до Вас не дойдет...""

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


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

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

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

Пожалуй с этим администрация несколько погорячилась -- не всегда Т Ы -- это неуважение и невежливость smile.gif В результате очень интересные предложения получаются.
kalyamov
Цитата(5_kopeek @ 01.07.11, 0:06) необходимо зарегистрироваться для просмотра ссылки
В результате очень интересные предложения получаются.


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

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


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

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

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

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

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

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