1С справочник

  • Справочник хозяйственных операций. 1С:Бухгалтерия 8
    • Новое в справочнике
    • Универсальный передаточный документ (УПД)
    • Основные средства
      • Основные средства (общие сведения)
        • Классификатор ОКОФ
        • Инвентаризация основных средств
      • Поступление основных средств
        • Покупка основных средств
        • Покупка основных средств с включением в первоначальную стоимость дополнительных расходов на приобретение
        • Покупка основных средств, требующих сборки
        • Покупка основных средств, бывших в эксплуатации
        • Покупка основных средств стоимостью от 40 000 до 100 000 рублей
        • Приобретение и регистрация автомобиля с включением госпошлины в расходы
        • Приобретение и регистрация автомобиля с включением госпошлины в первоначальную стоимость
        • Приобретение объекта недвижимости с включением госпошлины в расходы
        • Приобретение объекта недвижимости с включением госпошлины в первоначальную стоимость
        • Приобретение, регистрация и учет земельного участка
        • Перевод товара в основное средство в торговой организации
        • Учет рекламной вывески в составе основных средств организации
        • Учет основных средств, полученных в собственность безвозмездно
      • Амортизация основных средств
        • Начисление амортизации ОС (линейный способ)
        • Начисление амортизации ОС (способ списания стоимости пропорционально объему продукции)
        • Новая классификация основных средств с 01.01.2018 (постановление Правительства от 28.04.2018 № 526): изменения в учете и отчетности
        • Консервация основных средств
        • Расконсервация основных средств
      • Амортизационная премия
        • Учет амортизационной премии при покупке основного средства
        • Восстановление амортизационной премии при продаже ОС
      • Аренда основных средств
        • Аренда недвижимого имущества в учете арендатора (арендная плата в фиксированном размере)
        • Аренда недвижимого имущества в учете арендатора (арендная плата из двух частей — постоянной и переменной)
        • Аренда недвижимого имущества в учете арендодателя (арендная плата в фиксированном размере)
        • Аренда недвижимого имущества в учете арендодателя (арендная плата из двух частей — постоянной и переменной)
        • Аренда помещения у физического лица
        • Неотделимые улучшения в арендованное имущество (позиция арендатора)
        • Текущий ремонт в счет арендной платы хозспособом (позиция арендатора)
        • Текущий ремонт в счет арендной платы силами подрядчика (позиция арендатора)
        • Текущий ремонт в счет арендной платы (позиция арендодателя)
        • Прокат автомобиля
        • Аренда оборудования с программным обеспечением и техническим обслуживанием
      • Лизинг основных средств
        • Лизинг в учете лизингодателя (объект на балансе лизингодателя)
        • Лизинг основных средств. Объект на балансе лизингодателя. Учет у лизингополучателя
        • Лизинг основных средств. Объект на балансе лизингополучателя. Учет у лизингополучателя
        • Выкуп предмета лизинга. Объект на балансе лизингополучателя. Учет у лизингополучателя
      • Ремонт, модернизация основных средств
        • Модернизация основных средств без увеличения СПИ (применяется амортизационная премия)
        • Модернизация полностью самортизированного основного средства с увеличением СПИ
        • Модернизация основных средств без увеличения СПИ
        • Модернизация основных средств хозяйственным способом с увеличением СПИ
        • Текущий ремонт ОС силами подрядчика
        • Текущий ремонт ОС хозспособом
      • Переоценка основных средств
        • Переоценка основных средств (дооценка)
        • Переоценка основных средств (уценка)
      • Объединение и разделение ОС
        • Разделение земельного участка на несколько частей
        • Объединение земельных участков
        • Разделение объекта недвижимости
      • Выбытие основных средств
        • Списание основного средства, пришедшего в негодность (неполная амортизация)
        • Продажа основных средств стоимостью от 40 000 до 100 000 рублей
        • Продажа и снятие с регистрационного учета автомобиля
        • Продажа объекта недвижимости
        • Продажа и снятие с регистрационного учета земельного участка
        • Ликвидация основных средств с оприходованием материалов
        • Частичная ликвидация основного средства
        • Реализация безвозмездно полученного основного средства
        • Продажа ОС с убытком
        • Продажа объекта незавершенного строительства
      • Документы и отчеты (ОС)
        • Акт о приеме-передаче объекта основных средств (кроме зданий, сооружений) (ОС-1)
        • Акт о приеме-передаче здания (сооружения) (ОС-1а)
        • Акт о приемке-передаче оборудования в монтаж (ОС-15)
        • Акт о приеме-сдаче отремонтированных, реконструированных, модернизированных объектов основных средств (ОС-3)
        • Акт о списании объекта основных средств (кроме автотранспортных средств) (ОС-4)
        • Инвентаризационная опись основных средств (ИНВ-1)
        • Сличительная ведомость результатов инвентаризации основных средств, нематериальных активов (ИНВ-18)
    • Нематериальные активы и расходы на НИОКР
      • Поступление нематериальных активов
        • Покупка нематериальных активов (оплата — поступление — принятие к учету)
        • Создание сайта
      • Учет права использования НМА
        • Приобретение лицензионной программы для ЭВМ
        • Передача неисключительных прав (лицензии) на программу для ЭВМ с одновременным ее использованием в основной деятельности
      • Амортизация нематериальных активов
        • Амортизация нематериальных активов (линейный способ)
      • Выбытие нематериальных активов
        • Списание нематериальных активов (по окончании срока)
        • Реализация полностью самортизированного исключительного права на изобретение (позиция правообладателя)
      • Расходы на НИОКР
        • Расходы на НИОКР (первый месяц)
        • Расходы на НИОКР (второй месяц)
        • Расходы на НИОКР с коэффициентом 1.5 (первый месяц)
        • Расходы на НИОКР с коэффициентом 1.5 (второй месяц)
        • НИОКР собственными силами (первый месяц)
        • НИОКР собственными силами (второй месяц)
    • Материалы
      • Материалы (общие сведения)
        • Исправление ошибок в документах реализации (позиция продавца)
        • Исправление ошибок в документах покупки (позиция покупателя)
      • Поступление материалов
        • Покупка материалов (оплата — поступление)
        • Покупка канцтоваров для хозяйственных нужд (с доставкой)
        • Сборка компьютера из комплектующих частей (стоимостью до 40 000 рублей)
        • Приобретение и ввод в эксплуатацию ККТ (приобретение, комплектация)
        • Перевод товаров в состав материалов
        • Учет автомобильных шин
        • Покупка и передача в эксплуатацию малоценных основных средств стоимостью до 40 000 рублей
        • Приобретение и продажа малоценных основных средств стоимостью до 40 000 рублей
        • Учет бланков трудовых книжек
        • Учет ГСМ по топливным картам
        • Учет ГСМ по талонам с переходом права собственности в момент получения талонов
      • Отпуск материалов в производство
        • Списание материалов в производство на выполнение работ, услуг (по средней себестоимости)
        • Списание материалов на общехозяйственные нужды (по средней себестоимости)
        • Списание материалов в производство на выпуск продукции (по средней себестоимости)
      • Переработка давальческого сырья
        • Переработка давальческого сырья (позиция заказчика)
        • Переработка давальческого сырья (позиция переработчика)
      • Учет возвратных отходов
        • Учет возвратных отходов при переработке давальческого сырья (позиция переработчика)
        • Учет возвратных отходов при переработке давальческого сырья (позиция заказчика)
        • Учет возвратных отходов собственного производства
        • Использование возвратных отходов в собственном производстве
        • Реализация возвратных отходов собственного производства
      • Учет тары
        • Учет невозвратной тары (упаковки)
      • Учет спецодежды и спецоснастки
        • Учет спецодежды (способ погашения стоимости: равномерно в БУ и в НУ)
        • Учет спецодежды (способ погашения стоимости: единовременно в БУ и в НУ)
        • Учет спецодежды (способ погашения стоимости: равномерно в БУ, единовременно в НУ)
        • Возврат спецодежды на склад
        • Списание спецодежды с истекшим сроком годности (способ погашения стоимости: равномерно в БУ и в НУ)
        • Списание спецодежды с истекшим сроком годности (способ погашения стоимости: единовременно в БУ и в НУ)
        • Списание спецодежды с истекшим сроком годности (способ погашения стоимости: равномерно в БУ, единовременно в НУ)
        • Продажа спецодежды сотруднику при увольнении
        • Учет специальной оснастки
      • Документы и отчеты (материалы)
        • Требование-накладная (М-11)
        • Накладная на отпуск материалов на сторону (М-15)
        • Акт на списание малоценных и быстроизнашивающихся предметов (МБ-8)
        • Ведомость учета выдачи спецодежды, спецобуви и предохранительных приспособлений (МБ-7)
        • Отчет о продукции, произведенной из сырья заказчика
        • Отчет о переработанном сырье
    • Полуфабрикаты
      • Выпуск полуфабрикатов
        • Выпуск полуфабрикатов собственного производства
        • Изготовление полуфабрикатов силами стороннего переработчика (позиция заказчика)
      • Использование полуфабрикатов
        • Использование полуфабрикатов собственного производства при выпуске продукции
      • Реализация полуфабрикатов
        • Реализация полуфабрикатов на сторону
    • Товары
      • Товары (общие сведения)
        • Списание проданных товаров по методу ФИФО
        • Инвентаризация товаров на складе и учет выявленных излишков
        • Пересортица товаров
        • Установка цен номенклатуры для продаж оптом и в розницу
        • Корректировка стоимости реализации (Соглашение об изменении стоимости)
      • Поступление товаров
        • Приобретение товаров по договору поставки
        • Учет дополнительных расходов в стоимости товаров при поступлении (доставка и разгрузка)
        • Покупка товаров для розничной торговли (учет в АТТ по продажным ценам)
        • Переоценка товаров со скидкой в розничной торговле
        • Покупка товаров через посредника (позиция поручителя)
        • Покупка товаров с участием посредника, который действует от своего имени (позиция посредника)
        • Переработка давальческих товаров (позиция заказчика)
        • Учет неотфактурованных поставок в течение месяца
        • Учет банковской гарантии на поставку товара
      • Продажа товаров
        • Продажа товаров в оптовой торговле
          • Продажа товаров в оптовой торговле (предоплата — отгрузка)
          • Продажа товаров в оптовой торговле (отгрузка — оплата)
          • Отгрузка товаров без перехода права собственности
          • Продажа товаров (доставка покупателю силами сторонней транспортной организации)
          • Продажа товаров транзитом (доставка покупателю силами поставщика)
        • Продажа товаров в розничной торговле
          • Реализация товаров в розницу, учитываемых по продажным ценам (наличный расчет в АТТ)
          • Реализация товаров в розницу, учитываемых по продажным ценам (оплата платежной картой в АТТ)
          • Реализация товаров в розницу, учитываемых по ценам приобретения (наличный расчет в АТТ)
          • Реализация товаров в розницу, учитываемых по ценам приобретения (оплата платежной картой в АТТ)
          • Реализация товаров в розницу, учитываемых по продажным ценам (наличный расчет в НТТ)
          • Реализация товаров в розницу, учитываемых по продажным ценам (оплата платежной картой в НТТ)
          • Реализация товаров в розницу, учитываемых по ценам приобретения (наличный расчет в НТТ)
          • Реализация товаров в розницу, учитываемых по ценам приобретения (НТТ, оплата платежной картой)
          • Разукомплектация товаров
          • Переход с учета товаров по продажным ценам на учет по ценам приобретения в розничной торговле в АТТ
          • Сравнение способов учета товаров в розничной торговле
        • Продажа товаров через интернет-магазин
          • Продажа товаров через интернет-магазин (оплата наличными)
          • Продажа товаров через интернет-магазин (оплата платежной картой)
          • Продажа товаров через интернет-магазин (оплата электронными деньгами)
          • Продажа товаров через интернет-магазин (оплата наложенным платежом при доставке товаров по почте)
          • Продажа товаров через интернет-магазин (доставка включена в стоимость товаров)
          • Продажа товаров через интернет-магазин (доставка не включена в стоимость товаров)
          • Продажа товаров через интернет-магазин (сторонняя курьерская служба)
        • Продажа товаров по подарочным сертификатом
          • Продажа собственных подарочных сертификатов (наличный расчет)
          • Продажа собственных подарочных сертификатов (оплата платежной картой)
          • Принятие в оплату собственных подарочных сертификатов
          • Принятие в оплату собственных подарочных сертификатов (с доплатой)
        • Продажа товаров через посредников
          • Продажа товаров в комиссионной торговле (позиция комиссионера, розница)
          • Продажа товаров в комиссионной торговле (позиция комиссионера, опт)
          • Продажа товаров в комиссионной торговле (позиция комитента)
      • Прочее выбытие товаров
        • Списание товаров на собственные нужды
        • Безвозмездная передача товаров на благотворительность
        • Безвозмездная передача товаров по договору дарения
        • Передача товаров из розничной продажи на собственные нужды организации
        • Списание недостачи товаров в пределах норм естественной убыли
        • Списание недостачи товаров сверх норм естественной убыли
      • Премии, бонусы, скидки
        • Денежная премия (бонус) от поставщика за объем закупок (учет у поставщика)
        • Денежная премия (бонус) от поставщика за объем закупок (учет у покупателя)
        • Бонус от поставщика за объем закупок в виде дополнительной партии товара (учет у поставщика)
        • Бонус от поставщика за объем закупок в виде дополнительной партии товара (учет у покупателя)
        • Реализация бонусных товаров
      • Документы и отчеты (товары)
        • Счет на оплату
        • Товарная накладная (ТОРГ-12)
        • Накладная на внутреннее перемещение, передачу товаров, тары (ТОРГ-13)
        • Акт об оказании услуг
        • Отчет комитенту
        • Приказ (постановление, распоряжение) о проведении инвентаризации (ИНВ-22)
        • Инвентаризационная опись товарно-материальных ценностей (ИНВ-3)
        • Сличительная ведомость результатов инвентаризации товарно-материальных ценностей (ИНВ-19)
        • Накладная на оприходование товаров
        • Возврат поставщику
    • Готовая продукция
      • Готовая продукция (общие сведения)
        • Создание спецификаций изделия
        • Установка плановых цен выпуска готовой продукции
      • Учет готовой продукции по нормативной (плановой) себестоимости
        • Учет готовой продукции с использованием счета 40 (первый месяц выпуска)
        • Учет готовой продукции с использованием счета 40 (второй месяц выпуска)
      • Документы и отчеты (готовая продукция)
        • Накладная на передачу готовой продукции в места хранения (МХ-18)
    • Банковские операции
      • Банковские операции (общие сведения)
        • Формирование выписки банка
      • Поступление денежных средств на расчетный счет
        • Поступление предварительной оплаты от покупателя (аванс)
        • Поступление оплаты от покупателя на расчетный счет (постоплата)
      • Списание денежных средств с расчетного счета
        • Оплата поставщику с расчетного счета (аванс по договору)
        • Оплата поставщику с расчетного счета (постоплата по договору)
        • Учет денежных средств при отзыве лицензии у банка (требования удовлетворены полностью)
        • Учет денежных средств при отзыве лицензии у банка (требования не удовлетворены)
        • Перечисление денежных средств на банковскую карту покупателя при возврате товара
      • Купля-продажа иностранной валюты
        • Покупка валюты (с использованием счета 57 «Переводы в пути»)
        • Покупка валюты (без использования счета 57 «Переводы в пути»)
        • Продажа валюты (с использованием счета 57 «Переводы в пути»)
        • Продажа валюты (без использования счета 57 «Переводы в пути»)
      • Переводы между банковскими счетами
        • Перевод денежных средств между расчетными счетами (без использования счета 57)
        • Перевод денежных средств между расчетными счетами (с использованием счета 57)
      • Документы и отчеты (банк)
        • Платежное поручение (оплата поставщику)
        • Платежное поручение (налоги)
    • Финансовые вложения
      • Вклад в уставный капитал других организаций
        • Передача основного средства в качестве вклада в уставный капитал ООО
        • Вклад в уставный капитал ООО деньгами (позиция участника-юрлица)
        • Передача материалов в качестве вклада в уставный капитал ООО
        • Увеличение уставного капитала ООО за счет нераспределенной прибыли (позиция участника-юрлица)
      • Выход из состава участников
        • Переход неоплаченной доли в уставном капитале к обществу (позиция участника-юрлица)
        • Выход юридического лица из состава ООО (позиция участника, полученная действительная доля не превышает первоначальную)
      • Выданные займы
        • Краткосрочный процентный заем в у.е. (учет у заимодавца)
      • Депозиты
        • Учет банковского депозита и процентов по нему при досрочном расторжении договора
    • Кредиты и займы
      • Краткосрочные кредиты и займы
        • Краткосрочный кредит в рублях
        • Кредитная линия на пополнение оборотного капитала
        • Овердрафт (получение, проценты, возврат)
        • Краткосрочный кредит в иностранной валюте
        • Краткосрочный процентный заем в у.е. (учет у заемщика)
      • Долгосрочные кредиты и займы
        • Долгосрочный кредит на формирование инвестиционного актива
    • Кассовые операции
      • Кассовые операции (общие сведения)
        • Формирование кассовой книги
        • Учет недостачи денежных средств в кассе (по результатам инвентаризации)
        • Проверка кассовой дисциплины
      • Поступление денежных средств в кассу
        • Поступление денежных средств в кассу платежного агента
        • Сдача розничной выручки от релизациии услуг в кассу предприятия
        • Инкассация выручки через терминал банка (банкомат)
      • Учет денежных документов
        • Учет ГСМ по талонам с переходом права собственности в момент заправки ТС
        • Учет электронных железнодорожных и авиабилетов, приобретенных через посредника
      • Документы и отчеты (касса)
        • Приходный кассовый ордер (КО-1)
        • Расходный кассовый ордер (КО-2)
        • Расходный ордер на выдачу денежных документов
        • Кассовая книга (КО-4)
        • Справка кассира-операциониста (КМ-6)
        • Акт ревизии наличных денежных средств (ИНВ-15)
    • Расчеты по договорам и сделкам
      • Расчеты по договорам и сделкам (общие сведения)
        • Автозаполнение реквизитов контрагента по данным ЕГРЮЛ и ЕГРИП
        • Счет на оплату покупателю
        • Счет на оплату поставщика
        • Выполнение работ (оказание услуг)
        • Пакетное выставление документов при оказании услуг нескольким контрагентам
        • Акт сверки взаиморасчетов с покупателем
        • Акт сверки взаиморасчетов с поставщиком
      • Расчеты по претензиям и неустойкам
        • Начисление неустойки (штрафа, пеней) за просрочку авансового платежа по договору (учет у продавца)
        • Неустойка (штраф, пени) за нарушение сроков поставки по договору (учет у покупателя)
        • Неустойка (штраф, пени) за нарушение сроков оплаты по договору (учет у продавца)
        • Начисление процентов за пользование чужими денежными средствами
        • Безакцептное списание с расчетного счета организации по исполнительному листу
      • Прекращение обязательств
        • Взаимозачет
        • Трехсторонний взаимозачет
        • Прекращение обязательства по договору поставки отступным (позиция должника)
        • Прощение долга по начисленным по договору займа процентам (позиция заемщика)
        • Прощение долга по начисленным по договору займа процентам (позиция займодавца)
        • Прекращение обязательства по договору займа отступным (позиция должника)
      • Списание долга
        • Погашение дебиторской задолженности, списанной ранее в расходы или за счет резерва
        • Списание безнадежной дебиторской задолженности (без разниц по резерву в БУ и НУ)
        • Списание кредиторской задолженности по полученным авансам (по сроку исковой давности)
        • Списание задолженности при ликвидации кредитора
      • Перемена лиц в обязательстве
        • Уступка права требования по договору цессии (позиция должника)
        • Уступка права требования (позиция цессионария)
        • Уступка денежного требования (цессия) по договору займа (позиция цедента)
      • Факторинг
        • Передача права требования по договору факторинга после наступления срока платежа (позиция клиента-продавца)
        • Передача права требования по договору факторинга (позиция должника-покупателя)
      • Обеспечение обязательств
        • Зачет обеспечительного платежа по договору аренды (позиция арендодателя)
        • Зачет обеспечительного платежа по договору аренды (позиция арендатора)
        • Учет банковской гарантии по длительным договорам оказания услуг
      • Оплата через третье лицо
        • Оплата третьему лицу по просьбе поставщика (позиция покупателя)
        • Оплата третьему лицу по просьбе поставщика (позиция поставщика)
        • Оплата третьим лицом за покупателя (позиция покупателя)
        • Оплата третьим лицом за покупателя (позиция поставщика)
      • Расчеты векселями
        • Оплата товара векселем третьего лица (позиция поставщика)
        • Получение простого векселя в счет оплаты товаров
      • Поручение
        • Расчеты с платежными агентами при оказании услуг абонентам
      • Документы и отчеты (расчеты по договорам)
        • Акт сверки
        • Акт взаимозачета
        • Бухгалтерская справка (вексель)
        • Акт инвентаризации расчетов с покупателями, поставщиками и прочими дебиторами и кредиторами (ИНВ-17)
        • Счет на оплату (работы, услуги)
    • Расчеты с персоналом
      • Подотчетные лица
        • Оплата работ (услуг) по авансовому отчету
        • Приобретение ТМЦ по авансовому отчету (со счетом-фактурой)
        • Приобретение ТМЦ по авансовому отчету (товарный чек без счета-фактуры)
        • Приобретение ГСМ по авансовому отчету (товарный чек без счета-фактуры)
        • Оплата нотариальных услуг через подотчетное лицо
        • Авансовый отчет по командировке на территории РФ
        • Авансовый отчет по загранкомандировке
        • Списание задолженности по подотчетным суммам
        • Отражение перерасхода по сотовой связи
        • Оплата корпоративной картой за товары (работы, услуги)
      • Документы и отчеты (персонал)
        • Приказ о приеме работника (Т-1)
        • Приказ о приеме работников (Т-1а)
        • Расчетная ведомость по зарплате (Т-51)
        • Платежная ведомость (Т-53)
        • Авансовый отчет (АО-1)
    • Расчеты с учредителями
      • Безвозмездная финансовая помощь
        • Получение безвозмездной финансовой помощи от учредителя (доля более 50 процентов)
        • Передача в аренду ОС, полученного от учредителя безвозмездно
        • Оказание безвозмездной финансовой помощи денежными средствами
      • Вклад в имущество общества
        • Вклад в имущество общества материалами (позиция участника-юрлица)
        • Вклад в имущество общества материалами (позиция ООО)
      • Выплата дивидендов
        • Дивиденды учредителю — российской организации
        • Дивиденды учредителю — физическому лицу (не сотрудник)
      • Заем у учредителя
        • Процентный заём от учредителя
        • Беспроцентный заём от учредителя
      • Документы и отчеты (расчеты с учредителями)
        • Бухгалтерская справка (дивиденды)
    • Уставный капитал
      • Вклад в уставный капитал
        • Получение основного средства в качестве вклада в уставный капитал ООО
        • Вклад в уставный капитал ООО деньгами (позиция общества)
        • Получение материалов в качестве вклада в уставный капитал ООО
        • Вклад в уставный капитал ООО в валюте от нерезидента (позиция общества)
        • Увеличение уставного капитала ООО за счет нераспределенной прибыли (позиция общества)
        • Переход неоплаченной доли в уставном капитале к обществу (позиция ООО)
      • Выход из состава участников
        • Выход юридического лица из состава ООО (позиция общества, выплаченная действительная доля превышает первоначальную)
        • Выход физического лица из состава ООО (позиция общества, выплаченная действительная доля превышает первоначальную)
    • Налоги и взносы
      • Транспортный налог
        • Транспортный налог на дорогостоящий автомобиль
        • Уменьшение транспортного налога на плату «Платон» (по итогам года налог больше платы)
        • Уменьшение транспортного налога на плату «Платон» (по итогам года налог меньше платы)
        • Уменьшение транспортного налога на плату «Платон» при исчислении авансовых платежей (по итогам года налог больше платы)
        • Уменьшение транспортного налога на плату «Платон» при исчислении авансовых платежей (по итогам года налог меньше платы)
      • Налог на имущество
        • Налог на имущество по движимому имуществу за 2018 г. и переходный период 2018 — 2019 гг.
      • Торговый сбор
        • Постановка на учет и снятие с учета плательщика торгового сбора
        • Начисление и уплата торгового сбора
      • Недоимка, штрафы, пени по налогам и взносам
        • Отражение доначислений по налоговой проверке за предыдущие годы (ошибка несущественная)
      • Документы и отчеты (налоги)
        • Счет-фактура на отгрузку
        • Счет-фактура на аванс
        • Корректировочный счет-фактура
        • Исправленный счет-фактура
        • Журнал учета полученных и выставленных счетов-фактур (Часть 1)
        • Журнал учета полученных и выставленных счетов-фактур (Часть 2)
        • Книга покупок
        • Книга продаж
    • Оценочные обязательства и резервы
      • Гарантийный ремонт и обслуживание
        • Создание и погашение оценочного обязательства (гарантийный ремонт проданных товаров). Магазин выдает свою гарантию
      • Резервы по сомнительным долгам
        • Создание резерва по сомнительным долгам при переходе с затратного метода по ПБУ 18/02 на балансовый
        • Создание резерва по сомнительным долгам в бухгалтерском и налоговом учете (раз в год)
    • Доходы и расходы
      • Прочие доходы
        • Получение страхового возмещения и ремонт автомобиля по ОСАГО
        • Продажа излишков материалов, выявленных при инвентаризации
      • Расходы по обычным видам деятельности
        • Учет расходов на создание и прокат рекламного видеоролика на телевидении (в СМИ)
        • Расходы на услуги телефонной связи
        • Услуги сторонней организации по предпродажной подготовке товаров
        • Учет расходов на предпродажную подготовку товаров
        • Расходы на поздравительные открытки для контрагентов
        • Страхование автомобиля (ОСАГО)
        • Досрочное расторжение договора ОСАГО
        • Учет по договору на информационно-технологическое сопровождение «1С:ИТС»
        • Учет услуг на вывоз и утилизацию мусора (ТБО) у торговой организации
        • Расходы на приобретение электроэнергии
        • Учет расходов на сертификацию продукции
        • Учет взносов в СРО
      • Прочие расходы
        • Комиссия банка
        • Учет госпошлины, уплаченной при обращении в арбитражный суд
        • Возмещение судебных расходов при частичном удовлетворении иска
        • Новогодние подарки контрагентам
        • Новогодние подарки сотрудникам
        • Новогодние подарки детям сотрудников
        • Учет расходов на новогодние украшения и праздничный корпоратив
        • Штраф за нарушение ПДД с камер видеофиксаци
      • Нормируемые расходы
        • Представительские расходы
        • Нормируемые расходы на рекламу
        • Учет расходов на создание и показ рекламного ролика по технологии IndoorTV
        • Учет расходов на ДМС в пределах норм
        • Учет расходов на ДМС сверх норм
      • Совмещение ОСН и ЕНВД
        • Раздельный учет доходов и расходов при совмещении ОСН и ЕНВД
    • Учетная политика, регистры учета
      • Учетная политика
        • Оформление первичных учетных документов
        • Исправление ошибок в первичных документах
      • Регистры бухгалтерского учета
        • Регистры бухгалтерского учета
        • Регистры бухгалтерского учета для малых предприятий (непроизводственные)
        • Регистры бухгалтерского учета для малых предприятий (производственные)
      • Регистры налогового учета
        • Налоговые регистры формирования отчетных данных
        • Налоговые регистры промежуточных расчетов
        • Налоговые регистры учета состояния единицы налогового учета
        • Налоговые регистры учета хозяйственных операций
      • Переход с УСН на ОСН
        • Порядок перехода с УСН на ОСН
        • Основные средства при переходе с УСН на ОСН (ОС приобретено в период применения УСН)
        • Основные средства при переходе с УСН на ОСН (ОС приобретено в период до применения УСН)
        • Материалы, готовая продукция, принятые работы (услуги) при переходе с УСН на ОСН
        • Заработная плата и страховые взносы при переходе с УСН на ОСН
        • Товары и НДС при переходе с УСН на ОСН
        • Ввод остатков по счетам 90, 91, 99 при переходе с УСН на ОСН в течение года
      • Изменения по ПБУ 18/02
        • Переход с затратного на балансовый метод учета по ПБУ 18/02 (ретроспективно)
    • Регламентные операции
      • Незавершенное производство
        • Оценка НЗП при выпуске продукции
        • Выпуск продукции с учетом НЗП прошлого месяца
        • Оценка НЗП при выполнении работ (учет работ по отдельным номенклатурным группам, затраты списываются «с учетом всей выручки»)
        • Оценка НЗП при выполнении работ (учет работ по отдельным номенклатурным группам, затраты списываются «без учета выручки»)
        • Оценка НЗП при выполнении работ (учет работ по одной номенклатурной группе, затраты списываются «с учетом всей выручки»)
      • Закрытие счетов учета затрат
        • Учет прямых и косвенных расходов при выполнении работ (первый месяц)
        • Учет прямых и косвенных расходов при выполнении работ (второй месяц)
        • Учет прямых и косвенных расходов при выпуске продукции (первый месяц)
        • Учет прямых и косвенных расходов при выпуске продукции (второй месяц)
        • Учет транспортных расходов на доставку товаров от поставщика в расходах на продажу
        • Учет транспортных расходов на доставку товаров от поставщика при изменении учетной политики
        • Закрытие общехозяйственных расходов методом «директ-костинг»
        • Закрытие общехозяйственных расходов методом полной себестоимости при выполнении работ (услуг)
        • Закрытие общехозяйственных расходов методом полной себестоимости при выпуске продукции
        • Закрытие общепроизводственных расходов при изменении их базы распределения
        • Списание затрат вспомогательного производства на основное производство (по фактической себестоимости)
        • Списание затрат вспомогательного производства на основное производство (по плановой себестоимости)
        • Списание затрат вспомогательного производства на общехозяйственные расходы
        • Списание затрат при оказании услуг без учета выручки
        • Списание неисправимого производственного брака
        • Учет расходов на исправление брака готовой продукции по гарантии
        • Закрытие общепроизводственных расходов при выпуске продукции
        • Закрытие года (реформация баланса)
        • Перенос убытков на будущее

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

Теги: 1С:Предприятие • Иерархия • Справочник • ЯзыкЗапросов

Получение элементов иерархического справочника, находящихся в подчинении заданной группы

Для получения подчиненных элементов иерархического справочника в языке запросов предусмотрена конструкция В ИЕРАРХИИ:

ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (&Группа)

В данном примере будут получены все записи справочника Номенклатура, находящиеся в группе &Группа, включая ее саму, ее подчиненные группы и элементы, принадлежащие подчиненным группам.

Если же нас интересуют только элементы и группы, находящиеся непосредственно в заданной группе, то такие элементы мы можем получить, установив условие на поле Родитель:

ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель = &Группа

Такой запрос выберет группы и элементы, находящиеся в подчинении группы со ссылкой &Группа.

Проверка наличия подчиненных элементов у элемента справочника

Для проверки наличия подчиненных записей элемента справочника можно пользоваться запросом, аналогичным представленному:

ВЫБРАТЬ ПЕРВЫЕ 1 Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель = &Родитель

В данном примере ссылка элемента, для которого необходимо проверить наличие дочерних элементов, записывается в параметр запроса &Родитель. После выполнения такого запроса необходимо проверить результат на пустоту. Если результат не пустой, то подчиненные записи есть. Иначе — нет.

Если Запрос.Выполнить().Пустой() Тогда Сообщить(«Записей нет»); Иначе Сообщить(«Записи есть»); КонецЕсли;

