Вывод всей номенклатуры в виде прайса.
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 1 по 2 из 2
  1. #1
    Гость форума

    Регистрация
    01.04.2020
    Сообщений
    2
    Сказал(а) спасибо
    1
    Поблагодарили 1 раз в 1 сообщении

    По умолчанию Вывод всей номенклатуры в виде прайса.

    Доброго вечера.

    Вопрос следующий. Есть база 1С 7.7 Торговля и склад. Для наполнения интернет каталога потребовалось вывести всю номенклатуру и сохранить в эксель. Прайс формирует только те позиции у которых есть цены. А мне нужно вывести номенклатуру и с ценами и без. В программировании силен не очень, метод тыка и поиск решения в интернете ничего не дал. Может кто-нибудь знает, что нужно подправить в обработке price.ert или посоветует другую подходящую обработку.





    Перем ТекСтрокаВТаблице; // текущая строка в таблице значений МФ

    // используются для стандартного механизма кнопок "Обновить" и "Настройка"
    Перем ИсхТабл;
    Перем Обновить;
    Перем Расшифровка;

    Перем ТипЦены;

    //************************************************** ****************************
    // ВыбратьПоФильтру()
    //
    // Параметры:
    // Нет
    //
    // Описание:
    // Открывает обработку отбора элементов по произвольному фильтру
    //
    Процедура ВыбратьПоФильтру()

    Перем ВидЗначенияПодбора;

    ВидЗначенияПодбора=СокрЛП( ТаблицаМФ.Вид);

    Если ПустоеЗначение(ВидЗначени� �Подбора)=1 Тогда
    Возврат;
    КонецЕсли;

    СписокПараметров=СоздатьО� �ъект("СписокЗначений");
    СписокПараметров.Добавить� �начение("", "ИмяВызвавшейФормы");
    СписокПараметров.Добавить� �начение(ТаблицаМФ.Тип, "Тип");
    СписокПараметров.Добавить� �начение(ВидЗначенияПодбор а,"Вид");
    СписокПараметров.Добавить� �начение(СписокЭлементовМФ , "Объекты");
    ТаблицаМФ.ФлВкл=2;
    ОткрытьФорму("Обработка.По� �борОбъектов#",СписокПараме тров);

    КонецПроцедуры // ВыбратьПоФильтру

    //************************************************** ****************************
    // ПерерисовкаНазванийЗаклад ок
    //
    // Параметры:
    // Нет
    //
    // Описание:
    // Добавляет "(!)" в заголовок закладки с множественным фильтром, когда этот фильтр задан
    //
    Функция ПерерисовкаНазванийЗаклад ок()

    Врем = Форма.Закладки.ПолучитьЗна чение(2);
    Форма.Закладки.УстановитьЗ начение(2, Врем,?(глМножественныйФиль� �рЗадан(ТаблицаМФ)=1,"(!) ","")+"Множественный фильтр");

    КонецФункции // ПерерисовкаНазванийЗаклад ок

    //************************************************** ****************************
    // СформироватьСписокПомечен ных()
    //
    // Параметры:
    // Нет
    //
    // Возвращаемое значение:
    // Список значений, состоящий из помеченных значений из списка значений ТипыЦен
    //
    // Описание:
    // Формирует список значений, состоящий только из помеченных значений из списка
    // значений ТипыЦен.
    //
    Функция СформироватьСписокПомечен ных()

    РезСписок = СоздатьОбъект("СписокЗначе ний");
    Для Счетчик = 1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(Счетчик) = 1 Тогда
    РезСписок.ДобавитьЗначени� �(ТипыЦен.ПолучитьЗначение( Счетчик));
    КонецЕсли;
    КонецЦикла;

    Возврат РезСписок;

    КонецФункции // СформироватьСписокПомечен ных()


    //************************************************** ****************************
    // ОбработкаСпискаТиповЦен(П� �метки)
    //
    // Параметры:
    // ВклТипы - список значений, содержащий типы цен, которые нужно пометить.
    //
    // Возвращаемое значение:
    // Нет
    //
    // Описание:
    // Зполняет из справочника ТипыЦен список значений ТипыЦен и устанавливает
    // пометки у тех типов, которые находятся в списке значений ВклТипы.
    //
    Процедура ОбработкаСпискаТиповЦен(В� �лТипы)

    // очистим список
    ТипыЦен.УдалитьВсе();

    // перезаполним список из справочника
    СпрТипыЦен = СоздатьОбъект("Справочник.� �ипыЦен");
    СпрТипыЦен.ВыбратьЭлемент� �();
    Пока СпрТипыЦен.ПолучитьЭлемен� �() = 1 Цикл
    ТипыЦен.ДобавитьЗначение(С прТипыЦен.ТекущийЭлемент()) ;
    КонецЦикла;

    // проставим пометки
    Для Счетчик = 1 По ВклТипы.РазмерСписка() Цикл
    Поз = ТипыЦен.НайтиЗначение(ВклТ ипы.ПолучитьЗначение(Счетч ик));
    Если Поз > 0 Тогда
    ТипыЦен.Пометка(Поз, 1);
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры // ОбработкаСпискаТиповЦен()

    //************************************************** ****************************
    // РасшифровкаОбновить(Обнов� �ть)
    //
    // Параметры:
    // Обновить = 1 - нажата кнопка "Обновить"
    // 2 - нажата кнопка "Настройка"
    //
    // Возвращаемое значение:
    // Расшифровка (список значений)
    //
    // Вызывается из формул элементов диалога:
    // из таблицы, кнопки "Обновить" и "Настройка"
    //
    // Описание:
    // функция для стандартного механизма кнопок ""Обновить" и "Настройка""
    // помещает значение параметра в список Расшифровка и возвращает этот список
    //
    Функция РасшифровкаОбновить(Обнов� �ть)

    Расшифровка.Установить("Об� �овить", Обновить);
    Возврат Расшифровка;

    КонецФункции //РасшифровкаОбновить()

    //************************************************** ****************************
    // Процедура Сформировать(ЗакрытьДиало� �=0)
    //
    // Параметры:
    // ЗакрытьДиалог - флаг того, что после формирования отчета надо закрыть диалог
    //
    // Возвращаемое значение:
    // Нет
    //
    // Вызывается из формул элементов диалога:
    // кнопки "Сформировать" и "ОК"
    //
    // Описание:
    // Запускает печать прайс-листа.
    //
    Процедура Сформировать(ЗакрытьДиало� �=0)

    // хоть одна цена в списке цен должна быть выбрана
    ЕстьПомеченые = 0;
    Для СчетчикЦикла = 1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(СчетчикЦик ла) = 1 Тогда
    ЕстьПомеченые = 1;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если ЕстьПомеченые = 0 Тогда
    Предупреждение("Не выбрано ни одного типа цены", 60);
    Возврат;
    КонецЕсли;

    Если (ТипЗначенияСтр(ИсхТабл) <> "Таблица") ИЛИ (Обновить = 0) Тогда
    ИсхТабл = СоздатьОбъект("Таблица");
    Иначе
    ИсхТабл.Очистить();
    КонецЕсли;

    ИсхТабл.ИсходнаяТаблица( "Таблица" );

    Расшифровка = СоздатьОбъект("СписокЗначе ний");
    Путь = "";
    ИмяФайла = "";
    РасположениеФайла(Путь,Имя Файла);
    ФайлОтчета = Путь + ИмяФайла;
    Расшифровка.Установить("От� �ет", ?(ПустоеЗначение(ФайлОтчет� �) = 1,"ПечатьПрайса", ФайлОтчета));

    // Все настройки помещаем в список
    Расшифровка.Установить("Да� �аОтчета", ДатаОтчета);
    Расшифровка.Установить("Вы� �ТМЦ", ВыбТМЦ);
    Расшифровка.Установить("По� �аличию" , ПоНаличию);
    Расшифровка.Установить("Ви� �Разделителя", ВидРазделителя);
    Расшифровка.Установить("Вы� �Разделитель1", ВыбРазделитель1);
    Расшифровка.Установить("Вы� �Разделитель2", ВыбРазделитель2);
    Расшифровка.Установить("Вы� �Разделитель3", ВыбРазделитель3);
    Расшифровка.Установить("Ск� �ад", Склад);
    Расшифровка.Установить("Ва� �иантВключенияВпрайс", ВариантВключенияВпрайс);

    Расшифровка.Установить("Ти� �ыЦен", СформироватьСписокПомечен ных());

    глПриСменеСтрокиТаблицыМФ (1,ТекСтрокаВТаблице,Контек ст); // записываем изменения если они были

    // Запомним МФ только если он задан
    Если глМножественныйФильтрЗада н(ТаблицаМФ) = 1 Тогда
    Расшифровка.Установить("Та� �лицаМФ", ТаблицаМФ);
    КонецЕсли;

    // Заголовок отчета

    ИсхТабл.ВывестиСекцию("Кно� �ки");
    НачПовтСекц = ИсхТабл.ВысотаСекции("Кноп� �и");

    ОсновнаяФирма = глЗначениеПоУмолчанию("Осн овнаяФирма");

    НаименованиеФирмы = СокрЛП(ОсновнаяФирма.ЮрЛиц о.ПолнНаименование);
    ИсхТабл.ВывестиСекцию("Заг� �ловок");
    НачПовтСекц = НачПовтСекц + ИсхТабл.ВысотаСекции("Заго� �овок");

    ДопЗаголовок = "";

    Если ПустоеЗначение(ОсновнаяФи� �ма.ЮрЛицо.ЮрАдрес) = 0 Тогда
    ДопЗаголовок = "Адрес: "+ СокрЛП(ОсновнаяФирма.ЮрЛиц о.ЮрАдрес);
    КонецЕсли;

    Если ПустоеЗначение(ОсновнаяФи� �ма.ЮрЛицо.Телефоны) = 0 Тогда
    ДопЗаголовок = ДопЗаголовок + РазделительСтрок + "Телефоны: "+ СокрЛП(ОсновнаяФирма.ЮрЛиц о.Телефоны);
    КонецЕсли;

    Если ПустоеЗначение(ОсновнаяФи� �ма.ЭлПочта) = 0 Тогда
    ДопЗаголовок = ДопЗаголовок + РазделительСтрок + "E-mail: " + СокрЛП(ОсновнаяФирма.ЭлПоч та);
    КонецЕсли;

    Если ПустоеЗначение(ДопЗаголов� �к) = 0 Тогда
    ИсхТабл.ВывестиСекцию("Доп� �аголовок");
    НачПовтСекц = НачПовтСекц + ИсхТабл.ВысотаСекции("ДопЗ� �головок");
    КонецЕсли;

    ИсхТабл.ВывестиСекцию("Дат� �Прайса");
    НачПовтСекц = НачПовтСекц + ИсхТабл.ВысотаСекции("Дата� �райса");

    ИсхТабл.ВывестиСекцию("Шап� �аТаблицы|Название");
    КонПовтСекции = НачПовтСекц + ИсхТабл.ВысотаСекции("Шапк� �Таблицы");
    ИсхТабл.ПовторятьПриПечат� �Строки(НачПовтСекц + 1, КонПовтСекции);

    // Присоединим заголовку названия цен
    Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(Счетчик) = 1 Тогда
    ТекТипЦены = ТипыЦен.ПолучитьЗначение(С четчик);
    ШапкаЦены = СокрЛП(ТекТипЦены.Наименов ание);

    Если ТекТипЦены.Рассчитывается = 0 Тогда
    ОсновнойТип = ТекТипЦены;
    Иначе
    ОсновнойТип = ТекТипЦены.БазовыйТипЦен;
    КонецЕсли;

    Если ОсновнойТип.ЦенаВклНДС = ОсновнойТип.ЦенаВклНП Тогда
    Если ОсновнойТип.ЦенаВклНДС = 1 Тогда
    НалогиЦены = "(включая НДС и НП)"
    Иначе
    НалогиЦены = "(без учета НДС и НП)";
    КонецЕсли;
    Иначе
    Если ОсновнойТип.ЦенаВклНДС = 1 Тогда
    НалогиЦены = "(включая НДС," + РазделительСтрок;
    Иначе
    НалогиЦены = "(без учета НДС," + РазделительСтрок;
    КонецЕсли;

    Если ОсновнойТип.ЦенаВклНП = 1 Тогда
    НалогиЦены = НалогиЦены + " включая НП)";
    Иначе
    НалогиЦены = НалогиЦены + " без учета НП)";
    КонецЕсли;

    КонецЕсли;

    ИсхТабл.ПрисоединитьСекци� �("ШапкаТаблицы|Цена");
    КонецЕсли;
    КонецЦикла;

    // текст запроса по выбранным ценам
    ТекстЗапроса = "//{{ЗАПРОС(ОтборЦен)
    |Период с ДатаОтчета по ДатаОтчета;
    |Номенклатура = Справочник.Цены.Владелец;
    |Тип = Справочник.Цены.ТипЦен;
    |Цена = Справочник.Цены.Цена;
    |Единица = Справочник.Цены.Единица;
    |Валюта = Справочник.Цены.Валюта;
    |Функция ЦенаСумма = Сумма(Цена);
    |Группировка Номенклатура Упорядочить по Номенклатура.Код;
    |Группировка Тип;
    |"//}}ЗАПРОС
    ;

    Если ПоНаличию = 1 Тогда

    ТекстЗапросаОстатков = "
    |Номенклатура = Регистр.ОстаткиТМЦ.Номенкл атура;
    |Количество = Регистр.ОстаткиТМЦ.Количес тво;
    |
    |Функция КоличествоКонОст = КонОст(Количество);
    |
    |Группировка Номенклатура без групп;";

    Если ВидРазделителя = 2 Тогда
    Если ПустоеЗначение(ВыбРаздели� �ель1) = 0 Тогда
    // нужен фильтр по фирме
    ТекстЗапросаОстатков = "Фирма = Регистр.ОстаткиТМЦ.Фирма;" +
    ТекстЗапросаОстатков +
    "Условие(Фирма = ВыбРазделитель1);";
    КонецЕсли;
    ИначеЕсли ВидРазделителя = 3 Тогда
    Если ПустоеЗначение(ВыбРаздели� �ель2) = 0 Тогда
    // нужен фильтр по ЮрЛицу фирмы
    ТекстЗапросаОстатков = "ЮрЛицо = Регистр.ОстаткиТМЦ.Фирма.Ю� �Лицо;" +
    ТекстЗапросаОстатков +
    "Условие(ЮрЛицо = ВыбРазделитель2);";
    КонецЕсли;
    ИначеЕсли ВидРазделителя = 4 Тогда
    Если ПустоеЗначение(ВыбРаздели� �ель3) = 0 Тогда
    // нужен фильтр по УпрАналитике фирмы
    ТекстЗапросаОстатков = "УпрАналитика = Регистр.ОстаткиТМЦ.Фирма.У� �рАналитика;" +
    ТекстЗапросаОстатков +
    "Условие(УпрАналитика = ВыбРазделитель3);";
    КонецЕсли;
    КонецЕсли;

    Если ПустоеЗначение(Склад) = 0 Тогда
    // нужен фильтр по складу
    ТекстЗапросаОстатков = "Скл = Регистр.ОстаткиТМЦ.Склад;" +
    ТекстЗапросаОстатков +
    "Условие(Скл = Склад);";
    КонецЕсли;

    ЗапросПоОстаткам = СоздатьОбъект("Запрос");
    Если ЗапросПоОстаткам.Выполнит� �(ТекстЗапросаОстатков) = 0 Тогда
    Возврат;
    КонецЕсли;

    СписокНоменклатуры = СоздатьОбъект("СписокЗначе ний");
    Пока ЗапросПоОстаткам.Группиро� �ка(1) = 1 Цикл
    Если ЗапросПоОстаткам.Количест� �оКонОст > 0 Тогда
    СписокНоменклатуры.Добави� �ьЗначение(ЗапросПоОстатка м.Номенклатура);
    КонецЕсли;
    КонецЦикла;

    // Добавим услуги и работы в список номенклатуры
    ВидыУслуг = СоздатьОбъект("СписокЗначе ний");
    ВидыУслуг.ДобавитьЗначени� �(Перечисление.ВидыНоменкл� �туры.Услуга);
    ВидыУслуг.ДобавитьЗначени� �(Перечисление.ВидыНоменкл� �туры.Работа);

    ТекстЗапросаУслуг = "
    |Номенклатура = Справочник.Цены.Владелец;
    |Группировка Номенклатура без групп;
    |Условие (Номенклатура.ВидНоменклат уры в ВидыУслуг);";

    ЗапросПоУслугам = СоздатьОбъект("Запрос");
    Если ЗапросПоУслугам.Выполнить( ТекстЗапросаУслуг) = 0 Тогда
    Возврат;
    КонецЕсли;

    Пока ЗапросПоУслугам.Группиров� �а(1) = 1 Цикл
    СписокНоменклатуры.Добави� �ьЗначение(ЗапросПоУслугам .Номенклатура);
    КонецЦикла;

    Если СписокНоменклатуры.Размер� �писка() = 0 Тогда
    Предупреждение("Заданным условиям фильтра не удовлетворяет ни одна позиция номенклатуры.",60);
    Возврат;
    КонецЕсли;

    ТекстЗапроса = ТекстЗапроса + "Условие(Номенклатура в СписокНоменклатуры);"

    КонецЕсли;

    // Добавим отбор по флагу включения в прайс
    Если ВариантВключенияВпрайс > 1 Тогда
    Если ВариантВключенияВпрайс = 2 Тогда
    ТекстЗапроса = ТекстЗапроса + "Условие ( Номенклатура.НеВключатьВп� �айс = 0);";
    Иначе
    ТекстЗапроса = ТекстЗапроса + "Условие ( Номенклатура.НеВключатьВп� �айс = 1);";
    КонецЕсли;
    КонецЕсли;

    НетОш = 1; // нет ошибок при наложении фильтров
    НетОш = НетОш * глФильтрПоПеременнойЗапро са(ТаблицаМФ, "Номенклатура", ВыбТМЦ, "ВыбТМЦ", ТекстЗапроса, , "СвойстваНоменклатуры");

    Если НетОш = 0 Тогда
    Возврат;
    КонецЕсли;

    Запрос = СоздатьОбъект("Запрос");
    Если Запрос.Выполнить(ТекстЗапр оса) = 0 Тогда
    Возврат;
    КонецЕсли;

    ТаблицаЦен = СоздатьОбъект("ТаблицаЗнач ений");
    ТаблицаЦен.НоваяКолонка("Т� �п");
    ТаблицаЦен.НоваяКолонка("Ц� �на");
    ТаблицаЦен.НоваяКолонка("Е� �иница");
    ТаблицаЦен.НоваяКолонка("В� �люта");

    ТекущаяГруппа= ПолучитьПустоеЗначение("Сп равочник.Номенклатура");

    Пока Запрос.Группировка("Номенк� �атура") = 1 Цикл
    ТекЭлем = Запрос.Номенклатура;
    Уровень = ТекЭлем.Уровень();
    Если Уровень > 4 Тогда
    Уровень = 4;
    КонецЕсли;


    Если ТекЭлем.ЭтоГруппа() = 0 Тогда

    ТаблицаЦен.УдалитьСтроки();

    Пока Запрос.Группировка("Тип") = 1 Цикл
    Если Запрос.ЦенаСумма = 0 Тогда
    Продолжить;
    КонецЕсли;

    ТаблицаЦен.НоваяСтрока();

    ТаблицаЦен.Тип = Запрос.Тип;
    ТаблицаЦен.Цена = Запрос.ЦенаСумма;
    ТаблицаЦен.Единица = Запрос.Единица;
    ТаблицаЦен.Валюта = Запрос.Валюта;
    КонецЦикла;

    Если ТаблицаЦен.КоличествоСтро� �() = 0 Тогда
    Продолжить;
    КонецЕсли;

    // Отделяем товары группы от товаров ее подгрупп
    Если ПустоеЗначение(ТекущаяГру� �па) = 0 Тогда
    Если ТекЭлем.ПринадлежитГруппе( ТекущаяГруппа)= 0 Тогда
    ТекущаяГруппа = ТекЭлем.Родитель;
    // В качестве разделителя выводим название той-же группы более мелким уровнем
    Наименование = ТекущаяГруппа.Наименовани� �;
    Код = ТекущаяГруппа.Код;
    ИсхТабл.ВывестиСекцию("Гру� �па" + Уровень + "|Название");
    Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(Счетчик) = 1 Тогда
    ИсхТабл.ПрисоединитьСекци� �("Группа" + Уровень + "|Цена");
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;

    Наименование = ТекЭлем.ПолнНаименование + ?(Константа.ПоказыватьАрти� �ул = 0, " " + СокрЛП(ТекЭлем.Артикул), "");
    Код=ТекЭлем.Код;

    ПечШтрихкод=ТекЭлем.Базова яЕдиница.Штрихкод;
    ИсхТабл.ВывестиСекцию("Ном� �нклатура|Название");

    Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(Счетчик) = 1 Тогда
    ТекТип = ТипыЦен.ПолучитьЗначение(С четчик);

    Если ТекТип.Рассчитывается = 1 Тогда
    ИспТип = ТекТип.БазовыйТипЦен;
    Иначе
    ИспТип = ТекТип;
    КонецЕсли;
    // поищем тип в таблице
    Поз = 0;
    Если ТаблицаЦен.НайтиЗначение(И спТип, Поз, "Тип") = 1 Тогда
    ТаблицаЦен.ПолучитьСтроку� �оНомеру(Поз);

    Цена = ТаблицаЦен.Цена;
    Единица = ТаблицаЦен.Единица;

    Если ТекТип.Рассчитывается = 1 Тогда
    // нужно пересчитать цену
    Цена = глПересчет(Цена, ТаблицаЦен.Валюта, ДатаОтчета, ТекТип.Валюта, ДатаОтчета);
    Цена = глОкруглить(Цена * (100 + ТекТип.Процент) / 100, ТекТип.ПорядокОкругления);
    ПечЦена = глФРМ(Цена, ТекТип.Валюта);
    Иначе
    ПечЦена = глФРМ(Цена, ТаблицаЦен.Валюта);
    КонецЕсли;

    ПечЕдиница = Единица;
    Иначе
    ПечЦена = "";
    КонецЕсли;

    ИсхТабл.ПрисоединитьСекци� �("Номенклатура|Цена");
    КонецЕсли;
    КонецЦикла;
    Иначе // ЭтоГруппа() = 1

    // Запоминаем текущую группу
    ТекущаяГруппа = ТекЭлем;

    Наименование = ТекЭлем.Наименование;
    Код = ТекЭлем.Код;
    ИсхТабл.ВывестиСекцию("Гру� �па" + Уровень + "|Название");

    Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(Счетчик) = 1 Тогда
    ИсхТабл.ПрисоединитьСекци� �("Группа" + Уровень + "|Цена");
    КонецЕсли;
    КонецЦикла;
    ИсхТабл.ПрисоединитьСекци� �("Группа" + Уровень + "|ПравГраница");

    КонецЕсли; // ТекЭлем.ЭтоГруппа() = 0

    КонецЦикла;

    // подвал отчета
    ИсхТабл.ВывестиСекцию("Под� �ал|Название");
    Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл
    Если ТипыЦен.Пометка(Счетчик) = 1 Тогда
    ИсхТабл.ПрисоединитьСекци� �("Подвал|Цена");
    КонецЕсли;
    КонецЦикла;

    // покажем таблицу
    ИсхТабл.ОбластьПечати(3);
    ИсхТабл.Опции(0,0,0,0,"ПечатьП� �айса", "ПечатьПрайса");
    ИсхТабл.ТолькоПросмотр(1);
    ИсхТабл.Показать("Печать прайс-листа","");

    Если (Обновить = 2) или (ЗакрытьДиалог=1) Тогда
    СтрокаДействийФормы = "#Закрыть";
    КонецЕсли;

    КонецПроцедуры // Сформировать()

    //************************************************** ****************************
    // Сдвиг(Направление)
    //
    // Параметры:
    // Нет
    //
    // Возвращаемое значение:
    // Нет
    //
    // Вызывается из формул диалога:
    // по кнопкам со стрелочками "вверх" или "Вниз"
    //
    // Описание:
    // Сдвигает текущую строку списка цен в заданном направлении.
    //
    Процедура Сдвиг(Направление)
    ТекСтрока = ТипыЦен.ТекущаяСтрока();

    Если ТекСтрока > 0 Тогда
    ТипыЦен.СдвинутьЗначение(Н аправление, ТекСтрока);
    КонецЕсли;

    КонецПроцедуры // Сдвиг()

    //************************************************** ****************************
    // УправлениеДиалогом()
    //
    // Параметры:
    // Нет
    //
    // Возвращаемое значение:
    // Нет
    //
    // Вызывается из формул диалога:
    // Флаг "ПоНаличию", переключатель "ВидРазделителя"
    //
    // Описание:
    // Управление видимостью и доступностью элементов форм
    //
    Процедура УправлениеДиалогом()

    ТекСтрока = Форма.Закладки.ТекущаяСтро ка();
    Если ТекСтрока = 1 Тогда
    Если ПустоеЗначение(ВидРаздели� �еля) = 1 Тогда
    ВидРазделителя =1;
    КонецЕсли;
    Форма.ИспользоватьСлой(Фор ма.Закладки.ПолучитьЗначен ие(ТекСтрока) +
    ?(ВидРазделителя > 1, ",Разделитель"+СокрЛП(ВидРа� �делителя - 1),""));
    Если ПоНаличию = 0 Тогда
    // все связанное с фирмами недоступно
    Форма.ВидРазделителя. Доступность(0);
    Форма.ВыбРазделитель1.Дост� �пность(0);
    Форма.ВидРазделителя1.Дост� �пность(0);
    Форма.кнХРазделитель1.Дост� �пность(0);
    Форма.ВыбРазделитель2.Дост� �пность(0);
    Форма.ВидРазделителя2.Дост� �пность(0);
    Форма.кнХРазделитель2.Дост� �пность(0);
    Форма.ВыбРазделитель3.Дост� �пность(0);
    Форма.ВидРазделителя3.Дост� �пность(0);
    Форма.кнХРазделитель3.Дост� �пность(0);

    Форма.Склад.Доступность(0);
    Форма.ТекстСклад.Доступнос ть(0);
    Форма.кнХСклад.Доступность (0);
    Иначе
    Форма.ВидРазделителя. Доступность(1);
    Форма.ВыбРазделитель1.Дост� �пность(1);
    Форма.ВидРазделителя1.Дост� �пность(1);
    Форма.кнХРазделитель1.Дост� �пность(1);
    Форма.ВыбРазделитель2.Дост� �пность(1);
    Форма.ВидРазделителя2.Дост� �пность(1);
    Форма.кнХРазделитель2.Дост� �пность(1);
    Форма.ВыбРазделитель3.Дост� �пность(1);
    Форма.ВидРазделителя3.Дост� �пность(1);
    Форма.кнХРазделитель3.Дост� �пность(1);

    Форма.Склад.Доступность(1);
    Форма.ТекстСклад.Доступнос ть(1);
    Форма.кнХСклад.Доступность (1);
    КонецЕсли;

    Иначе
    Форма.ИспользоватьСлой(Фор ма.Закладки.ПолучитьЗначен ие(ТекСтрока));
    КонецЕсли;

    КонецПроцедуры // УправлениеДиалогом()

    //************************************************** ****************************
    // Предопределенная процедура
    //
    Процедура ВводНового()

    УправлениеДиалогом();
    ПерерисовкаНазванийЗаклад ок();
    ТаблицаМФ.ВыводитьПиктогр� �ммы("ФлВкл");

    // восстановим из настройки пометки у типов цен
    ОбработкаСпискаТиповЦен(С� �ормироватьСписокПомеченн� �х());

    КонецПроцедуры // ВводНового()

    //************************************************** ****************************
    // Предопределенная процедура
    //
    Процедура ПриОткрытии(ФлагЧтенияНас� �ройки)
    Перем СписокПомеченных;

    Если глФлагРасшифровки = 1 Тогда
    Обновить = глОбновить;

    // Восстанавливаем настройки из списка
    ДатаОтчета = глРасшифровка.Получить("Да� �аОтчета");
    ВыбТМЦ = глРасшифровка.Получить("Вы� �ТМЦ");
    ПоНаличию = глРасшифровка.Получить("По� �аличию");
    ВидРазделителя = глРасшифровка.Получить("Ви� �Разделителя");
    ВыбРазделитель1 = глРасшифровка.Получить("Вы� �Разделитель1");
    ВыбРазделитель2 = глРасшифровка.Получить("Вы� �Разделитель2");
    ВыбРазделитель3 = глРасшифровка.Получить("Вы� �Разделитель3");
    Склад = глРасшифровка.Получить("Ск� �ад");
    ВариантВключенияВпрайс = глРасшифровка.Получить("Ва� �иантВключенияВпрайс");

    ВремТипыЦен = глРасшифровка.Получить("Ти� �ыЦен");
    ОбработкаСпискаТиповЦен(В� �емТипыЦен);

    Если ТипЗначенияСтр(глРасшифро� �ка.Получить("ТаблицаМФ"))="Т� �блицаЗначений" Тогда
    ТаблицаМФ.Загрузить(глРасш ифровка.Получить("ТаблицаМ� �"));
    КонецЕсли;

    Если Обновить <> 0 Тогда
    ИсхТабл = глТаблица;
    КонецЕсли;

    Если Обновить <> 2 Тогда
    Сформировать();
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    Иначе
    Обновить = 0;

    ВремТипыЦен = СоздатьОбъект("СписокЗначе ний");
    Если ФлагЧтенияНастройки = 1 Тогда
    // формируем список, содержащий типы цен с пометками
    ВремТипыЦен = СформироватьСписокПомечен ных();
    КонецЕсли;

    Если ПустоеЗначение(ДатаОтчета) = 1 Тогда
    ДатаОтчета = РабочаяДата();
    КонецЕсли;

    Если ПустоеЗначение(ВариантВкл� �ченияВпрайс) = 1 Тогда
    ВариантВключенияВпрайс = 1;
    КонецЕсли;

    КонецЕсли;

    // установка видимости колонок ТЗ множественного фильтра
    ТаблицаМФ.ВидимостьКолонк� �("Тип",0);
    ТаблицаМФ.ВидимостьКолонк� �("Вид",0);
    ТаблицаМФ.ВидимостьКолонк� �("СписокЭлементов",0);
    ТаблицаМФ.ВидимостьКолонк� �("ТипМФ",0);
    ТаблицаМФ.ВидимостьКолонк� �("ИмяПеременной",0);
    ТаблицаМФ.ВыводитьПиктогр� �ммы("ФлВкл");

    УправлениеДиалогом();
    ПерерисовкаНазванийЗаклад ок();


    КонецПроцедуры // ПриОткрытии()

    //************************************************** ****************************
    // Предопределенная процедура
    //
    Процедура ПриВыбореЗакладки(НомерЗа� �ладки,ЗначениеЗакладки)

    УправлениеДиалогом();
    ПерерисовкаНазванийЗаклад ок();

    КонецПроцедуры // ПриВыбореЗнакладки()

    //************************************************** ****************************
    // Предопределенная процедура
    //
    Процедура ОбработкаПодбора(Значение)

    Если (СписокЭлементовМФ.НайтиЗн ачение(Значение)=0) Тогда
    Представление=""+Значение;
    Если ТипЗначенияСтр(Значение)="С правочник" Тогда
    Если СокрЛП(Метаданные.Справочн ик(Значение.Вид()).Владелец) <> "Метаданные" Тогда
    Представление=Представлен� �е+" ("+Значение.Владелец+")";
    КонецЕсли;
    КонецЕсли;
    СписокЭлементовМФ.Добавит� �Значение(Значение,Предста� �ление);
    ТаблицаМФ.ФлВкл=2;
    КонецЕсли;

    КонецПроцедуры // ОбработкаПодбора

    //************************************************** ****************************

    // добавим закладки
    Форма.ИспользоватьЗакладк� �(1);
    Форма.Закладки.ДобавитьЗна чение("Общий,Основной,Кнопк и","Основная");
    Форма.Закладки.ДобавитьЗна чение("Общий,МФ,Кнопки","Мно� �ественный фильтр");
    Форма.Закладки.ТекущаяСтро ка(1);

    // инициализация переменных множественного фильтра
    ТипМФ.УдалитьВсе();
    ТипМФ.ДобавитьЗначение("од� �о из");
    ТипМФ.ДобавитьЗначение("вс� � кроме");

    ТаблицаМФ.УдалитьСтроки();
    Пока ТаблицаМФ.КоличествоКолон� �к()>0 Цикл
    ТаблицаМФ.УдалитьКолонку(1) ;
    КонецЦикла;

    ТаблицаМФ.НоваяКолонка("Ти� �");
    ТаблицаМФ.НоваяКолонка("Ви� �");
    ТаблицаМФ.НоваяКолонка("Им� �Переменной");
    ТаблицаМФ.НоваяКолонка("Сп� �сокЭлементов"); // список элементов, по которым производим фильтрацию
    ТаблицаМФ.НоваяКолонка("Ти� �МФ"); // текущая строка списка ТипМФ
    ТаблицаМФ.НоваяКолонка("Фл� �кл","Число",1,,"Вкл",5,,); // фильтр включен ("1" или "0")
    ТаблицаМФ.НоваяКолонка("Пр� �дставление",,,,"Вид фильтра:");
    ТаблицаМФ.ВыводитьПиктогр� �ммы("ФлВкл");

    // тип вид переменная название
    глДобавитьВТаблицуМФ(Табл� �цаМФ,"Справочник","Номенкла тура", "Номенклатура", "По номенклатуре");
    глДобавитьВТаблицуМФ(Табл� �цаМФ,"Справочник","Значения Свойств", "Номенклатура", "По свойствам номенклатуры");

    ТекСтрокаВТаблице="";

  2. #2
    Гордость форума PRO +

    Регистрация
    29.11.2013
    Адрес
    Берег Волги
    Сообщений
    2024
    Сказал(а) спасибо
    650
    Поблагодарили 10237 раз(а) в 2700 сообщениях

    По умолчанию Re: Вывод всей номенклатуры в виде прайса.

    Цитата Сообщение от diadora83 Посмотреть сообщение
    Доброго вечера.

    Вопрос следующий. Есть база 1С 7.7 Торговля и склад. Для наполнения интернет каталога потребовалось вывести всю номенклатуру и сохранить в эксель. Прайс формирует только те позиции у которых есть цены. А мне нужно вывести номенклатуру и с ценами и без. В программировании силен не очень, метод тыка и поиск решения в интернете ничего не дал. Может кто-нибудь знает, что нужно подправить в обработке price.ert или посоветует другую подходящую обработку.
    Воспользуйтесь стандартной внешней обработкой печати справочников REFPRINT.ERT с диска ИТС
    https://cloud.mail.ru/public/2eGA/4cG35wCvn

Похожие темы

  1. Выгрузка прайса в Excel
    от glod в разделе Общие вопросы по 1С - Бухгалтерии
    Ответов: 5
    Последнее сообщение: 24.05.2018, 12:36
  2. Требуются курьеры Водителя по всей РФ.
    от lower227 в разделе Полезности
    Ответов: 0
    Последнее сообщение: 15.03.2018, 13:45
  3. После загрузки прайса товары не отображаются в справочнике номенклатура
    от Vano9666 в разделе Общие вопросы по 1С - Предприятие
    Ответов: 0
    Последнее сообщение: 01.09.2014, 13:38
  4. 3G спецтариф (195р/мес - 6Гб трафа) по всей России
    от CheloPuk в разделе Барахолка и услуги
    Ответов: 1
    Последнее сообщение: 02.03.2013, 04:17

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •