Last active
November 3, 2022 04:53
-
-
Save a-sitnikov/5eded493f1e29c21b8d0ced15c5071d7 to your computer and use it in GitHub Desktop.
запуск в фоновом задании
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Область ОбработчикиСобытийФормы | |
&НаСервере | |
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) | |
Параметры.Свойство("ДополнительнаяОбработкаСсылка", ДополнительнаяОбработкаСсылка); | |
ВыполнятьвФоне = Истина; | |
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); | |
ОбработкаОбъект.ЗаполнитьТаблицуОбработок(); | |
ОбработкаМетаданные = ОбработкаОбъект.Метаданные(); | |
АвтоЗаголовок = Ложь; | |
Заголовок = ОбработкаМетаданные.Представление() + ", версия: " + ОбработкаМетаданные.Комментарий; | |
ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); | |
КонецПроцедуры | |
&НаСервере | |
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки) | |
Настройки.Вставить("Таблица", Объект.ТаблицаОбработок.Выгрузить()); | |
КонецПроцедуры | |
&НаСервере | |
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) | |
Таблица = Настройки["Таблица"]; | |
Если Таблица <> Неопределено Тогда | |
Для каждого СтрокаТЧ из Объект.ТаблицаОбработок Цикл | |
НайденнаяСтрока = Таблица.Найти(СтрокаТЧ.Имя, "Имя"); | |
Если НайденнаяСтрока <> Неопределено Тогда | |
СтрокаТЧ.Пометка = НайденнаяСтрока.Пометка; | |
КонецЕсли; | |
КонецЦикла; | |
КонецЕсли; | |
Элементы.Индикатор.Видимость = ВыполнятьвФоне; | |
УстановитьТекстГруппыОтлдадки(ЭтаФорма); | |
КонецПроцедуры | |
&НаКлиенте | |
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) | |
// Устанавливаем реквизит для вызова обработчика сохранения | |
РеквизитДляСохранения = ТекущаяУниверсальнаяДатаВМиллисекундах(); | |
КонецПроцедуры | |
#КонецОбласти | |
&НаКлиентеНаСервереБезКонтекста | |
Процедура УстановитьТекстГруппыОтлдадки(ЭтаФорма) | |
МассивСтрок = Новый Массив; | |
Если ЗначениеЗаполнено(ЭтаФорма.Тест_КоличествоСтрок) Тогда | |
МассивСтрок.Добавить("колво строк: " + ЭтаФорма.Тест_КоличествоСтрок); | |
КонецЕсли; | |
ЭтаФорма.ТекстГруппыОтладки = СтрСоединить(МассивСтрок, ", "); | |
КонецПроцедуры | |
#Область ОбработчикиСобытийЭлементовФормы | |
&НаКлиенте | |
Процедура КолвоСтрокПриИзменении(Элемент) | |
УстановитьТекстГруппыОтлдадки(ЭтаФорма); | |
КонецПроцедуры | |
&НаКлиенте | |
Процедура ВыполнятьвФонеПриИзменении(Элемент) | |
Элементы.Индикатор.Видимость = ВыполнятьвФоне; | |
КонецПроцедуры | |
#КонецОбласти | |
#Область ФоновоеВыполнение | |
&НаКлиенте | |
Процедура ПрогрессВыполнения(Результат, ДополнительныеПараметры) Экспорт | |
Если Результат.Статус = "Выполняется" | |
ИЛИ Результат.Статус = "Выполнено" Тогда | |
РезультатЗадания = ПрочитатьПрогрессИСообщения(Результат.ИдентификаторЗадания); | |
Если РезультатЗадания.Прогресс <> Неопределено Тогда | |
Индикатор = РезультатЗадания.Прогресс.Процент; | |
Текст = РезультатЗадания.Прогресс.Текст; | |
КонецЕсли; | |
Если РезультатЗадания.Сообщения <> Неопределено Тогда | |
Для Каждого Сообщение Из РезультатЗадания.Сообщения Цикл | |
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение.Текст, Сообщение.КлючДанных, Сообщение.Поле, Сообщение.ПутьКДанным); | |
КонецЦикла; | |
КонецЕсли; | |
КонецЕсли; | |
КонецПроцедуры | |
&НаСервереБезКонтекста | |
Функция ПрочитатьПрогрессИСообщения(ИдентификаторЗадания) | |
Возврат ДлительныеОперации.ОперацияВыполнена(ИдентификаторЗадания, Истина, Истина, Истина); | |
КонецФункции | |
&НаКлиенте | |
Процедура ПослеФоновойОбработкиДанных(Задание, ДополнительныеПараметры) Экспорт | |
Если Задание = Неопределено Тогда | |
Возврат; | |
КонецЕсли; | |
Если Задание.Статус = "Ошибка" Тогда | |
ТекстОшибки = Задание.КраткоеПредставлениеОшибки; | |
ОчиститьСообщения(); | |
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки); | |
ИначеЕсли Задание.Статус = "Выполнено" Тогда | |
РезультатЗадания = ПрочитатьПрогрессИСообщения(ИдентификаторЗадания); | |
Если РезультатЗадания.Сообщения <> Неопределено Тогда | |
Для Каждого Сообщение Из РезультатЗадания.Сообщения Цикл | |
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение.Текст, Сообщение.КлючДанных, Сообщение.Поле, Сообщение.ПутьКДанным); | |
КонецЦикла; | |
КонецЕсли; | |
Состояние("Обработка завершена"); | |
ЗавершениеОбработки(Задание.АдресРезультата); | |
КонецЕсли; | |
КонецПроцедуры | |
&НаСервере | |
Процедура ЗавершениеОбработки(АдресРезультата) | |
Текст = "Обработка завершена"; | |
КонецПроцедуры | |
#КонецОбласти | |
#Область ВыполнитьОбработку | |
&НаКлиенте | |
Процедура ВыполнитьОбработку(Команда) | |
ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьОбработкуОтвет", ЭтотОбъект); | |
ПоказатьВопрос(ОписаниеОповещения, "Выполнить обработку?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет); | |
КонецПроцедуры | |
&НаКлиенте | |
Процедура ВыполнитьОбработкуОтвет(Ответ, ДополнительныеПараметры) Экспорт | |
Если Ответ <> КодВозвратаДиалога.Да Тогда | |
Возврат; | |
КонецЕсли; | |
ОчиститьСообщения(); | |
ОповещениеОПрогрессеВыполнения = Новый ОписаниеОповещения("ПрогрессВыполнения", ЭтотОбъект); | |
Задание = ВыполнитьОбработкуСервер(); | |
Если Задание <> Неопределено Тогда | |
НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); | |
НастройкиОжидания.ВыводитьОкноОжидания = Ложь; | |
НастройкиОжидания.ПолучатьРезультат = Истина; | |
НастройкиОжидания.ВыводитьСообщения = Ложь; | |
НастройкиОжидания.Интервал = 1; | |
НастройкиОжидания.ОповещениеОПрогрессеВыполнения = ОповещениеОПрогрессеВыполнения; | |
НастройкиОжидания.ОповещениеПользователя.Показать = Ложь; | |
Обработчик = Новый ОписаниеОповещения("ПослеФоновойОбработкиДанных", ЭтотОбъект); | |
ДлительныеОперацииКлиент.ОжидатьЗавершение(Задание, Обработчик, НастройкиОжидания); | |
КонецЕсли; | |
КонецПроцедуры | |
&НаСервере | |
Функция ВыполнитьОбработкуСервер() | |
СтруктураПараметров = Новый Структура; | |
СтруктураПараметров.Вставить("ВыводитьСообщения", ВыводитьСообщения); | |
СтруктураПараметров.Вставить("Таблица", Объект.ТаблицаОбработок.Выгрузить()); | |
СтруктураПараметров.Вставить("Тест_КоличествоСтрок", Тест_КоличествоСтрок); | |
СтруктураПараметров.Вставить("ИдентификаторФормы", ЭтаФорма.УникальныйИдентификатор); | |
СтруктураПараметров.Вставить("ИмяФормы", ЭтаФорма.ИмяФормы); | |
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); | |
Индикатор = 0; | |
Текст = ""; | |
Если ВыполнятьвФоне Тогда | |
Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда | |
Попытка | |
ЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания); | |
Исключение | |
ЗаданиеВыполнено = Истина; | |
КонецПопытки; | |
Иначе | |
ЗаданиеВыполнено = Истина; | |
КонецЕсли; | |
Если ЗаданиеВыполнено = Ложь Тогда | |
// Надо ждать | |
Возврат Неопределено; | |
КонецЕсли; | |
ВыполняемыйМетод = "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"; | |
ЭтоВнешняяОбработка = Не Метаданные.Обработки.Содержит(ОбработкаОбъект.Метаданные()); | |
НаименованиеЗадания = ОбработкаОбъект.Метаданные().Представление(); | |
ПараметрыЗадания = Новый Структура; | |
ПараметрыЗадания.Вставить("ИмяОбработки", ОбработкаОбъект.ИспользуемоеИмяФайла); | |
ПараметрыЗадания.Вставить("ИмяМетода", "ВыполнитьОбработку"); | |
ПараметрыЗадания.Вставить("ПараметрыВыполнения", СтруктураПараметров); | |
ПараметрыЗадания.Вставить("ЭтоВнешняяОбработка", ЭтоВнешняяОбработка); | |
ПараметрыЗадания.Вставить("ДополнительнаяОбработкаСсылка", ДополнительнаяОбработкаСсылка); | |
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ЭтаФорма.УникальныйИдентификатор); | |
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания; | |
ПараметрыВыполнения.ЗапуститьВФоне = Истина; | |
РезультатФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗадания, ПараметрыВыполнения); | |
ИдентификаторЗадания = РезультатФоновогоЗадания.ИдентификаторЗадания; | |
Возврат РезультатФоновогоЗадания; | |
Иначе | |
АдресРезультата = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор); | |
ОбработкаОбъект.ВыполнитьОбработку(СтруктураПараметров, АдресРезультата); | |
ЗавершениеОбработки(АдресРезультата); | |
КонецЕсли; | |
КонецФункции | |
#КонецОбласти | |
&НаКлиенте | |
Процедура ВклВсе(Команда) | |
Для каждого СтрокаТЗ из Объект.ТаблицаОбработок Цикл | |
СтрокаТЗ.Пометка = Истина; | |
КонецЦикла; | |
КонецПроцедуры | |
&НаКлиенте | |
Процедура ОтклВсе(Команда) | |
Для каждого СтрокаТЗ из Объект.ТаблицаОбработок Цикл | |
СтрокаТЗ.Пометка = Ложь; | |
КонецЦикла; | |
КонецПроцедуры | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Область ОписаниеОбработки | |
Функция СведенияОВнешнейОбработке() Экспорт | |
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); | |
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); | |
ПараметрыРегистрации.Версия = Метаданные().Комментарий; | |
ПараметрыРегистрации.БезопасныйРежим = Истина; | |
ПараметрыРегистрации.Информация = Метаданные().Представление(); | |
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); | |
НоваяКоманда.Представление = Метаданные().Представление() + " - открыть форму"; | |
НоваяКоманда.Идентификатор = Метаданные().Имя + "Форма"; | |
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); | |
НоваяКоманда.ПоказыватьОповещение = Ложь; | |
ЗаполнитьТаблицуОбработок(); | |
Для каждого СтрокаТЧ из ТаблицаОбработок Цикл | |
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); | |
НоваяКоманда.Представление = СтрокаТЧ.Представление; | |
НоваяКоманда.Идентификатор = СтрокаТЧ.Имя; | |
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); | |
НоваяКоманда.ПоказыватьОповещение = Истина; | |
КонецЦикла; | |
Возврат ПараметрыРегистрации; | |
КонецФункции | |
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт | |
Если РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована() Тогда | |
Возврат; | |
КонецЕсли; | |
Параметры = Новый Структура; | |
Выполнить(ИдентификаторКоманды + "(Параметры)"); | |
КонецПроцедуры | |
#КонецОбласти | |
Процедура ЗаполнитьТаблицуОбработок() Экспорт | |
ДобавитьСтроку("ОбработатьДокумент", "Обработать документ"); | |
ДобавитьСтроку("ОбработатьДокументСТЧ", "Обработать документ с ТЧ"); | |
ДобавитьСтроку("ОбработатьРегистр", "Обработать регистр"); | |
ДобавитьСтроку("ОбработатьПроводки", "Обработать проводки"); | |
КонецПроцедуры | |
Процедура ДобавитьСтроку(Имя, Представление = "") | |
НоваяСтрока = ТаблицаОбработок.Добавить(); | |
НоваяСтрока.Имя = Имя; | |
НоваяСтрока.Представление = ?(ЗначениеЗаполнено(Представление), Представление, Имя); | |
КонецПроцедуры | |
Процедура ВыполнитьОбработку(Параметры, АдресРезультата = Неопределено) Экспорт | |
Для каждого СтрокаТЧ из Параметры.Таблица Цикл | |
Если НЕ СтрокаТЧ.Пометка Тогда | |
Продолжить; | |
КонецЕсли; | |
Если СтрокаТЧ.Имя = "ОбработатьДокумент" Тогда | |
ОбработатьДокумент(Параметры); | |
КонецЕсли; | |
Если СтрокаТЧ.Имя = "ОбработатьДокументСТЧ" Тогда | |
ОбработатьДокументСТЧ(Параметры); | |
КонецЕсли; | |
Если СтрокаТЧ.Имя = "ОбработатьРегистр" Тогда | |
ОбработатьРегистр(Параметры); | |
КонецЕсли; | |
Если СтрокаТЧ.Имя = "ОбработатьПроводки" Тогда | |
ОбработатьПроводки(Параметры); | |
КонецЕсли; | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ОбработатьДокумент(Параметры) | |
Сообщить("Обработать документ, старт: " + ТекущаяДата()); | |
Тест_КоличествоСтрок = 0; | |
Параметры.Свойство("Тест_КоличествоСтрок", Тест_КоличествоСтрок); | |
ТекстЗапроса = | |
"ВЫБРАТЬ //ПЕРВЫЕ | |
| Док.Ссылка КАК Ссылка | |
|ИЗ | |
| Документ.РеализацияТоваровУслуг КАК Док | |
|ГДЕ | |
| Док.КратностьВзаиморасчетов = 0 | |
| | |
|УПОРЯДОЧИТЬ ПО | |
| Док.Дата УБЫВ"; | |
Если ЗначениеЗаполнено(Тест_КоличествоСтрок) Тогда | |
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПЕРВЫЕ", "ПЕРВЫЕ " + Формат(Тест_КоличествоСтрок, "ЧГ=0")); | |
КонецЕсли; | |
Запрос = Новый Запрос; | |
Запрос.Текст = ТекстЗапроса; | |
Выборка = Запрос.Выполнить().Выбрать(); | |
Счетчик = 0; | |
Всего = Выборка.Количество(); | |
Пока Выборка.Следующий() Цикл | |
Если Параметры.ВыводитьСообщения Тогда | |
Сообщение = Новый СообщениеПользователю; | |
Сообщение.Текст = Строка(Выборка.Ссылка); | |
Сообщение.КлючДанных = Выборка.Ссылка; | |
Сообщение.Сообщить(); | |
КонецЕсли; | |
ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект(); | |
//ДокументОбъект.КратностьВзаиморасчетов = 1; | |
ДокументОбъект.ОбменДанными.Загрузка = Истина; | |
Попытка | |
ДокументОбъект.Записать(); | |
Исключение | |
Сообщение = Новый СообщениеПользователю; | |
Сообщение.Текст = ОписаниеОшибки(); | |
Сообщение.КлючДанных = Выборка.Ссылка; | |
Сообщение.Сообщить(); | |
КонецПопытки; | |
Счетчик = Счетчик + 1; | |
ПроцентВыполнения = Окр(100 * Счетчик / Всего, 2); | |
ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, "Реализация товаров и услуг " + Счетчик + " из " + Всего); | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ОбработатьДокументСТЧ(Параметры) | |
Тест_КоличествоСтрок = 0; | |
Параметры.Свойство("Тест_КоличествоСтрок", Тест_КоличествоСтрок); | |
ТекстЗапроса = | |
"ВЫБРАТЬ //ПЕРВЫЕ | |
| Док.НомерСтроки КАК НомерСтроки, | |
| Док.Ссылка КАК Ссылка | |
|ИЗ | |
| Документ.РеализацияТоваровУслуг.Товары КАК Док | |
|ГДЕ | |
| Док.Коэффициент = 0 | |
| | |
|УПОРЯДОЧИТЬ ПО | |
| Док.Ссылка.Дата УБЫВ | |
|ИТОГИ ПО | |
| Док.Ссылка"; | |
Если ЗначениеЗаполнено(Тест_КоличествоСтрок) Тогда | |
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПЕРВЫЕ", "ПЕРВЫЕ " + Формат(Тест_КоличествоСтрок, "ЧГ=0")); | |
КонецЕсли; | |
Запрос = Новый Запрос; | |
Запрос.Текст = ТекстЗапроса; | |
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); | |
Счетчик = 0; | |
Всего = Выборка.Количество(); | |
Пока Выборка.Следующий() Цикл | |
Если Параметры.ВыводитьСообщения Тогда | |
Сообщение = Новый СообщениеПользователю; | |
Сообщение.Текст = Строка(Выборка.Ссылка); | |
Сообщение.КлючДанных = Выборка.Ссылка; | |
Сообщение.Сообщить(); | |
КонецЕсли; | |
ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект(); | |
ВыборкаСтроки = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); | |
Пока ВыборкаСтроки.Следующий() Цикл | |
СтрокаТЧ = ДокументОбъект.Продажи[ВыборкаСтроки.НомерСтроки - 1]; | |
// СтрокаТЧ.Коэффициент = 1; | |
КонецЦикла; | |
ДокументОбъект.ОбменДанными.Загрузка = Истина; | |
ДокументОбъект.Записать(); | |
Счетчик = Счетчик + 1; | |
ПроцентВыполнения = Окр(100 * Счетчик / Всего, 2); | |
ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, "РеализацияТоваровУслуг - Товары " + Счетчик + " из " + Всего); | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ОбработатьРегистр(Параметры) | |
Тест_КоличествоСтрок = 0; | |
Параметры.Свойство("Тест_КоличествоСтрок", Тест_КоличествоСтрок); | |
ТекстЗапроса = | |
"ВЫБРАТЬ //ПЕРВЫЕ | |
| Рег.НомерСтроки КАК НомерСтроки, | |
| Рег.Регистратор КАК Регистратор | |
|ИЗ | |
| РегистрНакопления.НДСНачисленный КАК Рег | |
|ГДЕ | |
| Рег.СчетУчетаНДС = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) | |
| | |
|УПОРЯДОЧИТЬ ПО | |
| Рег.Период УБЫВ | |
|ИТОГИ ПО | |
| Рег.Регистратор"; | |
Если ЗначениеЗаполнено(Тест_КоличествоСтрок) Тогда | |
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПЕРВЫЕ", "ПЕРВЫЕ " + Формат(Тест_КоличествоСтрок, "ЧГ=0")); | |
КонецЕсли; | |
Запрос = Новый Запрос; | |
Запрос.Текст = ТекстЗапроса; | |
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); | |
Счетчик = 0; | |
Всего = Выборка.Количество(); | |
Пока Выборка.Следующий() Цикл | |
Если Параметры.ВыводитьСообщения Тогда | |
Сообщение = Новый СообщениеПользователю; | |
Сообщение.Текст = Строка(Выборка.Регистратор); | |
Сообщение.КлючДанных = Выборка.Регистратор; | |
Сообщение.Сообщить(); | |
КонецЕсли; | |
НаборЗаписей = РегистрыНакопления.АСЦ_НачисленноеКВ.СоздатьНаборЗаписей(); | |
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор); | |
НаборЗаписей.Прочитать(); | |
ВыборкаСтроки = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); | |
Пока ВыборкаСтроки.Следующий() Цикл | |
Запись = НаборЗаписей[ВыборкаСтроки.НомерСтроки - 1]; | |
//Запись. = | |
КонецЦикла; | |
НаборЗаписей.ОбменДанными.Загрузка = Истина; | |
НаборЗаписей.Записать(); | |
Счетчик = Счетчик + 1; | |
ПроцентВыполнения = Окр(100 * Счетчик / Всего, 2); | |
ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, "Регистр НДСНачисленный " + Счетчик + " из " + Всего); | |
КонецЦикла; | |
КонецПроцедуры | |
Процедура ОбработатьПроводки(Параметры) | |
Тест_КоличествоСтрок = 0; | |
Параметры.Свойство("Тест_КоличествоСтрок", Тест_КоличествоСтрок); | |
ТекстЗапроса = | |
"ВЫБРАТЬ //ПЕРВЫЕ | |
| ""Дт"" КАК ДтКт, | |
| Рег.НомерСтроки КАК НомерСтроки, | |
| Рег.Регистратор КАК Регистратор, | |
| Рег.Период КАК Период | |
|ИЗ | |
| РегистрБухгалтерии.Хозрасчетный КАК Рег | |
|ГДЕ | |
| НЕ Рег.СчетДт.Валютный | |
| И НЕ Рег.ВалютаДт ЕСТЬ NULL | |
| | |
|ОБЪЕДИНИТЬ ВСЕ | |
| | |
|ВЫБРАТЬ | |
| ""Кт"", | |
| Рег.НомерСтроки, | |
| Рег.Регистратор, | |
| Рег.Период | |
|ИЗ | |
| РегистрБухгалтерии.Хозрасчетный КАК Рег | |
|ГДЕ | |
| НЕ Рег.СчетКт.Валютный | |
| И НЕ Рег.ВалютаКт ЕСТЬ NULL | |
| | |
|УПОРЯДОЧИТЬ ПО | |
| Рег.Период УБЫВ | |
|ИТОГИ ПО | |
| Регистратор"; | |
Если ЗначениеЗаполнено(Тест_КоличествоСтрок) Тогда | |
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//ПЕРВЫЕ", "ПЕРВЫЕ " + Формат(Тест_КоличествоСтрок, "ЧГ=0")); | |
КонецЕсли; | |
Запрос = Новый Запрос; | |
Запрос.Текст = ТекстЗапроса; | |
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); | |
Счетчик = 0; | |
Всего = Выборка.Количество(); | |
Пока Выборка.Следующий() Цикл | |
Если Параметры.ВыводитьСообщения Тогда | |
Сообщение = Новый СообщениеПользователю; | |
Сообщение.Текст = Строка(Выборка.Регистратор); | |
Сообщение.КлючДанных = Выборка.Регистратор; | |
Сообщение.Сообщить(); | |
КонецЕсли; | |
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); | |
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор); | |
НаборЗаписей.Прочитать(); | |
ВыборкаСтроки = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); | |
Пока ВыборкаСтроки.Следующий() Цикл | |
Запись = НаборЗаписей[ВыборкаСтроки.НомерСтроки - 1]; | |
Если ВыборкаСтроки.ДтКт = "Дт" Тогда | |
//Запись.ВалютаДт = NULL; | |
Иначе | |
//Запись.ВалютаКт = NULL; | |
КонецЕсли; | |
КонецЦикла; | |
НаборЗаписей.ОбменДанными.Загрузка = Истина; | |
НаборЗаписей.Записать(); | |
Счетчик = Счетчик + 1; | |
ПроцентВыполнения = Окр(100 * Счетчик / Всего, 2); | |
ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, "Проводки " + Счетчик + " из " + Всего); | |
КонецЦикла; | |
КонецПроцедуры |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment