Добавить в корзинуПозвонить
Найти в Дзене
FanDzen

Гайд по автоматизации расчётов и работе с регистрами в конфигурации 1С

Этот гайд предназначен для специалистов, обучающихся работе с конфигурацией 1С, и подробно раскрывает процесс автоматизации расчётов и организации учёта товаров с помощью регистров сведений и накопления. В нем пошагово описаны основные приёмы создания вычислений, настройки документов и использование общих модулей для повышения эффективности работы с торговыми операциями. Следуя этому руководству, вы сможете легко повторить и внедрить указанные решения в своей информационной системе. &НаКлиенте Процедура ПереченьТоваровКоличествоПриИзменении(Элемент) // Получение текущей строки табличной части СтрТабЧасти = Элементы.ПереченьТоваров.ТекущиеДанные; // Расчёт суммы: Цена * Количество СтрТабЧасти.Сумма = СтрТабЧасти.Цена * СтрТабЧасти.Количество; КонецПроцедуры Аналогично откройте свойства поля Цена в табличной части, перейдите к событию ПриИзменении, создайте обработчик на клиенте и добавьте такой же код с расчётом суммы. В результате сумма будет автоматически пересчитываться при вводе или
Оглавление

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

Создание автоматического расчёта суммы по цене и количеству в документе

  • Откройте форму документа, в табличной части найдите поле Количество.
  • Двойным щелчком откройте свойства этого поля.
  • Перейдите в раздел События и выберите событие ПриИзменении.
  • Нажмите на значок лупы и выберите вариант создания обработчика на клиенте. Откроется редактор программного кода.
  • Вставьте следующий код, который будет автоматически рассчитывать сумму для текущей строки при изменении количества:
&НаКлиенте
Процедура ПереченьТоваровКоличествоПриИзменении(Элемент)
// Получение текущей строки табличной части
СтрТабЧасти = Элементы.ПереченьТоваров.ТекущиеДанные;
// Расчёт суммы: Цена * Количество
СтрТабЧасти.Сумма = СтрТабЧасти.Цена * СтрТабЧасти.Количество;
КонецПроцедуры

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

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

Создание сообщения при записи документа о количестве строк и общем количестве товаров

  • Перейдите в редактор формы документа и откройте вкладку Модуль формы.
  • Создайте событие ПриЗаписиНаСервере с параметрами (Отказ, ТекущийОбъект, ПараметрыЗаписи).
  • Добавьте код для вывода сообщения, где указывается количество строк и общее количество товаров в табличной части:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Сообщить("Всего в документе " +
Строка(ТекущийОбъект.ПереченьТоваров.Количество()) + " строк(и) с количеством товаров " +
Строка(ТекущийОбъект.ПереченьТоваров.Итог("Количество")) + " шт");
КонецПроцедуры

Теперь при проведении или записи документа пользователи будут видеть обобщённое сообщение.

Создание регистра сведений для хранения истории цен поступления

  1. В конфигураторе 1С правой кнопкой мыши на элементе Регистры сведений выберите Добавить новый регистр с именем, например, "Цены поступления".
  2. На вкладке Основные установите:
    Периодичность — "В пределах дня"
    Режим записи — "Подчиняется регистратору"
  3. На вкладке Данные добавьте:
    Измерение: Товар (тип — СправочникСсылка.Товары)
    Ресурс: ЦенаПоступления (тип — число, длина 10, точность 2)
  4. На вкладке Регистраторы установите документ ПоступлениеТоваров в качестве регистратора.
  5. Сохраните изменения.

4. Редактирование документа «Поступление товаров» для формирования движений по регистру сведений

  1. В конфигураторе откройте объект документа ПоступлениеТоваров.
  2. Перейдите на вкладку Движения.
  3. Отметьте выбранным регистр сведений ЦеныПоступления.
  4. Нажмите кнопку Конструктор движений.
  5. Выберите табличную часть документа (ПереченьТоваров) в выпадающем списке.
  6. Нажмите кнопку Заполнить выражения, чтобы автоматически заполнить связи между полями документа и регистра.
  7. Подтвердите изменения и сохраните.
  8. В редакторе кода на вкладке Модуль объекта появится автоматически сгенерированная процедура, которая будет формировать движения по регистру при проведении документа:
&НаСервере
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ЦеныПоступления.Записывать = Истина;
Для Каждого ТекСтрокаИз ПереченьТоваров Цикл
Движение = Движения.ЦеныПоступления.Добавить();
Движение.Период = Дата;
Движение.Товар = ТекСтрока.Товар;
Движение.ЦенаПоступления = ТекСтрока.Цена;
КонецЦикла;
КонецПроцедуры

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

Создание и использование общего модуля для получения актуальной цены по дате

  1. В конфигураторе откройте раздел Общие модули.
  2. Создайте новый общий модуль с именем ОбщиеФункции.
  3. В свойствах модуля установите флаги:
    Компиляция на сервере (Сервер)
    Вызов с сервера (Вызов сервера)
  4. В модуле создайте функцию ЦенаНаДень, которая принимает дату и товар, и возвращает последнюю цену из регистра:
Функция ЦенаНаДень(АктуальнаяДата, ЭлементТовар) Экспорт
Отбор = Новый Структура;
Отбор.Вставить("Товар", ЭлементТовар);
ЗначенияРесурсов = РегистрыСведений.ЦеныПоступления.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Если ЗначенияРесурсов = Неопределено Тогда
Возврат 0;
КонецЕсли;
Возврат ЗначенияРесурсов.ЦенаПоступления;
КонецФункции

Теперь данную функцию можно вызвать из форм документов для подстановки актуальной закупочной цены.

Добавление реквизита Цена поступления и автоматическая подстановка в документ «Продажа товаров»

  1. В конфигураторе открываем документ ПродажаТоваров.
  2. На вкладке Реквизиты табличной части создаём новое поле типа число с названием ЦенаПоступления (аналогично рисунку в исходном тексте).
  3. Добавляем это поле на форму документа в табличную часть.
  4. Для поля Товар табличной части документа настроим событие ПриИзменении.
  5. В обработчике события добавьте вызов функции из общего модуля для загрузки цены поступления:
&НаКлиенте
Процедура ПереченьТоваровТоварПриИзменении(Элемент)
СтрТабЧасти = Элементы.ПереченьТоваров.ТекущиеДанные;
СтрТабЧасти.ЦенаПоступления = ОбщиеФункции.ЦенаНаДень(Объект.Дата, СтрТабЧасти.Товар);
КонецПроцедуры

Проверьте работу документа в режиме 1С:Предприятие — при выборе товара автоматически заполнится актуальная цена поступления.

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

  1. В конфигураторе в дереве объектов выберите Регистры накопления, правой кнопкой мыши создайте новый регистр с именем, например, "КоличествоТоваров".
  2. На вкладке Основные установите, что регистр является регистром остатков.
  3. На вкладке Данные добавьте измерения:
    Товар (тип справочника Товары)
    Филиал (тип справочника Филиалы)
  4. Добавьте ресурс Количество (тип число, длина 10, точность 3).

Настройка документа «Поступление товаров» для движений по регистру накопления количества товаров

  1. В объекте документа ПоступлениеТоваров перейдите на вкладку Движения.
  2. Отметьте регистр накопления КоличествоТоваров.
  3. Нажмите Конструктор движений.
  4. Добавьте табличную часть документа (ПереченьТоваров).
  5. Заполните выражения автоматически, соотнеся поля документа с полями регистра.
  6. Подтвердите и сохраните.
  7. В модуле объекта документа появится процедура проведения с автоматическим формированием движений по регистру.

Аналогичная настройка документа «Продажа товаров» с уменьшением количества (регистром расхода)

  1. В объекте документа ПродажаТоваров откройте вкладку Движения.
  2. Отметьте регистр накопления КоличествоТоваров.
  3. В конструкторе движений установите тип движения как Расход.
  4. Добавьте табличную часть, заполните выражения.
  5. Подтвердите и сохраните.
  6. В модуле документа будет процедура, уменьшающая количество при проведении продажи.

10. Создание оборотного регистра накопления для учёта продаж по филиалам

  1. В регистры накопления создайте новый регистр с типом Обороты и именем, например, "ПродажиПоФилиалам".
  2. На вкладке Данные добавьте измерения:
    Филиал (тип справочника Филиалы)
    Менеджер (тип справочника Менеджеры)
  3. Добавьте ресурс Сумма (тип число, длина 13, точность 2).
  4. Настройте движение по этому регистру через документ ПродажаТоваров:
    В конструкторе движений документа
    ПродажаТоваров добавьте регистр ПродажиПоФилиалам.
    Заполните поля движений по табличной части.
  5. Подтвердите и сохраните.
  6. При проведении документов продажи будут формироваться движения сразу по двум регистрами (количество и продажи по филиалам).

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