Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Vofka ::: Спасибо сказали: 4523 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
10.09.11, 10:40 Для logist'a за его неоценимую помощь!
Цитата
Этот форум я так понял создали чтобы следить выполнением правил

Ну да. Цель ресурса - банить всех, кто не соблюдает правила. Ноу-хау такое себе.

Цитата
я б вам эту корзину на голову одел бы...

А силы хватит?

Цитата
следить выполнением правил, это у вас получается лучше чем помогать дельными ответами

Если правила не соблюдаете - идите лесом! И о каких советах, в таком случае, может идти речь? Совсем уже люди подурели 05037.gif .

ЗЫ. в полку забаненых +1. Это печально, конечно sad.gif
MATEVI, Pepe,
09.09.11, 9:03 Розрахунково-платіжна відомість
Цитата(sia_1980 @ 09.09.11, 10:00) *
Проясни для начинающего плиз ???

Могу тебе только правила пояснить. На этом моя помощь прекращается, тема закрывается, автор получает предупреждение!
sia_1980,
08.09.11, 15:54 База данных предприятий Alan68, Pepe,
08.09.11, 9:59 Улыбнуло
Цитата
Переводчик http://translate.yandex.ru/, перевожу слово "нижеподписавшиеся", ошибочно задал направление перевода Украинский->Русский. Перевел как сергеевна

А если написать в ковычках - то переводит как "бесчестия" smile.gif
Alan68,
07.09.11, 7:55 Как проверить существование файла в 1С 8 ?
Для этого пишем двухстрочную функцию:

// ПутьКФайлу - путь к файлу, существование которого надо проверить
// Возвращает Истина, если файл существует или Ложь, если файла по указанному пути нету

Функция ПроверитьСуществованиеФайла(ПутьКФайлу) Экспорт
    Файл = Новый Файл(ПутьКФайлу);
    Возврат Файл.Существует();
КонецФункции
info230a02, light07, MATEVI, One,
05.09.11, 9:21 Помогите разобраться в чём дело
Цитата
Эээ... Операции/Проведение документов smile.gif

Ну да. 7.7 под рукой не было, так по памяти написал, а память то уже не та, как в молодости 05033.gif
2510506,
03.09.11, 17:38 Что такое файлы *.dll и *.ocx, и как их зарегистрировать?
Иногда при запуске какой-либо программы появляется сообщение, что не найден файл *.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».

Где искать файлы *.dll и *.ocx
Найти отсутствующие файлы *.dll и *.ocx можно с помощью поисковиков или на следующих ресурсах:
•DLL-files.com – Download all your missing dll-files
•Download and restore missing .DLL files
•Download and restore missing .ocx files
•www.dll-downloads.com – Download missing dll files you need immediately!
•Скачать dll-файлы

©
Keyword1109, shurik_shurik,
31.08.11, 11:18 Улыбнуло
Только что в объявлении о работе вычитал: Компания «Гарант Про» ищет заместителя руководителя отдела внедрения. Опыт - не главное. Главное, чтобы человек был хорошим.

05061.gif
Kutuzov, mister-x,
30.08.11, 12:28 Настройка параметров печати
Можно
Стажёр,
29.08.11, 14:10 Удаленное управление клиентом
Цитата
Вот обработка http://infostart.ru/public/18893/

Там не обработка, а MD с кодом:

Перем ВремяКомандыВыхода;

Функция ПолучитьВремя()
    ТекДата=ТекущаяДата();
    ТекЧас=0; ТекМин=0; ТекСек=0;
    ТекущееВремя(ТекЧас,ТекМин,ТекСек);
    Возврат ((ТекДата-Дата("01.01.80"))*86400+ТекЧас*3600+ТекМин*60+ТекСек);
КонецФункции

Процедура ВыходИзСистемы()
    Если НЕ(Константа.ВыходИзСистемы=0) Тогда
        Если (ВремяКомандыВыхода=0) Тогда
            ВремяКомандыВыхода=ПолучитьВремя();
            Предупреждение("Внимание! Через "+Константа.ВыходИзСистемы+" минут(ы) программа 1С завершит работу.",60);
        Иначе
            ТекВремя=ПолучитьВремя();
            Если (ТекВремя-ВремяКомандыВыхода>=Константа.ВыходИзСистемы*60) Тогда
                ЗавершитьРаботуСистемы(0);
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;    
КонецПроцедуры          

Процедура ПриНачалеРаботыСистемы()
    ВремяКомандыВыхода=0;
    Если НЕ(НазваниеНабораПрав()="Администратор") И НЕ(Константа.ВыходИзСистемы=0) Тогда
        ЗавершитьРаботуСистемы(0);
    КонецЕсли;
    Если НЕ(НазваниеНабораПрав()="Администратор") Тогда
        ОбработкаОжидания("ВыходИзСистемы",10);
    КонецЕсли;    
КонецПроцедуры
l2d808,
29.08.11, 10:00 Подскажите команду закрытия 1С
Смотреть в глобальном модуле процедуру ПриЗавершенииРаботыСистемы()

Зы. та шож такое diablo.gif
l2d808,
28.08.11, 19:58 Прикольные картинки
Новый язык программирования

logist, vadim007,
28.08.11, 10:15 Регистр сведений цены номенклатуры в зависимости от количества товара
Не то пальто, по-моему. Навскидку предлагаю вариант - 2 регистра: цены (номенклатура, тип цены, цена), интервалы (контрагент (или договор), количество позиций, тип цен). В документе узнаем число позиций и контрагента (договор) и спрашиваем у регистра интервалы какой тип цен используем, а дальше по типу цен выбираем сами цены. И ещё можно посмотреть как работают скидки в типовых конфигурациях.
sergiyboy,
26.08.11, 12:18 Понты в сторону
Украинцы не готовы влиться в семью европейских народов в силу своих искаженных ценностных ориентиров. Жажда роскошной жизни становится непреодолимым психологическим препятствием на пути в Европу, живущей по другим понятиям

Недавно я побывал в Чехии на выпускном вечере у моей дочери от первого брака, живущей там с малых лет и окончившей местную среднюю школу. Когда подъехал на своем автомобиле с украинскими номерами к месту торжества, на крыльцо вслед за встречающей меня дочкой высыпала ватага ее чешских одноклассников, чтобы, как выяснилось, поглазеть на «мафиози из Украины». Спрашиваю у дочери: "А ты говорила им, что твой отец - журналист?". Отвечает, мол, говорила, но они все равно думают, что в Украине одна лишь мафия.

Вроде как и отшумели давно лихие 90-е с их разборками, докатившимися и до Европы, а мы, как и прежде для них, - мафия. Но ничего странного в таком о нас представлении на самом деле нет. С мафией мы ассоциируемся развязными манерами и нарочитым гонором, золотыми цепями с палец толщиной и дорогими черными автомобилями, эпатирующими окружающих. Тянемся из последних сил к роскоши вопреки в общем-то убогому материальному и духовному существованию и считаем, что стремимся к достойной жизни. А вот европейцы как раз могли бы позволить себе роскошную как по нашим понятиям жизнь, но считают это дурным тоном, и приличную жизнь представляют себе совсем по-другому.

В Чехии я остановился у своего давнего приятеля, местного журналиста, работающего на одно из иностранных информагентств. У него жена и трое маленьких детей. В семье две машины, одна из которых еще недавно была в кредите, и недавно построенный в кредит двухэтажный дом под Прагой. Жена перебивается временными заработками, так как много времени вынуждена уделять детям. Глава семейства зарабатывает немногим больше, чем средняя зарплата в Чехии, составляющая $ 1.300. За дом он ежемесячно отдает банку треть своего заработка, остальное вместе с нерегулярными доходами жены и кое-какими его собственными халтурками идет на то, чтобы достроить дом, и на ежедневные потребности семьи.

При столь скромных как для такого семейства заработках им удается жить, ни в чем себе не отказывая. Во-первых, процент по кредиту на недвижимость там составляет неполных 5% - по сравнению с 20% и более в Украине. При таких низких процентных ставках европейцы легко решаются на жизнь в кредит в социально стабильном обществе. Во-вторых, в системе потребления в Европе очень распространены всяческие акции и скидки, которыми привлекают покупателей. Именно этим эффективно и пользуется семья моего приятеля. Все, что есть в их доме, – от кирпичей, из которых он построен, до мебели, которой обставлен, детских игрушек, которыми завален, и одежды, которой забиты шкафы, - куплено на распродажах. Наконец, они совершенно равнодушны к предметам роскоши, как то золото или натуральные меха, и их не волнует, достаточно ли престижна марка их автомобиля.

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

По случаю моего приезда собрал мой чешский приятель у себя дома компанию друзей-коллег (все мы хорошо знакомы по работе в одной американской медиаструктуре, вещающей на Украину из Праги). Достал он бутылку Закарпатского коньяка, видимо, думая вызвать патриотические чувства присутствующих за столом украинцев. "Хм, всего лишь три звездочки", - не преминула тут же скептически подметить одна из соотечественниц по поводу коньяка. А еще принялась советовать, где в Праге можно купить настоящий швейцарский шоколад, который, по ее мнению, лишь и достоин взыскательного вкуса.

"Светскими" разговорами встретили меня соотечественники и на бывшей работе в Праге. Те, с кем там начинал в середине 1990-х и с кем давно не виделся, рассказывали мне о купленной ими или строящейся недвижимости в Чехии, о том, какой из экзотических курортов они в очередной раз посетили, и сокрушались дилеммой – оставить свое подросшее чадо учиться в Чехии или же отправить в более престижный вуз на Запад. И никто из них не кинулся с расспросами об Украине - как там, что там... Тем более что это должно составлять их профессиональный интерес.

А вот мой чешский приятель с удовольствием бывает в Украине, когда случается такая оказия. Ему как журналисту тут все интересно, и он много пишет о нас. Он непритязателен в быту, а еще с удовольствием ест украинский шоколад и пьет наш коньяк. Публику же постсоветскую даже жизнь на Западе не меняет - вид у нее неизменно высокомерный и всем недовольный. И по этим признакам нас там так легко распознают на улице. Нашему человеку всегда чего-то не хватает, все возмущает, и гонора столько, будто всю жизнь он только и ел швейцарский шоколад, да запивал его мартелем.

Европеец строит настолько большой дом, насколько это требуется для комфорта его семьи; украинец же - настолько большой, насколько это будет соответствовать понятию «крутой» дом. Европеец станет покупать дорогой и большой автомобиль, только если это продиктовано жизненной необходимостью; украинец же - чтобы лучше выглядеть перед окружающими. Чех спокойно отправится кататься на лыжах в свои горы Карконоши, а украинец скорее предпочтет родным Карпатам престижные Альпы.

Разница между нами и пролегает на уровне менталитета, сформированного в разных социально-исторических условиях. Свалившиеся на голову постсоветского человека возможности разбогатеть уродливым образом определили его жизненные приоритеты. Европа же воспитана на ценностях среднего уровня жизни. Пока мы не примем эти ценности - европейцами нам не стать.

Отсюда
Acid, Alan68, logist, shurik_shurik,
24.08.11, 12:35 Интеграция 1С
Текстовый файл
  • Как выгрузить данные из справочника в текстовый файл?
  • Как загрузить данные из текстового файла?
  • Работа с текстом. Модель последовательного доступа


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,ВыгружаемыйОбъект);

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



ЧтениеXML=Новый ЧтениеXML();
ЧтениеXML.ОткрытьФайл("c:\doc.xml");

// Текущим становится элемент Root.
ЧтениеXML.Прочитать();

// Текущим становится элемент с документом.
ЧтениеXML.Прочитать();

// Проверить сможет ли с данным значением "справиться"
// система сериализации в данной базе.
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда

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

ЧтениеXML.Закрыть();


Как можно сформировать XML-документ произвольной структуры?

