Найти тему
Develop

Программное создание, чтение и изм. данных. Занятие 6. Продвинутый курс по программированию в 1С.

Оглавление

Видео

Основы программирования

1С:Программирование для начинающих Детям и родителям, менеджерам и руководителям Разработка в системе "1С:Предприятие 8.3"(opens new window)

Перед началом урока нужно знать, что такое:

Создание объектов

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

для Справочника

СправочникОбъект = Справочники.Сотрудники.СоздатьЭлемент();
СправочникОбъект.Наименование = "Петров Петр";
СправочникОбъект.Записать();

СправочникСсылка = СправочникОбъект.Ссылка;

для Документа

ДокументОбъект = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
ДокументОбъект.Дата = Дата("20220308112653"); // можно ТекущаяДата()
ДокументОбъект.Кассир = СправочникСсылка;
ДокументОбъект.Сумма = 100;
ДокументОбъект.Записать();

ДокументСсылка = ДокументОбъект.Ссылка;

для Регистра

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

Чтение, изменение и удаление объектов

Язык запросов «1С:Предприятия» основан на стандартном SQL.

SELECT
DeptID,
SUM(SaleAmount)
FROM
Sales
WHERE
SaleDate = '01-Jan-2000'
GROUP BY
DeptID

То же самое на языке запросов 1С.

ВЫБРАТЬ
Sale.DeptID КАК DeptId,
СУММА(Sale.SaleAmount) КАК SaleAmount
ИЗ
Документ.Sale КАК Sale
ГДЕ
Sale.Дата = ДАТАВРЕМЯ(2000, 1, 1, 0, 0, 0)
СГРУППИРОВАТЬ ПО
Sale.DeptID

В платформе «1С:Предприятие» существуют инструменты для облегчения труда разработчика при написании запросов – конструктор запроса и конструктор запроса с обработкой результата.

// ЧТЕНИЕ
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
| ПриходныйКассовыйОрдер.Дата КАК Дата,
| ПриходныйКассовыйОрдер.Номер КАК Номер
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер";

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

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

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

// ИЗМЕНЕНИЕ
ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ДокументОбъект.Дата = Дата("20220308112653");
ДокументОбъект.Записать();

// УДАЛЕНИЕ
Если ВыборкаДетальныеЗаписи.Номер = "000000100" Тогда
ДокументОбъект.Удалить();
КонецЕсли;
КонецЦикла;

Домашнее задание

  1. Создать пустую конфигурацию 1С.
  2. Создать справочник Товары, документ ПриходнаяНакладная с табличной частью Товары, регистр накопления ТоварыНаСкладах с измерением Товар и ресурсом Количество. Имя каждого объекта должно содержать префикс - первая буква вашей фамилии и первая буква вашего имени. К примеру, вас зовут Иван Петров, создаем справочник: имя - "ипСклады", синоним "Склады".
  3. Создать обработку РаботаСОбъектами, разместить кнопки с соответствующим обработчиком:
  • "Создать товары" - программно создается 1000 товаров (наименование произвольное),
  • "Создать накладную" - программно создается приходная накладная с заполненной табличной частью (кол-во строк, количество, цены и суммы произвольные),
  • "Провести накладную" - создаются записи в регистр накопления "ТоварыНаСкладах" по табличной части.
  • "Удалить все товары и накладные" - всё удаляется.