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

Движение в регистре накопления (приход/расход) по нажатию кнопки

Автор Funt432286, 10 авг 2018, 10:38

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

Funt432286

Доброго времени суток!

Есть регистр накопления БумагаЦифра, приход осуществляется с помощью ДОКУМЕНТА, а вот расход необходимо осуществлять с разных форм документа по нажатию КОПКИ или при изменении ПолеФлажка.
Данный код Движения создал с помощью конструктора движения, скопировал код и поставил его в процедуру кнопки.

&НаКлиенте
Процедура СписаниеБумаги(Команда)
   
   // регистр БумагаЦифра Расход
   
   Движения.БумагаЦифра.Записывать = Истина;
   Движение = Движения.БумагаЦифра.Добавить();
   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
   Движение.Период = ТекущаяДата;
   Движение.МатериалЦифра = Объект.Бумага;
   Движение.Масса = Объект.Масса;
   Движение.ОстатокРезерв = Объект.КолвоПечатныхЛистов + Объект.ПриладкаЛистов;
   Движение.Основание = Объект.Номер;
   
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   
        Сообщить("Списание бумаги прошло успешно!");
КонецПроцедуры

Выдается ряд ошибок, пытался данное движение перенести НаСервере. Тоже ничего выдает ошибки. Если же программа запускается то при нажатии на кнопку в Регистре Накопления запись данных не производится!

Подскажите пожалуйста как можно с нажатием кнопки, а не проведением документа, записывать приход и расход товара в регистре.

alexandr_ll

Цитата: Funt432286 от 10 авг 2018, 10:38
Доброго времени суток!

Есть регистр накопления БумагаЦифра, приход осуществляется с помощью ДОКУМЕНТА, а вот расход необходимо осуществлять с разных форм документа по нажатию КОПКИ или при изменении ПолеФлажка.
Данный код Движения создал с помощью конструктора движения, скопировал код и поставил его в процедуру кнопки.

&НаКлиенте
Процедура СписаниеБумаги(Команда)
   
   // регистр БумагаЦифра Расход
   
   Движения.БумагаЦифра.Записывать = Истина;
   Движение = Движения.БумагаЦифра.Добавить();
   Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
   Движение.Период = ТекущаяДата;
   Движение.МатериалЦифра = Объект.Бумага;
   Движение.Масса = Объект.Масса;
   Движение.ОстатокРезерв = Объект.КолвоПечатныхЛистов + Объект.ПриладкаЛистов;
   Движение.Основание = Объект.Номер;
   
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   
        Сообщить("Списание бумаги прошло успешно!");
КонецПроцедуры

Выдается ряд ошибок, пытался данное движение перенести НаСервере. Тоже ничего выдает ошибки. Если же программа запускается то при нажатии на кнопку в Регистре Накопления запись данных не производится!

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

Funt432286

Если писать НаКлиенте, то ошибки такие:

{Документ.ТЗ_ВизиткиБейджи.Форма.ФормаДокумента.Форма(187,4)}: Переменная не определена (Движения)
   <<?>>Движения.БумагаЦифра.Записывать = Истина; (Проверка: Тонкий клиент)
{Документ.ТЗ_ВизиткиБейджи.Форма.ФормаДокумента.Форма(188,15)}: Переменная не определена (Движения)
   Движение = <<?>>Движения.БумагаЦифра.Добавить(); (Проверка: Тонкий клиент)
{Документ.ТЗ_ВизиткиБейджи.Форма.ФормаДокумента.Форма(190,22)}: Переменная не определена (ТекущаяДата)
   Движение.Период = <<?>>ТекущаяДата; (Проверка: Тонкий клиент)


Funt432286

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

bsn-chita

Как вариант.
Откройте форму документа, в элементах формы на самой форме правой кнопкой и выберите свойства, нажмите Состав команд "Открыть", уберите галочки с того что вам не надо("Провести и закрыть" и "провести" наверное).

Funt432286

Это хорошо, но как быть с кодом на движение расхода в регистре накоплений? Ссылку которую скинули, там записывается несколько записей в ресгистр, а у меня получается в конкретный регистр необходимо записать конкретные данные на расход товара (списание)

bsn-chita

Как то так.

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

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

НаборЗаписей.Записать();

Funt432286

&НаСервере
Процедура СписаниеБумагиНаСервере();
   
   // списание бумаги
    НаборЗаписей = РегистрыНакопления.БумагаЦифра.Остатки();
    НаборЗаписей.Отбор.Регистратор.Значение = Объект.Ссылка;
   
    Для Каждого Элемент Из Объект.СписокНоменклатуры Цикл
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.ВидДвижения = ВидДвиженияНакопления.Приход;
        НоваяЗапись.Период = Объект.Дата;
        НоваяЗапись.МатериалЦифра = Объект.Бумага;
        НоваяЗапись.Масса = Объект.Масса;
      НоваяЗапись.ОстатокРезерв = Объект.КолвоПечатныхЛистов + Объект.ПриладкаЛистов;
      НоваяЗапись.Основание = "Заказ №" + Объект.Номер;
    КонецЦикла;
   
    НаборЗаписей.Записать();

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

Спасибо большое за помощь!
При отладки программы, была ошибка на РегистрНакопления, поставил БумагаЦифра.
Стал ругаться по другому:

{Документ.ТЗ_ВизиткиБейджи.Форма.ФормаДокумента.Форма(210)}: Поле объекта не обнаружено (Отбор)
    НаборЗаписей.Отбор.Регистратор.Значение = Объект.Ссылка;
Добавлено: 13 авг 2018, 10:40



&НаСервере
Процедура СписаниеБумагиНаСервере();
   
   // списание бумаги
    НаборЗаписей = РегистрыНакопления.БумагаЦифра.Остатки();
    НаборЗаписей.Отбор.Регистратор.Значение = Объект.Ссылка;
   
    Для Каждого Элемент Из Объект.СписокНоменклатуры Цикл
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.ВидДвижения = ВидДвиженияНакопления.Приход;
        НоваяЗапись.Период = Объект.Дата;
        НоваяЗапись.МатериалЦифра = Объект.Бумага;
        НоваяЗапись.Масса = Объект.Масса;
      НоваяЗапись.ОстатокРезерв = Объект.КолвоПечатныхЛистов + Объект.ПриладкаЛистов;
      НоваяЗапись.Основание = "Заказ №" + Объект.Номер;
    КонецЦикла;
   
    НаборЗаписей.Записать();

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


Спасибо большое за помощь!
При отладки программы, была ошибка на РегистрНакопления, поставил БумагаЦифра.
Стал ругаться по другому:


{Документ.ТЗ_ВизиткиБейджи.Форма.ФормаДокумента.Форма(210)}: Поле объекта не обнаружено (Отбор)
    НаборЗаписей.Отбор.Регистратор.Значение = Объект.Ссылка;

alex0402

Цитата: Funt432286 от 13 авг 2018, 10:36НаборЗаписей = РегистрыНакопления.БумагаЦифра.Остатки();

возвращает структуру.
нужно:

НаборЗаписей = РегистрыНакопления.БумагаЦифра.СоздатьНаборЗаписей();
Спасибо за Сказать спасибо

Теги:

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

Рейтинг@Mail.ru

Поиск