Найти тему
Develop

Консультация (CRUD) по домашнему заданию. Занятие 7. Продвинутый курс по программированию в 1С.

Оглавление

Видео

Основные замечания

  1. Объект нужен для записи, Ссылка - для чтения.
  2. Поиск ссылок на документы и справочники необходимо производить через запросы или через методы НайтиПоНаименованию, НайтиПоКоду, НайтиПоНомеру.
  3. При записи в регистры необходимо устанавливать отборы.

Код обработки

&НаКлиенте
Процедура СоздатьТовары(Команда)
СоздатьТоварыНаСервере();
КонецПроцедуры

&НаСервере
Процедура СоздатьТоварыНаСервере()
Счетчик = 0;
Пока Счетчик <=1000 Цикл
Счетчик = Счетчик + 1;
СправочникОбъект = Справочники.ксТовары.СоздатьЭлемент();
СправочникОбъект.Наименование = "Товар1";
СправочникОбъект.Записать();
КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура СоздатьНакладную(Команда)
СоздатьНакладнуюНаСервере();
КонецПроцедуры

&НаСервере
Процедура СоздатьНакладнуюНаСервере()

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

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

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТоварыНоваяСтрока = ДокументОбъект.Товары.Добавить();
ТоварыНоваяСтрока.Товар = Справочники.ксТовары.НайтиПоНаименованию("Товар1");
ТоварыНоваяСтрока.Количество = 10;
КонецЦикла;

ДокументОбъект.Записать();
КонецПроцедуры

&НаКлиенте
Процедура ПровестиНакладную(Команда)
ПровестиНакладнуюНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПровестиНакладнуюНаСервере()
//ДокументСсылка = Документы.ксПриходнаяНакладная.НайтиПоНомеру("000000001", Дата("20220308112653"));

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("Номер", "000000001");

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

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

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

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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

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

НаборЗаписей.Записать();
КонецПроцедуры

&НаКлиенте
Процедура УдалитьВсе(Команда)
УдалитьВсеНаСервере();
КонецПроцедуры

&НаСервере
Процедура УдалитьВсеНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ксПриходнаяНакладная.Ссылка КАК Ссылка
|ИЗ
| Документ.ксПриходнаяНакладная КАК ксПриходнаяНакладная
|ГДЕ
| ксПриходнаяНакладная.Номер = &Номер";

Запрос.УстановитьПараметр("Номер", "000000001");

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

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

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

ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.Удалить();

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

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

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

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецПроцедуры