хуй

antipodarok


Антиподарок

аренда подъемников


Самогонный аппарат Финляндия (Finlandia), она же Термосфера, Патриот, Горыныч, Добрый Жар Люкс
хуй
antipodarok
Заморочился я тут приобретением самогонного аппарата. Пару дней порылся в интернете и в конце декабря 2014 купил себе любимому вот тут: http://finkapro.ru/ новогодний подарок с 15-литровым баком (он же перегонный куб), за 16 150 руб. (15 950 рублей за аппарат и еще 200 за спиртометр). Привезли быстро, аппарат с виду выглядит охрененно, гнать еще не пробовал.

Сайт у них красивый, как я и люблю. Пишут, что аппарат финский, сертификаты финские висят..

finkapro.ru

А сегодня начал искать видео в интернетах, ну, чтобы получить восторженные отзывы от таких же счастливых обладателей этого чуда, а их нет.. Думаю, ну, наверное новый прибор, еще не успели..

И тут же натыкаюсь на мой же аппарат, только называется он Термосфера, а никакая не FINLANDIA "самогонный аппарат №1 в Европе!" и стоит дешевле, 13 800 руб!

Ну ладно, думаю, сайт-то у этой Термосферы не такой красивый как у "Финляндии", ребятки вложились, должны отбить красивые картинки.

termosfera.tv

Еще немного покопался в интернете и снова нашел свой самогонный аппарат, но уже с названием "Добрый Жар Люкс"! За 12 450 руб! И вот тут обида: с удобной сумкой для хранения.

dobriy-jar.ru

Короче, для чего все это я пишу? Да просто так, чтобы всем, кто захочет себе такой же, проще было разобраться))

Потому что есть еще самогонный аппарат Горыныч за 13 000 рублей.

И самогонный аппарат Патриот за 11 900 рублей, правда 12-литровый куб, 15 л не нашел у них на сайте..

Короче, как че-нибудь выгоню, обязательно отчитаюсь!

(no subject)
хуй
antipodarok
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| БУОсновныеНачисления.Результат
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
|ГДЕ
| БУОсновныеНачисления.ПериодРегистрации = &Период
| И
| БУОсновныеНачисления.ФизЛицо = &ФизЛицо
| И
| БУОсновныеНачисления.ВидРасчета = &ВидРасчета";

Запрос.УстановитьПараметр("Период", НачалоМесяца(Период1));
Запрос.УстановитьПараметр("ВидРасчета", ВидРасчета);
Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);



ВЫБРАТЬ
БУОсновныеНачисления.Организация КАК Организация,
ПРЕДСТАВЛЕНИЕ(БУОсновныеНачисления.Организация),
БУОсновныеНачисления.ВидРасчета,
ПРЕДСТАВЛЕНИЕ(БУОсновныеНачисления.ВидРасчета),
БУОсновныеНачисления.Результат КАК Результат,
""Основные"" КАК ВариантНачислений
ИЗ
РегистрРасчета.БУОсновныеНачисления КАК БУОсновныеНачисления
ГДЕ
БУОсновныеНачисления.ПериодРегистрации = &НужныйПериод И БУОсновныеНачисления.ФизЛицо = &ФизЛицо

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
БУДополнительныеНачисления.Организация,
ПРЕДСТАВЛЕНИЕ(БУДополнительныеНачисления.Организация),
БУДополнительныеНачисления.ВидРасчета,
ПРЕДСТАВЛЕНИЕ(БУДополнительныеНачисления.ВидРасчета),
БУДополнительныеНачисления.Результат,
""Дополнительные""
ИЗ
РегистрРасчета.БУДополнительныеНачисления КАК БУДополнительныеНачисления
ГДЕ
БУДополнительныеНачисления.ПериодРегистрации =
&НужныйПериод И БУДополнительныеНачисления.ФизЛицо = &ФизЛицо
ИТОГИ СУММА(Результат)
ПО ОБЩИЕ, Организация, ВариантНачислений

