Продвинутый курс. Занятие №15

Первое занятие 3-го блока продвинутого курса по программированию.

Необходимо изучить следующие главы текущего блока.
Глава 1. Общие вопросы автоматизации БУ
Глава 2. Настройка объектов БУ
Глава 3. Запросы к регистрам
Глава 4. Развернутое сальдо

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.

комментариев 12 на “Продвинутый курс. Занятие №15”

  1. Задание выполнено.

    Реализовано требуемое проведение документов поступления и реализации по БУ.  Добавлен новый документ “Требование-Накладная”, осуществляющий списание ТМЦ на затраты по БУ И УУ.  Создан документ “Закрытие месяца”. Доведение средне скользящей оценки до средневзвешенной реализовано аналогично описанию в уроках.

  2. Задание выполнила. Добавила описанные счета. В документы поступления и реализации добавила табл. часть для учета услуг, реализовала проводки. В документ Реализации добавила проводку по товарам Дт Покупатели Кт Выручка. Создала документ ТребованиеНакладная, списание ТМЦ для него по регистрам накопления аналогично док-ту Реализации. Для списания ТМЦ по регистру бухгалтерии сделала подписку на событие ПодпискаНаСобытиеОбработкаПроведения для документов реализации и требования. В ней временная таблица товаров из соотв. док-та(там же необходимый счет Дт) связывается с виртуальной таблицей остатков регистра бухгалтерии для списания себестоимости по среднескользящей. В конце месяца списываемая стоимость доводится регламентным документом(Закрытие месяца) до средневзвешенной.

  3. Задание выполнила. Создала все необходимые счета, максимальное количество субконто увеличила до 3.  Сумму списания в проводках по номенклатуре рассчитываю и записываю с помощью подписки на событие “Перед записью” набора записей регистров бухгалтерии. В документе “Закрытие месяца” два запроса, в которых определяется средняя стоимость и сумма досписания по данным регистров накопления и бухгалтерии.

  4. Задание №15 выполнено.

    В план счетов Управленческий добавлены все необходимые счета, создана и настроена аналитика, макс. кол-во субконто увеличено до 3. Настроены табличные части Услуги, созданы реквизиты слуга, Количество, Цена, Сумма, в док-те поступление товаров также добавлены реквизиты реквизиты СчетЗатрат, Подразделение, ЗаказПокупателя. Формирование движений по поступлению и реализации услуг никакой сложности не вызывает, вся информация есть в самих документах.
    Создан документ ТребованиеНакладная, в табл.части товары реквизиты Номенклатура, Количество, СчетУчета, СчетЗатрат, Заказ, Подразделение, ОбъектЗатрат.
    Списание товаров по бух. учету вынесено в отдельную процедуру общего модуля, в которую передается табл.часть документа Товары, набор записей регистра бухгалтерии, момент времени документа и параметр Отказ. Создано перечисление ВидыНоменклатуры с тремя значениями Товар, Продукция и Услуга. В справочнике номенклатура добавлен соответствующий реквизит. Он нужен для того. чтобы при проведении реализации по БУ определить счет учета номенклатуры. Счет затрат в случае реализации принимается равным 90.02. Текст процедуры:
    <code>
    Процедура СписатьТоварыПоБУ(Товары, НаборЗаписей, МоментВремени, Отказ) Экспорт
    НаборЗаписей.Записать();
    ТаблТовары = Товары.Выгрузить();
    Если ТаблТовары.Колонки.Найти(“СчетУчета”)=Неопределено Тогда
    ТаблТовары.Колонки.Добавить(“СчетУчета”,Новый ОписаниеТипов(“ПланСчетовСсылка.Управленческий”));
    ТаблТовары.ЗаполнитьЗначения(ПланыСчетов.Управленческий.Товары, “СчетУчета”);
    КонецЕсли;
    Если ТаблТовары.Колонки.Найти(“СчетЗатрат”)=Неопределено Тогда
    ТаблТовары.Колонки.Добавить(“СчетЗатрат”,Новый ОписаниеТипов(“ПланСчетовСсылка.Управленческий”));
    ТаблТовары.ЗаполнитьЗначения(ПланыСчетов.Управленческий.Себестоимость, “СчетЗатрат”);
    КонецЕсли;

    Для каждого СтрТаблТовары Из ТаблТовары Цикл
    Если СтрТаблТовары.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Продукция Тогда
    СтрТаблТовары.СчетУчета = ПланыСчетов.Управленческий.Продукция;
    КонецЕсли;
    КонецЦикла;

    Табл = ТаблТовары.Скопировать(,”Номенклатура,СчетУчета”);
    Табл.Свернуть(“Номенклатура,СчетУчета”);

    Запрос = Новый Запрос(
    “ВЫБРАТЬ
    |    ТаблТовары.Номенклатура,
    |    ТаблТовары.СчетУчета
    |ПОМЕСТИТЬ Товары
    |ИЗ
    |    &ТаблТовары КАК ТаблТовары
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Товары.Номенклатура,
    |    Товары.СчетУчета,
    |    ЕСТЬNULL(РегистрУправленческийОстатки.КоличествоОстатокДт, 0) КАК ОстатокКол,
    |    ЕСТЬNULL(РегистрУправленческийОстатки.СуммаОстатокДт, 0) КАК ОстатокСум
    |ИЗ
    |    Товары КАК Товары
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(
    |                &МоментВремени,
    |                Счет В
    |                    (ВЫБРАТЬ
    |                        Товары.СчетУчета
    |                    ИЗ
    |                        Товары КАК Товары),
    |                ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары),
    |                Субконто1 В
    |                    (ВЫБРАТЬ
    |                        Товары.Номенклатура
    |                    ИЗ
    |                        Товары КАК Товары)) КАК РегистрУправленческийОстатки
    |        ПО Товары.СчетУчета = РегистрУправленческийОстатки.Счет
    |            И Товары.Номенклатура = РегистрУправленческийОстатки.Субконто1”);

    Запрос.УстановитьПараметр(“ТаблТовары”, Табл);
    Запрос.УстановитьПараметр(“МоментВремени”, МоментВремени);
    ТаблОстатки = Запрос.Выполнить().Выгрузить();

    Для каждого Строка Из ТаблТовары Цикл
    Если Строка.Количество=0 Тогда
    Продолжить;
    КонецЕсли;
    СчетУчета = Строка.СчетУчета;
    Массив = ТаблОстатки.НайтиСтроки(Новый Структура(“Номенклатура,СчетУчета”,Строка.Номенклатура,СчетУчета));
    Если Массив.Количество()=0 Тогда
    ОстатокКол=0;
    ОстатокСум=0;
    Иначе
    ОстатокКол=Массив[0].ОстатокКол;
    ОстатокСум=Массив[0].ОстатокСум;
    КонецЕсли;

    Если Строка.Количество > ОстатокКол Тогда
    Отказ = Истина;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = “Недостаточно кол-ва товара “+Строка.Номенклатура+” на остатках по бух.счету “+Строка.СчетУчета.Код;
    Сообщение.Сообщить();
    Продолжить;
    КонецЕсли;

    СписатьСум = Окр(Строка.Количество*ОстатокСум/ОстатокКол,2);
    Массив[0].ОстатокКол = Массив[0].ОстатокКол-Строка.Количество;
    Массив[0].ОстатокСум = Массив[0].ОстатокСум-СписатьСум;

    Если Не Отказ Тогда
    СчетЗатрат = Строка.СчетЗатрат;
    Проводка = НаборЗаписей.Добавить();
    Проводка.Период = МоментВремени.Дата;
    Проводка.СчетДт = СчетЗатрат;
    Если СчетЗатрат.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконто.Подразделения)<>Неопределено Тогда
    Проводка.СубконтоДт.Подразделения = Строка.Подразделение;
    КонецЕсли;
    Если СчетЗатрат.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконто.ЗаказПокупателя)<>Неопределено Тогда
    Проводка.СубконтоДт.ЗаказПокупателя = Строка.Заказ;
    КонецЕсли;
    Если СчетЗатрат.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконто.Товары)<>Неопределено Тогда
    Проводка.СубконтоДт.Товары = Строка.ОбъектЗатрат;
    КонецЕсли;
    Проводка.СчетКт = СчетУчета;
    Проводка.СубконтоКт.Товары = Строка.Номенклатура;
    Проводка.КоличествоКт = Строка.Количество;
    Проводка.Сумма = СписатьСум;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    </code>
    Создан документ ЗакрытиеМесяца, без реквизитов. Месяцем закрытия считается месяц даты документа. Доведение до средневзвешенной стоимости по упр. учету вообще никакой сложности не представляет, а вот по БУ надо учесть, что есть несколько счетов учета и списание возможно на произвольные счета с произвольной аналитикой.
    Вся необходимая информация получается пакетным запросом. В 1-м запросе пакета формируется ВТ, содержащая список счетов учета (условия – счет обладает признаком Количественный, а также среди аналитики имеет вид субконто Товары). Во 2-м запросе формируется ВТ, содержащая средневзвешенную стоимость единицы номенклатуры по каждому счету учета (из виртуальной таблицы ОстаткиИОбороты). В 3-м запросе виртуальная таблица Обороты соединяется с предыдущей и определяется сумма коррекции по каждому направлению списания (с учетом аналитики) с каждого счета учета.

  5. В план счетов добавлены предопределенные счета затрат. В документ поступления добавлена табличная часть для указания услуг, при этом в каждой строке табличной части можно указать счет и аналитику затрат. Также поддержка услуг добавлена и в документ реализации. При проведении поступления и реализации формируются необходимые проводки. Добавлен документ “Требование-накладная”, в табличной части которого можно указать счет ТМЦ, счет и аналитику затрат. Списание в затраты осуществляется по среднескользящей оценке, при этом выполняется контроль остатков по количеству. Создан документ “Закрытие месяца”, который делает корректирующие движения по регистру накопления и бухгалтерии. В качестве счетов для корректировки выбираются счета с одним субконто “Номенклатура”. Для упрощения задачи в качестве счета дебета всегда указывается счет себестоимости 90.02.

  6. respublica 05.07.2011 в 08:34

    Задание освоено. Действительно, в ИБ после ДЗ №14 задание полностью выполнено. Подумав, что ИБ выложена ошибочно, воспроизвел решение в ИБ после ДЗ №13, используя “козу”…

    • Да, это ошибка. Спасибо за информацию.

  7. Задание выполнила в базе после ДЗ №13.
    Для обеспечения ввода товаров и услуг в разные табличные части добавим реквизит “Услуга” типа булево в справочник номенклатуры, настроим параметры выборки по реквизиту для номенклатуры в каждой табличной части. В обработке проведения документов скорректируем движения по продажам и взаиморасчетам с учетом услуг.
    В ТЧ “Услуги” для поступления добавим реквизиты СчетЗатрат, Подразделение, ЗаказПокупателя. При проведении будем проверять наличие субконто у указанного счета затрат.
    В реализации добавим в запрос по ТЧ “Товары” остатки по регистру бухгалтерии, формируем проводки с учетом проверки остатков. При наличии услуг формируем общую проводку по документу.
    В документе “Требование-накладная” в ТЧ добавляем реквизиты СчетУчетаТМЦ, СчетЗатрат, Подразделение, ЗаказПокупателя. Настраиваем проведение по регистрам накопления (ОстаткиТоваров, СтоимостьТоваров, РезервыТоваров – поскольку в задаче не указано, требуется ли резервирование по ЗаказуПокупателя, но такой реквизит в ТЧ присутствует, считаем, что резервирование производится аналогично прочим документам).
    Формируем движения по регистрам накопления аналогично документа реализации, с учетом того, что в ТЧ счета и аналитика устанавливаются пользователем.
    Остатки получаем так:
    …ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(
        &МоментВремени,
        Счет В
         (ВЫБРАТЬ РАЗЛИЧНЫЕ
          Товары.СчетУчетаТМЦ
         ИЗ
          Товары КАК Товары),
        &ВидыСубконто,
        Субконто1 В
          (ВЫБРАТЬ РАЗЛИЧНЫЕ
           Товары.Номенклатура
          ИЗ
           Товары КАК Товары)
         И Субконто2 В
          (ВЫБРАТЬ РАЗЛИЧНЫЕ
           Товары.Склад
          ИЗ
           Товары КАК Товары)) КАК РегистрУправленческийОстаткиПоКоличеству
      ПО Товары.Номенклатура = РегистрУправленческийОстаткиПоКоличеству.Субконто1
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрУправленческий.Остатки(
        &МоментВремени,
        Счет В
         (ВЫБРАТЬ РАЗЛИЧНЫЕ
          Товары.СчетУчетаТМЦ
         ИЗ
          Товары КАК Товары),
        ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары),
        Субконто1 В
         (ВЫБРАТЬ РАЗЛИЧНЫЕ
          Товары.Номенклатура
         ИЗ
          Товары КАК Товары)) КАК РегистрУправленческийОстаткиПоСумме
      ПО Товары.Номенклатура = РегистрУправленческийОстаткиПоСумме.Субконто1
    В документе “Закрытие месяца”  не удалось окончательно доработать часть по бухгалтерскому учету (по формированию проводок).
    В целом для меня задание сложное, т.к. нет практики работы по бухучету.

  8. Домашнее задание в целом затруднений не вызвало.
    У номенклатуры создан новый реквизит ТипНоменклатуры(Перечисление, Товар или Услуга). В событие НачалоВыбора номенклатуры в товарах и услугах передаю параметры формы с необходимым отбором. Требуемые проводки в документах формируются.
    В документа ТребованиеНакладная добавлены необходимые реквизиты. Для субконто настроил связь по типу со счетом затрат с соответствующим номером элемента. В запросе при обработке проведения не совсем, кажется, оптимальным фильтр ВТ Остатки по двум полям (счет и номенклатура), возможны избыточные данные.
    Закрытие месяца реализовал по аналогии как было описано в одном из предыдущих уроков

  9. Кононов Сергей 04.07.2011 в 15:58

    Написать готово было бы неправильно, так как в конфигурации уже было все готово. Но я занялся тем, что изучал подробно как это сделано и много полезного для себя уяснил.

    • В конфигурации не может быть все готово, если она не была загружена из какого-то решения.  :)

  10. Готово! Для определения услуг в справочнике номенклатуры заведен реквизит булевского типа “Услуга”
    В документах ТЧ доработаны. Через параметры выбора отфильтровываю номенклатуру в ТЧ в зависимости от того, является ли она услугой или нет.
    Документы “Требование-накладная” и “Закрытие месяца” созданы.
    Движения по РБ и РН (для требования-накладной) создаются.
    Себестоимость считается. Как по среднескользящей, так и по средневзвешенной. В уроках был подробно расписан механизм расчета.