Цены

1. kevlus 28.07.12 10:53 Сейчас в теме
Здравствуйте
Подскажите пож.есть форма выгрузки в ексель в ней выгружается цена закупочная где поправить чтоб цена была розничной
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. kevlus 28.07.12 11:54 Сейчас в теме
mike581 это обработка, ноя не пойму где поправить
Перем ТипСпр;
Перем СпсТипСпр,СпсТипПер,СпсТипСч,СпсТипВРас;
Перем ExcelApp;
//*******************************************
Процедура ПриЗакрытии()
ExcelApp.Quit();
ExcelApp="";
КонецПроцедуры
//*******************************************
Процедура ИсключитьВсе()
КолЗн=СпсРек.РазмерСписка();
Для Ном=1 По КолЗн Цикл
СпсНРек.ДобавитьЗначение(СпсРек.ПолучитьЗначение(Ном));
КонецЦикла;
СпсРек.УдалитьВсе();
КонецПроцедуры // ИсключитьВсе
//*******************************************
Процедура ВключитьВсе()
КолЗн=СпсНРек.РазмерСписка();
Для Ном=1 По КолЗн Цикл
СпсРек.ДобавитьЗначение(СпсНРек.ПолучитьЗначение(Ном));
КонецЦикла;
СпсНРек.УдалитьВсе();
КонецПроцедуры // ВключитьВсе
//*******************************************
Процедура Исключить()

ТекПоз = СпсРек.ТекущаяСтрока();
Если ТекПоз = 0 Тогда
Возврат;
КонецЕсли;

СпсНРек.ДобавитьЗначение(СпсРек.ПолучитьЗначение(ТекПоз));

СпсРек.УдалитьЗначение(ТекПоз);

Если СпсРек.РазмерСписка() > 0 Тогда
Если ТекПоз > СпсРек.РазмерСписка() Тогда
ТекПоз = СпсРек.РазмерСписка();
КонецЕсли;
СпсРек.ТекущаяСтрока(ТекПоз);
КонецЕсли;
КонецПроцедуры // Исключить
//*******************************************
Процедура Включить()

ТекПоз = СпсНРек.ТекущаяСтрока();
Если ТекПоз = 0 Тогда
Возврат;
КонецЕсли;

СпсРек.ДобавитьЗначение(СпсНРек.ПолучитьЗначение(ТекПоз));

СпсНРек.УдалитьЗначение(ТекПоз);

Если СпсНРек.РазмерСписка() > 0 Тогда
Если ТекПоз > СпсНРек.РазмерСписка() Тогда
ТекПоз = СпсНРек.РазмерСписка();
КонецЕсли;
СпсНРек.ТекущаяСтрока(ТекПоз);
КонецЕсли;

КонецПроцедуры // Включить
//*******************************************
Процедура УпрДоступ()
Если СписСпр.ТекущаяСтрока() > 0 Тогда
Форма.кнОк.Доступность(1);
Форма.ВыбЭлем.Доступность(1);
Форма.ВыбЭлем.НазначитьТип("Справочник."+СокрЛП(ТипСпр.ПолучитьЗначение(СписСпр.ТекущаяСтрока(),"Идентификатор")));
Ном=0;
НомСпр=ТипСпр.ПолучитьЗначение(СписСпр.ТекущаяСтрока(),"Номер");
СпсРек.УдалитьВсе();
СпсРек.ДобавитьЗначение("Id");
СпсРек.ДобавитьЗначение("Группа");
СпсРек.ДобавитьЗначение("Уровень");
Если Метаданные.Справочник(НомСпр).ДлинаКода > 0 Тогда
СпсРек.ДобавитьЗначение("Код");
КонецЕсли;
Если Метаданные.Справочник(НомСпр).ДлинаНаименования > 0 Тогда
СпсРек.ДобавитьЗначение("Наименование");

КонецЕсли;

СпсСорт.УдалитьВсе();
СпсСорт.ДобавитьЗначение("Розничная");
СпсСорт.ДобавитьЗначение("Код");
СпсСорт.ДобавитьЗначение("Наименование");

СпсТипСпр.УдалитьВсе();
СпсТипПер.УдалитьВсе();
СпсТипСч.УдалитьВсе();

Для КолРек=1 По Метаданные.Справочник(НомСпр).Реквизит() Цикл
ТипРек=Метаданные.Справочник(НомСпр).Реквизит(КолРек).Тип;
Идент=Метаданные.Справочник(НомСпр).Реквизит(КолРек).Идентификатор;

Если ВРег(Лев(ТипРек,10)) ="СПРАВОЧНИК" Тогда
СпсТипСпр.ДобавитьЗначение(Идент);
ИначеЕсли ВРег(Лев(ТипРек,12)) ="ПЕРЕЧИСЛЕНИЕ" Тогда
СпсТипПер.ДобавитьЗначение(Идент);
ИначеЕсли ВРег(Лев(ТипРек,5)) ="СЧЕТ" Тогда
СпсТипСч.ДобавитьЗначение(Идент);
ИначеЕсли ВРег(Лев(ТипРек,10)) ="ВИДРАСЧЕТА" Тогда
СпсТипСч.ДобавитьЗначение(Идент);
ИначеЕсли Найти("Число;Строка;Дата",ТипРек)=0 Тогда
Продолжить;
КонецЕсли;

СпсРек.ДобавитьЗначение(Идент);
Если Метаданные.Справочник(НомСпр).Реквизит(КолРек).Сортировка=1 Тогда
СпсСорт.ДобавитьЗначение(Метаданные.Справочник(НомСпр).Реквизит(КолРек));
КонецЕсли;
КонецЦикла;
СпсНРек.УдалитьВсе();

СпсРек.ТекущаяСтрока(1);
СпсСорт.ТекущаяСтрока(1);

Иначе
Форма.кнОк.Доступность(0);
Форма.ВыбЭлем.Доступность(0);
КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура Сформировать()
КолРек=СпсРек.РазмерСписка();
Если КолРек=0 Тогда
Сообщить("Нет выбранных полей для экспорта");
Возврат;
КонецЕсли;
ИмяСпр="Справочник."+СокрЛП(ТипСпр.ПолучитьЗначение(СписСпр.ТекущаяСтрока(),"Идентификатор"));
Спр = СоздатьОбъект(ИмяСпр);

КолУр=Метаданные.Справочник(СокрЛП(ТипСпр.ПолучитьЗначение(СписСпр.ТекущаяСтрока(),"Идентификатор"))).КоличествоУровней;

Спс=СоздатьОбъект("СписокЗначений");
Для НомУр=1 По КолУр Цикл
Спс.ДобавитьЗначение(0);
КонецЦикла;

НовыеРабочиеКниги=ExcelApp.WorkBooks;
РабочаяКнига =НовыеРабочиеКниги.Add();
Страница=РабочаяКнига.Worksheets(1);
Страница.Name = СокрЛП(ТипСпр.ПолучитьЗначение(СписСпр.ТекущаяСтрока(),"Представление"));

Для Ном=1 По КолРек Цикл
ExcelApp.Cells(1,Ном).Value=СпсРек.ПолучитьЗначение(Ном);
КонецЦикла;

Стр=1;

Если ВыбЭлем.Выбран() > 0 Тогда
Спр.ВключатьПодчиненные(1);
Если ВыбЭлем.ЭтоГруппа()=1 Тогда
Спр.ИспользоватьРодителя(ВыбЭлем);
КонецЕсли;
КонецЕсли;

НомСорт=СпсСорт.ТекущаяСтрока();

Если НомСорт=2 Тогда
Спр.ПорядокКодов();
ИначеЕсли НомСорт=3 Тогда
Спр.ПорядокНаименований();
ИначеЕсли НомСорт > 3 Тогда
Спр.ПорядокРеквизита(СокрЛП(СпсСорт.ПолучитьЗначение(НомСорт)));
КонецЕсли;

Если ОбрПорядок > 0 Тогда
Спр.ОбратныйПорядок();
КонецЕсли;

Спр.ИспользоватьДату(РабочаяДата());

Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() > 0 Цикл
Если Спр.ПометкаУдаления() > 0 Тогда
Продолжить;
КонецЕсли;
Если (ВыбЭлем.Выбран()=1) И (ВыбЭлем.ЭтоГруппа()=0) И (ВыбЭлем <> Спр.ТекущийЭлемент() ) Тогда
Продолжить;
КонецЕсли;
Стр=Стр+1;
Если Спр.ЭтоГруппа() > 0 Тогда
Если Структурировать > 0 Тогда
Для НомУр=0 По КолУр-Спр.Уровень() Цикл
СтрУр=Спс.ПолучитьЗначение(КолУр-НомУр);
Если СтрУр <> 0 Тогда
ExcelApp.Rows(СокрЛп(Строка(СтрУр+1))+":"+СокрЛп(Строка(Стр-1))).Select();
ExcelApp.Selection.Rows.Group();
Если КолУр-НомУр <> Спр.Уровень() Тогда
Стр=Стр+1;
Спс.УстановитьЗначение(КолУр-НомУр,0);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Спс.УстановитьЗначение(Спр.Уровень(),Стр);
КонецЕсли;
КонецЕсли;

