Обработка для переноса оборотов счета для конфигурации 1С:Бухгалтерия 8

Форма внешней обработки 1С 8 по переносу оборотов одного счёта на другой

Доброго времени суток, уважаемые читатели нашего блога! Я хочу поделиться небольшой обработкой для конфигурации 1С:Бухгалтерия 8,
для переноса оборотов одного счёта на другой. При совпадении аналитики счета, будет перенесена и она, то есть,
если счет источник имеет вид субконто «Счет затрат», то значение этого субконто обязательно будет перенесено, несмотря на
то каким по счёту оно является в счёте приёмнике.

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

удалить задублированные элементы в справочнике «Контрагенты»
.
Другая обработка поможет сразу

вывести на печать документы «Акт об оказании услуг», «Счет-Фактура» и «Приходный кассовый ордер»
.

Содержание

Внешний вид обработки 1С для переноса оборотов счета следующий:

Форма внешней обработки 1С 8 по переносу оборотов одного счёта на другой


Небольшая инструкция по работе с обработкой для переноса оборотов счета

  1. Для начала в поле «Конфигурация для» укажем конфигурацию, в которой мы будем работать. Значение «России» указывает, что
    работать будем в российской конфигурации «Бухгалтерия предприятия». Значение «Казахстана» указывает, что
    работать будем в конфигурации «Бухгалтерия для Казахстана».
  2. Выберем в поле «Организацию», по которой хотим переносить обороты «Счета источника».
  3. Определим период, в который хотим переносить обороты нашего счёта.
  4. Укажем счёт источник и счёт приёмник.
  5. Если выберем конкретную операцию в поле «Операция бух», то при нажатии на кнопку выполнить, все старые обороты будут удалены.
    Если поле «Операция бух» оставить пустым, то будет создана новая операция, введённая вручную.


Пример исходного кода обработки для переноса оборотов счета

Это всего лишь пример исходного кода обработки для переноса оборотов счета, так как есть ещё возможности для его улучшения.
Постараюсь подробно описать только самую важную часть исходного кода. Этот исходный код состоит только из одной процедуры:

Процедура КнопкаВыполнитьНажатие(Кнопка)

Запрос = Новый Запрос;
ТекстЗапроса = «
|ВЫБРАТЬ
| Типовой.Период,
| Типовой.Регистратор,
| Типовой.СчетДт,
| Типовой.СубконтоДт1,
| Типовой.СубконтоДт2,
| Типовой.СубконтоДт3,
| Типовой.СчетКт,
| Типовой.СубконтоКт1,
| Типовой.СубконтоКт2,
| Типовой.СубконтоКт3,
| Типовой.Организация,
| Типовой.Сумма,
| Типовой.Содержание
|ИЗ
| РегистрБухгалтерии.Типовой.ДвиженияССубконто(
| НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ),
| КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ),
| СчетДт = &Счет, , )
| КАК Типовой»;

План = «Типовой»;
Если Конфигурация = «России» Тогда
План = «Хозрасчетный»;
ТекстЗапроса =
СтрЗаменить(ТекстЗапроса, «Типовой», План);
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр(«НачПериода», НачПериода);
Запрос.УстановитьПараметр(«КонПериода», КонПериода);
Запрос.УстановитьПараметр(«Счет», Счет);
Выборка = Запрос.Выполнить().Выбрать();

// Создать будущий регистратор.
ДатаЗаписи = ТекущаяДата();
// Создать набор записей.
НаборЗаписей =
РегистрыБухгалтерии[План].СоздатьНаборЗаписей();
Если НЕ ЗначениеЗаполнено(Операция) Тогда

Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = ДатаЗаписи;
Документ.Организация = Организация;
Документ.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Документ.Содержание = «Перенос движений счета»;
Документ.Комментарий = «Перенос движений счета «
+ Счет.Код + » на счет « + СчетПриёмник.Код;
// Обязательно записываю документ, так как он нам
// нужен уже как существующий в базе,
// если этого не сделать, то при записи набора
// записей регистра бухгалтерии возникнет ошибка:
// «ошибка записи не установлен отбор по регистратору»
Документ.Записать();
НаборЗаписей.Отбор.Регистратор.Установить(Документ.Ссылка);