Восстановление root
хуй
antipodarok
fsck -fy
mount -uw /
launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist
dscl . -passwd /Users/username password (замените username на ваше имя и password на нужный вам пароль.
reboot

Изменяем или восстанавливаем забытый пароль при помощи консоли в однопользовательском режиме.

И так, мы уверены что с файловой системой всё OK, а пароль был забыт/утерян из-за дырявой головы. Приступаем…

1. Перезагружаем Mac и сразу после «гонга» зажимаем клавиши Cmd+S на клавиатуре. Если успели это сделать (и сделали это правильно) должен отобразиться чёрный экран (консоль) — это и есть однопользовательский режим (single user mode) в Mac OS X. После знака приветствия (#) начинаем шаманить (после каждой команды нужно жать Enter):

2. Монтируем корневую директорию системы: mount -uw /

3. Смотрим какие пользователи вобще имеются на компьютере. Выполняем команду: ls /Users

4. Нашли себя? — Хорошо. Задаём новый пароль: passwd imya_polzovatelya где imya_polzovatelya — это имя учётки. Стоит обратить внимание на то, что вводимый пароль отображаться не будет. Вобще никак. Так что будьте внимательными, когда вводите новый пароль! Ввели пароль? — Жмём Enter.

5. Перезагружаемся такой командой: reboot С этим способом всё.


Следующий способ аналогичный предыдущему, но немного расширенный. Выполняется так же при помощи консоли в однопользовательском режиме.

1. Перезагружаем Mac и сразу после «гонга» зажимаем клавиши Cmd+S на клавиатуре. После знака приветствия (#) начинаем шаманить, то есть последовательно выполнять команды (после каждой команды нужно жать Enter):

2. Возможно пароль слетел из-за сбоя файловой системы, поэтому перед манипуляциями лучше выполнить проверку файловой системы на ошибки: fsck -fy

3. Монтируем корневую директорию системы на чтение/запись: mount -uw /

4. Загружаем DirectoryServices: launchctl load /System/Library/LaunchDaemons com.apple.DirectoryServices.plist

5. Смотрим какие пользователи имеются на компьютере такой командой: ls /Users

6. Нашли себя? — ОК. Задаём новый пароль: dscl . -passwd /Users/imya-polzovatelya noviy-parol где imya_polzovatelya — это имя учётки, а noviy-parol — новый пароль :) Жмём Enter.

7. Перезагружаемся командой: reboot И с этим способом тоже всё.

Tags:

Регистры сведений
хуй
antipodarok
регистры сведений предназначены для хранения информации, развернутой по комбинации измерений. Главное отличие периодического регистра сведений от обычного заключается в том, что в нем присутствует дополнительное системное измерение "Период", имеющее тип "дата". Это позволяет получать не только текущие сведения об объекте, но также на любой момент времени.

Для периодического реквизита при создании указывается свойство "Периодичность" из следующих возможных значений:
- в пределах секунды,
- в пределах дня,
- в пределах месяца,
- в пределах квартала,
- в пределах года,
- по позиции регистратора (доступен, если режим записи у регистра — «Подчинение регистратору»).

Обратите внимание, что тип ресурса сведений может быть как примитивный (число, строка, дата, булево), так и ссылочный (СправочникСсылка, ДокументСсылка, ПеречислениеСсылка и т.д.). Более того, в регистре сведений можно хранить даже картинки и другие неструктурированные сведения, поскольку можно создать ресурс типа "ХранилищеЗначения".

Самый простой пример периодического регистра сведений — КурсыВалют. Этот регистр сведений хранит курсы всех валют на каждый день.

Подробная информация о структуре регистра сведений КурсыВалют приведена в следующей таблице:
Измерения:          Валюты                              тип "СправочникСсылка.Валюты", ведущее, запрет незаполненных значений
Ресурсы:             Курс                                  тип "число", длина 15, точность 4, неотрицательное
                          Кратность                           тип "число", длина 10, точность 0, неотрицательное
Периодичность     В пределах дня
Режим записи       Независимый


Данные в этот регистр сведений можно вводить вручную с помощью формы списка.
ВНИМАНИЕ. В регистр сведений с определенной периодичностью, не равной "По позиции регистратору", нельзя ввести две записи с одинаковым набором измерений и периодом, т.е. нельзя ввести два курса одной валюты в один день. Если периодичность записи регистра имеет значение "По позиции регистратора", то ключ уникальности записи также содержит и ссылку на документ-регистратор, т.е. в таком регистре не может существовать две записи с одинаковым набором измерений, периодом и регистратором. Это неотъемлемое свойство регистра сведений, отличающее его от остальных регистров.
Добавление новых записей в регистр сведений, а также перебор имеющихся записей производится стандартным для всех регистров способом. В данном разделе мы рассмотрим только самое важное
— получение информации из периодического регистра на определенный момент времени.

Обращение к периодическим сведениям с помощью методов
Объект РегистрСведенийМенеджер позволяет обращаться к «итогам» регистра. Под «итогами» периодического регистра сведений понимаются первые или последние значения ресурсов по указанным измерениям. При этом применяются следующие методы:

Получить (<Период>, <Отбор>)
Возвращает в виде структуры значения ресурсов одной записи регистра, соответствующей указанным значениям всех (!) измерений регистра и периоду.
ПолучитьПоследнее (<Конец периода>, <Отбор>)
Этот метод возвращает актуальное значение ресурсов, действовавшее на заданную дату. Если он не находит запись в регистре по данной комбинации измерений точно на заданный период, то возвращается структура, содержащая значения ресурсов ближайшей более поздней записи.
ПолучитьПервое (<Начало периода>, <Отбор>)
Этот метод действует аналогично методу ПолучитьПоследнее, но если записи на данный момент не находится, то возвращается структура, содержащая значения ресурсов ближайшей более ранней записи.
СрезПоследних (<Конец периода>, <Отбор>)
Эти методы аналогичны методам ПолучитьПоследнее и ПолучитьПервое соответственно , но при их использовании, как правило, не указывается одно или несколько измерений. В результате возвращается не структура, как в предыдущих случаях, а таблица значений, заполненная данными найденных записей регистра сведений.

При вызове методов ПолучитьПервое, ПолучитьПоследнее, СрезПервых и СрезПоследних первый параметр может иметь тип "дата", МоментВремени или Граница, но его можно вообще не указывать, тогда будут найдены значения ресурсов из самой первой или последней записи регистра соответственно.

Продемонстрируем использование этих методов на примерах:

Пример 1. Получение курса валюты точно на заданную дату (если записи именно на эту дату нет, то в элементах структуры будут пустые значения).


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



Пример 2. Получение актуального курса валюты на заданную дату (если записи именно на эту дату нет, то будет найдена ближайшая более поздняя запись)


ВалютаОтбор = Новый Структура("Валюта", ВыбВалюта);
СтруктураКурсКратность = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ВыбДата, ВалютаОтбор);
Сообщить("Актуальный курс на заданную дату: " + СтруктураКурсКратность.Курс);



Пример 3. Получение актуальных курсов всех валют на заданную дату (отбор не указан, т.е. мы хотим получить сведения по всем значениям измерений).


тзДанные = РегистрыСведений.КурсыВалют.СрезПоследних(ВыбДата, );
Для Каждого Стр Из тзДанные Цикл
Сообщить("Для валюты " + Строка(Стр.Валюта) + " курс на заданную дату: " + Строка(Стр.Курс) + ", кратность: " + Строка(Стр.Кратность));
КонецЦикла;



Пример 4. Получение актуальных оптовых цен на товары (указан отбор по измерению "ТипЦен")


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




Обращение к периодическим сведениям с помощью запросов

Для получения данной информации служит виртуальная таблица среза последних/первых записей регистра сведений. По структуре она полностью идентична основной таблице регистра сведений и содержит следующие поля:
<Имя измерения> - Набор полей, содержащий значения измерений регистра. Имена полей соответствуют именам измерений.
<Имя реквизита> - Набор полей, содержащий значения реквизитов регистра.
<Имя ресурса> - Набор полей, который содержит значения ресурсов регистра.
Активность - Содержит признак активности записи. Записи, для которых значение данного свойства установлено в Ложь, не будут учитываться при получении «первых» или «последних» записей регистра, а также при получении сведений на определенный момент времени.
МоментВремени  - Содержит момент времени записи регистра.
НомерСтроки -  Содержит номер строки, определяемый как порядковый номер записи в наборе записей.
Период -  Содержит период, к которому относится запись регистра.
Регистратор -  Содержит ссылку на документ-регистратор движения.

При обращении к виртуальным таблицам СрезПервых и СрезПоследних можно указать следующие параметры:

Дата - Указывается дата или момент времени, на которые будут получены сведения. Если параметр не задан, будут выбираться наиболее поздние/ранние записи.
Условие - Указывается условие на языке запросов. Оно будет использовано для ограничения состава записей, среди которых будут выбираться наиболее поздние/ранние. Условие будет применяться к исходным записям, а не к уже отобранным.

Приведем примеры обращения к записям регистра сведений с помощью запросов:

Пример 1. Выбрать все записи регистра сведений


ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют



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


ВЫБРАТЬ Валюта, Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата, Валюта = &ВыбВалюта);