Получение всех родителей элемента

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

ТекущийЭлементНоменклатуры = ЭлементНоменклатура; Запрос = Новый Запрос( «ВЫБРАТЬ | Номенклатура.Родитель, | Номенклатура.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры» ); Пока Истина Цикл Запрос.УстановитьПараметр(«ТекущийЭлементНоменклатуры», ТекущийЭлементНоменклатуры); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Прервать; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Для НомерКолонки = 0 По Результат.Колонки.Количество() — 1 Цикл ТекущийЭлементНоменклатуры = Выборка; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; Иначе Сообщить(ТекущийЭлементНоменклатуры); КонецЕсли; КонецЦикла; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; КонецЕсли; КонецЦикла;

В данном примере в окно служебных сообщений выводятся все родители для ссылки, записанной в переменную ЭлементНоменклатура. В цикле выбирается по пять родителей ссылки.

Если число уровней в справочнике ограничено и невелико, то возможно получение всех родителей одним запросом без цикла.

Вывод иерархического справочника в отчет

Для вывода иерархического справочника в отчет с сохранением иерархии необходимо пользоваться запросом аналогичным следующему:

ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК Номенклатура УПОРЯДОЧИТЬ ПО Наименование ИЕРАРХИЯ

Данный запрос выбирает все записи из справочника и производит упорядочивание по иерархии. Результат будет упорядочен по наименованию, с учетом иерархии.

Для того, чтобы группы справочника размещались выше элементов необходимо в данном запросе заменить предложение УПОРЯДОЧИТЬ ПО на следующее:

УПОРЯДОЧИТЬ ПО Номенклатура.ЭтоГруппа ИЕРАРХИЯ, Наименование

Результат по-прежнему будет упорядочен по иерархии, однако группы будут располагаться выше элементов.

Возможна также замена предложения УПОРЯДОЧИТЬ ПО на предложение АВТОУПОРЯДОЧИВАНИЕ. В этом случае результат будет упорядочен в соответствии с настройками справочника, т.е. если в справочнике указано, что группы должны располагаться выше элементов, то они будут расположены выше.

Получить иерархическую структуру справочника также возможно и при помощи итогов:

ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа = ЛОЖЬ УПОРЯДОЧИТЬ ПО Наименование ИТОГИ ПО Номенклатура.Ссылка ТОЛЬКО ИЕРАРХИЯ

Получение итогов по иерархии

Для получения итогов по иерархии в запросе необходимо в предложении ИТОГИ ПО указать ключевое слово ИЕРАРХИЯ после указания поля, по которому будет рассчитываться итоги. Пример отчета «Обороты номенклатуры» с получением итогов по иерархии:

ВЫБРАТЬ УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура, УчетНоменклатурыОбороты.Номенклатура.Представление, УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот ИЗ РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты ИТОГИ СУММА(КоличествоОборот) ПО Номенклатура ИЕРАРХИЯ

В результате данного запроса будут рассчитаны итоги не только для каждой номенклатуры, но и для групп, к которым принадлежит та или иная номенклатура.

В случае, когда не нужны итоги по элементам, а нужны итоги только по группам, необходимо использовать в итогах конструкцию ТОЛЬКО ИЕРАРХИЯ:

ВЫБРАТЬ УчетНоменклатурыОбороты.Номенклатура КАК Номенклатура, УчетНоменклатурыОбороты.Номенклатура.Представление, УчетНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот ИЗ РегистрНакопления.УчетНоменклатуры.Обороты КАК УчетНоменклатурыОбороты ИТОГИ СУММА(КоличествоОборот) ПО Номенклатура ТОЛЬКО ИЕРАРХИЯ

В результате данного запроса будут итоговые записи только для групп номенклатуры.

Поиск: 1С:Предприятие • Иерархия • Справочник • Язык запросов

Как мы в 1С: Предприятии работаем с моделями данных (или «Почему мы не работаем с таблицами?»)

В этой статье мы хотим рассказать о том, какая модель работы с данными выбрана в платформе 1С:Предприятия и почему.
Для бизнес-приложений работа с данными — это очень важный архитектурный вопрос. Так или иначе, но вся работа приложения строится вокруг данных. Причем, если в некоторых классах программных систем данные носят вспомогательный характер, то в бизнес-приложениях данные являются основным содержанием решаемых задач.
Здесь (в этой статье) мы говорим не о техническом аспекте хранения и манипулирования данными, а об описании данных как способе проектирования приложения. Почему же данные так важны для бизнес-приложений?
Потому, что они описывают саму предметную область. Какие сущности имеются в бизнесе, как они связаны между собой. Данные очень хорошо описывают и саму решаемую задачу. Ведь при проектировании приложений нас не интересуют абсолютно все данные, а интересуют те данные (и их взаимосвязи), которые тем или иным способом влияют на решаемую задачу (включая некоторый запас развития системы в потенциально интересных направлениях). Например, если мы автоматизируем процесс развития персонала, то нас будет интересовать по сотрудникам образование, история работы. Но мы не будем отражать информацию по размерам одежды и обуви. Но, если, например, мы хотим автоматизировать учет спецодежды, то это становится уже интересным. Хотя, пытливый проектировщик может и тут поставить вопрос. Где развитие персонала, там и мотивация. А где мотивация, там и, возможно, изготовление одежды с фирменной символикой. Здесь видно, что количество данных в природе бесконечно, и искусство моделирования данных во многом определяет искусство проектирования приложений.
Конечно, очень важное место в бизнес-приложениях занимают и процессы. Хотя очень хочется (и нам, и разработчикам других платформ для разработки бизнес приложений) больший вес в проектировании приложений возложить на процессы, но данные все равно остаются наиболее значимым аспектом предметной области. И именно на отражении данных строится основная модель приложений.
Сделаем только небольшую оговорку. Под данными здесь понимаются и данные, сопровождающие процессы. То есть, получается, что процессы тоже косвенно выражаются через модель данных.
В платформе 1С:Предприятие есть и механизмы для отражения именно процессов, но это тема отдельной статьи.
Существует несколько традиционных парадигм работы с данными.
Прежде всего – есть классическая реляционная модель. В ней данные описываются в виде реляционных таблиц (обычно хранимых в реляционных DBMS). Эта парадигма хотя и совсем не новая, но вполне актуальная.
Есть объектная парадигма. В ней данные описываются в виде объектов языка программирования и каким-то образом сохраняются в базе данных. Это может быть реляционная или объектная база данных. В первом случае возможности моделирования определяются DBMS, во втором случае — используемым ORM.
Есть еще методики и подходы, которые применяются реже (при создании бизнес-приложений). Например, подход, основанный на слабоструктурированных данных.
Теперь, собственно, о том подходе, который мы выбрали для платформы 1С:Предприятия. Для него нет официально принятого названия. Назовем его «модель типов прикладных объектов». Суть подхода в том, что платформа предлагает разработчику некоторый набор типов прикладных объектов. Каждый тип предназначен для отражения в модели приложения некоторой категории сущностей предметной области. Разработчик приложения при отражении предметной области решаемой задачи в модели приложения должен выбрать подходящие типы объектов и с помощью них описать модель данных. На самом деле при этом он описывает не только модель данных, но и, во многом, модель самого приложения. Но об этом чуть позже.
Что представляет собой тип прикладных объектов?
Это некоторый заложенный в платформу шаблон (можно еще считать его абстрактным классом), определяющий множество различных аспектов работы с сущностью предметной области.
Типы прикладных объектов проявляются и при разработке (в design-time) и при работе системы (в run-time). В design-time это мета-модель описания объектов в метаданных и классы для манипулирования данными в программной модели. В run-time это различные аспекты поведения системы при работе с объектами этого типа. Например, поведение механизма блокировок.
В 1С:Предприятии существует несколько типов прикладных объектов.
Для примера возьмем три типа:

  • Справочники
  • Документы
  • Регистры накопления

Справочники предназначены для отражения в системе некоторой условно постоянной информации (списков сотрудников, товаров, клиентов…).
Документы отражают некоторые события предметной области (продажу, прием сотрудника на работу, перечисление денег в банк). Иногда они называются по названиям печатных форм («платежное поручение», «приказ о приеме на работу», …). Но это только для удобства понимания. По сути, это именно тип события, а не печатной формы.
Регистры накопления предназначены для отражения в приложении некоторой системы учета. Например, учета хранения денежных средств или товаров на складах.
Посмотрим, что все-таки входит в «комплект» возможностей, предоставляемый типами прикладных объектов
Прежде всего, конечно, тип прикладного объекта описывает модель данных и обеспечивает отображение данных на реляционную модель хранения. Но это только небольшая часть того, что он определяет.
Например, для справочника:

  • существует несколько стандартных реквизитов (полей), заложенных сразу в платформу (ссылка-идентификатор, код, наименование, ссылка на родителя для иерархического справочника, …)
  • можно описать свои (произвольные) реквизиты (поля)
  • можно описать табличные части, которые представляют собой тесно связанные сущности (containment) или еще их можно считать вложенными таблицами

Для документа — похоже, но есть стандартный реквизит Дата, отражающий положение события относительно других событий на оси времени, а также признак «Проведен», определяющий, отражается документ в системе учета или является черновиком.
Для регистра накопления поля делятся на измерения, ресурсы и реквизиты. Измерения описывают систему координат модели учета (например, товар, склад), ресурсы – показатели (например, количество, сумма), реквизиты – просто дополнительные поля (не влияющие на модель учета, но комментирующие записи движений).
Почему мы оперируем типами прикладных объектов, а не оперируем, например, просто таблицами (или просто сущностями – entity)?
Это очень важный момент. Таблицы имеют много преимуществ. Они ближе к простейшему моделированию в реляционной модели, они не ограничивают разработчика рамками заложенных типов. Но таблицы и не дают тех возможностей, которые дает выбранный нами подход.
Суть выбранного нами подхода в том (если говорить простыми словами), что в нашем подходе сама система (платформа) «много чего знает» про описанные объекты и «много чего умеет с ними делать». На основании этих знаний и умений система автоматически обеспечивает работу более десятка разных механизмов, работающих прямо или косвенно с этими объектами. То есть, получается, что разработчик приложения выбирает тип объекта и описывает конкретный объект, а платформа, зная тип и описание конкретного объекта, сама обеспечивает множество различных полезных функций и механизмов. Это достигается за счет того, что на уровне типа объекта определена семантика объектов данного типа (назначение объекта «по крупному»), а модель метаданных позволяет уточнить семантику конкретного объекта за счет различных свойств и специализированных моделей, описывающих различные аспекты жизнедеятельности.
Перечислим только некоторые из них:

  • Прежде всего, конечно, это создание структур данных для хранения и автоматическое преобразование структуры при изменении модели
  • Набор классов в объектной модели для манипулирования данными (чтения, записи, поиска)
  • Механизм объектно-реляционного преобразования
  • Набор типичных процедур обработки данных. Например, для документов это автоматическая нумерация, для регистра это расчет итогов, получение среза остатков на конкретный момент времени, и т.д.
  • Отражение в системе прав. Так как система знает о назначении объекта, то знает и какие права для него будут актуальны
  • Визуализация (отражение в интерфейсе). Опять же, зная о назначении и роли объектов, система сама конструирует и команды в интерфейсе приложения для доступа к объектам этого типа, и формы для просмотра и редактирования, и команды для различных действий с объектом.
  • Обмен данными. На основании знания семантики данных платформа предоставляет стандартный механизм для асинхронного обмена измененными данными как среди родственных приложений (узлов распределенной базы), так и между разнородными приложениями (написанными как на 1С:Предприятии, так и на других технологиях)
  • Объектные и транзакционные блокировки. Для правильного построения системы блокировки нужно знание о назначении данных и о взаимосвязях.
  • Механизм характеристик (дополнительных полей, определяемых пользователем)
  • Автоматически предоставляемый REST интерфейс (по стандарту OData)
  • Выгрузку-загрузку данных в XML, JSON
  • Кроме того, автоматически работают такие механизмы как: полнотекстовый поиск, журналирование доступа к данным, и т.д.


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

Установка одного свойства справочника «Иерархический справочник» сразу поддерживает иерархию в пользовательском интерфейсе, в отчетах, в объектной модели.
Для документов существуют такие возможности, как журналы, объединяющие несколько типов документов, сквозная нумерация в разрезе периодов и т.д.
Для регистров накопления наиболее важной возможностью является автоматическое хранение рассчитанных итогов и готовые виртуальные таблицы для доступа к итогам в различных разрезах и с учетом периодичности.
То есть, по сути, в типы прикладных объектов заложена существенная часть универсальных (типовых) механизмов бизнес-логики приложения, характерных для соответствующей категории данных предметной области.
Получается, что разработчик собирает приложение из объектов выбранных типов, как из деталей конструктора. Причем, если бывают конструкторы с «абстрактными» деталями, то в нашем конструкторе детали уже с «назначением» — колеса, окна, двери…
На основе типа «Справочник» разработчик строит справочники продуктов, сотрудников, валют, клиентов; на основе типа «Документ» — документы «Заказ на покупку», «Счет», «Заказ на продажу» и т.д.
Еще стоит сказать про методологическую ценность такого подхода. Все разработчики оперируют некоторым набором понятий, который помогает им лучше понимать суть приложений, упрощает общение. Открыв незнакомый проект 1С:Предприятия разработчик сразу видит знакомые понятия и может быстро разобраться в том какую роль в системе играет тот или иной объект. Например, чтобы понять суть приложения, стоит посмотреть на состав регистров – обычно она отражает основное назначение приложения. Если открыть структуру таблиц или, тем более, структуру классов незнакомого приложения написанного на инструментах, оперирующих таблицами и классами, то понимания будет существенно меньше.
Но, что еще важно, такой подход сближает язык разработчиков и представителей бизнеса (или аналитиков). Про необходимость наличия такого языка хорошо сказано в книге «Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем» Эрика Эванса. Типы прикладных объектов достаточно быстро становятся понятными не-программистам, и это позволяет обсуждать аналитикам, заказчикам и разработчикам основную функциональность проекта на одном языке. Часто можно встретить представителей бизнеса или аналитиков, которые не владеют программированием, но могут поставить задачу в терминах типов прикладных объектов 1С:Предприятия.
Что еще интересно. Этот подход обеспечивает постоянное развитие системы. Мы добавляем в платформу новые механизмы, и они сразу начинают работать для уже существующих объектов (без усилий разработчика приложений или с минимальными усилиями). Например, недавно мы разработали механизм хранения истории данных (версионирования). Так как система знает в общем виде о семантике данных, то разработчику достаточно поставить флажок, что он хочет хранить историю данных конкретного объекта, и платформа обеспечивает все, что нужно, от хранения истории, до визуализации — отображения пользователю истории изменений в виде различных отчетов. Когда ранее мы разработали механизм стандартного REST интерфейса (на основе стандарта OData), то во всех приложения сразу появился готовый REST интерфейс. Разработчикам ничего не пришлось для этого дорабатывать.
Почему мы не делаем еще и «просто таблицы» (в дополнение к готовым типам прикладных объектов)? Это непростой вопрос. Мы сами себе его периодически задаем.
С одной стороны это кажется заманчивым. Так мы бы закрыли все спорные случаи, когда предметная область не идеально ложится в заготовленный нами набор типов прикладных объектов. Можно было сказать разработчикам – «ну вот тебе просто таблица – и делай в ней все, как сам хочешь». Но с другой стороны это приведет к тому, что все наши стандартные механизмы будут пребывать «в растерянности» — как им обходиться с этими таблицами? Ведь они не будут знать семантику этих данных и не смогут понять, как с ними правильно работать. Ну, то есть с ними можно работать «как-то». Строго говоря, у нас есть такой опыт в части внешних источников. Для внешних источников мы описываем у себя именно таблицы (не указывая предметную направленность). И система с ними работает некоторым универсальным образом – при этом не поддерживается часть функциональности.
Пока мы все-таки стараемся удержаться от введения «просто таблиц», чтобы обеспечить чистоту модели и возможность добавлять новую функциональность, опираясь на знание о семантике всех данных. Если каких-то возможностей не будет хватать, то вначале мы все-таки будем рассматривать то, как можно развить состав типов прикладных объектов. Но, конечно, это вопрос дискуссионный, и мы будем продолжать про него думать.
Таким образом, возможности, которые предоставляет в готовом виде платформа 1С:Предприятия, и то повышение уровня абстракции, которое ценится прикладными разработчиками, во многом опираются именно на набор типов прикладных объектов. Это является одним из наиболее существенных отличий 1С:Предприятия от других средств разработки и одним из главных инструментов, обеспечивающих быструю и унифицированную разработку.