Иначе

Документ = Операция.ПолучитьОбъект();
НаборЗаписей.Отбор.Регистратор.Установить(Документ.Ссылка);
// Записать набор записей. Очищаю набор записей,
// т.к. запись пустого набора — это удаление записей в регистре.
НаборЗаписей.Записать();

КонецЕсли;



Пока Выборка.Следующий() Цикл

Движение = НаборЗаписей.Добавить();
Движение.Регистратор = Документ.Ссылка;
Движение.Период = ДатаЗаписи;

// Заполню счет дебета.
Движение.СчетДт = СчетПриёмник;

Сч = 1;
// С помощью этого двойного цикла нахожу одинаковые субконто
// счёта приёмника и заполняю их значениями субконто счёта источника
Для каждого Субконто Из Выборка.СчетДт.ВидыСубконто Цикл
Для каждого СубконтоДвижения Из Движение.СчетДт.ВидыСубконто Цикл
Если Субконто.ВидСубконто = СубконтоДвижения.ВидСубконто Тогда
Движение.СубконтоДт[СубконтоДвижения.ВидСубконто] =
Выборка[«СубконтоДт» + Сч];
КонецЕсли;
КонецЦикла;
Сч = Сч + 1;
КонецЦикла;

// Заполню счет кредита.
Движение.СчетКт = Счет;

Сч = 1;
// Здесь можно было сделать попроще,
// так как переношу значения субконто того же счёта
Для каждого Субконто Из Выборка.СчетДт.ВидыСубконто Цикл
Для каждого СубконтоДвижения Из Движение.СчетКт.ВидыСубконто Цикл
Если Субконто.ВидСубконто = СубконтоДвижения.ВидСубконто Тогда
Движение.СубконтоКт[СубконтоДвижения.ВидСубконто] =
Выборка[«СубконтоДт» + Сч];
КонецЕсли;
КонецЦикла;
Сч = Сч + 1;
КонецЦикла;

Движение.Организация = Организация;

Движение.Сумма = Выборка.Сумма;

Движение.Содержание = Выборка.Содержание;

КонецЦикла;

Если Выборка.Количество() <> 0 Тогда
// Записать набор записей.
НаборЗаписей.Записать();
КонецЕсли;
Документ.ПолучитьФорму().Открыть();

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

Хотелось бы отметить, что перенос оборотов счёта осуществляется, если есть обороты счета источника по дебету. Понравилась ли вам обработка? Что можно изменить, что добавить? Не стесняйтесь делиться об этом в комментариях!


  Пожалуйста, Войдите или Зарегистрируйтесь чтобы получить ссылку на скачивание.


Этот блог читают уже более 3000 человек
- читай и ТЫ!

6 ответы
  1. Тимофей says:

    Про данную обработку конфигурации 1С:Бухгалтерия 8 если честно слышу в первый раз и естественно поспешил все опробовать на практике. Повторить пример не составило никакого труда. И что собственно хочу сказать: мне уже это пригодилось, полезная штука!

    Ответить
  2. Softmaker
    Softmaker says:

    Приветствую, Тимофей! Отлично, что вам пригодилась обработка для переноса оборотов счета!

    Ответить
  3. Юрий says:

    Скажите, а данный пример позволит перенести данные из разных версий? Мне скажем надо из 7.7. на 8 перенести. Как мне быть в этом случае? Сам не могу понять.

    Ответить
  4. Softmaker
    Softmaker says:

    Здравствуйте, Юрий! Эта обработка для переноса оборотов счета предназначена для конфигурации 1С:Бухгалтерия 8.2. Работает только на платформе 1С8.2.

    Ответить

Ответить

Want to join the discussion?
Feel free to contribute!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *