//Пример кода Перем Подключились; Перем COMОбъект; Функция ПолучитьНом(Выборка) Ном = Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Выборка.Номенклатура)); Если Ном.Пустая() Тогда ВвестиЗначение(Ном, "Выберите номенклатуру " + СокрЛП(Выборка.Номенклатура), Тип("СправочникСсылка.Номенклатура")); КонецЕсли; Возврат Ном; КонецФункции Функция ПодключитьсяКCRM() Подключились = Истина; Попытка Подкл = Новый COMОбъект("V82.COMConnector"); COMОбъект = Подкл.Connect("Srvr=""Server1"";Ref=""TradeUT"";Usr=""ObmenBot"";Pwd=""12345"""); Исключение Сообщить(ОписаниеОшибки()); Подключились = Ложь; КонецПопытки; Возврат Подключились; КонецФункции Процедура Реализации_Анализ(Элемент) Если не Подключились Тогда Если не ПодключитьсяКCRM() Тогда Возврат; КонецЕсли; КонецЕсли; Запрос = COMОбъект.NewObject("Запрос"); Запрос.Текст = ПолучитьМакет("ЗапросПродажи").ПолучитьТекст(); Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("Дата2", КонецДня(ДатаКон)); глРезультатЗапросаПродажи = Запрос.Выполнить(); Выборка = глРезультатЗапросаПродажи.Выбрать(COMОбъект.ОбходРезультатаЗапроса.ПоГруппировкам); ДокРеал = Документы.РеализацияТоваровУслуг; СпрКонтр = Справочники.Контрагенты; ТаблицаДокументов.Очистить(); Пока Выборка.Следующий() Цикл ОбработкаПрерыванияПользователя(); Стр = ТаблицаДокументов.Добавить(); ЗаполнитьЗначенияСвойств(Стр, Выборка); Стр.Документ = ДокРеал.НайтиПоНомеру(Стр.Номер, Стр.Дата); Стр.ТекстКонтрагент = Выборка.КонтрагентНаименование + ", ИНН " + Выборка.ИННКонтрагента; Если не ПустаяСтрока(Выборка.ИННКонтрагента) Тогда ВыборкаКонтр = СпрКонтр.Выбрать(,, Новый Структура("ИНН", Выборка.ИННКонтрагента)); Пока ВыборкаКонтр.Следующий() Цикл Если не ЗначениеЗаполнено(Стр.Контрагент) или ВыборкаКонтр.КПП = Выборка.КППКонтрагента Тогда Стр.Контрагент = ВыборкаКонтр.Ссылка; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; ЭлементыФормы.кнЗагрузитьШаг1.Доступность = Истина; ЭлементыФормы.ИндикаторРеал.МаксимальноеЗначение = ТаблицаДокументов.Количество(); КонецПроцедуры Процедура Реализации_Загрузить(Элемент) ЭлементыФормы.ИндикаторРеал.МаксимальноеЗначение = ТаблицаДокументов.Количество(); ЗначениеИндикатораРеал = 0; ДокРеал = Документы.РеализацияТоваровУслуг; ВыборкаДок = глРезультатЗапросаПродажи.Выбрать(COMОбъект.ОбходРезультатаЗапроса.ПоГруппировкам); мСписокВидовДоговоров = Новый СписокЗначений; мСписокВидовДоговоров.Добавить(Перечисления.ВидыДоговоровКонтрагентов.СПокупателем); СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры; Пока ВыборкаДок.Следующий() Цикл ЗначениеИндикатораРеал = ЗначениеИндикатораРеал + 1; СтрокаТаб = ТаблицаДокументов.Найти(ВыборкаДок.Номер, "Номер"); Если СтрокаТаб <> Неопределено Тогда Если ЗначениеЗаполнено(СтрокаТаб.Документ) Тогда Док = СтрокаТаб.Документ.ПолучитьОбъект(); Док.Товары.Очистить(); Док.Услуги.Очистить(); Иначе Док = ДокРеал.СоздатьДокумент(); КонецЕсли; Док.Дата = ВыборкаДок.Дата; Док.Номер = ВыборкаДок.Номер; Док.Контрагент = СтрокаТаб.Контрагент; ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док, глЗначениеПеременной("глТекущийПользователь"), Док.мВалютаРегламентированногоУчета, "Продажа"); ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(Док, мСписокВидовДоговоров); ЗаполнениеДокументов.ПриИзмененииЗначенияДоговора(Док, Док.ВалютаДокумента, Док.мВалютаРегламентированногоУчета, СпособЗаполненияЦен, Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(Док), "Продажа", "Товары", Неопределено); Док.ЗаполнитьСчетаУчетаРасчетов(); Док.УчитыватьНДС = Ложь; ВыборкаНом = ВыборкаДок.Выбрать(COMОбъект.ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНом.Следующий() Цикл ОбработкаПрерыванияПользователя(); Ном = ПолучитьНом(ВыборкаНом); Если ВыборкаНом.Идентификатор = 1 Тогда СтрокаТЧ = Док.Товары.Добавить(); СтрокаТЧ.Номенклатура = Ном; Док.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина); Иначе СтрокаТЧ = Док.Услуги.Добавить(); СтрокаТЧ.Номенклатура = Ном; Док.ЗаполнитьСчетаУчетаВСтрокеТабЧастиУслуги(СтрокаТЧ, ИСТИНА); ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТЧ, Док); КонецЕсли; ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, Док); ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТЧ, Док, Док.мВалютаРегламентированногоУчета); СтрокаТЧ.Количество = ВыборкаНом.Количество; СтрокаТЧ.Сумма = ВыборкаНом.Сумма; СтрокаТЧ.Цена = СтрокаТЧ.Сумма / ?(ВыборкаНом.Количество = 0, 1, ВыборкаНом.Количество); КонецЦикла; Если не ВыборкаДок.ДоставкаОтдельно и ВыборкаДок.СтоимостьДоставкиПлан <> 0 Тогда СтрокаТЧ = Док.Товары.Добавить(); СтрокаТЧ.Номенклатура = Док.Товары[0].Номенклатура; Док.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, "Товары", Истина); ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, Док); ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТЧ, Док, Док.мВалютаРегламентированногоУчета); СтрокаТЧ.Сумма = - ВыборкаДок.СтоимостьДоставкиПлан; СтрокаТЧ = Док.Услуги.Добавить(); СтрокаТЧ.Номенклатура = Справочники.Номенклатура.ТранспортныеУслуги; Док.ЗаполнитьСчетаУчетаВСтрокеТабЧастиУслуги(СтрокаТЧ, ИСТИНА); ОбработкаТабличныхЧастей.ЗаполнитьСодержаниеТабЧасти(СтрокаТЧ, Док); ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТЧ, Док); ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТЧ, Док, Док.мВалютаРегламентированногоУчета); СтрокаТЧ.Количество = 1; СтрокаТЧ.Цена = ВыборкаДок.СтоимостьДоставкиПлан; СтрокаТЧ.Сумма = ВыборкаДок.СтоимостьДоставкиПлан; КонецЕсли; Ош = Ложь; Попытка Док.Записать(?(Проводить, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись)); Ош = Истина; Исключение КонецПопытки; Если Ош и Проводить Тогда Док.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; СтрокаТаб.Документ = Док.Ссылка; КонецЕсли; КонецЦикла; КонецПроцедуры Подключились = Ложь;