Для более глубокого изучения 1С скачайте книгу «Разработка оперативного учёта в 1С 8.3»

Язык 1С считается самым простым в изучении. Одно из его конкурентных преимуществ – возможность написания кода на русском, что значительно упрощает процесс его освоения. Хотя имеются и англоязычные варианты языка, предназначенные для внедрения на зарубежных предприятиях.

Программирование на 1С – создание алгоритма или программного кода, который позволяет пользователю без проблем работать в программном интерфейсе. Основной инструмент языка – команды (слова), которые в определённой последовательности создают общую функциональную оболочку программы. Команды бывают следующих видов:

1. Переменные;

2. Операторы;

3. Функции и процедуры;

Давайте разберём все их более детально.

Переменные

Допустим, имеется число 15. Это есть значение. Изначально оно нигде не сохраняется. Чтобы поместить её в информационную базу (ИБ) программы, необходимо выполнить сохранение в переменной, которая может именоваться хоть как, скажем, результат.

Пример:

Результат = 15; Результат = Результат + 10; Сообщить(Результат); //будет отображено «25»

Переменная, которая относится к объекту 1С (поле справочника, допустим) и сохраняется в информационную базу – это реквизит. К любой переменной допускается присвоение разных типов данных: можно сначала присвоить тип «число», а затем – тип «строка». Но для реквизитов язык 1С предусматривает только один тип данных. Если указать в нём другое значение, допустим, вместо цифры – строку, то программа сначала попробует выполнить преобразование в цифровой формат. Если она не сможет это сделать, значение будет пустым.

Строка в стандартной переменной не ограничена по длине, в реквизите – чётко определена (но если требуется выставить неограниченную длину – устанавливается значение длины 0). Выполнять обращение к отдельным буквам в слове нельзя, но можно искать целые части (Лев(), Прав(), Сред()).

Сложные переменные

Давайте разберём пример, когда переменной присвоено несколько значений.

  • Массив

По виду массив аналогичен колонке в Excel. Каждая ячейка – переменная, которая имеет только одно название. Чтобы перейти к определённой ячейке, нужно ввести её номер.

Результат = Новый Массив; Результат.Добавить(25); //в первой ячейке значение 25 Результат.Добавить(34); //во второй ячейке значение 34 Сообщить(Результат); //выводится значение первой ячейки

Ячейки в 1С нумеруются с 0, а не с 1.

  • СписокЗначений

Аналогичные ячейки, но с возможностью добавления комментария.

Результат = Следующий СписокЗначений; Результат.Добавить(25, «Это 25»); //в первой ячейке значение 25 Результат.Добавить(34, «Это 34»); //во второй ячейке значение 34 Сообщить(Результат.Получить(0).Значение); //выводится значение первой ячейки //или можно вывести комментарий, //тогда вместо .Значение пишется .Представление

  • ТаблицаЗначений

Здесь программирование таблиц значений на 1С аналогично Excel — страничке со множеством строк и колонок.

  • ДеревоЗначений

Древовидная таблица, самый простой пример – окно конфигурации.

Строки программы

В конце любой строчки стоит «;», а комментарий добавляется после знака «//». Значение пишется в кавычках, например «14». Если требуется ввести кавычку в значении, её пишут два раза: «14 «»o»»!».

Значение может быть разделено на две строки, для этого язык 1С имеет знак «|»:

«Начало значения

| его продолжение»

Для указания специфических символов используется объект: «Символы.»:

«Начало значения» + Символы.ПС + «его продолжение» //ПС – перенос строки

Операторы

Это средства, встроенные в язык 1С. Используются для создания простейшей последовательности.

  • Условный оператор

Те или иные строки выполняются при наличии необходимых условий.

Результат = 15; Если Результат < 100 или Результат > 200 Тогда Сообщить(«Условие выполнено»); ИначеЕсли Результат > 200 Тогда Сообщить(«Условие не выполнено»); Иначе Сообщить(«Что-то еще»); КонецЕсли;

  • Цикл

Строчки выполняются установленное количество раз или пока выполняется определённое условие.

//считаем по-одному Для Результат = 1 по 20 Цикл Сообщить(Результат); КонецЦикла; //считаем по-другому Результат = 1; Пока Результат < 20 Цикл Результат = Результат + 1; Сообщить(Результат); КонецЦикла; //если имеется список значений, то можно обойти //каждое из его значений Результат = Новый СписокЗначений; Для каждого ЗначениеСписка из Результат Цикл Сообщить(ЗначениеСписка.Значение); КонецЦикла; //»ЗначениеСписка» — это переменная, ее можно //называть как угодно

Для прерывания цикла язык 1С имеет команду «Прервать». Для прерывания только одной итерации – «Продолжить».

Объекты

Любой объект в 1С полноценен, то есть ему могут присваиваться уникальные от остальных методы и данные.

Для создания объекта используется параметр «Новый».

Результат = Новый Массив(); Результат = Новый СписокЗначений();

Для создания объектов применяются менеджеры. Их называют в соответствии с ветками конфигурации: Документы, Справочники и т.д. Методы в менеджере можно расширять:

Справочники.Номенклатура.СоздатьЭлемент(); Документы.Накладная.НайтиПоНомеру(«…»);

Собственные объекты конфигурации 1С неизменяемы.

Ошибки в 1С

Программирование на 1С отличается тем, что при написании программы не всегда понятно, появится ли ошибка при выполнении той или иной строчки. Так, если во внешней обработке ввести:

Справочники.Номенклатура.НайтиПоКоду(«…»)

