MAGNet
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Перем ТекСтрокаВТаблице; // текущая строка в таблице значений МФ // используются для стандартного механизма кнопок "Обновить" и "Настройка" Перем ИсхТабл; Перем Обновить; Перем Расшифровка; Перем ТипЦены; //****************************************************************************** // ВыбратьПоФильтру() // // Параметры: // Нет // // Описание: // Открывает обработку отбора элементов по произвольному фильтру // Процедура ВыбратьПоФильтру() Перем ВидЗначенияПодбора; ВидЗначенияПодбора=СокрЛП(ТаблицаМФ.Вид); Если ПустоеЗначение(ВидЗначенияПодбора)=1 Тогда Возврат; КонецЕсли; СписокПараметров=СоздатьОбъект("СписокЗначений"); СписокПараметров.ДобавитьЗначение("", "ИмяВызвавшейФормы"); СписокПараметров.ДобавитьЗначение(ТаблицаМФ.Тип, "Тип"); СписокПараметров.ДобавитьЗначение(ВидЗначенияПодбора,"Вид"); СписокПараметров.ДобавитьЗначение(СписокЭлементовМФ, "Объекты"); ТаблицаМФ.ФлВкл=2; ОткрытьФорму("Обработка.ПодборОбъектов#",СписокПараметров); КонецПроцедуры // ВыбратьПоФильтру //****************************************************************************** // ПерерисовкаНазванийЗакладок // // Параметры: // Нет // // Описание: // Добавляет "(!)" в заголовок закладки с множественным фильтром, когда этот фильтр задан // Функция ПерерисовкаНазванийЗакладок() Врем = Форма.Закладки.ПолучитьЗначение(2); Форма.Закладки.УстановитьЗначение(2, Врем,?(глМножественныйФильтрЗадан(ТаблицаМФ)=1,"(!) ","")+"Множественный фильтр"); КонецФункции // ПерерисовкаНазванийЗакладок //****************************************************************************** // СформироватьСписокПомеченных() // // Параметры: // Нет // // Возвращаемое значение: // Список значений, состоящий из помеченных значений из списка значений ТипыЦен // // Описание: // Формирует список значений, состоящий только из помеченных значений из списка // значений ТипыЦен. // Функция СформироватьСписокПомеченных() РезСписок = СоздатьОбъект("СписокЗначений"); Для Счетчик = 1 По ТипыЦен.РазмерСписка() Цикл Если ТипыЦен.Пометка(Счетчик) = 1 Тогда РезСписок.ДобавитьЗначение(ТипыЦен.ПолучитьЗначение(Счетчик)); КонецЕсли; КонецЦикла; Возврат РезСписок; КонецФункции // СформироватьСписокПомеченных() //****************************************************************************** // ОбработкаСпискаТиповЦен(Пометки) // // Параметры: // ВклТипы - список значений, содержащий типы цен, которые нужно пометить. // // Возвращаемое значение: // Нет // // Описание: // Зполняет из справочника ТипыЦен список значений ТипыЦен и устанавливает // пометки у тех типов, которые находятся в списке значений ВклТипы. // Процедура ОбработкаСпискаТиповЦен(ВклТипы) // очистим список ТипыЦен.УдалитьВсе(); // перезаполним список из справочника СпрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен"); СпрТипыЦен.ВыбратьЭлементы(); Пока СпрТипыЦен.ПолучитьЭлемент() = 1 Цикл ТипыЦен.ДобавитьЗначение(СпрТипыЦен.ТекущийЭлемент()); КонецЦикла; // проставим пометки Для Счетчик = 1 По ВклТипы.РазмерСписка() Цикл Поз = ТипыЦен.НайтиЗначение(ВклТипы.ПолучитьЗначение(Счетчик)); Если Поз > 0 Тогда ТипыЦен.Пометка(Поз, 1); КонецЕсли; КонецЦикла; КонецПроцедуры // ОбработкаСпискаТиповЦен() //****************************************************************************** // РасшифровкаОбновить(Обновить) // // Параметры: // Обновить = 1 - нажата кнопка "Обновить" // 2 - нажата кнопка "Настройка" // // Возвращаемое значение: // Расшифровка (список значений) // // Вызывается из формул элементов диалога: // из таблицы, кнопки "Обновить" и "Настройка" // // Описание: // функция для стандартного механизма кнопок ""Обновить" и "Настройка"" // помещает значение параметра в список Расшифровка и возвращает этот список // Функция РасшифровкаОбновить(Обновить) Расшифровка.Установить("Обновить", Обновить); Возврат Расшифровка; КонецФункции //РасшифровкаОбновить() //чиа 13062017 Процедура ВыбратьФайл() Каталог = ""; Если ФС.ВыбратьФайл(0,ВыбранныйФайл,Каталог, "Выберите Файл", "Excel (*.xls)|*.xls", "xls") = 1 Тогда ВыбранныйФайл = Каталог + ВыбранныйФайл; //"\\Sr-hyperv-kz2\обмен на неделю\Гриценко\cost.xls" КонецЕсли; КонецПроцедуры //ВыбратьФайл загрузка // чиа 13062017 оконч //****************************************************************************** // Процедура Сформировать(ЗакрытьДиалог=0) // // Параметры: // ЗакрытьДиалог - флаг того, что после формирования отчета надо закрыть диалог // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // кнопки "Сформировать" и "ОК" // // Описание: // Запускает печать прайс-листа. // Процедура Сформировать(ЗакрытьДиалог=0) сообщить("Начало выгрузки: " + ТекущееВремя()); //чиа 31052017 // хоть одна цена в списке цен должна быть выбрана ЕстьПомеченые = 0; Для СчетчикЦикла = 1 По ТипыЦен.РазмерСписка() Цикл Если ТипыЦен.Пометка(СчетчикЦикла) = 1 Тогда ЕстьПомеченые = 1; Прервать; КонецЕсли; КонецЦикла; Если ЕстьПомеченые = 0 Тогда Предупреждение("Не выбрано ни одного типа цены", 60); Возврат; КонецЕсли; Если (ТипЗначенияСтр(ИсхТабл) <> "Таблица") ИЛИ (Обновить = 0) Тогда ИсхТабл = СоздатьОбъект("Таблица"); Иначе ИсхТабл.Очистить(); КонецЕсли; ИсхТабл.ИсходнаяТаблица( "Таблица" ); Расшифровка = СоздатьОбъект("СписокЗначений"); Путь = ""; ИмяФайла = ""; РасположениеФайла(Путь,ИмяФайла); ФайлОтчета = Путь + ИмяФайла; Расшифровка.Установить("Отчет", ?(ПустоеЗначение(ФайлОтчета) = 1,"ПечатьПрайса", ФайлОтчета)); // Все настройки помещаем в список Расшифровка.Установить("ДатаОтчета", ДатаОтчета); Расшифровка.Установить("ВыбТМЦ", ВыбТМЦ); Расшифровка.Установить("ПоНаличию" , ПоНаличию); Расшифровка.Установить("ВидРазделителя", ВидРазделителя); Расшифровка.Установить("ВыбРазделитель1", ВыбРазделитель1); Расшифровка.Установить("ВыбРазделитель2", ВыбРазделитель2); Расшифровка.Установить("ВыбРазделитель3", ВыбРазделитель3); Расшифровка.Установить("Склад", Склад); Расшифровка.Установить("ВариантВключенияВпрайс", ВариантВключенияВпрайс); Расшифровка.Установить("ТипыЦен", СформироватьСписокПомеченных()); глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были // Запомним МФ только если он задан Если глМножественныйФильтрЗадан(ТаблицаМФ) = 1 Тогда Расшифровка.Установить("ТаблицаМФ", ТаблицаМФ); КонецЕсли; // Заголовок отчета //30032017 чиа для сайта не надо заголовки ***** ////ИсхТабл.ВывестиСекцию("Кнопки"); НачПовтСекц = ИсхТабл.ВысотаСекции("Кнопки"); //// ////ОсновнаяФирма = глЗначениеПоУмолчанию("ОсновнаяФирма"); //// ////НаименованиеФирмы = СокрЛП(ОсновнаяФирма.ЮрЛицо.ПолнНаименование); ////ИсхТабл.ВывестиСекцию("Заголовок"); ////НачПовтСекц = НачПовтСекц + ИсхТабл.ВысотаСекции("Заголовок"); //// ////ДопЗаголовок = ""; //// ////Если ПустоеЗначение(ОсновнаяФирма.ЮрЛицо.ЮрАдрес) = 0 Тогда //// ДопЗаголовок = "Адрес: "+ СокрЛП(ОсновнаяФирма.ЮрЛицо.ЮрАдрес); ////КонецЕсли; //// ////Если ПустоеЗначение(ОсновнаяФирма.ЮрЛицо.Телефоны) = 0 Тогда //// ДопЗаголовок = ДопЗаголовок + РазделительСтрок + "Телефоны: "+ СокрЛП(ОсновнаяФирма.ЮрЛицо.Телефоны); ////КонецЕсли; //// ////Если ПустоеЗначение(ОсновнаяФирма.ЭлПочта) = 0 Тогда //// ДопЗаголовок = ДопЗаголовок + РазделительСтрок + "E-mail: " + СокрЛП(ОсновнаяФирма.ЭлПочта); ////КонецЕсли; //// ////Если ПустоеЗначение(ДопЗаголовок) = 0 Тогда //// ИсхТабл.ВывестиСекцию("ДопЗаголовок"); //// НачПовтСекц = НачПовтСекц + ИсхТабл.ВысотаСекции("ДопЗаголовок"); ////КонецЕсли; //// ////ИсхТабл.ВывестиСекцию("ДатаПрайса"); ////НачПовтСекц = НачПовтСекц + ИсхТабл.ВысотаСекции("ДатаПрайса"); //30032017 чиа для сайта не надо заголовки ***** ИсхТабл.ВывестиСекцию("ШапкаТаблицы|Название"); КонПовтСекции = НачПовтСекц + ИсхТабл.ВысотаСекции("ШапкаТаблицы"); ИсхТабл.ПовторятьПриПечатиСтроки(НачПовтСекц + 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 Тогда ИсхТабл.ПрисоединитьСекцию("Группа" + Уровень + "|Цена"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; //*КЕИ@Джемини, 071009 16:22 // Наименование = ТекЭлем.ПолнНаименование + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(ТекЭлем.Артикул), ""); Наименование = ТекЭлем.ПолнНаименование; ///КЕИ@Джемини, 071009 16:22 ПечКод = ТекЭлем.код; ПечАртикул = ТекЭлем.Артикул; ПечАртикулИЭК = ТекЭлем.АртикулИЭК; ИсхТабл.ВывестиСекцию("Номенклатура|Название"); Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл Если ТипыЦен.Пометка(Счетчик) = 1 Тогда ТекТип = ТипыЦен.ПолучитьЗначение(Счетчик); Если ТекТип.Рассчитывается = 1 Тогда ИспТип = ТекТип.БазовыйТипЦен; Иначе ИспТип = ТекТип; КонецЕсли; // поищем тип в таблице Поз = 0; Если ТаблицаЦен.НайтиЗначение(ИспТип, Поз, "Тип") = 1 Тогда ТаблицаЦен.ПолучитьСтрокуПоНомеру(Поз); Цена = ТаблицаЦен.Цена; Единица = ТаблицаЦен.Единица; Если ТекТип.Рассчитывается = 1 Тогда // нужно пересчитать цену Цена = глПересчет(Цена, ТаблицаЦен.Валюта, ДатаОтчета, ТекТип.Валюта, ДатаОтчета); Цена = глОкруглить(Цена * (100 + ТекТип.Процент) / 100, ТекТип.ПорядокОкругления); //*КЕИ@Джемини, 071009 16:29 // ПечЦена = глФРМ(Цена, ТекТип.Валюта); ПечЦена = Цена; ///КЕИ@Джемини, 071009 16:29 Иначе //*КЕИ@Джемини, 071009 16:30 // ПечЦена = глФРМ(Цена, ТаблицаЦен.Валюта); ПечЦена = Цена; ///КЕИ@Джемини, 071009 16:30 КонецЕсли; ПечЕдиница = Единица; Иначе ПечЦена = ""; ПечЕдиница = ""; //+Zhule, 19-10-2015 КонецЕсли; ИсхТабл.ПрисоединитьСекцию("Номенклатура|Цена"); КонецЕсли; КонецЦикла; Иначе // ЭтоГруппа() = 1 // Запоминаем текущую группу ТекущаяГруппа = ТекЭлем; Наименование = ТекЭлем.Наименование; ИсхТабл.ВывестиСекцию("Группа" + Уровень + "|Название"); Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл Если ТипыЦен.Пометка(Счетчик) = 1 Тогда ИсхТабл.ПрисоединитьСекцию("Группа" + Уровень + "|Цена"); КонецЕсли; КонецЦикла; ИсхТабл.ПрисоединитьСекцию("Группа" + Уровень + "|ПравГраница"); КонецЕсли; // ТекЭлем.ЭтоГруппа() = 0 КонецЦикла; // подвал отчета ИсхТабл.ВывестиСекцию("Подвал|Название"); Для Счетчик=1 По ТипыЦен.РазмерСписка() Цикл Если ТипыЦен.Пометка(Счетчик) = 1 Тогда ИсхТабл.ПрисоединитьСекцию("Подвал|Цена"); КонецЕсли; КонецЦикла; // покажем таблицу ИсхТабл.ОбластьПечати(3); ИсхТабл.Опции(0,0,0,0,"ПечатьПрайса", "ПечатьПрайса"); ИсхТабл.ТолькоПросмотр(1); ИсхТабл.Показать("Печать прайс-листа",""); // 30052017 чиа запишем таблицу в ексель ***** нач Парам = СоздатьОбъект("СписокЗначений"); Парам.ДобавитьЗначение(ВыбранныйФайл, "ПутьКФайлу"); //"\\Sr-hyperv-kz2\обмен на неделю\Гриценко\cost.xls", "ПутьКФайлу"); ОткрытьФорму ("Отчет",Парам,КаталогИБ () + "ExtForms/Быстрое сохранение mxl в xls.ert"); // 30052017 чиа запишем таблицу в ексель ***** оконч Если (Обновить = 2) или (ЗакрытьДиалог=1) Тогда СтрокаДействийФормы = "#Закрыть"; КонецЕсли; сообщить("Окончание выгрузки: " + ТекущееВремя()); //чиа 31052017 //----чиа 23062017 выгружаю на сайт нач Если ПризнакФайлСразуНаСайт = 1 Тогда спПараметров = СоздатьОбъект("СписокЗначений"); спПараметров.ДобавитьЗначение(АдресСервераФТП,"АдресСервера"); спПараметров.ДобавитьЗначение(ЛогинФТП,"Логин"); спПараметров.ДобавитьЗначение(ПарольФТП,"Пароль"); спПараметров.ДобавитьЗначение(КаталогЛокальный,"КаталогЛокальный");//в этот каталог будут скопированы все файлы по маске или из него ... спПараметров.ДобавитьЗначение(2,"Направление"); спПараметров.ДобавитьЗначение("*.xls","МаскаФайлов"); //сообщить("каталог обработки " + КаталогИб()+"ExtForms\FTP.ert"); Если фс.СуществуетФайл(КаталогИб()+"ExtForms\FTP.ert")=1 Тогда ОткрытьФорму("Отчет",спПараметров,КаталогИб()+"ExtForms\FTP.ert"); КонецЕсли; КонецЕсли; //----чиа 23062017 выгружаю на сайт оконч КонецПроцедуры // Сформировать() //****************************************************************************** // Сдвиг(Направление) // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Вызывается из формул диалога: // по кнопкам со стрелочками "вверх" или "Вниз" // // Описание: // Сдвигает текущую строку списка цен в заданном направлении. // Процедура Сдвиг(Направление) ТекСтрока = ТипыЦен.ТекущаяСтрока(); Если ТекСтрока > 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); КонецЕсли; Иначе Форма.ИспользоватьСлой(Форма.Закладки.ПолучитьЗначение(ТекСтрока)); КонецЕсли; КонецПроцедуры // УправлениеДиалогом() //****************************************************************************** // Предопределенная процедура // Процедура ВводНового() УправлениеДиалогом(); ПерерисовкаНазванийЗакладок(); ТаблицаМФ.ВыводитьПиктограммы("ФлВкл"); // восстановим из настройки пометки у типов цен ОбработкаСпискаТиповЦен(СформироватьСписокПомеченных()); КонецПроцедуры // ВводНового() //****************************************************************************** // Предопределенная процедура // Процедура ПриОткрытии(ФлагЧтенияНастройки) Перем СписокПомеченных; //чиа 28062017 Если (ИмяПользователя() = "РоботНаСайт") Тогда ПризнакФайлСразуНаСайт = 0; //21072017 Иначе ПризнакФайлСразуНаСайт = 0; КонецЕсли; БазаНанопро = 0; //Если база нанопро ,то другой склад и другое имя выгружаемого файла Фирмаа = СоздатьОбъект("Справочник.Фирмы"); Если Фирмаа.НайтиПоКоду("00002") = 1 Тогда Если СтрЧислоВхождений(НРег(Фирмаа.ТекущийЭлемент().Наименование), "нано") <> 0 Тогда БазаНанопро = 1; КонецЕсли; ИначеЕсли Фирмаа.НайтиПоКоду("00004") = 1 Тогда Если СтрЧислоВхождений(НРег(Фирмаа.ТекущийЭлемент().Наименование), "джемини") <> 0 Тогда БазаНанопро = 0; КонецЕсли; Иначе Сообщить("Внимание, обработка работает только с базой Нанопро или Джемини!!!"); СтатусВозврата(0); Возврат; КонецЕсли; //чиа 28062017 Если глФлагРасшифровки = 1 Тогда Обновить = глОбновить; // Восстанавливаем настройки из списка ДатаОтчета = глРасшифровка.Получить("ДатаОтчета"); ВыбТМЦ = глРасшифровка.Получить("ВыбТМЦ"); ПоНаличию = глРасшифровка.Получить("ПоНаличию"); ВидРазделителя = глРасшифровка.Получить("ВидРазделителя"); ВыбРазделитель1 = глРасшифровка.Получить("ВыбРазделитель1"); ВыбРазделитель2 = глРасшифровка.Получить("ВыбРазделитель2"); ВыбРазделитель3 = глРасшифровка.Получить("ВыбРазделитель3"); Склад = глРасшифровка.Получить("Склад"); ВариантВключенияВпрайс = глРасшифровка.Получить("ВариантВключенияВпрайс"); ВремТипыЦен = глРасшифровка.Получить("ТипыЦен"); ОбработкаСпискаТиповЦен(ВремТипыЦен); Если ТипЗначенияСтр(глРасшифровка.Получить("ТаблицаМФ"))="ТаблицаЗначений" Тогда ТаблицаМФ.Загрузить(глРасшифровка.Получить("ТаблицаМФ")); КонецЕсли; Если Обновить <> 0 Тогда ИсхТабл = глТаблица; КонецЕсли; Если Обновить <> 2 Тогда Сформировать(); СтатусВозврата(0); Возврат; КонецЕсли; Иначе Обновить = 0; ВремТипыЦен = СоздатьОбъект("СписокЗначений"); Если ФлагЧтенияНастройки = 1 Тогда // формируем список, содержащий типы цен с пометками ВремТипыЦен = СформироватьСписокПомеченных(); КонецЕсли; Если ПустоеЗначение(ДатаОтчета) = 1 Тогда ДатаОтчета = РабочаяДата(); КонецЕсли; Если ПустоеЗначение(ВариантВключенияВпрайс) = 1 Тогда ВариантВключенияВпрайс = 1; КонецЕсли; КонецЕсли; // установка видимости колонок ТЗ множественного фильтра ТаблицаМФ.ВидимостьКолонки("Тип",0); ТаблицаМФ.ВидимостьКолонки("Вид",0); ТаблицаМФ.ВидимостьКолонки("СписокЭлементов",0); ТаблицаМФ.ВидимостьКолонки("ТипМФ",0); ТаблицаМФ.ВидимостьКолонки("ИмяПеременной",0); ТаблицаМФ.ВыводитьПиктограммы("ФлВкл"); УправлениеДиалогом(); //28062017 чиа Если БазаНанопро = 1 Тогда Складд = СоздатьОбъект("Справочник.Склады"); Если Складд.НайтиПоКоду("00001") = 1 Тогда ВыбСклад = Складд.ТекущийЭлемент(); КонецЕсли; ИмяФайлаОстатки = "cost.xls"; Иначе //надо склад 3 и 4 имя ostatki_ge.xls Складд = СоздатьОбъект("Справочник.Склады"); Если Складд.НайтиПоКоду("00003") = 1 Тогда ВыбСклад = Складд.ТекущийЭлемент(); КонецЕсли; ИмяФайлаОстатки = "cost_ge.xls"; КонецЕсли; //чиа нов - создаю, и проверяю на наличие - врем.папку для выгрузки на сайт нанопро "D:\TEMP\site\" 18072017 нач Если ФС.СуществуетФайл( "D:\TEMP" ) = 0 Тогда ФС.СоздатьКаталог( "D:\TEMP" ); КонецЕсли; Если ФС.СуществуетФайл("D:\TEMP\site\") = 0 Тогда ФС.СоздатьКаталог("D:\TEMP\site\"); КонецЕсли; //чиа нов - создаю, и проверяю на наличие - врем.папку для выгрузки на сайт нанопро "D:\TEMP\site\" 18072017 оконч ВыбранныйФайл = "D:\TEMP\site\" + ИмяФайлаОстатки; //ostatki.xls"; //13062017 чиа АдресСервераФТП = "ftp.oll.nichost.ru"; ЛогинФТП = "oll_naskladeprice"; ПарольФТП = "pXagkS7_"; КаталогЛокальный = "D:\TEMP\site\"; МаскаФайлов = "*.xls"; //28062017 чиа //03072017 чиа по умолчанию на сайт розничные ТипыЦен.Пометка(1, 1); //03072017 чиа ПерерисовкаНазванийЗакладок(); ////ВыбранныйФайл = "\\Sr-hyperv-kz2\обмен на неделю\Гриценко\cost.xls"; //13062017 чиа //чиа 03072017 Если (ИмяПользователя() = "РоботНаСайт") Тогда Сформировать(); КонецЕсли; //чиа 03072017 КонецПроцедуры // ПриОткрытии() //****************************************************************************** // Предопределенная процедура // Процедура ПриВыбореЗакладки(НомерЗакладки,ЗначениеЗакладки) УправлениеДиалогом(); ПерерисовкаНазванийЗакладок(); КонецПроцедуры // ПриВыбореЗнакладки() //****************************************************************************** // Предопределенная процедура // Процедура ОбработкаПодбора(Значение) Если (СписокЭлементовМФ.НайтиЗначение(Значение)=0) Тогда Представление=""+Значение; Если ТипЗначенияСтр(Значение)="Справочник" Тогда Если СокрЛП(Метаданные.Справочник(Значение.Вид()).Владелец) <> "Метаданные" Тогда Представление=Представление+" ("+Значение.Владелец+")"; КонецЕсли; КонецЕсли; СписокЭлементовМФ.ДобавитьЗначение(Значение,Представление); ТаблицаМФ.ФлВкл=2; КонецЕсли; КонецПроцедуры // ОбработкаПодбора //****************************************************************************** // добавим закладки Форма.ИспользоватьЗакладки(1); Форма.Закладки.ДобавитьЗначение("Общий,Основной,Кнопки","Основная"); Форма.Закладки.ДобавитьЗначение("Общий,МФ,Кнопки","Множественный фильтр"); Форма.Закладки.ТекущаяСтрока(1); // инициализация переменных множественного фильтра ТипМФ.УдалитьВсе(); ТипМФ.ДобавитьЗначение("одно из"); ТипМФ.ДобавитьЗначение("все кроме"); ТаблицаМФ.УдалитьСтроки(); Пока ТаблицаМФ.КоличествоКолонок()>0 Цикл ТаблицаМФ.УдалитьКолонку(1); КонецЦикла; ТаблицаМФ.НоваяКолонка("Тип"); ТаблицаМФ.НоваяКолонка("Вид"); ТаблицаМФ.НоваяКолонка("ИмяПеременной"); ТаблицаМФ.НоваяКолонка("СписокЭлементов"); // список элементов, по которым производим фильтрацию ТаблицаМФ.НоваяКолонка("ТипМФ"); // текущая строка списка ТипМФ ТаблицаМФ.НоваяКолонка("ФлВкл","Число",1,,"Вкл",5,,); // фильтр включен ("1" или "0") ТаблицаМФ.НоваяКолонка("Представление",,,,"Вид фильтра:"); ТаблицаМФ.ВыводитьПиктограммы("ФлВкл"); // тип вид переменная название глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","Номенклатура", "Номенклатура", "По номенклатуре"); глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","ЗначенияСвойств", "Номенклатура", "По свойствам номенклатуры"); ТекСтрокаВТаблице=""; |