Пример 3. Выбрать актуальные курсы всех валют на заданную дату


ВЫБРАТЬ Валюта, Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ВыбДата);



Пример 4. Получить актуальный прайс-лист на заданную дату (указан определенный тип цен, например, "Розничная")


ВЫБРАТЬ Номенклатура, Цена
ИЗ РегистрСведений.ЦеныКомпании.СрезПоследних(&ВыбДата, ТипЦен=&ВыбТипЦен);




Резюме
- Периодический регистр сведений является мощным инструментом для хранения истории изменения практически любой информации.
- Периодичность регистра сведений может изменяться в широких пределах: от позиции документа-регистратора (минимальная периодичность) до года (максимальная периодичность). В 1С:Предприятии 8 есть также непериодические регистры сведений.
- Тип ресурсов регистра сведений может быть примитивный (число, строка, дата, булево), ссылочный (ссылка на элемент справочника, документ, значение перечисления) или ХранилищеЗначения.
- Периодический регистр сведений может выдавать значения ресурсов точно на заданную дату, наиболее позднее или наиболее раннее значение на заданную дату или срез первых и срез последних на определенную дату по заданным значениям измерениям.
- Обращение к данным регистра сведений возможно как с помощью методов, так и с помощью запросов.

Добавить записи в регистр сведений, подчиненный регистратору
хуй
antipodarok
Как добавить записи в регистр сведений, подчиненный регистратору?

Если регистр сведений подчинен регистратору, то для добавления записей в него необходимо создать набор записей этого регистра с установленным отбором по нужному регистратору, заполнить этот набор записей и записать его (листинг 3.100):

Листинг 3.100. Добавление записей в регистр, подчиненный регистратору (замещение)

НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПоставщика = 50;
НаборЗаписей.Записать();




По умолчанию запись выполняется с замещением, т. е. существующие записи этого регистратора в регистре сведений будут удалены.

Для того чтобы добавить записи к существующим записям регистратора, необходимо указывать значение Ложь параметра метода Записать() набора записей. При этом необходимо позаботиться о том, чтобы значения измерений добавляемых записей были уникальны для записей данного регистратора в регистре сведений, иначе запись выполнена не будет (листинг 3.101):

Листинг 3.101. Добавление записей в регистр, подчиненный регистратору

НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПокупателю = 25;
НаборЗаписей.Записать(Ложь);

Менеджер записи

Процедура ПереопределитьЦеныНажатие(Элемент)
// Подготовить менеджер записи
Запись = РегистрыСведений.ПерсонифицированныйПрайс.СоздатьМенеджерЗаписи();
// Получить данные записей, соответствующих условиям
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ПерсонифицированныйПрайс.Период,
| ПерсонифицированныйПрайс.Покупатель,
| ПерсонифицированныйПрайс.Номенклатура,
| ПерсонифицированныйПрайс.Цена
|ИЗ
| РегистрСведений.ПерсонифицированныйПрайс КАК ПерсонифицированныйПрайс
|ГДЕ
| ПерсонифицированныйПрайс.Номенклатура.Наименование ПОДОБНО ""%принтер%"" И ПерсонифицированныйПрайс.Цена < 300";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл

// Установить ключевые поля менеджера записи
Запись.Период = Выборка.Период;
Запись.Покупатель = Выборка.Покупатель;
Запись.Номенклатура = Выборка.Номенклатура;

// Прочитать запись из базы данных
Запись.Прочитать();

// Убедиться, что запись все еще есть в базе данных
Если Запись.Выбран() Тогда

  // Переопределить покупателя
  Запись.Покупатель = ВыделенныйПокупатель; 
  // Установить новую цену
  Запись.Цена = Выборка.Цена * 1.2;
  // Записать модифицированную запись в базу данных
  Запись.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры


1C Картинку в колонтитул документа MS Word
хуй
antipodarok

&НаКлиенте
Процедура Вариант1(Команда)
MsWord = Новый COMОбъект(“Word.Application”);
MsWord.Documents.Open(“q:\test.doc”);
Попытка
MsWord.Application.Visible = 0;
Word = MsWord.Application;
Док=Word.Documents(1);
Док.Activate();

ЗаменаКолонтитула=Док.sections.item(1).footers.item(1);
//–Просто вставить строку
ЗаменаКолонтитула.Range.Text=СокрЛП(“Привет”);
//–Вставить картинку
ЗаменаКолонтитула.Range.InlineShapes.AddPicture(“q:\1.jpg”,
False, //LinkToFile
True //SaveWithDocument
);

Док.SaveAs(“q:\test.doc”);
Док.Close(0);
//ЗапуститьПриложение(“”"” + “q:\test.doc” + “”"”);

Исключение
Сообщить(ОписаниеОшибки());
Word.Quit();
КонецПопытки;
КонецПроцедуры

Tags: ,

1C Обмен данными
хуй
antipodarok

Как организовать работу удаленных складов?

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента) 

	Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
		Если ЭлементДанных.Склад <> Склад Тогда
			ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
		КонецЕсли;
	КонецЕсли; 

КонецПроцедуры 

Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) 

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

КонецПроцедуры 

Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад) 

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

КонецПроцедуры

Как при создании начального образа управлять тем, какие виды объектов перегружаются, а какие нет?

Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента) 

	Если НеВыгружатьОбъекты Тогда 

		// Проверить "ненужные типы", условие может содержать проверку
		// на несколько типов.
		Если ТипЗнч(ЭлементДанных) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
			ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;
		КонецЕсли;
	КонецЕсли; 

КонецПроцедуры

Как просмотреть объекты, для которых зарегистрированы изменения?

ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
Узел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел); 

Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗапСообщения.НомерСообщения);
Пока Выборка.Следующий() Цикл
	Данные = Выборка.Получить();
	Сообщить(Данные);
КонецЦикла; 

ЗапСообщения.ПрерватьЗапись(); 

Стр = ЗаписьXML.Закрыть();

Как организовать обмен данными между произвольными конфигурациями 1С:Предприятие 8.0?

Процедура Выгрузка(Элемент) 

	Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы 

	ЗаписьXML = Новый ЗаписьXML();
	ЗаписьXML.ОткрытьФайл(Путь + "выгрузка.xml");
	Узел = ПланыОбмена.Поставка.НайтиПоКоду("Маг1"); 

	ЗапСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
	ЗапСообщения.НачатьЗапись(ЗаписьXML, Узел); 

	Выборка = ПланыОбмена.ВыбратьИзменения(Узел, ЗапСообщения.НомерСообщения); 

	Пока Выборка.Следующий() Цикл
		Данные = Выборка.Получить(); 

		Если ТипЗнч(Данные) = Тип("ДокументОбъект.РеализацияТоваров") Тогда
			ВыгрузкаРеализации(ЗаписьXML, Данные); 

		Иначе // все остальные объекты
			ЗаписатьXML(ЗаписьXML, Данные);
		КонецЕсли;
	КонецЦикла; 

	ЗапСообщения.ЗакончитьЗапись();
	ЗаписьXML.Закрыть(); 

КонецПроцедуры 

