Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 дек 2022, 14:53

Тестовая задача на стажерскую вакансию

Автор Дмитрий357, 30 июл 2022, 05:13

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий357

Здравствуйте! Мне прислали задания для возможного трудоустройства на стажерскую вакансию. Половину задания я сделал, вторую не могу додуматься. Вот сама задача: "Написать обработку, которая копирует все реквизиты (кроме номера) и все движения одного документа «Расходная накладная» в движения другого такого документа. Считать, что первый документ проведен, второй документ следует создать." Все реквизиты и табличную часть документа я с помощью интернета перенес в другой документ. Вопрос как теперь поступить с движениями, как их копировать.  Помогите пжл. Привожу код первой половины задания (он выполняется в модуле формы обработки; на форме есть кнопка "Скопировать" и поле с возможностью выбора документа "Выбор документа"):
&НаСервере
Процедура СкопироватьНаСервере()
НовыйДок=Документы.РасходнаяНакладная.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(НовыйДок, ВыборДокумента, , "Номер");
Для Каждого СтрокаТЧВыборДокумента ИЗ ВыборДокумента.Товары Цикл
СтрокаТЧНовыйДок = НовыйДок.Товары.Добавить();     
ЗаполнитьЗначенияСвойств(СтрокаТЧНовыйДок, СтрокаТЧВыборДокумента);
КонецЦикла;

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

alexandr_ll

Дмитрий357, А какие движения делает первый документ? Могут быть регистры накопления, сведений и бухгалтерии. Для каждого вида копирование записей отличается.

Дмитрий357

alexandr_ll, В задаче не уточняется. Если не сложно, напишите пжл код на все виды или чем отличается один от другого в кратце. А так по стандарту пусть будет остаточный регистр накопления "Товары на складах", регистр бухгалтерии "Хозрасчетный", делающий движения по бухгалтерскому учету себестоимости.

alexandr_ll

Дмитрий357, Получаете движения первичного документа и переносите их в движения нового документа
&НаСервере
Процедура ЗаписиДокументаНаСервере()
    // Получим набор записей этого документа в регистр "НужныйРегистр".

 Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   НужныйРегистр.Период,
        |   НужныйРегистр.Регистратор,
        |   НужныйРегистр.НомерСтроки,
        |   НужныйРегистр.Активность,
        |   НужныйРегистр.ВидДвижения,
        |   НужныйРегистр.Склад,
        |   НужныйРегистр.Номенклатура,
        |   НужныйРегистр.Организация,
        |   НужныйРегистр.Количество
        |ИЗ
        |   РегистрНакопления.НужныйРегистр КАК НужныйРегистр
        |ГДЕ
        |   НужныйРегистр.Регистратор = &ВыбРегистратор
        |УПОРЯДОЧИТЬ ПО
        |   НужныйРегистр.НомерСтроки";
 
    Запрос.УстановитьПараметр(
        "ВыбРегистратор",
        Первичный_Ссылка
    );
 
    РезультатЗапроса = Запрос.Выполнить();
//Движения в таблицу значений
 
 РезультатЗапроса.Выгрузить(ТЗ);
//движения нового документа
 НаборЗаписей = РегистрыНакопления.НужныйРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(НовыйДок);
Запись = НаборЗаписей.ДобавитьПриход();
Запись.Регистратор = НовыйДок;
..
//здесь перечислить реквизиты
..
НаборЗаписей.Записать();   
Это просто пример, его нужно под ваши сведения адаптировать
В принципе аналогично для регистра бухгалтерии.
Подробнее смотри
https://helpme1s.ru/registry-nakopleniya-v-yazyke-1s-8-v-primerax
https://helpf.pro/faq/view/1249.html
https://helpf.pro/faq/view/202.html
https://helpme1s.ru/registry-buxgalterii-v-yazyke-1s-8-v-primerax

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск