//Формирование записей перерасчета Процедура СформироватьЗаписиПерерасчета() // Запрос по записям регистра расчета. Запрос = Новый Запрос(" |ВЫБРАТЬ РАЗЛИЧНЫЕ | СдельнаяВыработка.ФизЛицо, | СдельнаяВыработка.Организация, | ОсновныеНачисленияРегл.Регистратор, | ОсновныеНачисленияРегл.ВидРасчета |ИЗ | РегистрНакопления.СдельнаяВыработка КАК СдельнаяВыработка | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрРасчета.ОсновныеНачисленияРегл КАК ОсновныеНачисленияРегл | ПО СдельнаяВыработка.ФизЛицо = ОсновныеНачисленияРегл.ФизЛицо | И СдельнаяВыработка.Организация = ОсновныеНачисленияРегл.Организация | И (СдельнаяВыработка.Период МЕЖДУ | ОсновныеНачисленияРегл.ПериодДействияНачало | И ОсновныеНачисленияРегл.ПериодДействияКонец) |ГДЕ | ОсновныеНачисленияРегл.ВидРасчета = &ВидРасчета | И СдельнаяВыработка.Регистратор = &Регистратор |ИТОГИ ПО | Регистратор"); Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ОсновныеНачисления.Сдельный); Запрос.УстановитьПараметр("Регистратор", Ссылка); ВыборкаДокументов = Запрос.Выполнить(). Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); // Получение объекта ПерерасчетМенеджер. Перерасчет = РегистрыРасчета.ОсновныеНачисленияРегл. Перерасчеты.ПерерасчетОсновныхНачислений; Пока ВыборкаДокументов.Следующий() Цикл // Создание набора записей. НаборЗаписей = Перерасчет.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ОбъектПерерасчета.Значение = ВыборкаДокументов.Регистратор; Выборка = ВыборкаДокументов.Выбрать(); // Создание записей перерасчета. Пока Выборка.Следующий() Цикл Запись = НаборЗаписей.Добавить(); Запись.ВидРасчета = Выборка.ВидРасчета; Запись.Организация = Выборка.Организация; Запись.ФизЛицо = Выборка.ФизЛицо; КонецЦикла; // Запись в таблицу без замещения. НаборЗаписей.Записать(Ложь); КонецЦикла; КонецПроцедуры
//Пример кода Перем Подключились; Перем 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; СтрокаТЧ.Цена = ВыборкаДок.СтоимостьДоставкиПлан; СтрокаТЧ.Сумма = ВыборкаДок.СтоимостьДоставкиПлан; КонецЕсли; Ош = Ложь; Попытка Док.Записать(?(Проводить, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись)); Ош = Истина; Исключение КонецПопытки; Если Ош и Проводить Тогда Док.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; СтрокаТаб.Документ = Док.Ссылка; КонецЕсли; КонецЦикла; КонецПроцедуры Подключились = Ложь;
//Перед заполнением необходимо отменить проведение документа ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); // при выборке, переборе документов Пока ВыборкаДокументов.Следующий() Цикл // Получим объект и отменим проведение документов ФормДокПлатежка=ВыборкаДокументов.Ссылка.ПолучитьОбъект(); ФормДокПлатежка.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЦикла;
Процедура Провести(Кнопка) ВыборкаДокументов = Документы.НДФЛиЕСНДоходыИНалоги.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл // Проводим только те документы у которых в комментарии есть "НДФЛ Доходы и удержания" Если Найти(ВыборкаДокументов.Комментарий, "НДФЛ Доходы и удержания") > 0 Тогда ТекДок=ВыборкаДокументов.ПолучитьОбъект(); Попытка ТекДок.Записать(РежимЗаписиДокумента.Проведение); Сообщить("Проведен документ :" + Строка(ТекДок)); Исключение Сообщить("Невозможно провести документ("+Строка(ТекДок)+"), т.к.:"); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЦикла КонецПроцедуры Процедура ОтменитьПроведение(Кнопка) ВыборкаДокументов = Документы.НДФЛиЕСНДоходыИНалоги.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Если Найти(ВыборкаДокументов.Комментарий, "НДФЛ Доходы и удержания") > 0 Тогда ТекДок=ВыборкаДокументов.ПолучитьОбъект(); Попытка ТекДок.Записать(РежимЗаписиДокумента.ОтменаПроведения); Сообщить("Отмена проведения документ :" + Строка(ТекДок)); Исключение Сообщить("Невозможно отменить проведение("+Строка(ТекДок)+"), т.к.:"); Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЦикла КонецПроцедуры
// Выборка документов за весь период Выборка = Документы.НачислениеОтпуска.Выбрать(); Пока Выборка.Следующий() Цикл //Модуль обработки КонецЦикла; // Выборка документов за период с Даты начала по Дата окончания //Выборка = Документы.РасходнаяНакладная.Выбрать(ДатаНач, ДатаКон); ВыборкаДокументов = Документы.РасходнаяНакладная.Выбрать(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата())); Пока ВыборкаДокументов.Следующий() Цикл // Действия с документом - элементом выборки, // его значение содержится в переменной ВыборкаДокументов КонецЦикла //Запросом: Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Контрагент = &Контрагент | И | (РеализацияТоваровУслуг.Номер < 100 | ИЛИ | РеализацияТоваровУслуг.Дата < ДАТАВРЕМЯ(2005, 1, 1)) | И | РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)"; Запрос.УстановитьПараметр("Контрагент", ОтбКонтрагент); Запрос.УстановитьПараметр("Номенклатура", ОтбНоменклатура); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // действия с документом - элементом выборки, // его значение содержится в переменной Выборка КонецЦикла;