Запись = Новый ЗаписьXML; 
Запись.ОткрытьФайл(ПутьКФайлу);
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Справочник", "Номенклатура");
Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");

Выборка = Справочники.Номенклатура.ВыбратьИерархически();

Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
        Продолжить;
    КонецЕсли;

    Запись.ЗаписатьНачалоЭлемента("Элемент");
    Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
    Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул));
    Запись.ЗаписатьТекст(Выборка.Наименование);
    Запись.ЗаписатьКонецЭлемента();
КонецЦикла;

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


Как сформировать XML-документ в строку?

Запись = Новый ЗаписьXML(); 
Запись.УстановитьСтроку();
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Корневой");
Запись.ЗаписатьАтрибут("Справочник", "Номенклатура");
Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре");

Выборка = Справочники.Номенклатура.ВыбратьИерархически();

Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
        Продолжить;
    КонецЕсли;

    Запись.ЗаписатьНачалоЭлемента("Элемент");
    Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
    Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул));
    Запись.ЗаписатьТекст(Выборка.Наименование);
    Запись.ЗаписатьКонецЭлемента();
КонецЦикла;

Запись.ЗаписатьКонецЭлемента();
Стр = Запись.Закрыть();
Сообщить(Стр);


Как можно обмениваться данными, используя XML-сериализацию через файлы других форматов?

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

Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(ТекстСообщения);
Текст.Записать(ПутьКФайлу);



Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ПутьКФайлу);

ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(Текст.ПолучитьТекст());

Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
    Данные = ПрочитатьXML(ЧтениеXML);     
    Данные.Записать();
КонецЕсли;


Как можно загрузить XML документ произвольной структуры?

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

Пока Чтение.Прочитать() Цикл

    // Прочитать "структурные части" элементов.
    // Проверить, какая часть элемента - текущая.
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        ИмяУзла = Чтение.Имя; Сообщить("--" + ИмяУзла);

        // Атрибуты элементов можно читать только если текущая часть -
        // начало элемента
        Пока Чтение.ПрочитатьАтрибут() Цикл

            // Прочитать данные узла атрибута.
            ТипУзла = Чтение.ТипУзла;
            Имя = Чтение.Имя;
            Значение = Чтение.Значение;

            // Обработать полученные значения.

        КонецЦикла;

    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда

        // В примере просто выводим текст в окно сообщений.
        Сообщить("Текст:" + Чтение.Значение);

    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда

        // В примере просто выводим признак конца элемента
        // в окно сообщений Сообщить("--Конец:" + Чтение.Имя);

    КонецЕсли;

КонецЦикла;


DBF-файлы

Как можно построить выгрузку-загрузку посредством файлов DBF?

БД = Новый XBase; 
БД.Поля.Добавить("CODE", "S", 5);
БД.Поля.Добавить("NAME", "S", 40);
БД.СоздатьФайл(Путь + "start.dbf", Путь + "index.cdx");
БД.Индексы.Добавить("IDXCODE", "CODE");
ФлИБД = БД.СоздатьИндексныйФайл(Путь + "index.cdx");
БД.АвтоСохранение = Истина;

Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
    БД.Добавить();
    БД.CODE = Выборка.Код;
    БД.NAME = Выборка.Наименование;
КонецЦикла;

БД.ЗакрытьФайл();



БД = Новый XBase;
БД.ОткрытьФайл(Путь + "start.dbf", Путь + "index.cdx");
БД.ТекущийИндекс = БД.Индексы.IDXCODE;

Пока БД.Следующая() Цикл
    Сообщить(БД.CODE);
    Сообщить(БД.NAME);
КонецЦикла;

БД.ЗакрытьФайл();


Работа с HTML-документами

Заполнение HTML-анкет

Процедура URLПриИзменении(Элемент) 
    ЭлементыФормы.ПолеHTML.Перейти(URL);
КонецПроцедуры



Процедура ПолеHTMLДокументСформирован(Элемент)

    // Событие возникает и при открытии формы, когда в реквизите
    // URL содержится пустая строка.
    Если URL <> "" Тогда
        Док = ЭлементыФормы.ПолеHTML.Документ;

        // При попытке обратиться к несуществующему свойству
        // произойдет ошибка
        Док.forms["frm"].fam.Value = "Иванов";
        Док.forms["frm"].nam.Value = "Иван";
        Док.forms["frm"].otch.Value = "Иванович";
    КонецЕсли;

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


Работа с файлами

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

Режим = РежимДиалогаВыбораФайла.Открытие; 
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Текст(*,txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите файл";

Если ДиалогОткрытияФайла.Выбрать() Тогда
    ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;



Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытия.Каталог = "";
ДиалогОткрытия.МножественныйВыбор = Ложь;
ДиалогОткрытия.Заголовок = "Выберите каталог";

Если ДиалогОткрытия.Выбрать() Тогда
    ПутьККаталогу = ДиалогОткрытия.Каталог;
КонецЕсли;


Как прочитать информацию о файле?

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); 
ДиалогОткрытияФайла.Выбрать();

Файл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);
Текст = "Файл: " + Файл.Имя;
Текст = Текст + Символы.ПС + "Расширение: " + Файл.Расширение;
Текст = Текст + Символы.ПС + "Полное имя: " + Файл.ПолноеИмя;
Текст = Текст + Символы.ПС + "Путь: " + Файл.Путь;
Текст = Текст + Символы.ПС + "Размер: " + Файл.Размер() + " байт";
Текст = Текст + ?(Файл.ПолучитьНевидимость(), Символы.ПС + "Невидимый. ", "");
Текст = Текст + ?(Файл.ПолучитьТолькоЧтение(), Символы.ПС + "Только чтение.", "");
Текст = Текст + Символы.ПС + "Последнее изменение: " + Файл.ПолучитьВремяИзменения();

Сообщить(Текст);


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

МассивНайденных = НайтиФайлы("C:\Обмен\Входящие", "*.xml"); 

Для Каждого Файл из МассивНайденных Цикл
    Сообщить(Файл.Имя);

    // Обработать найденные файлы.

КонецЦикла;


Как переместить файл, выложенный на 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");


Как поместить файлы в архив?

ФайлАрхива = Новый ЗаписьZipФайла("C:\Arch.zip", , , 
                  МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный);
ФайлАрхива.Добавить("C:\Inetpub\wwwroot\Applic1\*.*",
                  РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
                  РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ФайлАрхива.Записать();

ФайлАрхива = Новый ЧтениеZIPФайла("C:\Arch.zip");
ФайлАрхива.ИзвлечьВсе("C:\Open", РежимВосстановленияПутейФайловZIP.Восстанавливать);
ФайлАрхива.Закрыть();


Как сравнить два текстовых файла?

ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); 
ДиалогОткрытияФайла.Фильтр = "Текстовый документ(*.txt)|*.txt";

// Выбрать первый файл.
ДиалогОткрытияФайла.Заголовок = "Выберите первый файл:";
ДиалогОткрытияФайла.Выбрать();
ИмяФайла1 = ДиалогОткрытияФайла.ПолноеИмяФайла;

// Выбрать второй файл.
ДиалогОткрытияФайла.Заголовок = "Выберите второй файл:";
ДиалогОткрытияФайла.Выбрать();
ИмяФайла2 = ДиалогОткрытияФайла.ПолноеИмяФайла;

// Сравнить выбранные файлы.
СравнениеФайлов = Новый СравнениеФайлов();
СравнениеФайлов.ПервыйФайл = ИмяФайла1;
СравнениеФайлов.ВторойФайл = ИмяФайла2;
СравнениеФайлов.ИгнорироватьПустоеПространство = Истина;
СравнениеФайлов.СпособСравнения = СпособСравненияФайлов.ТекстовыйДокумент;

СравнениеФайлов.ПоказатьРазличия();


Как организовать контроль формирования файла внешним приложением?

Процедура ПроверкаНаличияФайла() ИмяКаталога = "c:\temp"; 

    Маска = "*.xml";
    НайденныеФайлы = НайтиФайлы(ИмяКаталога, Маска);

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

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


ПодключитьОбработчикОжидания("ПроверкаНаличияФайла", 10);


ActiveX

Как использовать элементы управления ActiveX?

Режим = РежимДиалогаВыбораФайла.Открытие; 
ДиалогФыбораФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогФыбораФайла.Фильтр = "Все файлы (все)|*.*";
ДиалогФыбораФайла.Заголовок = "Выберите медиа файл";

Если ДиалогФыбораФайла.Выбрать() Тогда
    ПутьКМедиаФайлу = ДиалогФыбораФайла.ПолноеИмяФайла;

    // В зависимости от варианта объекта запись полного пути к файлу
    // производится либо в свойство 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");

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

Данные = Новый ДвоичныеДанные("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Соединение(СерверИсточник,,,, ПроксиСервер);
НТТР.Получить(Адрес, ИмяВходящегоФайла);
ВходящийФайл = Новый Файл(ИмяВходящегоФайла);


Работа с 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;

    счСтроки = 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();


Automation Client/Server (OLE)

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

Обмен данными

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

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

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

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


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

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

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


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

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

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


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

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

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

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

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


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

Запись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");
ДокСсылка = Документы.РеализацияТоваров.НайтиПоНомеру(НомерДок, ДатаПериода);
Если Не ДокСсылка.Пустая() Тогда
    ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, ДокСсылка);
КонецЕсли;


WEB-расширение

Как в форме списка номенклатуры отменить все установленные отборы?

private void commandPanel_ItemCommand(object source, System.Web.UI.WebControls.CommandEventArgs e) { if (e.CommandName = = "ShowAll") { foreach (V8Filter filter in listDS.Filter) { filter.Checked = false; } grid.Refresh(); } }

Как запретить перенос содержимого ячеек в форме списка расходных накладных?

private void Grid_ItemDataBound(object sender, _1C.V8.WebControls.V8GridItemEventArgs e) { foreach (TableCell cell in e.Item.Cells) cell.Wrap = false; }

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

Функция ПолучитьЗначениеПоУмолчанию(Пользователь, Свойство) Экспорт 

    Отбор = Новый Структура;
    Отбор.Вставить("Пользователь", Пользователь);
    Отбор.Вставить("Настройка",
        ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоНаименованию(Свойство));

    Результат = РегистрыСведений.НастройкиПользователей.Получить(Отбор);
    Возврат Результат.Значение;

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


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;

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

V8Grid_onInputOnBasis( '', 'grid', document.getElementById('grid_SelectedItem').value, 'Документ.ПриходнаяНакладная')

Реестр Windows

Как прочитать значение, хранящееся в реестре Windows?

Перем Значение; // В эту переменную запишем значение из реестра
    
RegProv=ПолучитьCOMОбъект(
"winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"
);

// Читаем значение ключа 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",
                                       Строка(Формат(ТекущаяДата(),"ДФ=ггггММддЧЧммсс")));


(с)
Andrew1C, Batchir, Flexy, mister-x, shurik_shurik, Witambo, zetovich,
24.08.11, 11:18 згорнуті дані в звіті
Цитата
Никак (если не пользоваться конфигуратором)

Автор создал тему в разделе "программисту", поэтому или "программируем" или перемещаем тему в другой раздел. yur, конфигуратором пользоваться будем?
yur,
23.08.11, 9:10 Acid, с днём рождения!
Хочу поздравить одного из наших старожилов: Acid'а. smile.gif
Всего-всего-всего! icon_beer17.gif
Acid,
23.08.11, 8:52 Какой антивирус вы используете для своего ПК?
Цитата
Я не трус, но зарплата дороже...

Здоровье дороже smile.gif
mister-x,
17.08.11, 9:27 Службовi повiдомлення
Используется какая-то внешняя компонента, которая не зарегистрирована в системе.

П.С. "какая-то" специально выделено, т.к. не знаю какая: может баркод, может ещё что-то.
vz64,
16.08.11, 18:39 Отчет СКД. Как связать параметры отбора, и определить параметры выбра при отборе?
Цитата
Все оказалось намного проще:

Так это управляемое приложение или обычное?

Цитата
Единственное что осталось - это если Контрагент не заполнено, при начале отбора Договора показывать список контрагентов, а не список всехвсех договоров.

Я набросал простой отчет по регистру продажи. При заполнении отбора по договору - выскакивает форма выбора контрагента, а потом список договоров по этому контрагенту. Если посмотреть код, можно это увидеть:

Процедура ПриОткрытии()

    //...
    
    Если РежимВыбора И НЕ ЗначениеЗаполнено(Отбор.Владелец.Значение) Тогда
        ФормаВыбораВладельца = Справочники.Контрагенты.ПолучитьФормуВыбора();
        ФормаВыбораВладельца.Заголовок = "Выберите контрагента, договор которого Вы хотите выбрать.";
        Контрагент = ФормаВыбораВладельца.ОткрытьМодально();
        Если ТипЗнч(Контрагент) = ТипЗнч(Отбор.Владелец.Значение) Тогда
            Отбор.Владелец.Значение = Контрагент;
        КонецЕсли;
        Отбор.Владелец.Использование = ЗначениеЗаполнено(Отбор.Владелец.Значение);
    КонецЕсли;

    //...

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

Поэтому добавить такое же в свою форму выбора да и всё.

Цитата
Вот думаю может написать отдельную ФормуВыбора для этого случая?

А что это даст? Как она будет вызываться?

Да, к стати, я на УТ последней смотрю.
logist,
16.08.11, 17:26 Отчет СКД. Как связать параметры отбора, и определить параметры выбра при отборе?
Вот нашёл в сети, но у меня (для не управляемого приложения) так не получилось:

Цитата
Могу предложить вариант для режима управляемого приложения (форма отчета должна быть управляемой).

1) в макете компоновки, на закладке "наборы данных" для "подчиненного" поля, например "ДоговорыКонтрагентов" надо перейти в поле "Параметры редактирования";
2) в поле "Параметры редактирования" открыть форму настройки и перейти в строку (поле) "связи параметров выбора";
3) в поле "Связи параметров выбора" настроить связь - открыть окно настройки (еще одно smile.gif) и в колонке "Параметр выбора" ввести Отбор.Владелец. Далее, в следующем поле "Поле" указать поле СКД, по которому будет определяться владелец при установке отбора, например поле "Контрагент". Естественно поле владельца должно присутствовать среди доступных полей компоновки
logist,
16.08.11, 16:35 Кнопка "Спасибо"
Ап
5_kopeek, Ardi, vbi,
16.08.11, 15:52 Оперативное проведение
Цитата
вводит какие то ограничения (тут мы проверяем наличие и контролируем остатки, а тут нам уже по барабану - это типа ваши проблемы).

По хорошему - это запретить вообще проведение задним числом. Но 1С даёт нам такую возможность. И пользоваться ней необходимо на свой страх и риск!

А проверять что-то в неоперативном режиме - не представляет никакой логики:
1. На вчера, на начало дня есть 10 единиц остатков;
2. Сегодня их списали (продали, выбросили, подарили кому-то);
3. Сегодя проводим документ на списание этих же остатков но! задним числом.
Вопрос: и что нам даёт этот контроль?

1С нам даёт оооочень гибкий инструмент, в отличии от иностранных ЕРП систем. А понимаени и умение им пользоваться - это уже другой вопрос.

Цитата
тут должен быть смайлик чертика, но его нет к сожалению

32541510.gif icon_GoateeDevilCool.gif diablo.gif icon_GoateeDevilSmilie.gif
Alan68,
16.08.11, 15:00 СКД
Цитата
Спасибо большое Вам

http://pro1c.org.ua/index.php?showtopic=2314
l2d808,
16.08.11, 14:56 Инопланетяне
Это нормальная ситуация, не берите в голову smile.gif
oleynik,

80 страниц V  « < 61 62 63 64 65 > » 
RSS Текстовая версия Сейчас: 30.05.24, 0:47
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!