и открыть её в базе, где указанного справочника нет – возникнет ошибка.

Чтобы она не выскочила, можно применять такой алгоритм:

Попытка Справочники.Номенклатура.НайтиПоКоду(«…»); Исключение Результат = ОписаниеОшибки(); Сообщить(«Ой-ой-ой»); Сообщить(Результат); КонецПопытки;

Если при выполнении кода между «Попытка» и «Исключение» будет ошибка, то выполнение остановится и программа перейдёт к строчке между «Исключение» и «КонецПопытки». Если ошибка не появится, строчки выполняться не будут.

Функция ОписаниеОшибки() запускается только между «Исключение» и «КонецПопытки» и выдаёт сведения о содержании возникшей ошибки.

Функции и Процедуры

Данные методы предназначены для одноимённого наименования сразу нескольких строчек. Затем, при написании этого названия в тексте кода, будет активирована соответствующая функция. Функции и процедуры – это стандартные методы и обработчики в языке 1С:

//Программируем Процедура КакоетоДействие() Сообщить(«Результат»); КонецПроцедуры //Вызываем КакоетоДействие();

Отличие функции от процедуры в том, что последняя не может вернуть значение, которое было посчитано при выполнении данных строк:

Функция Посчитать(Переменная1, Переменная2) Возврат Переменная1 + Переменная2; КонецФункции //Вызываем Результат = Посчитать(15, 25); Сообщить(Результат); //будет сообщение «40»

Как программировать?

Программирование на 1С подразумевает использование модулей. Найдя подходящий модуль, можно приступать к написанию своего кода.

Пример для написания кода во внешней обработке:

  • Создание обработки.
  • Создание формы, добавление кнопки на форму и обработчика события для этой кнопки.
  • Написание своего кода в обработчике кнопки в модуле формы. Обработчик кнопки выполнится при открытии обработки в режиме «Предприятие» (пользовательский режим 1С) и нажатии на эту кнопку.

Основное назначение.

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

С точки зрения пользователя, следует иметь в виду, что в Конфигураторе создается не сам справочник, как список значений, а разрабатывается заготовка справочника, его шаблон. В процессе конфигурирования описывается структура информации, которая будет храниться в справочнике, разрабатывается экранное и, если необходимо, печатное представление справочника, задаются различные особенности его поведения.

Реквизиты справочника.

В качестве обязательных реквизитов каждый справочник имеет Код и Наименование. Код элемента справочника может быть как числовым, так и текстовым. Система 1С:Предприятие 8 предоставляет широкие возможности по работе с кодами элементов справочника: автоматическое присвоение кодов, автоматический контроль уникальности кода и другие.

Помимо Кода и Наименования, в справочниках системы 1С:Предприятие может храниться любая дополнительная информация об элементе справочника. Для хранения такой информации в справочнике могут быть созданы дополнительные реквизиты (поля). Например, справочник Сотрудники почти наверняка будет иметь реквизиты Должность, Оклад, ДатаПриема и другие.

Типы данных.

Для каждого реквизита справочника необходимо задать тип данных, например, «число», «строка», «дата», булево (Истина или Ложь). Это базовые типы, но можно указать и сложные типы данных. Например, реквизит Должность имеет тип данных Должности. В этом случае, значения этого реквизита будут выбираться из справочника Должности. Так реализуется простейшая связь между справочниками, когда значения реквизитов одного справочника выбираются из элементов другого справочника.

Виды справочников.

Иерархические справочники — Список элементов справочника в системе 1С:Предприятие 8 может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.

Подчиненные справочники — Между справочниками может быть установлено отношение подчиненности. В терминах реляционных баз данных, между таблицами устанавливается связь «один-ко-многим». В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца. Иногда можно сказать, что элементы одного справочника принадлежат элементам другого. Например, в системе может быть справочник Договора. Тогда его можно сделать подчиненным справочнику Клиенты. Это означает, что клиент владеет договорами и у одного клиента может быть несколько договоров.

Табличная часть.

В платформе 1С реализована возможность для элемента справочника задавать одну или несколько табличных частей. Эту возможность рекомендуется использовать для отражения информации, связанной с данным элементом, но не имеющей собственной объектной сущности (для которых рекомендуется заводить подчиненные справочники). Например, для справочника Сотрудники могут быть заведены табличные части Образование и СоставСемьи. Работа с табличными частями похожа на работу с подчиненными справочниками за исключением того, что табличные части не могут использоваться в качестве значений реквизитов других объектов.

Примеры работы со справочниками в 1С.

// Ссылка на справочник

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

//Создание и запись нового элемента справочника

//Создание и запись новой группы справочника

// Как получить пустую ссылку типа справочник

ПустаяСсылка = Справочники.Валюты.ПустаяСсылка();
Если ПустаяСсылка.Пустая() Тогда
Сообщить(«Ссылка пустая.»);
КонецЕсли;

// Поиск элемента справочника, если элемент найден, то он возвращается, иначе возвращается значение Неопределено

//далее нужно проверить найденное значение

Если НайденныйСотр = Неопределено Тогда
//элемент не найден
Иначе
//элемент найден
КонецЕсли;

//Удаление элемента справочника

СпрСотр = Справочники.Сотрудники;
СпрСотр.Удалить(); //непосредственное удаление текущего элемента справочника
СпрСотр.УстановитьПометкуУдаления (Истина); //пометка на удаление
СпрСотр.УстановитьПометкуУдаления (Ложь); //снять пометку на удаление

//можно проверить, помечен ли элемент на удаление
//свойство ПометкаУдаления имеет тип Булево (Истина или Ложь)

Пометка = СпрСотр.ПометкаУдаления; //обратите внимание: это свойство
Если Пометка = Истина Тогда
//элемент помечен на удаление
КонецЕсли;

//перебор элементов справочника

//перебор внутри группы (при иерархической структуре), группа в 1С является родителем для элементов внутри

//выборка элементов справочника, подчиненного другому справочнику

// Как внести изменения в элемент справочника по ссылке

// Как узнать принадлежность элемента справочника группе с учетом уровней иерархии

Если СсылкаНаЭлемент.ПринадлежитЭлементу(СсылкаНаГруппу) Тогда
Сообщить(СсылкаНаЭлемент.Наименование + » принадлежит » + СсылкаНаГруппу.Наименование);
КонецЕсли;

// Как скопировать существующий элемент справочника

// Как выяснить уровень вложенности элемента справочника

Сообщить(СсылкаНаЭлемент.Уровень());

// Примеры работы со справочниками в 1С с помощью языка запросов
// Как обойти все элементы справочника

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Контрагенты.Ссылка
| ИЗ
| Справочник.Контрагенты КАК Контрагенты»;

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

СсылкаНаГруппу = Справочники.Контрагенты.ПустаяСсылка();
СсылкаНаЭлемент = Справочники.Контрагенты.ПустаяСсылка();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Ссылка.ЭтоГруппа Тогда
СсылкаНаГруппу = ВыборкаДетальныеЗаписи.Ссылка;
Иначе
СсылкаНаЭлемент = ВыборкаДетальныеЗаписи.Ссылка;
КонецЕсли;
КонецЦикла;

// Как отобрать элементы справочника по родителю (перечислим все элементы группы)

Запрос.УстановитьПараметр(«Родитель», СсылкаНаГруппу);

РезультатЗапроса = Запрос.Выполнить();

// Как отобрать элементы справочника по владельцу (перечислим все договоры контрагента)

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка
| ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
| ГДЕ
| ДоговорыКонтрагентов.Владелец = &Владелец»;

Запрос.УстановитьПараметр(«Владелец», СсылкаНаЭлемент);

РезультатЗапроса = Запрос.Выполнить();

// Как отобрать элементы справочника по коду, наименованию, реквизиту

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;

Оставить комментарий

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