Процедура ВыгрузкаРеализации(ЗаписьXML, Документ) 

    ЗаписьXML.ЗаписатьНачалоЭлемента("DocumentObject.ПередачаТовара"); 

    ЗаписатьXML(ЗаписьXML, Документ.Ссылка.УникальныйИдентификатор(),
                "Ref", НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Документ.ПометкаУдаления,
                "DeletionMark",НазначениеТипаXML.Явное);
    ЗаписатьXML(ЗаписьXML, Документ.ВалютаДокумента,
                "ВалютаДокумента", НазначениеТипаXML.Явное); 

    // Остальные свойства документа. 

    // Табличная часть.
    ЗаписьXML.ЗаписатьНачалоЭлемента("Товары"); 

    Для Каждого ТекСтрока Из Документ.Товары Цикл
    	ЗаписьXML.ЗаписатьНачалоЭлемента("Row"); 

    	ЗаписатьXML(ЗаписьXML, ТекСтрока.Номенклатура,
                    "Номенклатура", НазначениеТипаXML.Явное);
    	ЗаписатьXML(ЗаписьXML, ТекСтрока.Количество,
                    "Количество", НазначениеТипаXML.Явное); 

    	// Остальные реквизиты табличной части. 

    	ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла; 

    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента(); 

КонецПроцедуры 

Процедура Загрузка(Элемент) 

	Путь = "c:\"; //реальный путь к каталогу, в котором создаются файлы 

	ЧтениеXML = Новый ЧтениеXML();
	ЧтениеXML.ОткрытьФайл(Путь + "выгрузка.xml"); 

	ЧтСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
	ЧтСообщения.НачатьЧтение(ЧтениеXML); 

	ПланыОбмена.УдалитьРегистрациюИзменений(ЧтСообщения.Отправитель,
                                                ЧтСообщения.НомерСообщения); 

	Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
		Данные = ПрочитатьДанные(ЧтениеXML); 

		Если РазрешениеКоллизий(Данные) Тогда
			Данные.ОбменДанными.Отправитель = ЧтСообщения.Отправитель;
			Данные.ОбменДанными.Загрузка = Истина;
			Данные.Записать();
		КонецЕсли;
	КонецЦикла; 

	ЧтСообщения.ЗакончитьЧтение();
	ЧтениеXML.Закрыть(); 

КонецПроцедуры 

Функция ВозможностьЧтенияДанных(ЧтениеXML) 

	ТипXML = ПолучитьXMLТип(ЧтениеXML); 

	Если ТипXML = Неопределено Тогда
		Возврат Ложь;
	КонецЕсли; 

	Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И
             ТипXML.URIПространстваИмен = "" Тогда
		Возврат Истина;
	КонецЕсли; 

	Возврат ВозможностьЧтенияXML(ЧтениеXML); 

КонецФункции 

Функция ПрочитатьДанные(ЧтениеXML) 

	ТипXML = ПолучитьXMLТип(ЧтениеXML); 

	Если ТипXML.ИмяТипа = "DocumentObject.ПередачаТовара" И
             ТипXML.URIПространстваИмен = "" Тогда
		Возврат ЧтениеРеализации(ЧтениеXML);
	КонецЕсли; 

	Возврат ПрочитатьXML(ЧтениеXML); 

КонецФункции 

Функция ЧтениеРеализации(ЧтениеXML) 

	ЧтениеXML.Прочитать(); 

	// Работа со ссылкой документа.
	ПолученнаяСсылка = ПрочитатьXML(ЧтениеXML);
	Док = Документы.ПоступлениеТоваров.ПолучитьСсылку(
                  Новый УникальныйИдентификатор(ПолученнаяСсылка)); 

	Документ = Док.ПолучитьОбъект(); 

	Если Документ = Неопределено Тогда
		Документ = Документы.ПоступлениеТоваров.СоздатьДокумент();
		Документ.УстановитьСсылкуНового(Док);
		Документ.Дата = ТекущаяДата;
		Документ.УстановитьНовыйНомер();
	КонецЕсли; 

	Документ.ПометкаУдаления = ПрочитатьXML(ЧтениеXML);
	Документ.ВалютаДокумента = ПрочитатьXML(ЧтениеXML); 

	// Табличная часть "Товары.
	// Построчное чтение.
	ЧтениеXML.Прочитать();
	Документ.Товары.Очистить(); 

	Пока ЧтениеXML.Имя = "Row" Цикл 

		// Позиционируемся на узле с номенклатурой.
		ЧтениеXML.Прочитать();
		НоваяСтрока = Документ.Товары.Добавить();
		НоваяСтрока.Номенклатура = ПрочитатьXML(ЧтениеXML);
		НоваяСтрока.Количество = ПрочитатьXML(ЧтениеXML); 

		// Читаем конец узла Row.
		ЧтениеXML.Прочитать();
	КонецЦикла; 

	// Читаем конец табличной части.
	ЧтениеXML.Прочитать(); 

	// Читаем конец документа.
	ЧтениеXML.Прочитать(); 

	Возврат(Документ); 

КонецФункции 

Функция РазрешениеКоллизий(Данные) 

    Если ТипЗнч(Данные) = Тип("ДокументОбъект.ПоступлениеТоваров") Тогда 

        Если Не Данные.ЭтоНовый() Тогда
            СсылкаНаУзел = ПланыОбмена.Поставка.НайтиПоКоду("Опт"); 

	    Если ПланыОбмена.ИзменениеЗарегистрировано(СсылкаНаУзел, Данные) Тогда
		Возврат(Ложь);
	    КонецЕсли;
	КонецЕсли;
    КонецЕсли; 

    Возврат(Истина); 

КонецФункции

Как принудительно зарегистрировать изменения объектов?

СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, Неопределено);

СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел,
                            Метаданные.Справочники.Номенклатура); 

СсылкаНаУзел = ПланыОбмена.НаСклады.НайтиПоКоду("С1");
ДокСсылка = Документы.РеализацияТоваров.НайтиПоНомеру(НомерДок, ДатаПериода);
Если Не ДокСсылка.Пустая() Тогда
	ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, ДокСсылка);
КонецЕсли;
Tags: ,

1C Automation Client/Server (OLE)
хуй
antipodarok

Как из одной базы 1С:Предприятие 8.0 интерактивно заполнить документ в другой базе, используя Automation Client/Server (OLE)?

V8 = Новый COMОбъект("V8.Application"); 

Попытка
	Открытие = V8.Connect("File=""" + Путь + """;Usr=""Usr1"";");
Исключение
	Предупреждение("База данных не открыта!!!");
	Возврат;
КонецПопытки; 

МенеджерДокумента = V8.Документы.РеализацияТоваров;
Документ = МенеджерДокумента.СоздатьДокумент();
ФормаДокумента = Документ.ПолучитьФорму();
ФормаДокумента.ОткрытьМодально();

Как из таблицы 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

Tags: ,

1C Работа с COM-объектами
хуй
antipodarok

Как из одной базы 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; 

	счСтроки = 3;
	Сообщить(Строка(Товар) + "-" + Строка(Цена)); 

        // можно использовать другой признак окончания данных на листе
	Пока СокрЛП(Товар) <> "" Цикл
		Товар = Док.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.Workbooks.Open("c:\doc.xls");
	НомерКниги = Excel.Workbooks.Count;
	Книга = Excel.Workbooks.Item(НомерКниги);
	Лист = Excel.ActiveSheet; 

	// Создать новую книгу (в нее будем записывать данные).
	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 = НомерСтроки;
	КонецЦикла; 

	Excel.Visible = Истина; 

Исключение
	Сообщить(ОписаниеОшибки());
	Excel.Quit();
КонецПопытки;

Как выгрузить прайс-лист в документ программы 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"; 

	Документ.Paragraphs.Add();
	НомерПараграфа = Документ.Paragraphs.Count();
	Параграф = Документ.Paragraphs.Item(НомерПараграфа);
	Параграф.Range.InsertAfter("Сформирован на дату: " + Строка(ТекущаяДата()));
	Параграф.Range.Style = "Обычный"; 

	ВыборкаКоличества = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	ВыборкаКоличества.Следующий();
	КоличествоСтрок = ВыборкаКоличества.Количество; 

	Документ.Paragraphs.Add();
	НомерПараграфа = Документ.Paragraphs.Count();
	Параграф=Документ.Paragraphs.Item(НомерПараграфа); 

	// Вставить таблицу с количеством строк равным количеству записей
	// в выборке результата запроса и с тремя колонками
	Документ.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?

стрПодключения = "Driver={SQL Server};"
стрПодключения = стрПодключения + ИмяСервера + ";";
стрПодключения = стрПодключения +"Uid=" + ИмяПользователя + ";";
стрПодключения = стрПодключения + "Pwd=" + Пароль + ";";
стрПодключения = стрПодключения + "DataBase =" + ИмяБазы + ";";
стрПодключения = стрПодключения + "Pwd=" + Пароль + ";"; 

Connection = Новый COMОбъект("ADODB.Connection");
Connection.OpenServer = стрПодключения; 

RS = Новый COMОбъект("ADODB.Recordset"); 

// Запрос к базе на языке SQL запросов.
RS.Open("Select * from TradeUnit", Connection); 

Пока RS.EOF() = 0 Цикл 

	// Можно обращаться и обрабатывать значения полей выборки.
	ИД = RS.Fields("ID").Value;
	Код = RS.Fields("Code").Value; 

	// Обработка других полей 

	RS.MoveNext();
КонецЦикла; 

RS.Close();
Connection.Close();
Tags: ,

1C Работа с Интернет
хуй
antipodarok

Работа с электронной почтой

Как организовать работу с электронной почтой через установленного почтового клиента?

Почта = Новый Почта;
Почта.Подключиться("login", "password"); 

Сообщ = Новый ПочтовоеСообщение;
Сообщ.Текст = "Доброе время суток!!!!";
Сообщ.Тема = "Срочно в номер!!!"; 

Данные = Новый ДвоичныеДанные("c:\attach.txt"); 

Сообщ.Вложения.Добавить(Данные,"attach.txt");
Сообщ.Получатели.Добавить("hline@1c.ru"); 

Почта.Послать(Сообщ, Ложь);
Почта.Отключиться(); 

Почта = Новый Почта;
Почта.Подключиться("login", "password"); 

Выборка = Почта.Выбрать(Истина, Ложь);
Для Каждого Сообщение Из Выборка Цикл
	Сообщить("Тема: " + Строка(Сообщение.Тема));
	Сообщить("Текст: " + Строка(Сообщение.Текст)); 

	Для Каждого Вложение Из Сообщение.Вложения Цикл
		Сообщить(Строка(Вложение.Наименование));
	КонецЦикла;
КонецЦикла;

Как организовать работу с почтой без установленного почтового клиента на компьютере пользователя?

// Сформировать почтовый профиль.
// При отправке нет необходимости указывать настройки, связанные с POP сервером.
ИПП = Новый ИнтернетПочтовыйПрофиль;
ИПП.АдресСервераSMTP = Константы.АдресСервераSMTP.Получить();
ИПП.ВремяОжидания = Константы.ВремяОжидания.Получить();
ИПП.Пароль = Константы.Пароль.Получить();
ИПП.ПарольSMTP = Константы.ПарольSMTP.Получить();
ИПП.Пользователь = Константы.Пользователь.Получить();
ИПП.ПользовательSMTP = Константы.ПользовательSMTP.Получить();
ИПП.ПортSMTP = Константы.ПортSMTP.Получить(); 

// Создать сообщение.
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Получатели.Добавить("hline@1c.ru");
Сообщение.Отправитель.Адрес = "booktest@yandexyandex.ru";
Сообщение.Тема = "Срочно в номер!";
Сообщение.Тексты.Добавить("Доброе время суток!"); 

Вложение = Новый ДвоичныеДанные(ПутьКФайлуВложения); 

Сообщение.Вложения.Добавить(Вложение,"attach.txt"); 

// Подключиться и отправить.
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Сообщение);
Почта.Отключиться(); 

// Формирование почтового профиля.
// При получении нет необходимости указывать настройки, связанные с 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) сервер

// Укажем настройки прокси-сервера
ПроксиСервер = Новый ИнтернетПрокси;
ПроксиСервер.Пользователь = "Кинев";
ПроксиСервер.Пароль = "12345";
ПроксиСервер.Установить("http", "10.1.1.223", "3100");

СерверИсточник = "www.cennic-etiketka.com";
Адрес = "/price.asp";
ИмяВходящегоФайла = "c:\temp\input.html";
// Укажем в HTTP соединении что у нас есть проксик
НТТР = Новый HTTPСоединение(СерверИсточник,,,, ПроксиСервер);
НТТР.Получить(Адрес, ИмяВходящегоФайла);
ВходящийФайл = Новый Файл(ИмяВходящегоФайла);
Tags: ,

?

Log in