Для Ном=1 По КолРек Цикл
ИмяРек=СокрЛП(СпсРек.ПолучитьЗначение(Ном));
Если СокрЛП(СпсРек.ПолучитьЗначение(Ном))="Id" Тогда
МЗнач=ЗначениеВСтрокуВнутр(Спр.ТекущийЭлемент());
ИначеЕсли СокрЛП(СпсРек.ПолучитьЗначение(Ном))="Код" Тогда
МЗнач=Спр.Код;
ИначеЕсли СокрЛП(СпсРек.ПолучитьЗначение(Ном))="Уровень" Тогда
МЗнач=Спр.Уровень();
ИначеЕсли СокрЛП(СпсРек.ПолучитьЗначение(Ном))="Наименование" Тогда
МЗнач=Спр.Наименование;
ИначеЕсли СокрЛП(СпсРек.ПолучитьЗначение(Ном))="Группа" Тогда
МЗнач=Спр.ЭтоГруппа();
ИначеЕсли СпсТипСпр.НайтиЗначение(ИмяРек) > 0 Тогда
МЗнач=Спр.ПолучитьАтрибут(ИмяРек).Наименование;
ИначеЕсли СпсТипПер.НайтиЗначение(ИмяРек) > 0 Тогда
МЗнач=Спр.ПолучитьАтрибут(ИмяРек).Идентификатор();
ИначеЕсли СпсТипСч.НайтиЗначение(ИмяРек) > 0 Тогда
МЗнач=Спр.ПолучитьАтрибут(ИмяРек).Код+" "+Спр.ПолучитьАтрибут(ИмяРек).Наименование;
ИначеЕсли СпсТипВРас.НайтиЗначение(ИмяРек) > 0 Тогда
МЗнач=Спр.ПолучитьАтрибут(ИмяРек).Наименование;
Иначе
МЗнач=Спр.ПолучитьАтрибут(ИмяРек);
КонецЕсли;
ExcelApp.Cells(Стр,Ном).Value=МЗнач;
Если (Спр.ЭтоГруппа() > 0) И (ВыдГруппу > 0) Тогда
ExcelApp.Cells(Стр,Ном).Font.Bold=1;
КонецЕсли;
КонецЦикла;
//Если Стр> 200 Тогда
// Прервать;
//КонецЕсли;

КонецЦикла;

Если Структурировать > 0 Тогда
Для НомУр=0 По КолУр-1 Цикл
СтрУр=Спс.ПолучитьЗначение(КолУр-НомУр);
Если СтрУр <> 0 Тогда
ExcelApp.Rows(СокрЛп(Строка(СтрУр+1))+":"+СокрЛп(Строка(Стр))).Select();
ExcelApp.Selection.Rows.Group();
Стр=Стр+1;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Страница.Outline.SummaryRow = 0;
ExcelApp.Visible=1;
КонецПроцедуры
//*****************
Процедура ПриОткрытии()
Форма.СписСпр.ВыполнятьФормулуТолькоПриИзменении(1);
СписСпр.ТекущаяСтрока(1);
УпрДоступ();
КонецПроцедуры;
//*****************
ТипСпр=СоздатьОбъект("ТаблицаЗначений");
ТипСпр.НоваяКолонка("Представление");
ТипСпр.НоваяКолонка("Идентификатор");
ТипСпр.НоваяКолонка("Номер");
КолСтр=0;
Для Ном=1 По Метаданные.Справочник() Цикл
Если Метаданные.Справочник(Ном).Владелец.Выбран() = 0 Тогда
КолСтр=КолСтр+1;
СписСпр.ДобавитьЗначение(Метаданные.Справочник(Ном).Представление());
ТипСпр.НоваяСтрока(КолСтр);
ТипСпр.УстановитьЗначение(КолСтр,"Представление",Метаданные.Справочник(Ном).Представление());
ТипСпр.УстановитьЗначение(КолСтр,"Идентификатор",Метаданные.Справочник(Ном).Идентификатор);
ТипСпр.УстановитьЗначение(КолСтр,"Номер",Ном);
КонецЕсли;
КонецЦикла;
Структурировать=1;
ВыдГруппу = 1;
СпсТипСпр=СоздатьОбъект("СписокЗначений");
СпсТипПер=СоздатьОбъект("СписокЗначений");
СпсТипСч=СоздатьОбъект("СписокЗначений");
СпсТипВРас=СоздатьОбъект("СписокЗначений");

Попытка
ExcelApp = СоздатьОбъект("Excel.Application");
Исключение
Предупреждение(ОписаниеОшибки()+"; программа Excel не установлена на данном компьютере!");
СтатусВозврата(0);
КонецПопытки;


aleksdbs при выводе на печать нет вариантов (сохранить как)
2. kevlus 28.07.12 10:53 Сейчас в теме
3. mike581 28.07.12 11:07 Сейчас в теме
Что есть "форма выгрузки". Если это обработка, то открываем конфигуратор и исправляем выгружаемый тип цен на нужный
4. aleksdbs 28.07.12 11:10 Сейчас в теме
Вообще-то "торговле и склад" должен быть отчет для вывода на печать каталога товаров - там есть и фильтр по товарам и фильтр по ценам - можно выбирать цену, какая тебе нужна. После вывода отчета делаешь "Файл-сохранить как" - в формате Excel.
6. Orey 28.07.12 18:02 Сейчас в теме
Если цена - это реквизит перебираемого справочника, то там все реквизиты перебираются.
возможно это не весь модуль и где-то отбирается нужный реквизит?
7. kevlus 28.07.12 18:53 Сейчас в теме
8. пользователь 29.07.12 12:23
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот