Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0
помогите разобраться с кодом пожалуйста
Если КоличествоСтрок() > 5 Тогда Предупреждение (" Количество строк более 5"); ВыгрузитьТабличнуюЧасть(ТаблТМЦ); ВыбратьСтроки(); ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ"); ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5); ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5); ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5); Пока ПолучитьСтроку() = 1 Цикл Товар = ТМЦ.Родитель; ТаблТМЦ.Товар=Товар; СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения"); СпрЕд.ИспользоватьВладельца(ТМЦ); СпрЕд.НайтиПоНаименованию("т."); Если СпрЕд.Выбран()>0 Тогда Тон = СпрЕд.Коэффициент; ТоннаПр = (Коэффициент/Тон)*Кво; ТаблТМЦ.ТоннаПр=ТоннаПр; Иначе Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна"); Продолжить; КонецЕсли; ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр; СпрЕд.НайтиПоНаименованию("Место"); Если СпрЕд.Выбран()>0 Тогда Место = СпрЕд.Коэффициент; КвоМест = (Коэффициент/Место)*Кво; ТаблТМЦ.КвоМест=КвоМест; КонецЕсли; ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест; ЦенаСНДС=СуммаСНДС/Кво; ТаблТМЦ.ЦенаСНДС=ЦенаСНДС; КонецЦикла; ВыбратьСтроки(); ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,СуммаСНДС,КвоМест,ТоннаПр"); ТаблТМЦ.Сортировать("Товар,Ед"); Таб.ВывестиСекцию("Строка"); Ном = Ном+1;
КонецЕсли;
Итоги выводит по всей таблице значений, а при выводе секции берет только последнюю строку и с нее показывает только "КвоМест", "ТоннаПр", "ЦенаСНДС",и родителя, "Ед вообще не показывает" а "СуммаСНДС" и "Кво" показует нули. ничего не могу понять. я так понимаю что трабла именно с выводом секции, а что делать не пойму.
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
Цитата
я так понимаю что трабла именно с выводом секции, а что делать не пойму.
Смешно. Зачем вообще перебирать строки документа, если его таблчасть выгружена в таблицу?.. Особо не вникала, но нужно, как минимум, внести такие изменения:
Если КоличествоСтрок() > 5 Тогда Предупреждение (" Количество строк более 5"); ВыгрузитьТабличнуюЧасть(ТаблТМЦ); ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ"); ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5); ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5); ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5); ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл Товар = ТМЦ.Родитель; //ТаблТМЦ.Товар=Товар; ТаблТМЦ.УстановитьЗначение(НомерСтроки,"Товар",Товар); СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения"); СпрЕд.ИспользоватьВладельца(ТМЦ); //СпрЕд.НайтиПоНаименованию("т."); //Если СпрЕд.Выбран()>0 Тогда Если СпрЕд.НайтиПоНаименованию("т.")=1 Тогда Тон = СпрЕд.Коэффициент; ТоннаПр = (Коэффициент/Тон)*Кво; //ТаблТМЦ.ТоннаПр=ТоннаПр; ТаблТМЦ.УстановитьЗначение(НомерСтроки,"ТоннаПр",ТоннаПр); Иначе Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна"); Продолжить; КонецЕсли; //ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр; //СпрЕд.НайтиПоНаименованию("Место"); //Если СпрЕд.Выбран()>0 Тогда Если СпрЕд.НайтиПоНаименованию("Место")=1 Тогда Место = СпрЕд.Коэффициент; КвоМест = (Коэффициент/Место)*Кво; //ТаблТМЦ.КвоМест=КвоМест; ТаблТМЦ.УстановитьЗначение(НомерСтроки,"КвоМест",КвоМест); КонецЕсли; //ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест; ЦенаСНДС=СуммаСНДС/Кво; //ТаблТМЦ.ЦенаСНДС=ЦенаСНДС; ТаблТМЦ.УстановитьЗначение(НомерСтроки,"ЦенаСНДС",ЦенаСНДС); КонецЦикла; ИтогТоннаПр=ТаблТМЦ.Итог("ТоннаПр"); ИтогКвоМест=ТаблТМЦ.Итог("КвоМест"); ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,СуммаСНДС,КвоМест,ТоннаПр"); ТаблТМЦ.Сортировать("Товар,Ед"); ном=1; ТаблТМЦ.ВыбратьСтроки(); Пока ТаблТМЦ.ВыбратьСтроки()=1 Цикл Таб.ВывестиСекцию("Строка"); Ном = Ном+1; КонецЦикла; КонецЕсли;
Пока правила Ваш код, предложили другой вариант. Так что у Вас появился выбор.
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0
Уважаемый -=VJ=- ближе всего к сути, но все равно почему то не работает нормально, так как вы предложили выводит на печать все строки, а не групирует по группе товара и единице измерения и к тому же показывает правильно только "Ед" и "Кво" а все остальное берет почему то с последней строки таблицы.
так как вы предложили выводит на печать все строки, а не групирует по группе товара и единице измерения и к тому же показывает правильно только "Ед" и "Кво" а все остальное берет почему то с последней строки таблицы.
Потому что единица, скорее всего, это элемент подчиненного справочника. Перед
Товар = ТаблТМЦ.ТМЦ.Родитель;
поставьте строку
ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;
Тогда единицы превратятся в простые строки, которые можно будет свернуть.
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0
подскажите пожалуйста как вставить сюда картинку, мне что, сперва на какойто ресурс ее выкладывать а потом сюда вставлять ссылку? если так то посоветуйте куда. а то я на пальцах рассказую суть проблемы. скрины должны пролить свет. я разобрался что создает проблемы в коде, но поборотьего не могу. а чтоб объяснить нужно выложить скрины. спасибо.
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0
вот что у меня получилось!!! Что то все равно делаю не так. В код повставлял "ВыбратьСтроку()" Для того чтоб просмотреть на разных этапах что получается.
Если КоличествоСтрок() > 5 Тогда Предупреждение (" Количество строк более 5"); ВыгрузитьТабличнуюЧасть(ТаблТМЦ); ТаблТМЦ.НоваяКолонка("Товар","Справочник.ТМЦ"); ТаблТМЦ.НоваяКолонка("КвоМест","Число",12,5); ТаблТМЦ.НоваяКолонка("ТоннаПр","Число",12,5); ТаблТМЦ.НоваяКолонка("ЦенаСНДС","Число",12,5); ТаблТМЦ.ВыбратьСтроки(); СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения"); Пока ТаблТМЦ.ПолучитьСтроку() = 1 Цикл // ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование; Товар = ТаблТМЦ.ТМЦ.Родитель; ТаблТМЦ.Товар=Товар; ТаблТМЦ.ВыбратьСтроку(); СпрЕд.ИспользоватьВладельца(ТаблТМЦ.ТМЦ); СпрЕд.НайтиПоНаименованию("т."); Если СпрЕд.Выбран()>0 Тогда Тон = СпрЕд.Коэффициент; ТоннаПр = (ТаблТМЦ.Коэффициент/Тон)*ТаблТМЦ.Кво; ТаблТМЦ.ТоннаПр = ТоннаПр; Иначе Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна"); Продолжить; КонецЕсли; ИтогТоннаПр=ИтогТоннаПр+ТаблТМЦ.ТоннаПр; СпрЕд.НайтиПоНаименованию("Место"); Если СпрЕд.Выбран()>0 Тогда Место = СпрЕд.Коэффициент; КвоМест = (ТаблТМЦ.Коэффициент/Место)*ТаблТМЦ.Кво; ТаблТМЦ.КвоМест=КвоМест; КонецЕсли; ИтогКвоМест=ИтогКвоМест+ТаблТМЦ.КвоМест; ЦенаСНДС=ТаблТМЦ.СуммаСНДС/ТаблТМЦ.Кво; ТаблТМЦ.ЦенаСНДС=ЦенаСНДС; КонецЦикла; ТаблТМЦ.ВыбратьСтроку(); ТаблТМЦ.Свернуть("Товар,Ед","Кво,ЦенаСНДС,КвоМест,ТоннаПр"); ТаблТМЦ.Сортировать("Товар,Ед"); Таб.ИсходнаяТаблица("ТранспортнаяНакладная_Укр"); ТаблТМЦ.ВыбратьСтроку(); ТаблТМЦ.ВыбратьСтроки(); Пока ТаблТМЦ.ПолучитьСтроку()=1 Цикл Ном = Ном+1; Таб.ВывестиСекцию("Строка"); КонецЦикла; КонецЕсли;
Тут оставил "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Закоментированным
ни один вариант не работает как следует. хотя вывожу на печать док с количеством строк не нуждающихся в группировке, то все отлично.
код для вывода в печать без группировок:
Иначе //Если количество строк менее 5 Пока ПолучитьСтроку() = 1 Цикл //********************************* // Получение кол-ва тонн и мест используемого товаром //********************************* СпрЕд=СоздатьОбъект("Справочник.ЕдиницыИзмерения"); Товар = Тмц.ПолнНаименование;
СпрЕд.ИспользоватьВладельца(ТМЦ); СпрЕд.НайтиПоНаименованию("т."); Если СпрЕд.Выбран()>0 Тогда Тон = СпрЕд.Коэффициент; ТоннаПр = (Коэффициент/Тон)*Кво; Иначе Предупреждение (" Для """ + СокрЛП(Тмц.ПолнНаименование) + """ не указан коэффициент тонна"); Продолжить; КонецЕсли;
ИтогТоннаПр=ИтогТоннаПр+ТоннаПр; СпрЕд.НайтиПоНаименованию("Место"); Если СпрЕд.Выбран()>0 Тогда Место = СпрЕд.Коэффициент; КвоМест = (Коэффициент/Место)*Кво; КонецЕсли; ИтогКвоМест=ИтогКвоМест+КвоМест; ЦенаСНДС=СуммаСНДС/Кво; //************************************** Ном = Ном+1; Таб.ВывестиСекцию("Строка");
КонецЦикла;
может у кого то получится разобраться в чем дело и помочь мне.
Да. Вот еще. Если "ТаблТМЦ.Ед = ТаблТМЦ.Ед.Наименование;" Разкомментирован,а в документе получается больше одной группы товара и больше двух единиц измерения
Вы бы сами определились, что Вам нужно. В "как надо" всё разложено по товарам, а сами в коде вставили "ТаблТМЦ.Товар = ТаблТМЦ.ТМЦ.Родитель;" - то есть никаких наименований товара, только название группы элементов "материалы".
Как выглядит ТаблицаЗначений - уже видели. Дальше играйтесь с группировкой - до запятой колонки группирующие, после - те, которые свернутся и просуммируются. А что именно от неё нужно получить - Вам виднее.
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0
Цитата(-=VJ=- @ 28.06.11, 15:00)
Вы бы сами определились, что Вам нужно. В "как надо" всё разложено по товарам, а сами в коде вставили "ТаблТМЦ.Товар = ТаблТМЦ.ТМЦ.Родитель;" - то есть никаких наименований товара, только название группы элементов "материалы".
мне и нужно чтоб группировало по наименованию группы товаров и одинаковыми единицами измерений, а если имеется другая единица измерений в етой группе или наименование группы то чтоб создавало другую группу.
вот я прописал вручную типа как нужно, но добиться етого не могу.чтоб само доставало нужную инфу и выводила все что нужно на печать.
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
Для вывода на печать свернутого (больше 5 стр.) и не свернутого варианта используете одну и ту же исходную таблицу или разные? Учли разницу в формулах при выводе на печать?
Группа: Пользователи
Сообщений: 122
Спасибо сказали: 2 раз
Рейтинг: 0
Цитата(5_kopeek @ 28.06.11, 18:47)
Для вывода на печать свернутого (больше 5 стр.) и не свернутого варианта используете одну и ту же исходную таблицу или разные? Учли разницу в формулах при выводе на печать?
Для вывода на печать использую одну и ту же таблицу, т.е. использую в обеих случаях одинаковые идентификаторы. а разницы в формулах при выводе как по мне я не вижу, если "до 5 строк" то просто выводится через цикл результат сразу в ячейку с нужным идентификатором, а если "больше 5 строк" то все данные сперва вводятся в таблицу значения по тому же принципу , в таблице значений группируются и после етого через цикл выводятся на печать сгруппированные строки тз. идентификаторы в ячейках таблицы имеют тип выражение.
Для вывода на печать использую одну и ту же таблицу, т.е. использую в обеих случаях одинаковые идентификаторы. а разницы в формулах при выводе как по мне я не вижу, если "до 5 строк" то просто выводится через цикл результат сразу в ячейку с нужным идентификатором, а если "больше 5 строк" то все данные сперва вводятся в таблицу значения по тому же принципу , в таблице значений группируются и после етого через цикл выводятся на печать сгруппированные строки тз. идентификаторы в ячейках таблицы имеют тип выражение.
если я не прав то поправьте плиз.
Проверьте - может быть типизированная колонка (после загрузки табличной части документа). Поэтому не работает присваивание ТаблТМЦ.Ед. (т.е. присваивает пустое значение с типом Справочник.ЕдИзм). Можно отладчиком после присваивания - если да тогда необходимо будет заводить новую колонку...
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!