&НаКлиенте Процедура Загрузки() ПутьКБазе="D:\ВашаБаза\1с77\"; Пользователь="stvbliz";//пользователь базы 7.7 Пароль="вашпароль"; МонопольныйРежимOLE = ""; // " /m"; ЗапускБезЗаставки = 1; База = Новый COMОбъект("V1CEnterprise.Application"); СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+""""; РезультатПодключения=База.Initialize(База.RMTrade,СтрокаПодключения,?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW","")); Если НЕ РезультатПодключения Тогда Сообщить("Не удалось произвести подключение к информационной базе"); КонецЕсли; Таблица.Очистить(); Док = База.CreateObject("Документ.ЗаявкаПокупателя"); Док.ВыбратьДокументы(НачалоНедели(Дата),КонецНедели(Дата)); Пока Док.ПолучитьДокумент() = 1 Цикл ОбработкаПрерыванияПользователя(); Если Док.НомерДок = НомерЗаявки Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл нов=Таблица.Добавить(); нов.Номенклатура = Док.Номенклатура.Наименование; нов.Количество = Док.Количество; нов.Единица = Док.Единица.Наименование; нов.Цена = Док.Цена; Нов.Сумма = Док.Сумма; нов.Коэффициент = Док.Коэффициент; нов.Производитель = Док.производитель; Нов.Валюта = Док.Валюта.Наименование; КонецЦикла; КонецЕсли; КонецЦикла; Док=NULL; КонецПроцедуры
//Примеры получения значений //Периодический реквизит нужно получать на дату ДатаОст= ТекущаяДата(); Спр77Оле.ВидГрейда.Получить(ДатаОст).код; // Перечисление Если База77ОЛЕ.ВидКонтрагента.Идентификатор() = "ЧастноеЛицо" // или Если Сотрудник.ХарактерРаботы.Получить(Необходимая_Дата).Идентификатор() = БазаОЛЕ.EvalExpr("Перечисление.ХарактерРаботы.ТрудовыеОтношения.Идентификатор()") Тогда // Принадлежит ... КонецЕсли; //В запросе // в v7 ссылка OLE Запрос = v7.CreateObject("Запрос"); ТипТовара = v7.evalexpr("Перечисление.ТипыТоваров.Собственный.ПорядковыйНомер()"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Наименование = Справочник.Номенклатура.Наименование; |ТипТовара = Справочник.Номенклатура.ТипТовара; |ЕдиницаИзмерения = Справочник.Номенклатура.ЕдиницаИзмерения; |Функция Счётчик = Счётчик(); |Группировка ТекущийЭлемент; |Условие(ТипТовара.ПорядковыйНомер() = "+ТипТовара+"); |"//}}ЗАПРОС ;
Неделя = 3600 * 24 * 7; Выходные = 3600 * 48; МаксимальнаяДата =ДатаД1; // + Неделя * 4; ТекущаяДата = ДатаД; Пока ТекущаяДата <= МаксимальнаяДата Цикл Конец = НачалоНедели(ТекущаяДата); Начало = Конец - Выходные; ИнтФ=ДГ.ИнтервалыФона.Добавить(Начало, Конец); ИнтФ.Цвет = WebЦвета.Красный; ТекущаяДата = ТекущаяДата + Неделя; КонецЦикла;
// Код устанавливает период в списке документов взависимости от выбранной периодичности: Если Периодичность = Перечисления.Периодичность.Год Тогда ДатаНачала = НачалоГода(РабочаяДата); ИначеЕсли Периодичность = Перечисления.Периодичность.Квартал Тогда ДатаНачала = НачалоКвартала(РабочаяДата); ИначеЕсли Периодичность = Перечисления.Периодичность.Месяц Тогда ДатаНачала = НачалоМесяца(РабочаяДата); ИначеЕсли Периодичность = Перечисления.Периодичность.Неделя Тогда ДатаНачала = НачалоНедели(РабочаяДата); ИначеЕсли Периодичность = Перечисления.Периодичность.День Тогда ДатаНачала = НачалоДня(РабочаяДата); Иначе ДатаНачала = НачалоДня(РабочаяДата); КонецЕсли; ДокументСписок.Отбор.Дата.ВидСравнения=ВидСравнения.ИнтервалВключаяГраницы; ДокументСписок.Отбор.Дата.ЗначениеС = ДатаНачала; ДокументСписок.Отбор.Дата.ЗначениеПо = КонецДня(РабочаяДата); ДокументСписок.Отбор.Дата.Использование = Истина;
//Как из номера, числа недели вернуть первую Дату этой недели? Функция ДатаПоНомеруНедели(НомерНедели, Год = Неопределено) Возврат НачалоНедели(Дата(?(Год=Неопределено, Год(ТекущаяДата()), Год),1,1)+(НомерНедели-НеделяГода(Дата(?(Год = Неопределено, Год(ТекущаяДата()), Год), 1, 1))) * 604800); КонецФункции //ПРИМЕРЫ ОБРАЩЕНИЯ: ТекДата = ТекущаяДата(); Сообщить("Текущая Дата - "+Строка(ТекДата)); Сообщить("Неделя года - "+Строка(НеделяГода(ТекДата))); Сообщить("--------------------------"); Сообщить(ДатаПоНомеруНедели(НеделяГода(ТекДата))); Сообщить(ДатаПоНомеруНедели(НеделяГода(ТекДата), 2005)); // В окно сообщений будет выведено: // // Текущая Дата - 20.08.2010 0:00:00 // Неделя года - 34 // ---------------------------- // 16.08.2010 0:00:00 // 15.08.2005 0:00:00
//Начало, Конец - начало и конец периода //Периодичность - строка "День", "Месяц", "Неделя", "Год", "Квартал" //Возвращает таблицу значений с колонками: // Начало - начало интервала // Конец - конец интервала // Номер - номер интервала (начиная с единицы) Функция обПериодыЗаИнтервал(Начало, Конец, Периодичность="День", ВыравниваниеПоПериоду=истина) Перем Р, Номер, ТекПериод, СледПериод; Р=Новый ТаблицаЗначений(); Р.Колонки.Добавить("Начало"); Р.Колонки.Добавить("Конец"); Р.Колонки.Добавить("Номер"); ТекПериод=Начало; Номер=1; Пока истина Цикл Если Периодичность="День" Тогда Если ВыравниваниеПоПериоду Тогда ТекПериод=НачалоДня(ТекПериод); СледПериод=КонецДня(ТекПериод); Иначе СледПериод=обДобавитьДни(ТекПериод, 1); КонецЕсли; ИначеЕсли Периодичность="Месяц" Тогда Если ВыравниваниеПоПериоду Тогда ТекПериод=НачалоМесяца(ТекПериод); СледПериод=КонецМесяца(ТекПериод); Иначе СледПериод=обДобавитьМесяцы(ТекПериод, 1); КонецЕсли; ИначеЕсли Периодичность="Год" Тогда Если ВыравниваниеПоПериоду Тогда ТекПериод=НачалоГода(ТекПериод); СледПериод=КонецГода(ТекПериод); Иначе СледПериод=обДобавитьМесяцы(ТекПериод, 12); КонецЕсли; ИначеЕсли Периодичность="Квартал" Тогда Если ВыравниваниеПоПериоду Тогда ТекПериод=НачалоКвартала(ТекПериод); СледПериод=КонецКвартала(ТекПериод); Иначе СледПериод=обДобавитьМесяцы(ТекПериод, 3); КонецЕсли; ИначеЕсли Периодичность="Неделя" Тогда Если ВыравниваниеПоПериоду Тогда ТекПериод=НачалоНедели(ТекПериод); СледПериод=КонецНедели(ТекПериод); Иначе СледПериод=обДобавитьДни(ТекПериод, 7); КонецЕсли; Иначе ВызватьИсключение "Неизвестная периодичность времени:"+Периодичность; КонецЕсли; Если ТекПериод>Конец И НЕ Номер=1 Тогда Прервать; КонецЕсли; Стр=Р.Добавить(); Стр.Начало=ТекПериод; Стр.Конец=СледПериод; Стр.Номер=Номер; ТекПериод=СледПериод+1; //Переходим на следующий период (добавляем одну секунду) Номер=Номер+1; КонецЦикла; Возврат Р; КонецФункции
//Функция формирует удобное для чтения представление значений. // Примеры форматирования чисел ЗначФормат = Формат(123456.789, "ЧЦ=10; ЧДЦ=2"); // ЗначФормат = "123 456,79" ЗначФормат = Формат(123456.789, "ЧГ=0; ЧДЦ=2"); // ЗначФормат = "123456,79" ЗначФормат = Формат(123456.789, "ЧРД='-'"); // ЗначФормат = "123 456-789" ЗначФормат = Формат(-123456.789, "ЧО=0"); // ЗначФормат = "(123 456,789)"; ЗначФормат = Формат(13, "ЧЦ=5; ЧВН=; ЧГ=0"); // ЗначФормат = "00013"; //В 8 версии для вывовода чисел прописью используется ЧислоПрописью ЧислоПрописью(Сумма, "L=ru_RU", Валюта.ПараметрыПрописиНаРусском) ЧислоПрописью(1457.25,"L=en_US","dollar, dollars, cent, cents, 2"); // One thousand four hundreds fifty seven dollars 25 cents. ЧислоПрописью(Сумма,"Рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2"); //Пример представления Числа в виде Даты ЗначФормат = Формат(25021949, "ЧЦ=8; ЧРГ=.; ЧВН=; ЧГ=4,2,0"); // ЗначФормат = "25.02.1949" // Примеры форматирования дат ЗначФормат = Формат('20020820153309', "ДФ=""дд ММММ гггг 'г.' ЧЧ:мм:сс"""); // ЗначФормат = "20 августа 2002 г. 15:33:09" ЗначФормат = Формат('20020820153309', "ДФ=""дд/ММ-гггг"""); // ЗначФормат = "20/08-2002" ЗначФормат = Формат('20020820153309', "ДФ='q ""кв."" yyyy'"); // ЗначФормат = "3 кв. 2002"; ЗначФормат = Формат('20020820153309', "ДФ='""Итого"" q ""квартал""'") ; // ЗначФормат = "Итого 3 квартал"; ЗначФормат = Формат('20020820153309', "ДФ='ММММ гггг'"); // ЗначФормат = "Август 2002 г."; ЗначФормат = Формат('20020820153309', "ДЛФ=ДД"); // ЗначФормат = "20 августа 2002 г."; ЗначФормат = Формат('20020820153309', "ДЛФ=Д"); // ЗначФормат = "20.08.2002"; ЗначФормат = Формат('20020820153309', "ДЛФ=В"); // ЗначФормат = "15:33:09"; ЗначФормат = Формат('20020820153309', "ДФ=HHmmssyyyyMMdd"); // ЗначФормат = "15330920020820"; ЗначФормат = Формат('20020820153309', "ДФ=HH:mm:ss yyyy MM dd"); // Время 24 часа - ЗначФормат = "15:33:09 2002 08 20"; ЗначФормат = Формат('20020820153309', "ДФ=hh:mm:ss yyyy MM dd"); // Время 12 часов - ЗначФормат = "03:33:09 2002 08 20"; Формат(Дата(2009, 1, 1), "ДЛФ=DD") + ", " + ОпределитьДеньНедели(ДеньНедели(Дата(2009, 1, 1))); // 1 января 2009 г., Четверг (Смотрите в "Работаем с Датами" Функция Определить день недели) Формат(Дата(2009, 1, 1), "ДФ=ММММ") + ", " + Формат(Дата(2009, 1, 1), "ДФ=yyyy") + " г."; // Январь, 2009 г. Формат(НачалоНедели(Дата(2009, 1, 1)), "ДФ='dd MMMM yyyy'") + " г. - " + Формат(КонецНедели(Дата(2009, 1, 1)), "ДФ='dd MMMM yyyy'") + " г."; // 29 декабря 2008 г. - 04 января 2009 г. // ДЕКАДУ нельзя вывести через формат, но можно так: Строка(Цел(День(Дата('20020820153309')) / 10) + 1)+" декада" = 2 декада // Примеры форматирования логических выражений ЗначФормат = Формат(Истина, "БЛ=Отсутствует; БИ=Доступен"); // ЗначФормат = "Доступен"; ЗначФормат = Формат(Ложь, "БЛ=Нет; БИ=Да"); // ЗначФормат = "Нет";
// Символы, определяющие тип форматируемых данных: // Ч — число (Англоязычный синоним: N) ЗначФормат = Формат(123.15, "Ч(0)10.2") // 0000123.15 Долг = Строка(Формат(Долг(), "Ч12.2")) + " " + Валюта.Сокр_назв; // Возможен вывод денежных величин и просто целых чисел прописью. В этом случае форматная строка должна иметь вид "ЧПДС". // Наличие буквы "П" (в английском варианте для аналогичной цели используется буква "S") определяет сам факт вывода числа прописью. // Символ "Д" (в английском варианте — "M") обозначает вывод денежной величины и является необязательным. // Символ "С" (в английском варианте — "H") также необязателен и означает вывод с копейками. ИтогоСуммаПрописью = Формат(Итог("Сумма"), "ЧПДС"); КоличествоНаименованийПрописью = Формат(КоличествоСтрок(), "ЧП"); // С — строка (Англоязычный синоним: S) // "Сn", где n — положительное целое число определяющее ширину поля, в котором будет размещаться строка. // В случае, если ширина поля превосходит длину строки сформатированная строка будет дополнена справа пробелами, если же ширина поля меньше длины строки — строка будет усечена справа. // Д — дата (Англоязычный синоним: D) ДатаДокумента = Формат(Док.ДатаДок,"Д ДД.ММ.ГГ"); //12.03.08 ДатаДокумента = Формат("01.01.1999", "Д(0)ДДММММГГГГ"); // 01 Января 1999 г. //Для форматирования даты используется форматная строка вида "Д<ПодстрокаФормата>", где <Подстрока Формата> представляет собой строку, определяющую вид сформатированного представления даты: //DDMMYY (ДДММГГ) дата в виде ДД.ММ.ГГ //DDMMYYYY (ДДММГГГГ) дата в виде ДД.ММ.ГГГГ //DDMMMMYYYY (ДДММММГГГГ) дата в виде ДД месяц прописью ГГГГ //(0)DDMMMMYYYY ((0)ДДММММГГГГ) этот формат представляет собой вариант предыдущего формата с тем отличием, что число месяца всегда выводится двумя цифрами, т. е. для чисел меньших 10 спереди будет добавлен 0. Например: Формат('01.01.1999', ' 'Д(0)ДДММММГГГГ' ') = 01 Января 1999 г. //MMMMYYYY (ММММГГГГ) дата в виде месяц прописью ГГГГ //MMMMYY (ММММГГ) дата в виде месяц прописью ГГ //ММММ (ММММ) дата в виде месяц прописью //QQQQYYYY (ККККГГГГ) дата в виде N квартала ГГГГ //QQQQYY (ККККГГ) дата в виде N квартала ГГ //QQQQ дата в виде N квартала //YYYYMMDD (ГГГГММДД) дата в виде ГГГГММДД, то есть дата '10.11.1998' будет представлена как строка "19981110" //WWWW (HHHH) выводит наименование дня недели, соответствующее указанной дате. Наименования дней недели берутся из файла прописи.