Показано с 1 по 2 из 2
-
11.11.2020, 01:17 #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")
ТаблицаМФ.НоваяКолонка("Пр� �дставление",,,,"Вид фильтра:");
ТаблицаМФ.ВыводитьПиктогр� �ммы("ФлВкл");
// тип вид переменная название
глДобавитьВТаблицуМФ(Табл� �цаМФ,"Справочник","Номенкла тура", "Номенклатура", "По номенклатуре");
глДобавитьВТаблицуМФ(Табл� �цаМФ,"Справочник","Значения Свойств", "Номенклатура", "По свойствам номенклатуры");
ТекСтрокаВТаблице="";
-
11.11.2020, 09:34 #2
- Регистрация
- 29.11.2013
- Адрес
- Берег Волги
- Сообщений
- 2028
- Сказал(а) спасибо
- 652
- Поблагодарили 10251 раз(а) в 2702 сообщениях
Re: Вывод всей номенклатуры в виде прайса.
Воспользуйтесь стандартной внешней обработкой печати справочников REFPRINT.ERT с диска ИТС
https://cloud.mail.ru/public/2eGA/4cG35wCvn
Похожие темы
-
Выгрузка прайса в Excel
от glod в разделе Общие вопросы по 1С - БухгалтерииОтветов: 5Последнее сообщение: 24.05.2018, 12:36 -
Требуются курьеры Водителя по всей РФ.
от lower227 в разделе ПолезностиОтветов: 0Последнее сообщение: 15.03.2018, 13:45 -
После загрузки прайса товары не отображаются в справочнике номенклатура
от Vano9666 в разделе Общие вопросы по 1С - ПредприятиеОтветов: 0Последнее сообщение: 01.09.2014, 13:38 -
3G спецтариф (195р/мес - 6Гб трафа) по всей России
от CheloPuk в разделе Барахолка и услугиОтветов: 1Последнее сообщение: 02.03.2013, 04:17
Социальные закладки