По теме из базы знаний
- Продажи в динамике изменения цен номенклатуры за период
- Отключение произвольной цены в заказе и реализации. УТ 11, КА 2, ERP 2
- Парсинг цен на маркетплейсах – «Мониторинг цен» – расширение 1С для отслеживания и анализа цен конкурентов на Wildberries, Ozon, Мегамаркет и т.д.
- Выгрузки остатков / цен данных номенклатуры на сайт Битрикс и загрузка Номенклатуры с сайта в 1С
- Онлайн-курс: Психология цены 3.0. Продуктовый портфель и ценообразование ИТ-компании. C 23 января по 27 февраля 2025 г.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
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 при выводе на печать нет вариантов (сохранить как)
Перем ТипСпр;
Перем СпсТипСпр,СпсТипПер,СпсТипСч,СпсТипВРас;
Перем 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 при выводе на печать нет вариантов (сохранить как)
Вообще-то "торговле и склад" должен быть отчет для вывода на печать каталога товаров - там есть и фильтр по товарам и фильтр по ценам - можно выбирать цену, какая тебе нужна. После вывода отчета делаешь "Файл-сохранить как" - в формате Excel.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот