Базовый курс. Занятие №10
Начинаем третий блок базового курса.
Представляем первое занятие по нему.
Необходимо изучить следующие главы.
Глава 1. Основные понятия бухгалтерского учета.
Глава 2. План счетов.
Глава 3. Регистр бухгалтерии.
Глава 4. Программная работа с регистром бухгалтерии.
Глава 5. Автоматизация аналитического учета.
Также нужно выполнить домашнее задание, текст которого доступен на странице.
Задание необходимо выполнять в ИБ после предыдущего ДЗ.
В этой же теме необходимо написать отчет о выполнении задания.
ps. Участники курса без доступа в мастер-группу отчитаться по домашним заданиям не получиться.
— залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись —напишите нам на e-mail поддержки.
Задание выполнил. Сделал план счетов, регстр бухгалтерии, план видов характеристик ВидыСубконто, связал все это, не забыв добавить признак Корреспонденция.При проведении создаю нужные проводки в документах Поступление товаров и Авансовый отчет, порядок кода плана счетов устрановлен в Призаписи процедурой УстоановитьПорядокКода, сделал документ Операция с табличной частью типа РегистрБухгалтерииСписок, в модуле набора записей сделал дозаполнение периода автоматом, там же сделал и контроль проверки на группы(сначала перебрал элементы плана счетов на проверку наличия подчиненных элементов, затем проверял, соответствует ли выбранный в провдке счет отобранным). Вобщем, ничего сложного.
Задание выполнил, счета сделал предопределенные, но перед записью добавил ПолучитьПорядокКода(), в плане счетов добавил реквизит “ЭтоГруппа”, Количество Субконто сделал 1, 41, 41.01 и 41.02 добавил субконто Номенклатура. Проведение Поступления и Авансового различаются только Счетом Кт, аналитика берется из Табличной части.
Документ Операция: в принципе все как по учебнику (курсам), убираем проведение, на форму выносим движения.РегистрБухгалтерии, убираем колонку “Период”, Перед записью заполняем эту колонку значением “Дата”, предварительно Свернув таблицу по “дублям”. В модуле набора записей регистра бухгалтерии перед записью делаем проверку на использование в проводках Счета-группы.
Задание выполнила, еще раз пришлось пересмотреть уроки, частично подглядела в решении.
Решение задания № 10
Создал подсистему БУ, в которую буду включать все созданные в этом задании объекты. Создал план счетов Управленческий, определил маску как @@.@@, установил флаг «Автопрядок по коду», для заполнения реквизита «Порядок кода». Согласно заданию создал в плане счетов предопределенные счета.
Создал объект План видов характеристик ВидыСубконто. В свойстве «Тип значения характеристик» указал Составной тип и выбрал пока только спр. Номенклатура. Далее создал предопределенный вид характеристики Номенклатура с типом спр. Номенклатура.
На вкладке Субконто плана счетов установил максимальное количество субконто равное 1 и вид субконто ПВХ ВидСубконто.
Для предопределенных счетов ТМЦ в табличной части «Виды субконто» добавил субконто «Номенклатура».
Создал регистр бухгалтерии «РегистрУправленческий». Выбрал в свойстве План счетов Управленческий и установил флаг Корреспонденции. Добавил ресурс Сумма (число 15,2).
В регистре бухгалтерии задал регистраторы ПоступлениеТоваров и АвансовыйОтчет и реализовал заполнение регистра при проведении.
Создал документ Операции. На форму вывел РегистрБухгалтерииНаборЗаписей.РегистрУправленческий. Убрал колонку Период.
В модуле объекта определил процедуру ПередЗаписью. В процедуре набор записей выгружаю в таблицу значений. Далее сворачиваю данную таблицу. Строку свертки формирую в цикле по коллекции колонок, исключая колонки Сумма, номер строки период индекс. Далее заполняю значение колонки период (ЗаполнитьЗначение()) датой документа и загружаю таблицу в набор записей.
Реализацию запрета групп подсмотрел в решение.
1) создала план счетов с маской @@.@@, галочка Автопорядок по коду, добавила булевский реквизит НеИспользоватьВПроводках.
Для субконто создала План видов характеристик ВидыСубконто.
Создала регистр бухгалтерии с галочкой Корреспонденция.
2) Прописала проводки в документах ПоступлениеТовара и АвансовыйОтчет.
3) Сделала документ Операция.
в модуле объекта прописала
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ТабДвижений = Движения.Управленческий.Выгрузить();
ТабДвижений.ЗаполнитьЗначения(Дата, “Период”);
ТабДвижений.Свернуть(“Период, СчетДт, СчетКт, ВидСубконтоДт1, СубконтоДт1, ВидСубконтоКт1, СубконтоКт1”, “Сумма”);
Движения.Управленческий.Загрузить(ТабДвижений);
КонецПроцедуры
4) для контроля выбора счетов в модуле набора записей созданного регистра бухгалтерии прописала
Процедура ПередЗаписью(Отказ, РежимЗаписи)
Для каждого Запись Из ЭтотОбъект Цикл
Если Запись.СчетДт.НеИспользоватьВПроводках ИЛИ Запись.СчетКт.НеИспользоватьВПроводках Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Нельзя использовать в проводках счета групп!!!”;
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Создал и заполнил план счетов. Маска кода счета @@.@@, автопорядок по коду. Добавил реквизит “НеИспользоватьВПроводках” с типом данных Булево. Этот флаг проставил для счетов-групп. В обработчике “ПередЗаписью” заполняю порядок счета с помощью ПолучитьПорядокКода();
Создал план видов характеристик и привязал его к плану счетов. Указал максимальное количество субконто равное 1. Создал регистр бухгалтерии с одним ресурсом “Сумма” и привязал к нему план счетов.
Добавил формирование движений по регистру бухгалтерии для документов “Поступление товаров” и “Авансовый отчет”. Также, заполняется аналитика по номенклатуре.
Создал документ “Операция”. Указал возможность движения по нашему регистру бухгалтерии. В обработчике “Перед записью” документа “Операция” устраняю дубли по счетам и аналитике.
Задание выполнено.
Для ведения учета с одним разрезом аналитики создала план счетов, план видов характеристик, регистр бухгалтерии.
Изменила ОбработкуПроведения() в документах Поступление товаров и Авансовый отчет.
Сворачивание строк и заполнение периода записей регистра бухгалтерии выполняю в обработчике события ПередЗаписью() документа Операция. Сворачивание реализовала через выгрузку движений в таблицу значений, сворачивание и загрузку обратно в набор записей.
В плане счетов добавила реквизит НеИспользоватьВПроводках. В обработчике события ПередЗаписью() модуля набора записей регистра бухгалтерии проверяю его значение.
задание выполнено
Задание выполнено. Созданы План счетов, План видов характеристик, Регистр бухгалтерии.
В документ “Поступление товара” добавлено проведение по регистру бухгалтерии:
Движения.РегистрУправленческий.Записывать = Истина;
Для каждого Товар Из Товары Цикл
Проводка = Движения.РегистрУправленческий.Добавить();
Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.Управленческий.Товары;
Проводка.СчетКт = ПланыСчетов.Управленческий.Поставщики;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Товары] = Товар.Номенклатура;
Проводка.Сумма = Товар.Сумма;
КонецЦикла;
Аналогичные проводки сделаны в документе “Авансовый отчет”.
В документе “Операция” период заполняется датой. “Сворачивание” набора записи сделано через таблицу значений:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для каждого Проводка Из Движения.РегистрУправленческий Цикл
Проводка.Период = Дата;
Таблица = Движения.РегистрУправленческий.Выгрузить();
Таблица.Свернуть(“Период, Регистратор, СчетДт, ВидСубконтоДт1, СубконтоДт1, СчетКт, ВидСубконтоКт1, СубконтоКт1”, “Сумма”);
Движения.РегистрУправленческий.Загрузить(Таблица)
КонецЦикла;
КонецПроцедуры
В План счетов добавлен реквизит “НеИспользоватьВПроводках” (тип “Булево”).
Создал план видов характеристик подчинил ему справочник “Субконто” как дополнительное значение характеристик,план счетов с реквизитом “ЗапретитьИспользоватьВПроводках” с количеством субконто 1 (пока 1), перед записью автоматически заполняю порядок, создал регистр бухгалтерии с ресурсом сумма, поределил регистраторы для регистра,описал заполнение регистра на авансовом отчёте и на поступлении.
создал документ “Операция” который является регистратором для регистра бухгалтерии, перед записью в модуле обьекта перезаписываю набор предварителньо группирую.
В этот раз получалось смотреть уроки и сразу делать ДЗ, по свежим полученным данным всё по другому реализовывается.
Затруднейний с заданием небыло, т.к. очень легкое. :)
Задание выполнено.
Задание выполнено, есть небольшие погрешности – непонятки, времени совсем не хватает на все…
Такими темпами скоро буду отстающим….
Задание выполнено
1.Создал ПВХ «ВидыСубконто». Добавил план счетов «Основной». Добавил регистр бухгалтерии «Хозрасчетный» и связал его с планом счетов. Связал план счетов с ПВХ «Виды субконто». Для регистра бухгалтерии добавил ресурс «Сумма». Для плана счетов добавил реквизит «Группа» тип «булево».
2.В плане счетов создал указанные счета. Для счета 41.01 добавил аналитический учет по номенклатуре.
3.Для документов «авансовый учет» и «поступление товаров» добавлены движения по регистру бухгалтерии.
4.Создан документ «операция». При записи документа в модуле набора записей регистра бухгалтерии в процедуре «перед записью» осуществляется обработка проводок, т.е. сворачиваются одинаковые проводки и период заполняется из даты документа.
5.Проверка что счет является группой осуществляется в процедуре «обработка проверки заполнения» в модуле набора «регистра бухгалтерии». Для проверки используется реквизит «Группа» плана счетов.
Задание выполнила.
Создала план счетов Основной, создала виды характеристик ВидыСубконто, создала регистр бухгалтерии Хозрасчетный. Добавила в модули проведения документов ПоступлениеТоваров, АвансовыйОтчет добавила запись движений по регистру бухгалтерии.
Создала документ Операция. Период заполняю в модуле набора записей регистра бухгалтерии если регистратор – Операция. В модуле документа в процедуре ПередЗаписью выгружаю набор записей в таблицу значений, затем ее сворачиваю, и заменяю получившейся таблицей набор записей.
В плане счетов добавила признак учета НеИспользоватьВПроводках. Выставила в значениях групп этот признак = Истине. В модуле формы Операции добавила процедуры проверки на значение этого реквизита при выборе счетов.
Задание выполнено.
Создал ПВХ ВидыСубконто. Создал план счетов с предопределенными значениями счетов. Добавил признак учета НеИспользоватьВПроводках. Виды субконто – субконто. В модуле объекта добавил процедуру
<code>
Процедура ПередЗаписью(Отказ)
Порядок = ПолучитьПорядокКода();
КонецПроцедуры
</code>
Создал регистр бухгалтерии Управленческий. Добавил создание движений в ОбработкуПроведения документов ПоступлениеТМЦ и АвансовыйОтчет. Создал документ Операция как показано в видеокурсе. В процедуре ПередЗаписью сделал свертку операций через выгрузку движений в таблицу значений.
Задание выполнено.
Проблем не было. Для проверки на счета-группы использовал Выбрать(<ВыбранныйСчет>).
Задание выполнено, использован мезанизм реализации подобеный БП.
Задание сделал всё как в уроке, но не понял про сворачивание дублей строк. Как я понял это нужно перед записью с помощью запроса сгрупировать строки и потом результат выгрузить в ТЧ? :(. Вообще бухгалтерия тяжеловата для меня.
Да, верно.
Только вот у документа “Операция” нет ТЧ. Он ведь отображает набор записей с отбором по регистратору.
Задание выполнил. Создал необходимый план счетов Управленческий, регистр бухгалтерии РегистрУправленческий, план видов характеристик “ВидыСубконто”. Макс. количество субконто выставил в 3. Включил Автопопрядок. Добавил порядок кода в ПередЗаписью модуля ПС.Создал документ “Операция”, изменяю активность записей при пометке удаления. Добавил требуемые в задании условия, формирую необходимые проводки при проведении документов.
P.S. На неделю выпадал по болезни из курса, соотв-но по ДЗ №9 вовремя написать отчет не смог… но ни капли материала не пропустил, все осталось разобрано.
Задание выполнено. первая часть выполнена настройками в конфигураторе. После создания документа “Операция”, в модуле документа в процедуре ПередЗаписью() записывается дата документа в регистр бухгалтерии, а тпкже набор записей выгружается в Таблцу Значений, метод свернуть по необходимым полям и суммирование “Сумма” .затем обратно выгрузка в набор записей.
В плане счетов реквизит с типом Булево на запрет проводки. В модуле набора записей (процедура ПередЗаписью()) передача значения реквизита в параметр Отказ.
Все сделал как учили, не получается документ “Операция”. При записи остается висеть измененным, при повторной выдает ошибку “Данные изменены или удалены другим пользователем”. Расскажите, что я забыл сделать?
Нашел проблему – она появлялась, если запретить оперативное проведение. Это такая особенность системы, ведь по идее, если запрещено обычное проведение, то оперативное никак не влияет на поведение документа?
Опять поймал ошибку, теперь не помогает даже пересоздание документа (даже его копирование из обучающей конфигурации). Подозреваю, что я что-то принципиально неправильно делаю, но что – понять не могу.
За исключением этого момента домашнее задание труда не составило.
Все, добил. При появлении субконто обязательно проставлять дополнительные значения характеристик для ПВХ с видами субконто иначе лезет эта ошибка.
Такое решение тоже возможно.
Проблема в доступных типах данных для ПВХ.
У вас определен один тип данных, если указать флаг “Составной” и добавить еще один тип ошибка уйдет.
Можно посмотреть в решении ДЗ№10.
Это проблема в платформе.
Задание выполнено.
1. Создан план счетов со всеми необходимыми счетами.
2. Создан ПВХ для ведения видов субконто, добавлен аналитический разрез “Номенклатура” для счетов “Товары”, “Материалы”.
3. Создан регистр бухгалтерии, обеспечено формирование движений по регистру для документов “Поступление товаров”, “Авансовый отчет”.
4. Создан документ “Операция”, реализовано изменение активности записей при пометке/снятии пометки на удаление. Также реализовано заполнение поля “Период” записей датой документа и копирование записей при копировании документа.
5. Механизмы сворачивания проводок и запрета использования счетов-групп подсмотрел в типовой конфигурации. Для сворачивания проводок нужно выгрузить записи в таблицу значений, свернуть ее, и загрузить полученную таблицу в набор записей. Данные действия производятся в обработчике события “ПередЗаписью” модуля набора записей регистра бухгалтерии. Для запрета использования счетов-групп необходимо завести булевский реквизит плана счетов. Если пользователь выбирает счет, который не используется в проводках, то выдается сообщение и выбор отменяется. Данные действия производятся в обработчике “ОбработкаВыбора” модуля формы.
Задание выполнил. Проблем не возникло. Добавил ПланСчетов, РегистрБухгалтерии, связанный с планом счетов, создал ПВХ и настроил требуемую аналитику по требуемым счетам. Создал документ “Операция” и настроил необходимое поведение документа.
Задание выполнено. В плане счетов создан булевский реквизит ЗапретитьИспользоватьВПроводках.
В документе Операция все действия выполняются в модуле объекта:
<code>
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ТЗ = Новый ТаблицаЗначений;
ТЧ = Движения.Хозяйственный ;
Для каждого Проводка Из ТЧ Цикл
Проводка.Период = Дата;
Если Проводка.СчетДт.ЗапретитьИспользоватьВПроводках ИЛИ Проводка.СчетКт.ЗапретитьИспользоватьВПроводках Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Этот счет запрещен для проводок”;
Сообщение.Поле = “Движения.Хозяйственный[“+Проводка.НомерСтроки+”]”;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
КонецЕсли;
КонецЦикла;
ТЗ=ТЧ.Выгрузить();
КолонкиГруппировок=””;
Для каждого Колонка из ТЗ.Колонки цикл
Если Колонка.Имя<>”Сумма” и Колонка.Имя<>”НомерСтроки” тогда
КолонкиГруппировок=КолонкиГруппировок+Колонка.Имя+”,”;
КонецЕсли;
КонецЦикла;
КолонкиГруппировок=Лев( КолонкиГруппировок,СтрДлина( КолонкиГруппировок)-1);
ТЗ.Свернуть(КолонкиГруппировок, “Сумма”);
ТЧ.Загрузить(ТЗ);
КонецПроцедуры
</code>
Задание выполнил. Для проверки счетов на группы добавил в план счетов реквизит НеИспользоватьВпроводках для счетов типа Булевский, подсмотрел в стандартной бухгалтерии. Проводки Операции сворачиваю методом выгрузки движений документа в таблицу значений, проверяю построчно эту таблицу на наличие у счета Дт и Кт признака Не использовать в проводках, делаю сообщение если признак истиный , если все нормально сворачиваю таблицу и загружаю в движения регистра.
ДЗ выполнил.
При создании Плана счетов обнаружил, что в пользовательском режиме маска кода счета не работает, то есть система позволяет вместо счета 41.03, например, завести счет 4103 (без точки), хотя порядок присваивается правильно!
Для формирования движений создал в общем модуле функцию с универсальным запросом, чтобы можно было к ней обращаться из док-тов Поступление и Аванс. отчет. Функция выбирает из таб. части данные по товарам и наборам – без услуг, без качества (строки группируются по номенклатуре). Функция возвращает результат запроса, который я передаю из обработки проведения в процедуру ДвиженияПоРегистрамСервер.ДвиженияПоНоменклатуре(). Также в эту процедуру передаю параметр СчетКт (Поставщики или Сотрудники).
Создал документ Операция. Заполение периода из даты документа сделал в модуле набора записей регистра бухгалтерии. В модуле набора записей выгружаю набор записей в таблицу значений и сворачиваю ее по всем колонкам (кроме “Сумма” и “НомерСтроки”), чтобы устранить дубли проводок. При этом суммирую колонку “Сумма”.
У счетов в Плане счетов сделал булевский реквизит “Запретить использовать в проводках”, в модуле набора записей в событии ПередЗаписью () проверяю, что в проводках не используются счета (Дт и Кт) отмеченные этим признаком. Не знаю, правда, к чему привязать сообщение об ошибке (выводится без привязки).
Задание выполнено.
Наибольшую сложность вызвала проверка на одинаковость счетов и аналитики в проводках. Сначала делаю свертку таблицы значений выгруженной из регистра, а потом проверяю на одинаковость, обходя строки этой таблицы. Обход строк регистра оказался неприемлем для учета одинаковости по аналитике.
Создал план счетов с предопределенными счетами. Порядок счета заполняется в модуле объекта Плана счетов. Создал ПВХ ВидыСубконто с Тип значения характеристик=СправочникСсылка.Контрагенты, СправочникСсылка.Номенклатура. Создал Регистр бухгалтерии – РегистрУправленческий для плана счетов Управленческий, ресурс =Сумма, Регистраторы=ПоступлениеТоваров, АвансовыйОтчет, Операция. Формирую проводки при проведении в документах: ПоступлениеТоваров, АвансовыйОтчет. Создал документ Операция. Период записей регистра попробовал заполнять как в регистре бухгалтерии (модуль набора записей), так и в модуле объекта документа Операция (в процедуре ПередЗаписью). Проверку на одинаковые счета также выполняю в процедуре ПередЗаписью. Там-же сворачиваю одинаковые проводки. Счета-группы анализирую по заведенному булевскому реквиту плана счетов – ИспользоватьВПроводках.
Задание выполнено. В уроках все подробно разжевано как его делать.
Задание выполнено
1. Создан План счетов по условию
2. Выполнено программное заполнение реквизита “Порядок счета”.
3. Для счетов 41.01, 41.02, 60, 71 определены субконто(Создан ПВХ “Виды субконто”).
4. Создан регистр бухгалтерии с ресурсом сумма.
5. При проведении документов проводки сформированы в модуле объекта документа в процедуре обработка проведения (самый простой вариант).
6. Документ “Операция” создан.
6.1. Заполнение периода регистра датой документа реализовано в модуле объекта документа.
6.2. Движения выгружаются в таблицу значений где дубли группируются методом Свернуть()
6.3. В плане счетов создан булевый реквизит “запрет проводки”. В процедуре перед записью документа “Операция” обрабатывается проверка его значения, и выполняется запись или отказ.
Задание выполнено.
Создал план счетов и, связанный с ним, регистр бухгалтерии. Для настройки аналитического учета добавил ПВХ. Кроме того, в плане счетов определил реквизит с типом Булево “ЗапретитьИспользоватьВПроводках”.
Добавил необходимые движения в документы поступления. Создал документ “Операция” и настроил требуемое поведение.
Задание выполнено:
Код реализации
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ТабЗнч = Новый ТаблицаЗначений ;
ТабЗнч = Движения.РегистрСуммовой.Выгрузить();
ТабЗнч.Свернуть(“Период,Регистратор,Активность,СчетДт,СчетКт,МоментВремени,ВидСубконтоДт1,СубконтоДт1″,”Сумма”);
ТабЗнч.ЗаполнитьЗначения(Дата,”Период”);
//Проверка на наличиеСчетов-групп
Для каждого Строка Из ТабЗнч Цикл
Если Строка.СчетДт.Родитель.Пустая() Тогда
Отказ = Истина;
КонецЕсли;
Если Строка.СчетКт.Родитель.Пустая() Тогда
Отказ = Истина;
КонецЕсли;
КонецЦикла;
Движения.РегистрСуммовой.Загрузить(ТабЗнч);
КонецПроцедуры
Задание выполнено. Все достаточно подробно расписано в уроках – проблем не возникло.
В процедуре ПередЗаписью() модуля объекта документа “Операция” дубли строк сворачиваем с помощью вспомогательной таблицы значений, затем заполняем период:
Набор=Движения.РегистрУправленческий;
Таблица=Набор.Выгрузить();
КолонкиГруппировок=””;
Для каждого Колонка из Таблица.Колонки цикл
Если Колонка.Имя<>”Сумма” и Колонка.Имя<>”НомерСтроки” тогда
КолонкиГруппировок=КолонкиГруппировок+Колонка.Имя+”,”;
КонецЕсли;
КонецЦикла;
Таблица.Свернуть(КолонкиГруппировок, “Сумма”);
Набор.Загрузить(Таблица);
Для каждого Строка из Набор цикл
Строка.Период=Дата;
КонецЦикла;
Для различения простых счетов и счетов-групп в план счетов добавила реквизит “НеИспользоватьВПроводках” типа булево. Чтобы пользователи не могли выбрать счет-группу, в документе “Операция” для полей СчетДт, СчетКт установила параметры выбора “Отбор.НеИспользоватьВПроводках(Ложь)”.
Кроме того, можно настроить форму выбора плана счетов в процедуре ПриСозданииНаСервере() – установить отбор для динамического списка:
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(“ЭлементОтбораКомпоновкиДанных”));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(“НеИспользоватьВПроводках”);
ЭлементОтбора.ПравоеЗначение = ложь;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
Но в этом случае для ввода по строке отбор не действует.
Если понадобится программная проверка, можно использовать серверную функцию СчетНеУчаствуетВПроводке(СсылкаНаСчет), которая проверяет тип параметра и возвращает значение реквизита “НеИспользоватьВПроводках”. Проверку проводить в процедуре ПередЗаписью() модуля набора записей регистра бухгалтерии.
Выполнено.
Создал План счетов по ТЗ. Обеспечил программное заполнение реквизита “Порядок счета” в модуле объекта плана счетов:
<cod>
Процедура ПередЗаписью(Отказ)
Порядок = ПолучитьПорядокКода();
КонецПроцедуры
Процедура ПередЗаписью(Отказ) Порядок = ПолучитьПорядокКода(); КонецПроцедуры
</cod>
Создал регистр бухгалтерии.
Написал код в поступлении по добавлению записей в регистр бухгалтерии при проведении.
Создал документ Операция и обеспечил в нем все поведение описанное в ТЗ, приведу модуль объекта документа Операция:
<cod>
Процедура ПриКопировании(ОбъектКопирования)
Движения.Управленческий.Загрузить(ОбъектКопирования.Движения.Управленческий.Выгрузить());
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Набор = Движения.Управленческий.Выгрузить();
Набор.Свернуть(“СчетДт, СчетКт, ВидСубконтоДт1, СубконтоДт1, ВидСубконтоКт1, СубконтоКт1”, “Сумма”);
Движения.Управленческий.Загрузить(Набор);
Движения.Записать();
Если Ссылка.ПометкаУдаления <> ПометкаУдаления Тогда
Набор = Движения.Управленческий;
Набор.Прочитать();
Набор.УстановитьАктивность(Не ПометкаУдаления);
Набор.Записать();
КонецЕсли;
Для Каждого Проводка Из Движения.Управленческий Цикл
Если Проводка.СчетДт = Проводка.СчетКт Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Существуют проводки с одинаковыми счетами”;
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Прервать;
КонецЦикла;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Для каждого Проводка Из Движения.Управленческий Цикл
Если Проводка.СчетДт.ЗапретитьИспользоватьВПроводках ИЛИ Проводка.СчетКт.ЗапретитьИспользоватьВПроводках Тогда
Отказ = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
</cod>
И код модуля набора регистра бухгалтерии:
<cod>
Процедура ПередЗаписью(Отказ, РежимЗаписи)
ДокументСсылка = Отбор.Регистратор.Значение;
Если ТипЗнч(ДокументСсылка) = Тип(“ДокументСсылка.Операция”) Тогда
ЗаполнитьПериод();
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьПериод()
Дата = Отбор.Регистратор.Значение.Дата;
Для Каждого Проводка Из ЭтотОбъект Цикл
Проводка.Период = Дата;
КонецЦикла;
КонецПроцедуры
</cod>
В домашнем задании 10 создал Операцию, но почему то после сохранения в эту операцию можно зайти но при попытке изменения или сохранения пишет “Данные были изменены или удалены другим пользователем”, при этом сумма операции пустая. Тестирование и исправление базы не помогло. Задание делаю на базе полученной с решением 9 го задания. Подскажите, в чем может быть дело
Проблема в том, что в ПВХ определен только один доступный тип данных.
См. решение ДЗ№10.
Задание выполнил.
План счетов с предопределенными счетами, создан. Указан «Автопорядок по коду». В модуле объекта в событии «передзаписью» добавил код для программного заполнения «порядка счета» , Порядок = ПолучитьПорядокКода();
Для ведения аналитического учета создал «План видов характеристик» «Субконто» и добавил тип значения характеристик «Номенклатура». Также добавил Признак учета счета «Количественный» – «небалансовый» . В плане счетов по 41-м счетам добавил субконто «Номенклатура» и указал сумму и количество. Добавил регистр бухгалтерии в котором указан план счетов и указал 2-а ресурса «Сумма»-«Балансовое» и «Количество»- «НеБалансовое» с признаком учета «Количественный».
Обеспечил запись проводок в регистр бухгалтерии при проведении док-ов «Поступление» и «Авансовый отчет».
Добавил документ «Операция» указал в качестве регистратора по регистру бухгалтерии, запретил проведение по данному документу , обеспечил заполнение периодов записей регистра бухгалтерии. Для заполнения периода регистра использовал событие «ПередЗаписью» документа «Операция». Так же в данном событии обеспечил отключение/включение активности записей регистра и группировку по счетам и аналитике. Для группировке по счетам и аналитике , выгружаю движения по документу «Операция» в таблицу значений и сворачиваю по счетам и аналитике, далее загружаю обратно в движения документа. Для запрета использования в проводках добавил в план счетов реквизит «НельзяИспользоватьВПроводках» с типом булево. И в событии «при записи» модуля объекта регистра бухгалтерии выполняю проверку обращаясь к набору записей напрямую.
Задание выполнено. Оказалось довольно легким.
Создал план счетов “Основной”, завел требуемые предопределенные счета. Реквизит ПорядокСчета программно заполняется в обработчике ПередЗаписью в модуле объекта плана счетов. Создал план видов характеристик ВидыСубконто, сопоставил плану счетов, завел предопределенные виды субконто Номенклатура, Контрагенты, Сотрудники. Установил в плане счетов макс. кол-во субконто = 1. Определил соответствующие виды субконто не только у счетов 41.*, но и 60, 62, 71 (на будущее).
Создал регистр бухгалтерии “БухУчет”, с одним ресурсом “Сумма” и поддержкой корреспонденций, сопоставил плану “Основной”. В регистраторы прописал док-ты по поступлению и реализации товаров, выписку и новый док-т Операция, который создал по методу, показанному в уроках.
Формирование проводок в документе поступления каких-то сложностей не вызвало, реализовал через выгрузку табл. части в таблицу значений, свертку этой таблицы и последующий обход с формированием движений по регистру.
Установку периода движений и исключение “дублей” для док-та “Операция” реализовал в модуле набора записей регистра “БухУчет” в обработчике ПередЗаписью. Если регистратор набора – это док-т вида “Операция”, то выгружаем набор в таблицу значений, перезаполняем в этой таблице поле Период датой док-та, потом сворачиваем таблицу по полям Период, Активность, СчетДт, ВидСубконтоДт1, СубконтоДт1, СчетКт, ВидСубконтоКт1, СубконтоКт1 и суммируем поле Сумма. Полученную таблицу загружаем в набор.
Далее в этом же обработчике реализуется проверка на счета-группы. Сделал через пакет запросов, передаю таблицу значений, полученную выгрузкой набора (точнее поля СчетДт и СчетКт) в запрос как параметр, там формируется временная таблица. Затем во втором запросе пакета сначала во вложенном запросе объединяются счета дебета и кредита в единый список и полученная таблица соединяется внутренним соединением с таблицей плана счетов (связь: счет из списка = родителю счета из плана). Одно поле выборки – счета из списка, которые как раз и будут группами, упомянутыми в данном наборе. Если результат запроса не пустой, то Отказ = Истина и выдается сообщение с перечислением найденных счетов-групп.
Таким образом проверка на счета-группы будет выполняться всегда, при проведении любого документа, а не только при записи док-та Операция.
Задание выполнено. План счетов создан. Все счета предопределенные. Создан реквизит “ЗапретВыбора” для выбора только счетов. Для счета-группы “ТМЦ” флаг установлен в Истина.
Для счетов 41.01 и 41.02 ведется аналитика по номенклатуре. Правда, неизвестно, сколько субконто делать? Пока создал 1. Завел ПВХ “ВидыСубконто”
Регистр бухгалтерии создан и проводки при проведении поступления и авансового отчета формируются.
Документ “Операция” создан. Введена ТЧ с реквизитами для счета, субконто и суммы (для дебета и кредита свои). Перед записью документ идет сворачивает ТЧ для устранения дублей.
Решил отказаться от ТЧ в документе “Операция”. Вывел на форму набор записей. В связи с этим сворачивание поправил и период также присваиваю равным дате документа.