Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 ноя 2021, 11:34

Не могу понять как переделать код

Автор Lopol, 12 ноя 2021, 15:12

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

Lopol

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

Но в этом коде есть то , что мне не надо!Мне нужен только из начала"Движения.Продажи.Записывать = Истина; ", и все то что после слов //Регистр продажи, но я переделываю это под свою работу , и вот что у меня получилось :
Процедура ОбработкаПроведения(Отказ, Режим)

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

КонецПроцедуры
Но он выдает ошибки
{Документ.ЗаказНаряд.МодульОбъекта(4,40)}: Переменная не определена (ПереченьРаботы)
Для Каждого ТекСтрокаПереченьРаботы Из <<?>>ПереченьРаботы Цикл  (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(9,19)}: Переменная не определена (Клиент)
Движение.Клиент = <<?>>Клиент;  (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(10,19)}: Переменная не определена (Мастер)
Движение.Мастер = <<?>>Мастер;  (Проверка: Сервер)
Помогите пожалуйста исправить их!Не получается

LexaK

@Lopol, самое первое в вашем документе нет табличной части: ПереченьРабот,
возможно она как-то по другому называется,
проверьте и исправьте имя

сохраните изменения конфигурации, запустите базу, выполните проведение Заказа,
после этого перейдем к исправлению следующей ошибки
ответ Понравился? (в смысле пригодился?)

Lopol

@LexaK, Переименовал, она называет работы оказывается просто
Для Каждого ТекСтрокаРаботы Из Работы Цикл
Но он все равно выдает ошибку тут!  :dfbsdfbsdf:

LexaK

@Lopol, тут - это как?

мы же ваш экран с ошибками не видим,

каждый раз копируйте и выкладывайте здесь ошибки
ответ Понравился? (в смысле пригодился?)

Lopol

@LexaK, Извиняюсь
{Документ.ЗаказНаряд.МодульОбъекта(8,19)}: Переменная не определена (ТекСтрокаПереченьРаботы)
Движение.Работа = <<?>>ТекСтрокаПереченьРаботы;  (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(11,23)}: Переменная не определена (ТекСтрокаПереченьРаботы)
Движение.Количество = <<?>>ТекСтрокаПереченьРаботы.Количество;  (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(12,20)}: Переменная не определена (ТекСтрокаПереченьРаботы)
Движение.Выручка = <<?>>ТекСтрокаПереченьРаботы.Сумма;  (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(13,22)}: Переменная не определена (ТекСтрокаПереченьРаботы)
Движение.Стоимость = <<?>>ТекСтрокаПереченьРаботы.Стоимость * ТекСтрокаПереченьРаботы.Количество; (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(13,58)}: Переменная не определена (ТекСтрокаПереченьРаботы)
Движение.Стоимость = ТекСтрокаПереченьРаботы.Стоимость * <<?>>ТекСтрокаПереченьРаботы.Количество; (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(9,19)}: Переменная не определена (Клиент)
Движение.Клиент = <<?>>Клиент;  (Проверка: Сервер)
{Документ.ЗаказНаряд.МодульОбъекта(10,19)}: Переменная не определена (Мастер)
Движение.Мастер = <<?>>Мастер;  (Проверка: Сервер)
]

Lopol

Так, я исправил эти ошибки все , сейчас проверю

Lopol

сейчас выдает вот что :
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Поле объекта не обнаружено (Контрагент)
{Документ.ЗаказНаряд.МодульОбъекта(9)}:Движение.Контрагент = Контрагент;
Это я пытался перепровести документ для проверки регистра .
вот код который я исправил
Процедура ОбработкаПроведения(Отказ, Режим)

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

КонецПроцедуры

У меня в ЗаказНаряде есть пункт, "Заказчик" , он исходит из справочника контрагенты, только не понимаю что там не правильно

LexaK

@Lopol,
ЦитироватьУ меня в ЗаказНаряде есть пункт, "Заказчик"

а "пункт" (вернее Реквизит) Контрагент - есть?

в обработке надо писать только то что есть в Заказе (как по вашему эти пункты называются)
ответ Понравился? (в смысле пригодился?)

Lopol

@LexaK, Спасибо большое, это исправил, но тут новый сюрприз
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Поле объекта не обнаружено (Стоимость)
{Документ.ЗаказНаряд.МодульОбъекта(13)}:Движение.Стоимость = ТекСтрокаРаботы.Стоимость * ТекСтрокаРаботы.Количество;

LexaK

@Lopol, а в чем сюрприз? вроде ни чего нового

та же ошибка что и Контрагентом

Поле объекта не обнаружено (Контрагент)
Поле объекта не обнаружено (Стоимость)
ответ Понравился? (в смысле пригодился?)

Теги:

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

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

Поиск