Не знаю в каком разделе это правильно запостить, поэтому пишу в бух. учете. Вот нарыл несколько ресурсов-баз данных, которые могут помочь полезной информацией и хочу ними поделиться с вами.
Переводчик http://translate.yandex.ru/, перевожу слово "нижеподписавшиеся", ошибочно задал направление перевода Украинский->Русский. Перевел как сергеевна
А если написать в ковычках - то переводит как "бесчестия"
// ПутьКФайлу - путь к файлу, существование которого надо проверить // Возвращает Истина, если файл существует или Ложь, если файла по указанному пути нету
Функция ПроверитьСуществованиеФайла(ПутьКФайлу) Экспорт Файл = Новый Файл(ПутьКФайлу); Возврат Файл.Существует(); КонецФункции
Иногда при запуске какой-либо программы появляется сообщение, что не найден файл *.dll (например, VCompLib.dll) или *.ocx (например, seon.ocx). При этом программа, естественно, не запускается.
Сообщения об ошибках могут быть разные, например: «Component 'MSCOMM32.OCX' not correctly registered: file is missing or invalid», или «Приложению не удалось запуститься, поскольку MSVBVM50.DLL не был найден. Повторная установка приложения может исправить эту проблему», или «Runtime DLL/OCX File error». При этом в Windows Vista дополнительно появится окно Помощника по совместимости программ с сообщением Эта программа требует отсутствующий компонент Windows.
Краткая справка
• DLL (от англ. Dynamic-Link Library – динамически подключаемая библиотека) – понятие операционной системы Microsoft Windows; динамическая библиотека, позволяющая многократное применение различными программными приложениями. K DLL иногда причисляют также элементы управления ActiveX и драйвера. В мире UNIX аналогичные функции выполняют т. н. shared objects («разделяемые объекты»). Формат файлов *.dll придерживается тех же соглашений, что и формат исполняемых файлов *.exe, сочетая код, таблицы и ресурсы.
• ActiveX – название группы технологий, разработанных Microsoft для программирования компонентных объектных приложений на основе модели COM.
• COM (сокр. от англ. Component Object Model) – модель компонентных объектов Microsoft, стандартный механизм, включающий интерфейсы, с помощью которых одни объекты предоставляют свои сервисы другим; является основой многих объектных технологий, в том числе OLE и ActiveX).
• OLE (сокр. от англ. Object Linking and Embedding) – общее название (до 1996 г.) группы объектно-ориентированных технологий Microsoft на основе COM (OLE 1, OLE 2, OLE automation, OLE Database и др.).
• ActiveX control – управляющий элемент ActiveX; введенное в 1996 г. Microsoft новое название независимых программируемых компонентов, ранее называемых OLE controls, OCXs, OLE custom controls; в отличие от последних позволяют работать с Internet.
• OCX (сокр. от англ. OLE Custom eXtension) – перемещаемые элементы управления, OLE custom control, OLE control. Упрощенно можно сказать, что файлы *.ocx – это элементы управления ActiveX, выполняющие примерно те же функции, что и файлы *.dll.
• OLE custom control – специализированный управляющий элемент OLE, OLE control.
• OLE control – управляющие элементы OLE, программируемые компоненты-приложения с интерфейсом на базе OLE, позволяющим легко включать их в другие приложения; c 1996 г. называются ActiveX control. Синонимы: OCX, OLE custom control.
Способы решения проблемы
Если возникают ошибки, связанные с файлами *.dll и *.ocx, необходимо: 1. Переустановить программу. 2. Если переустановка программы не помогает, нужно проверить наличие в системе требуемых файлов. Файлы *.dll и *.ocx, как правило, должны быть расположены в системной папке \WINDOWS\system32 (реже – в каталоге конкретной программы). Если файлы присутствуют, нужно зарегистрировать их. Если требуемых файлов нет, найдите их в Интернете, скачайте и скопируйте в папку \WINDOWS\system32 и в каталог программы. Теперь нужно зарегистрировать их.
Как зарегистрировать файлы *.dll и *.ocx
Регистрация файлов *.dll и *.ocx производится с помощью сервера регистрации regsvr32.exe (дисковый адрес которого – \WINDOWS\system32). Рассмотрим способы регистрации: 1. Нажмите Пуск – Выполнить… – Запуск программы – regsvr32 имя_файла – OK. 2. Нажмите Пуск – Выполнить… – Запуск программы – cmd – OK. Запустится интерпретатор команд cmd.exe, после приглашения системы C:\Documents and Settings\Имя_пользователя> введите regsvr32 имя_файла, например, regsvr32 seon.ocx. 3. Если вы пользуетесь файловым менеджером Total Commander, то можно выполнить регистрацию файлов *.dll и *.ocx с помощью командной строки Total Commander.
Примечание Использование команды regsvr32: regsvr32 [/s] [/n] [/i[:строка_команд]] DLL-файл
/u – отменяет регистрацию DLL; /s – «тихий» режим – окна сообщений не отображаются; /i – вызывает DllInstall, передавая параметром необязательную строку_команд, при использовании с ключом /u вызывает DLLUnInstall; /n – не вызывает DllRegisterServer; это может использоваться с ключом /i.
Если регистрация файлов *.dll и *.ocx прошла успешно, появится соответствующее сообщение, например, в Windows Vista появится окно RegSvr32 с сообщением «Успешное выполнение DllRegisterServer в C:\WINDOWS\system32\msvbvm50.dll».
Только что в объявлении о работе вычитал: Компания «Гарант Про» ищет заместителя руководителя отдела внедрения. Опыт - не главное. Главное, чтобы человек был хорошим.
Функция ПолучитьВремя() ТекДата=ТекущаяДата(); ТекЧас=0; ТекМин=0; ТекСек=0; ТекущееВремя(ТекЧас,ТекМин,ТекСек); Возврат ((ТекДата-Дата("01.01.80"))*86400+ТекЧас*3600+ТекМин*60+ТекСек); КонецФункции
Процедура ВыходИзСистемы() Если НЕ(Константа.ВыходИзСистемы=0) Тогда Если (ВремяКомандыВыхода=0) Тогда ВремяКомандыВыхода=ПолучитьВремя(); Предупреждение("Внимание! Через "+Константа.ВыходИзСистемы+" минут(ы) программа 1С завершит работу.",60); Иначе ТекВремя=ПолучитьВремя(); Если (ТекВремя-ВремяКомандыВыхода>=Константа.ВыходИзСистемы*60) Тогда ЗавершитьРаботуСистемы(0); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры
Процедура ПриНачалеРаботыСистемы() ВремяКомандыВыхода=0; Если НЕ(НазваниеНабораПрав()="Администратор") И НЕ(Константа.ВыходИзСистемы=0) Тогда ЗавершитьРаботуСистемы(0); КонецЕсли; Если НЕ(НазваниеНабораПрав()="Администратор") Тогда ОбработкаОжидания("ВыходИзСистемы",10); КонецЕсли; КонецПроцедуры
Не то пальто, по-моему. Навскидку предлагаю вариант - 2 регистра: цены (номенклатура, тип цены, цена), интервалы (контрагент (или договор), количество позиций, тип цен). В документе узнаем число позиций и контрагента (договор) и спрашиваем у регистра интервалы какой тип цен используем, а дальше по типу цен выбираем сами цены. И ещё можно посмотреть как работают скидки в типовых конфигурациях.
Украинцы не готовы влиться в семью европейских народов в силу своих искаженных ценностных ориентиров. Жажда роскошной жизни становится непреодолимым психологическим препятствием на пути в Европу, живущей по другим понятиям
Недавно я побывал в Чехии на выпускном вечере у моей дочери от первого брака, живущей там с малых лет и окончившей местную среднюю школу. Когда подъехал на своем автомобиле с украинскими номерами к месту торжества, на крыльцо вслед за встречающей меня дочкой высыпала ватага ее чешских одноклассников, чтобы, как выяснилось, поглазеть на «мафиози из Украины». Спрашиваю у дочери: "А ты говорила им, что твой отец - журналист?". Отвечает, мол, говорила, но они все равно думают, что в Украине одна лишь мафия.
Вроде как и отшумели давно лихие 90-е с их разборками, докатившимися и до Европы, а мы, как и прежде для них, - мафия. Но ничего странного в таком о нас представлении на самом деле нет. С мафией мы ассоциируемся развязными манерами и нарочитым гонором, золотыми цепями с палец толщиной и дорогими черными автомобилями, эпатирующими окружающих. Тянемся из последних сил к роскоши вопреки в общем-то убогому материальному и духовному существованию и считаем, что стремимся к достойной жизни. А вот европейцы как раз могли бы позволить себе роскошную как по нашим понятиям жизнь, но считают это дурным тоном, и приличную жизнь представляют себе совсем по-другому.
В Чехии я остановился у своего давнего приятеля, местного журналиста, работающего на одно из иностранных информагентств. У него жена и трое маленьких детей. В семье две машины, одна из которых еще недавно была в кредите, и недавно построенный в кредит двухэтажный дом под Прагой. Жена перебивается временными заработками, так как много времени вынуждена уделять детям. Глава семейства зарабатывает немногим больше, чем средняя зарплата в Чехии, составляющая $ 1.300. За дом он ежемесячно отдает банку треть своего заработка, остальное вместе с нерегулярными доходами жены и кое-какими его собственными халтурками идет на то, чтобы достроить дом, и на ежедневные потребности семьи.
При столь скромных как для такого семейства заработках им удается жить, ни в чем себе не отказывая. Во-первых, процент по кредиту на недвижимость там составляет неполных 5% - по сравнению с 20% и более в Украине. При таких низких процентных ставках европейцы легко решаются на жизнь в кредит в социально стабильном обществе. Во-вторых, в системе потребления в Европе очень распространены всяческие акции и скидки, которыми привлекают покупателей. Именно этим эффективно и пользуется семья моего приятеля. Все, что есть в их доме, – от кирпичей, из которых он построен, до мебели, которой обставлен, детских игрушек, которыми завален, и одежды, которой забиты шкафы, - куплено на распродажах. Наконец, они совершенно равнодушны к предметам роскоши, как то золото или натуральные меха, и их не волнует, достаточно ли престижна марка их автомобиля.
Все это вкупе позволяет им ни в чем не нуждаться и жить достойно человека - регулярно отдыхать летом на море, а зимой в горах, насыщенно проводить выходные и будни... Жизнь в кредит, по акциям и без излишеств типична для европейской семьи.
По случаю моего приезда собрал мой чешский приятель у себя дома компанию друзей-коллег (все мы хорошо знакомы по работе в одной американской медиаструктуре, вещающей на Украину из Праги). Достал он бутылку Закарпатского коньяка, видимо, думая вызвать патриотические чувства присутствующих за столом украинцев. "Хм, всего лишь три звездочки", - не преминула тут же скептически подметить одна из соотечественниц по поводу коньяка. А еще принялась советовать, где в Праге можно купить настоящий швейцарский шоколад, который, по ее мнению, лишь и достоин взыскательного вкуса.
"Светскими" разговорами встретили меня соотечественники и на бывшей работе в Праге. Те, с кем там начинал в середине 1990-х и с кем давно не виделся, рассказывали мне о купленной ими или строящейся недвижимости в Чехии, о том, какой из экзотических курортов они в очередной раз посетили, и сокрушались дилеммой – оставить свое подросшее чадо учиться в Чехии или же отправить в более престижный вуз на Запад. И никто из них не кинулся с расспросами об Украине - как там, что там... Тем более что это должно составлять их профессиональный интерес.
А вот мой чешский приятель с удовольствием бывает в Украине, когда случается такая оказия. Ему как журналисту тут все интересно, и он много пишет о нас. Он непритязателен в быту, а еще с удовольствием ест украинский шоколад и пьет наш коньяк. Публику же постсоветскую даже жизнь на Западе не меняет - вид у нее неизменно высокомерный и всем недовольный. И по этим признакам нас там так легко распознают на улице. Нашему человеку всегда чего-то не хватает, все возмущает, и гонора столько, будто всю жизнь он только и ел швейцарский шоколад, да запивал его мартелем.
Европеец строит настолько большой дом, насколько это требуется для комфорта его семьи; украинец же - настолько большой, насколько это будет соответствовать понятию «крутой» дом. Европеец станет покупать дорогой и большой автомобиль, только если это продиктовано жизненной необходимостью; украинец же - чтобы лучше выглядеть перед окружающими. Чех спокойно отправится кататься на лыжах в свои горы Карконоши, а украинец скорее предпочтет родным Карпатам престижные Альпы.
Разница между нами и пролегает на уровне менталитета, сформированного в разных социально-исторических условиях. Свалившиеся на голову постсоветского человека возможности разбогатеть уродливым образом определили его жизненные приоритеты. Европа же воспитана на ценностях среднего уровня жизни. Пока мы не примем эти ценности - европейцами нам не стать.
Как выгрузить данные из справочника в текстовый файл?
Как загрузить данные из текстового файла?
Работа с текстом. Модель последовательного доступа
XML
Как из одной базы перенести документ в другую базу?
Как можно сформировать XML-документ произвольной структуры?
Как сформировать XML-документ в строку?
Как можно обмениваться данными, используя XML-сериализацию через файлы других форматов?
Как можно загрузить XML документ произвольной структуры?
DBF-файлы
Как можно построить выгрузку-загрузку посредством файлов DBF?
Работа с HTML-документами
Заполнение HTML-анкет
Работа с файлами
Как организовать диалог выбора текстового файла?
Как прочитать информацию о файле?
Как получить список файлов в указанном каталоге?
Как переместить файл, выложенный на ftp к себе на локальный компьютер?
Как разделить большой файл на несколько файлов определенного размера?
Как поместить файлы в архив?
Как сравнить два текстовых файла?
Как организовать контроль формирования файла внешним приложением?
ActiveX
Как использовать элементы управления ActiveX?
Макеты ActiveDocument
Как сформировать новый договор на основании файла Microsoft Word?
Работа с Интернет
Работа с электронной почтой
Как организовать работу с электронной почтой через установленного почтового клиента?
Как организовать работу с почтой без установленного почтового клиента на компьютере пользователя?
Работа с файлами
Загрузка файлов по FTP
Выполнение HTTP запроса
Как установить HTTP соединение если подключение через прокси (proxy) сервер
Работа с COM-объектами
Как из одной базы 1С:Предприятие 8.0 перенести остатки товаров в другую базу, используя COM-соединение.
Пример обращения к программе 1С:Предприятие 8.0 из модуля MS Excel через COM-соединение
Как организовать считывание данных из файлов *.xls?
Как запустить макрос, записанный в книге Microsoft Excel?
Как создать документ программы Microsoft Excel по оформлению, приведенному в другом документе?
Как выгрузить прайс-лист в документ программы Microsoft Word?
Как выполнить запрос к произвольной базе данных SQL?
Automation Client/Server (OLE)
Как из одной базы 1С:Предприятие 8 интерактивно заполнить документ в другой базе, используя Automation Client/Server (OLE)?
Как из таблицы Excel загрузить список номенклатуры в 1С:Предприятие с возможностью редактирования?
Обмен данными
Как организовать работу удаленных складов?
Как при создании начального образа управлять тем, какие виды объектов перегружаются, а какие нет?
Как просмотреть объекты, для которых зарегистрированы изменения?
Как организовать обмен данными между произвольными конфигурациями 1С:Предприятие 8?
Как принудительно зарегистрировать изменения объектов?
WEB-расширение
Как в форме списка номенклатуры отменить все установленные отборы?
Как запретить перенос содержимого ячеек в форме списка расходных накладных?
Как открыть список расходных накладных с отбором, установленным по определенному складу?
Как добавить кнопку для ввода документа на основании?
Реестр Windows
Как прочитать значение, хранящееся в реестре Windows?
Как сохранить значение в реестр Windows?
Автор проделал большую работу собрав всю эту информацию воедино, за что ему спасибо!
Текстовый файл
Как выгрузить данные из справочника в текстовый файл?
Текст = Новый ТекстовыйДокумент; Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл Стр = СтрЗаменить(Выборка.Наименование, Символ(34), "%квч%"); Код = Строка(Выборка.Код) + Символ(34); Текст.ДобавитьСтроку(Код + Стр); КонецЦикла;
Текст.Записать("c:\temp\text.txt");
Как загрузить данные из текстового файла?
Текст = Новый ТекстовыйДокумент; Текст.Прочитать("c:\temp\text.txt");
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(НомерСтроки); Позиция = Найти(Стр, Символ(34)); Код = Сред(Стр, 1, Позиция-1); прНаименование = Сред(Стр, Позиция + 1); Наименование = СтрЗаменить(прНаименование, "%квч%", Символ(34));
Сообщить(Код + "-" + Наименование); КонецЦикла;
Работа с текстом. Модель последовательного доступа
Путь = "c:\temp\text.txt"; Текст = Новый ЗаписьТекста(Путь, КодировкаТекста.UTF8); Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл Текст.ЗаписатьСтроку(Выборка.Наименование); КонецЦикла;
Текст.Закрыть();
Путь = "c:\temp\text.txt"; Текст = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8); Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл Стр = Текст.ПрочитатьСтроку(); Сообщить(Стр); КонецЦикла;
XML
Как из одной базы перенести документ в другую базу?
// Выгрузить в файл xml. ЗаписьXML=Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл("c:\doc.xml"); ЗаписьXML.ЗаписатьНачалоЭлемента("Root");
// Получить объект по ссылке. ВыгружаемыйОбъект=Документ.ПолучитьОбъект();
// С помощью средств сериализации записать объект в файл. ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект);
// Текущим становится элемент Root. ЧтениеXML.Прочитать();
// Текущим становится элемент с документом. ЧтениеXML.Прочитать();
// Проверить сможет ли с данным значением "справиться" // система сериализации в данной базе. Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
// Получить ДокументОбъект.РеализацияТоваровУслуг ЗагружаемыйОбъект=ПрочитатьXML(ЧтениеXML);
ЗагружаемыйОбъект.Записать(); КонецЕсли;
ЧтениеXML.Закрыть();
Как можно сформировать XML-документ произвольной структуры?
Запись = Новый ЗаписьXML; Запись.ОткрытьФайл(ПутьКФайлу); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Корневой"); Запись.ЗаписатьАтрибут("Справочник", "Номенклатура"); Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");
Запись = Новый ЗаписьXML(); Запись.УстановитьСтроку(); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Корневой"); Запись.ЗаписатьАтрибут("Справочник", "Номенклатура"); Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");
// Событие возникает и при открытии формы, когда в реквизите // URL содержится пустая строка. Если URL <> "" Тогда Док = ЭлементыФормы.ПолеHTML.Документ;
// При попытке обратиться к несуществующему свойству // произойдет ошибка Док.forms["frm"].fam.Value = "Иванов"; Док.forms["frm"].nam.Value = "Иван"; Док.forms["frm"].otch.Value = "Иванович"; КонецЕсли;
Для Каждого Файл из МассивНайденных Цикл Сообщить(Файл.Имя);
// Обработать найденные файлы.
КонецЦикла;
Как переместить файл, выложенный на ftp к себе на локальный компьютер?
Если НайтиФайлы("C:\Temp\Sklad.xml") <> Неопределено Тогда УдалитьФайлы("C:\Temp\ Sklad.xml "); КонецЕсли;
Если НайтиФайлы("ftp://111.222.333.4/Sklad.xml") <> Неопределено Тогда ПереместитьФайл("ftp://111.222.333.4/Sklad.xml", "C:\Temp\ Sklad.xml"); Сообщить("Файл перемещен.");
Иначе Сообщить("Действие не выполнено. Файл в источнике не найден."); КонецЕсли;
Как разделить большой файл на несколько файлов определенного размера?
//Разделяем указанный файл на несколько частей заданного размера РазделитьФайл("D:/1/MyFile.xml", 1024*1024, "D:/1/11/");
// Обратная операция - объединение нескольких файлов в один ОбъединитьФайлы("D:/1/11/MyFile.xml.*", "D:/1/11/MyProg.exe");
Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогФыбораФайла = Новый ДиалогВыбораФайла(Режим); ДиалогФыбораФайла.Фильтр = "Все файлы (все)|*.*"; ДиалогФыбораФайла.Заголовок = "Выберите медиа файл";
Если ДиалогФыбораФайла.Выбрать() Тогда ПутьКМедиаФайлу = ДиалогФыбораФайла.ПолноеИмяФайла;
// В зависимости от варианта объекта запись полного пути к файлу // производится либо в свойство FileName, либо в свойство URL. Попытка ЭлементыФормы.WMP.FileName = ПутьКМедиаФайлу; Исключение ЭлементыФормы.WMP.URL = ПутьКМедиаФайлу; КонецПопытки; КонецЕсли;
Макеты ActiveDocument
Как сформировать новый договор на основании файла Microsoft Word?
Договор = ПолучитьМакет("Договор");
// Получить объект из макета. MSWord = Договор.Получить(); НаименованиеКонтрагента = "ООО Торгуем всем";
Попытка Документ = MSWord.Application.Documents(1); Документ.Activate();
// Получить объект, который будем использовать для поиска и замены. Замена = Документ.Content.Find;
// Заменить заранее определенные ключевые конструкции на требуемый текст. Замена.Execute("<НазваниеКомпании>", Ложь, Истина, Ложь, , , Истина, , Ложь, НаименованиеКонтрагента);
// Далее аналогично для остальных ключевых конструкций.
// Делаем видимым приложение и активизируем его. MSWord.Application.Visible = Истина; MSWord.Activate();
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки()); MSWord.Application.Quit();
КонецПопытки;
Работа с Интернет
Работа с электронной почтой
Как организовать работу с электронной почтой через установленного почтового клиента?
Почта = Новый Почта; Почта.Подключиться("login", "password");
Сообщ = Новый ПочтовоеСообщение; Сообщ.Текст = "Доброе время суток!!!!"; Сообщ.Тема = "Срочно в номер!!!";
Почта = Новый Почта; Почта.Подключиться("login", "password");
Выборка = Почта.Выбрать(Истина, Ложь); Для Каждого Сообщение Из Выборка Цикл Сообщить("Тема: " + Строка(Сообщение.Тема)); Сообщить("Текст: " + Строка(Сообщение.Текст));
Для Каждого Вложение Из Сообщение.Вложения Цикл Сообщить(Строка(Вложение.Наименование)); КонецЦикла; КонецЦикла;
Как организовать работу с почтой без установленного почтового клиента на компьютере пользователя?
// Сформировать почтовый профиль. // При отправке нет необходимости указывать настройки, связанные с POP сервером. ИПП = Новый ИнтернетПочтовыйПрофиль; ИПП.АдресСервераSMTP = Константы.АдресСервераSMTP.Получить(); ИПП.ВремяОжидания = Константы.ВремяОжидания.Получить(); ИПП.Пароль = Константы.Пароль.Получить(); ИПП.ПарольSMTP = Константы.ПарольSMTP.Получить(); ИПП.Пользователь = Константы.Пользователь.Получить(); ИПП.ПользовательSMTP = Константы.ПользовательSMTP.Получить(); ИПП.ПортSMTP = Константы.ПортSMTP.Получить();
// Создать сообщение. Сообщение = Новый ИнтернетПочтовоеСообщение; Сообщение.Получатели.Добавить("hline@1c.ru"); Сообщение.Отправитель.Адрес = "booktest@yandexyandex.ru"; Сообщение.Тема = "Срочно в номер!"; Сообщение.Тексты.Добавить("Доброе время суток!");
Вложение = Новый ДвоичныеДанные(ПутьКФайлуВложения);
// Подключиться и отправить. Почта = Новый ИнтернетПочта; Почта.Подключиться(Профиль); Почта.Послать(Сообщение); Почта.Отключиться();
// Формирование почтового профиля. // При получении нет необходимости указывать настройки, связанные с SMTP сервером. СостояниеПриема = "Подключение к серверу"; ИПП = Новый ИнтернетПочтовыйПрофиль; ИПП.АдресСервераPOP3 = Константы.АдресСервераPOP3.Получить(); ИПП.ВремяОжидания = Константы.ВремяОжидания.Получить(); ИПП.Пароль = Константы.Пароль.Получить(); ИПП.Пользователь = Константы.Пользователь.Получить(); ИПП.ПортPOP3 = Константы.ПортPOP3.Получить();
Соединение = Новый ИнтернетПочта; Соединение.Подключиться(ИПП); СостояниеПриема = "Получение выборки писем"; Выборка = Соединение.Выбрать(ЗабиратьССервера); СостояниеПриема = "Создание документов - писем"; КоличествоВВыборке = Выборка.Количество(); Индекс = 1;
Для Каждого Письмо Из Выборка Цикл ТекПозиция = Окр(Индекс*100/КоличествоВВыборке); Если ТекПозиция <> Позиция Тогда Позиция = ТекПозиция; КонецЕсли;
Док = Документы.Письмо.СоздатьДокумент(); Док.Тема = Письмо.Тема; СтрПолучатели = "";
Для Каждого Адрес Из Письмо.Получатели Цикл СтрПолучатели = СтрПолучатели + Адрес.Адрес + ","; КонецЦикла;
Док.Получатели = СтрПолучатели; Если ТипЗнч(Письмо.Отправитель) = Тип("Строка") Тогда Отправитель = Письмо.Отправитель; Иначе Отправитель = Письмо.Отправитель.Адрес; КонецЕсли;
Док.Отправитель = Отправитель; Содержание = "";
Для Каждого ТекстСообщения Из Письмо.Тексты Цикл Содержание = Содержание + ТекстСообщения.Текст + Символы.ПС; КонецЦикла;
Док.Содержание = Содержание;
Индекс = Индекс + 1;
Док.Записать(); КонецЦикла;
Соединение.Отключиться();
Работа с файлами
Загрузка файлов по FTP
Процедура ЗагрузитьОтмеченные(Кнопка)
Сервер = Новый FTPСоединение(FTPServer);
Для Каждого Файл Из ПолеСписка Цикл Если Файл.Пометка Тогда Сервер.Получить(Файл.Значение.ПолноеИмя, "с:\temp" + Файл.Значение.ПолноеИмя); Файл.Пометка = Ложь; КонецЕсли; КонецЦикла;
КонецПроцедуры
Процедура Просмотреть(Кнопка)
Сервер = Новый FTPСоединение(FTPServer); МассивФайлов = Сервер.НайтиФайлы("/","*.*");
Для Каждого Файл Из МассивФайлов Цикл Если Файл.ЭтоФайл() Тогда ПолеСписка.Добавить(Файл, Файл.Имя) КонецЕсли; КонецЦикла;
КонецПроцедуры
Выполнение HTTP запроса
СерверИсточник = HTTPserver; Адрес = "/price.asp"; ИмяВходящегоФайла = "c:\temp\input.html"; НТТР = Новый HTTPСоединение(СерверИсточник); НТТР.Получить(Адрес, ИмяВходящегоФайла); ВходящийФайл = Новый Файл(ИмяВходящегоФайла);
Как установить HTTP соединение если подключение через прокси (proxy) сервер
СерверИсточник = "www.cennic-etiketka.com"; Адрес = "/price.asp"; ИмяВходящегоФайла = "c:\temp\input.html"; // Укажем в HTTP соединении что у нас есть проксик НТТР = Новый HTTPСоединение(СерверИсточник,,,, ПроксиСервер); НТТР.Получить(Адрес, ИмяВходящегоФайла); ВходящийФайл = Новый Файл(ИмяВходящегоФайла);
Работа с COM-объектами
Как из одной базы 1С:Предприятие 8.0 перенести остатки товаров в другую базу, используя COM-соединение.
Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ОстаткиТоваровОрганизацийОстатки.Организация КАК Организация, | ОстаткиТоваровОрганизацийОстатки.Номенклатура, | ОстаткиТоваровОрганизацийОстатки.ГТДОрганизации, | ОстаткиТоваровОрганизацийОстатки.СтранаПроисхождения, | ОстаткиТоваровОрганизацийОстатки.Комиссионер, | ОстаткиТоваровОрганизацийОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ОстаткиТоваровОрганизаций.Остатки(&ДатаПереноса, ) | КАК ОстаткиТоваровОрганизацийОстатки |ИТОГИ ПО | Организация";
V8 = Новый COMОбъект("V8.ComConnector"); Попытка Открытие = V8.Connect("File=""" + Путь + """;Usr=""Usr1"";"); Исключение Предупреждение("База данных не открыта!!!"); Возврат; КонецПопытки;
Пока Выборка.Следующий() Цикл Документ = МенеджерДокумента.СоздатьДокумент(); Код = Выборка.Организация.Код; Организация = МенеджерОрганизаций.НайтиПоКоду(Код); Если Организация.Пустая() Тогда Организация = МенеджерОрганизаций.СоздатьЭлемент(); Организация.Код = Код;
// Остальные реквизиты:
Организация.Записать(); КонецЕсли;
// Обработка остальных реквизитов, справочников:
ВыборкаПодчиненная = Выборка.Выбрать(); Пока ВыборкаПодчиненная.Следующий() Цикл
// Поиск/перенос данных справочников // заполнение табличной части документа
Пример обращения к программе 1С:Предприятие 8.0 из модуля MS Excel через COM-соединение
Sub load()
Dim cntr As Object Dim trade As Object Dim Элемент As Object Dim СправочникКонтрагентов As Object Dim ГруппаКонтрагентов As Object
Set cntr = CreateObject("V8.COMConnector") Set trade = cntr.Connect("File=""C:\DemoTrd4"";Usr=""Федоров (администратор)"";") Set СправочникКонтрагентов = trade.Справочники.Контрагенты Set ГруппаКонтрагентов = СправочникКонтрагентов.СоздатьГруппу() ГруппаКонтрагентов.Наименование = "***** Экспорт из Excel ******" ГруппаКонтрагентов.Записать
N = 11 'Количество строк в списке поставщиков
For Count = 3 To N Set Элемент = СправочникКонтрагентов.СоздатьЭлемент() Элемент.Код = Application.Cells(Count, 1).Value Элемент.Наименование = Application.Cells(Count, 2).Value Элемент.ИНН = Application.Cells(Count, 3).Value Элемент.НаименованиеПолное = Application.Cells(Count, 4).Value Элемент.Родитель = ГруппаКонтрагентов.Ссылка Элемент.Записать Next Count End Sub
Как организовать считывание данных из файлов *.xls?
Док = ПолучитьCOMОбъект(Путь + "ценыконкурентов.xls"); КоличествоСтраниц = 2;
Для ТекНомер = 1 По КоличествоСтраниц Цикл Контрагент = Док.Sheets(ТекНомер).Cells(1,1).Value; Товар = Док.Sheets(ТекНомер).Cells(2,2).Value; Цена = Док.Sheets(ТекНомер).Cells(2,3).Value;
// можно использовать другой признак окончания данных на листе Пока СокрЛП(Товар) <> "" Цикл Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value; Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value; Сообщить(Строка(Товар) + "-" + Строка(Цена)); счСтроки = счСтроки + 1; КонецЦикла; КонецЦикла;
Док.Application.Quit();
Как запустить макрос, записанный в книге Microsoft Excel?
Попытка
// Создать объект. Excel = Новый COMОбъект("Excel.Application");
Исключение Сообщить("Не удалось инициализировать Excel"); Возврат; КонецПопытки;
Попытка
// В реальном примере путь может быть совершенно другим. Excel.Workbooks.Open("c:\doc.xls");
// Запустить макрос с именем "Оформление". Excel.Run("Оформление"); Excel.Visible = Истина;
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки()); Excel.Quit(); КонецПопытки;
Как создать документ программы Microsoft Excel по оформлению, приведенному в другом документе?
Попытка
// Создать объект. Excel = Новый COMОбъект("Excel.Application");
Исключение Сообщить("Не удалось инициализировать Excel"); Возврат; КонецПопытки;
Попытка
// Если при отработке следующего фрагмента кода произойдет ошибка // объект "Excel.Application" будет закрыт.
// Создать новую книгу (в нее будем записывать данные). Excel.Application.Workbooks.Add(1); НомерКниги = Excel.Workbooks.Count; КнигаНовая = Excel.Workbooks.Item(НомерКниги); ЛистНовый = Excel.ActiveSheet;
// Установить ширину колонки в новой книге. ЛистНовый.Columns("B").ColumnWidth = 40;
// Копировать область из книги-шаблона в новую книгу. Лист.Range("Шапка").Copy(ЛистНовый.Range("A1:E3")); ЛистНовый.Cells(1, 1).Value = "Наименование контрагента";
// Считаем, что в нашем случае необходимо сформировать только // две строки табличной части Для НомерСтроки = 1 По 2 Цикл Лист.Range("Строка").Copy(ЛистНовый.Range(ЛистНовый.Cells(3 + НомерСтроки,1), ЛистНовый.Cells(3 + НомерСтроки, 5)));
// Записать значение в ячейку листа новой таблицы // в реальном примере данные будут браться из информационной базы ЛистНовый.Cells(3 + НомерСтроки, 1).Value = НомерСтроки; ЛистНовый.Cells(3 + НомерСтроки, 2).Value = "Наименование номенклатурной позиции " + Строка(НомерСтроки); ЛистНовый.Cells(3 + НомерСтроки, 3).Value = НомерСтроки; ЛистНовый.Cells(3 + НомерСтроки, 4).Value = НомерСтроки; ЛистНовый.Cells(3 + НомерСтроки, 5).Value = НомерСтроки; КонецЦикла;
Как выгрузить прайс-лист в документ программы Microsoft Word?
Попытка MSWord = Новый COMОбъект("Word.Application"); Исключение Сообщить("Не удалось инициализировать Microsoft Word"); Возврат; КонецПопытки;
Запрос = Новый Запрос;
// Получить данные для формируемого прайс-листа. Запрос.Текст = "ВЫБРАТЬ | ЦеныКомпанииСрезПоследних.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения, | ЦеныКомпанииСрезПоследних.Цена, | ЦеныКомпанииСрезПоследних.Номенклатура.Наименование КАК Номенклатура, | 1 КАК Количество |ИЗ | РегистрСведений.ЦеныКомпании.СрезПоследних(&Дата, ТипЦен = &ТипЦен) | КАК ЦеныКомпанииСрезПоследних |УПОРЯДОЧИТЬ ПО | Номенклатура |ИТОГИ Количество(Количество) ПО | ОБЩИЕ";
// Создать новый документ MSWord.Documents.Add(); Документ = MSWord.ActiveDocument();
// Добавить новый параграф в созданный документ. Документ.Paragraphs.Add(); НомерПараграфа = Документ.Paragraphs.Count(); Параграф = Документ.Paragraphs.Item(НомерПараграфа);
// В созданный параграф вставить новый "диапазон" // и разместить в нем текст "Прайс-Лист". Параграф.Range.InsertAfter("Прайс-Лист");
// Установить стиль параграфа "Заголовок 1" (он должен быть определен). Параграф.Range.Style="Заголовок 1";
// Вставить таблицу с количеством строк равным количеству записей // в выборке результата запроса и с тремя колонками Документ.Tables.Add(Параграф.Range, КоличествоСтрок, 3);
// Получить таблицу как объект в отдельную переменную // учитывая тот факт, что таблица у нас единственная Таблица = Документ.Tables.Item(1);
// Записать данные в ячейку таблицы строка №1, колонка №1 Таблица.Cell(1,1).Range().InsertAfter("Номенклатура");
// Установить цвет фона в ячейке Таблица.Cell(1,1).Shading.BackgroundPatternColor = 16776960; Таблица.Cell(1,2).Range().InsertAfter("Цена"); Таблица.Cell(1,2).Shading.BackgroundPatternColor = 16776960; Таблица.Cell(1,3).Range().InsertAfter("Ед.Изм."); Таблица.Cell(1,3).Shading.BackgroundPatternColor = 16776960;
НомерСтроки = 1;
Выборка = ВыборкаКоличества.Выбрать(); Пока Выборка.Следующий() Цикл НомерСтроки = НомерСтроки + 1; Таблица.Cell(НомерСтроки,1).Range().InsertAfter(Выборка.Номенклатура); Таблица.Cell(НомерСтроки,2).Range().InsertAfter(Строка(Выборка.Цена)); Таблица.Cell(НомерСтроки,3).Range().InsertAfter(Выборка.ЕдиницаИзмерения); КонецЦикла;
MSWord.Visible = Истина; MSWord.Activate();
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается. Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки;
Как выполнить запрос к произвольной базе данных SQL?
Как из таблицы Excel загрузить список номенклатуры в 1С:Предприятие с возможностью редактирования?
Sub load() Dim trade As Object Dim СправочникНоменклатуры As Object Dim ГруппаНоменклатуры As Object Dim Элемент As Object Dim Форма As Object Set trade = CreateObject("V8.Application") trade.Connect("File=""C:\DemoTrd4"";Usr=""Федоров (администратор)"";") Set СправочникНоменклатуры = trade.Справочники.Номенклатура Set ГруппаНоменклатуры = СправочникНоменклатуры.СоздатьГруппу() ГруппаНоменклатуры.Наименование = "***** Экспорт из Excel ******" ГруппаНоменклатуры.Записать N = 4 'Количество загружаемых элементов справочника For Count = 2 To 5 Set Элемент = СправочникНоменклатуры.СоздатьЭлемент() Элемент.Код = Application.Cells(Count, 1).Value Элемент.Артикул = Application.Cells(Count, 2).Value Элемент.Наименование = Application.Cells(Count, 3).Value Элемент.НаименованиеПолное = Application.Cells(Count, 4).Value Элемент.Родитель = ГруппаНоменклатуры.Ссылка Set Форма = Элемент.ПолучитьФорму() Форма.ОткрытьМодально Next Count End Sub
Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда Если ЭлементДанных.Склад <> Склад Тогда ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить; КонецЕсли; КонецЕсли;
Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда Если ПланыОбмена.ИзменениеЗарегистрировано(Ссылка, ЭлементДанных) Тогда ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать; КонецЕсли; КонецЕсли;
КонецПроцедуры
Как при создании начального образа управлять тем, какие виды объектов перегружаются, а какие нет?
// Проверить "ненужные типы", условие может содержать проверку // на несколько типов. Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить; КонецЕсли; КонецЕсли;
КонецПроцедуры
Как просмотреть объекты, для которых зарегистрированы изменения?
Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗапСообщения.НомерСообщения); Пока Выборка.Следующий() Цикл Данные = Выборка.Получить(); Сообщить(Данные); КонецЦикла;
ЗапСообщения.ПрерватьЗапись();
Стр = ЗаписьXML.Закрыть();
Как организовать обмен данными между произвольными конфигурациями 1С:Предприятие 8.0?
Процедура Выгрузка(Элемент)
Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы
ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл(Путь + "выгрузка.xml"); Узел = ПланыОбмена.Поставка.НайтиПоКоду("Маг1");
Если ТипXML = Неопределено Тогда Возврат Ложь; КонецЕсли;
Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И ТипXML.URIПространстваИмен = "" Тогда Возврат Истина; КонецЕсли;
Возврат ВозможностьЧтенияXML(ЧтениеXML);
КонецФункции
Функция ПрочитатьДанные(ЧтениеXML)
ТипXML = ПолучитьXMLТип(ЧтениеXML);
Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И ТипXML.URIПространстваИмен = "" Тогда Возврат ЧтениеРеализации(ЧтениеXML); КонецЕсли;
Возврат ПрочитатьXML(ЧтениеXML);
КонецФункции
Функция ЧтениеРеализации(ЧтениеXML)
ЧтениеXML.Прочитать();
// Работа со ссылкой документа. ПолученнаяСсылка = ПрочитатьXML(ЧтениеXML); Док = Документы.ПоступлениеТоваров.ПолучитьСсылку( Новый УникальныйИдентификатор(ПолученнаяСсылка));
Документ = Док.ПолучитьОбъект();
Если Документ = Неопределено Тогда Документ = Документы.ПоступлениеТоваров.СоздатьДокумент(); Документ.УстановитьСсылкуНового(Док); Документ.Дата = ТекущаяДата; Документ.УстановитьНовыйНомер(); КонецЕсли;
СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1"); ДокСсылка = Документы.РеализацияТоваров.НайтиПоНомеру(НомерДок, ДатаПериода); Если Не ДокСсылка.Пустая() Тогда ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, ДокСсылка); КонецЕсли;
WEB-расширение
Как в форме списка номенклатуры отменить все установленные отборы?
Как открыть список расходных накладных с отбором, установленным по определенному складу?
Функция ПолучитьЗначениеПоУмолчанию(Пользователь, Свойство) Экспорт
Отбор = Новый Структура; Отбор.Вставить("Пользователь", Пользователь); Отбор.Вставить("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоНаименованию(Свойство));
Результат = РегистрыСведений.НастройкиПользователей.Получить(Отбор); Возврат Результат.Значение;
КонецФункции
private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { Title.Text = ListDataSource.TableInfo.Presentation; // Добавляемый код. ListDataSource.Connection.Open(); try { ObjectRef currUser = (ObjectRef)V8.Get (ListDataSource.Connection,ListDataSource.Connection.Connection, "глТекущийПользователь"); ObjectRef mainWH = (ObjectRef)V8.Call (ListDataSource.Connection,ListDataSource.Connection.Connection, "ПолучитьЗначениеПоУмолчанию", currUser, "ОсновнойСклад"); if (!mainWH.IsEmpty()) { V8Filter filter = ListDataSource.Filter["Склад"]; filter.Checked = true; filter.Condition = V8FilterCondition.Equal; filter.ValueType1 = ListDataSource.Metadata.TypesInfo[V8.TypeNameFromValue(mainWH)]; filter.Value1 = mainWH; filter.Presentation1 = mainWH.Presentation(ListDataSource.Connection); } } finally { ListDataSource.Connection.Close(); } } } using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using _1C.V8.WebControls; using _1C.V8.Data;
Как добавить кнопку для ввода документа на основании?
// Читаем значение ключа StartDate из ветки // HKEY_CURRENT_USER\Software\1C\1Cv8\Report в переменную Значение RegProv.GetStringValue("2147483649","Software\1C\1Cv8\Report","StartDate",Значение);
Как сохранить значение в реестр Windows?
// Создадим ключ, установив значение в текущую дату RegProv.CreateKey("2147483649","Software\1C\1Cv8\Report"); // создание раздела
// установка значения для ключа RegProv.SetStringValue("2147483649","Software\1C\1Cv8\Report","StartDate", Строка(Формат(ТекущаяДата(),"ДФ=ггггММддЧЧммсс")));
Единственное что осталось - это если Контрагент не заполнено, при начале отбора Договора показывать список контрагентов, а не список всехвсех договоров.
Я набросал простой отчет по регистру продажи. При заполнении отбора по договору - выскакивает форма выбора контрагента, а потом список договоров по этому контрагенту. Если посмотреть код, можно это увидеть:
Процедура ПриОткрытии()
//...
Если РежимВыбора И НЕ ЗначениеЗаполнено(Отбор.Владелец.Значение) Тогда ФормаВыбораВладельца = Справочники.Контрагенты.ПолучитьФормуВыбора(); ФормаВыбораВладельца.Заголовок = "Выберите контрагента, договор которого Вы хотите выбрать."; Контрагент = ФормаВыбораВладельца.ОткрытьМодально(); Если ТипЗнч(Контрагент) = ТипЗнч(Отбор.Владелец.Значение) Тогда Отбор.Владелец.Значение = Контрагент; КонецЕсли; Отбор.Владелец.Использование = ЗначениеЗаполнено(Отбор.Владелец.Значение); КонецЕсли;
//...
КонецПроцедуры
Поэтому добавить такое же в свою форму выбора да и всё.
Цитата
Вот думаю может написать отдельную ФормуВыбора для этого случая?
Вот нашёл в сети, но у меня (для не управляемого приложения) так не получилось:
Цитата
Могу предложить вариант для режима управляемого приложения (форма отчета должна быть управляемой).
1) в макете компоновки, на закладке "наборы данных" для "подчиненного" поля, например "ДоговорыКонтрагентов" надо перейти в поле "Параметры редактирования"; 2) в поле "Параметры редактирования" открыть форму настройки и перейти в строку (поле) "связи параметров выбора"; 3) в поле "Связи параметров выбора" настроить связь - открыть окно настройки (еще одно ) и в колонке "Параметр выбора" ввести Отбор.Владелец. Далее, в следующем поле "Поле" указать поле СКД, по которому будет определяться владелец при установке отбора, например поле "Контрагент". Естественно поле владельца должно присутствовать среди доступных полей компоновки
вводит какие то ограничения (тут мы проверяем наличие и контролируем остатки, а тут нам уже по барабану - это типа ваши проблемы).
По хорошему - это запретить вообще проведение задним числом. Но 1С даёт нам такую возможность. И пользоваться ней необходимо на свой страх и риск!
А проверять что-то в неоперативном режиме - не представляет никакой логики: 1. На вчера, на начало дня есть 10 единиц остатков; 2. Сегодня их списали (продали, выбросили, подарили кому-то); 3. Сегодя проводим документ на списание этих же остатков но! задним числом. Вопрос: и что нам даёт этот контроль?
1С нам даёт оооочень гибкий инструмент, в отличии от иностранных ЕРП систем. А понимаени и умение им пользоваться - это уже другой вопрос.
Цитата
тут должен быть смайлик чертика, но его нет к сожалению
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!