1

Как создать регистр накопления оборотов?

#1С 8.2#1С Управление торговлей#Регистр накопления

Привет, как правильно создать регистр накопления оборотов? Я добавил новый отчёт, в него хочу выбирать данные из таблицы АС_ЗаявкиНаРемонт. Со старым регистром накопления получается, но из него не все данные идут. Потому хочу новый сделать. Подскажите пожалуйста мануал. Особенно интересует, как прописать движение по регистру и как в самом регистре накопления прописать, что надо брать информацию из таблицы движений. Пробовал со стандартным - не получается, данные в регистр не выгружаются. Делал следующее:

  • Создал регистр накопления ПС_ЗаявкаНаРемонт, добавил ему измерение “Контрагент” и ресурсы “СтоимостьБезНДС”, “Стоимость”;

  • Отметил, что движения берёт из документа АС_ЗаявкаНаРемонт;

  • В упомянутом документе конструктором движений соединил поля регистра и поля документа, получилась процедура ОбработкаПроведения:

    Движение.ПС_ЗаявкаНаРемонт.Очистить();
    Движение = Движение.ПС_ЗаявкаНаРемонт.Добавить();
    Движение.Период = Дата;
    Движение.Контрагент = Контрагент;
    Движение.СтоимостьБезНДС = СтоимостьБезНДС;
    Движение.Стоимость = Стоимость;
    
  • В отчёте сделал запрос к регистру накопления (код приводить не буду, делал схожий с описаным в статье на этом сайте )

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

    Перем     мПериод                      Экспорт;     //Период движений
    Перем     мТаблицаДвижений Экспорт;     //Таблица движений
    Процедура ВыполнитьДвижения() Экспорт
    ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект);
    КонецПроцедуры
    

Однако данные всё равно не отбираются. Подскажите, подулитесь опытом, что и как правильно прописывать в регистре или в модулях надо, чтобы данные получать из документа.

 1322 17
Добавленоkeramik492 дня назад
Последняя активность486 дней назад


Добавить комментарий

Кирилл написал:492 дня назад0

Привет!

Ничего не понял :)

В регистр данные пишутся?

В Коде

Перем     мПериод                      Экспорт;     //Период движений
Перем     мТаблицаДвижений Экспорт;     //Таблица движений
Процедура ВыполнитьДвижения() Экспорт
ОбщегоНазначения.ВыполнитьДвижениеПоРегистру(ЭтотОбъект);
КонецПроцедуры

Вы сюда передаете мТаблицаДвижений ?

Ответить

keramik написал:492 дня назад0

Привет! Нет, в регистр накопления данные не пишутся, он пустой (смотрел в форме и запускал отчёт). Я не знаю, что такое ТаблицаДвижений и не знаю, что именно надо прописывать в модуле регистра накопления, приведённый код я взял из другого регистра накопления… Может в модуле регистра накопления вообще ничего писать не надо и достаточно только того, что я укажу процедуру движения по регистрам в нужном мне документе?

Ответить

keramik написал:492 дня назад0

Попробовал убрать процедуру или переменные, но ничего не изменилось. Данных как не было, так и нет :(

Ответить

Кирилл написал:492 дня назад1

Пиши как писал:

Движение.ПС_ЗаявкаНаРемонт.Очистить();
Движение = Движение.ПС_ЗаявкаНаРемонт.Добавить();
Движение.Период = Дата;
Движение.Контрагент = Контрагент;
Движение.СтоимостьБезНДС = СтоимостьБезНДС;
Движение.Стоимость = Стоимость;

Только, наверное, нужно поставить:

Движение.ПС_ЗаявкаНаРемонт.Записывать = Истина;

И после записать движения:

Движение.ПС_ЗаявкаНаРемонт.Записать();

Но это опционально, зависит от настроек документа и регистра. Попробуй их всех ))

Ответить

keramik написал:491 день назад0

Вопрос уточняющий, в строках

Движение.СтоимостьБезНДС = СтоимостьБезНДС;

Движение.СтоимостьБезНДС - это реквизит регистра накопления, а СтоимостьБезНДС - это реквизит документа, откуда данные берутся, правильно? Может надо указывать полный путь до этого реквизита? Ну там Документы.АС_ЗаявкаНаРемонт.бла-бла-бла…

Ответить

keramik написал:491 день назад0

Данные в регистр накопления начали передаваться. Я допустил три ошибки в коде, правильно было писать

Движения.ПС_ЗаявкаНаРемонт.Очистить();
Движение = Движения.ПС_ЗаявкаНаРемонт.Добавить();
...
Движения.ПС_ЗаявкаНаРемонт.Записывать = Истина;
Движения.ПС_ЗаявкаНаРемонт.Записать();

т.е. вместо “е” ставить “я”. Но теперь не передаются данные о стоимости работ в регистр накопления. Поля остаются пустые. Проверил ещё раз конструктор движений, связывал поля регистра с другими полями формы, но ничего не меняется. Дебаггер тоже показывает, что во время выполнения кода данные не передаются :(

Ответить

keramik написал:491 день назад0

Так, что я нашёл. Не знаю почему, но не передаётся в регистр накопления ПС_ЗаявкаНаРемонт информация о стоимости услуги без НДС. Причём в старой форме она передаётся правильно. Пробовал добавить в форму АС_ЗаявкаНаРемонт новый реквизит СтоимостьРаботИДеталей, в котором суммирую СтоимостьРабот и СтоимостьДеталей, но он не заполняется процедурой. При том, что реквизит СтоимостьРабот заполняется, хотя его точно так же создавал накануне.

Ответить

Кирилл написал:491 день назад0

Покажите код)

Экстрасенсов нет :)

Кстати, вы добавляете поля “СтоимостьРаботИДеталей” именно в “реквизиты” регистра? Числовые поля правильно добавлять в “ресурсы”.

А отладка что говорит? Движение.Стоимость заполняется? Какой имеет тип данных?

Ответить

keramik написал:491 день назад0

Аммм…. А просто в запросе разве нельзя связать ресурс регистра накопления с реквизитом документа? Я указал так:

Движение.СтоимостьБезНДС = СтоимостьРаботИДеталей;

отладка показывает там “0” для ресурса регистра накопления и “ ” для реквизита. Ну это если именно в запросе, который движение описывает, смотреть (т.е. в документе).

Ответить

keramik написал:491 день назад0

Ищу сейчас, почему данные не передаются в СтоимостьРаботИДеталей…

Ответить

keramik написал:491 день назад0

Вобщем, что-то я уже намудрил, пока конфу настраивал. Надо откатывать на дефолт и переделывать всё с нуля )))) Спасибо за помощь, попробую с самого начала всё переделать и если будут вопросы, то вернусь )

Ответить

keramik написал:491 день назад0

Так и есть, напутал с настройками изначально. Сейчас переделал и отбираются данные, как надо.

Позже ещё раз перепроверю и напишу своё решение :)

Ответить

Кирилл написал:491 день назад0

Будем ждать)))

Ответить

keramik написал:488 дней назад0

Привет! Задача частично решена, осталось пару функций прикрутить и отчёт можно считать законченным. Итак, как и обещал, расскажу, что я делал.

  • Во-первых, я откатил базу на начальную версию, до изменений.

  • Затем создал новый очёт, руководствуясь этой инструкцией.

  • После этого настроил связи в модуле документа с регистром накоплений, чтобы данные передавались (делается конструктором настроек парой кликов).

  • Проверил, всё работает. Отчёт отбирает данные, всё крутится и вертится так как я хотел.

Но у меня остался ещё один вопрос, как вывести отчёт на печать? Я добавил кнопку на форму отчёта, прописал процедуру

Процедура КоманднаяПанельФормыПечать(Кнопка)
    ТабДок = ЭлементыФормы.ТабДок;
    //Указываю на макет отчта, который использовать
    Макет = ПолучитьМакет("Макет");
    //Поочерёдно обходим области из макета  
    ОбластьШапка                  = Макет.ПолучитьОбласть("Шапка");
    ОбластьДанныеКонтрагент  = Макет.ПолучитьОбласть("ДанныеКонтрагент");
    ОбластьПодвал                = Макет.ПолучитьОбласть("Подвал");
    //Печатаем документ
    ТабДок.Напечатать();    

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

Но когда кнопу жмакаю, то ничего не происходит. Программа никак не даёт мне понять, получается запустить документ на печать или нет.

Подскажите, как правильно передавать в процедуру отчёт для печати?

Ответить

keramik написал:487 дней назад0

Изменил процедуру следующим образом:

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

Но при запуске, ругается, что переменная ДанныеКонтрагент не определена. Если закоментить блок вывода данных о контрагенте, то печатается шапка и подвал нормально. Как определить эту переменную?

Ответить

keramik написал:486 дней назад0

Разобрался в чём загвоздка была. Я не передавал данные в процедуре. Переделал её так, чтобы происходил отбор данных и всё заработало :) Отбор данных построил руководствуясь этой инструкцией.

Ответить

Кирилл написал:486 дней назад0

Извиняюсь, не ответил вовремя)))

Дедлайны по проектам))

Всё верно )))

Ответить

Добавить комментарий

Задать вопрос!

Наш канал на Youtube

Изучаете 1С? Скачайте 200 видео по 1С бесплатно:

Похожее

Новый регистр сведений 1С 8.2 или добавить в существующий

Всем добрый день! Нужна помощь, совет, в общем все! Появилась необходимость со...

Создать Движение по регистру

Здравствуйте! Подскажите, пожалуйста. В новом документе я делаю движение по реги...

Регистр накопления по сотрудникам

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

Запрос к регистру накопления выводит двойные записи

Добрый день. Из регистра накопления требуется выбрать начальный, конечный остатк...

Работа с регистром накопления и документами

Друзья! Прошу помощи! Есть документ ПередачаОбъектаВПрокат, который выполняет дв...

Новое

1С: Бухгалтерию 8.2 дёшево

Программа 1С: Бухгалетрия 8.2 По поводу приобретения программы обращайтесь на по...

Курсы

Добрый день! Осталось 2 ключа для активации курса “Профессиональный учёт в 1С:З...

"Наряд на хозтранспорт и спецтехнику" Путевые листы

Здравствуйте, Форумчане, прошу вашего совета. В организации такая ситуация: ест...

Создание обработки

Помогите с задачей. Суть такова - нужно создать внешнею обработку которая будет ...

Заполнение раздела 3 Расчет налоговой базы Книги доходов и расходов

Добрый день! Меня зовут Наталья. Про заполнение Кудир в КА очень все хорошо пишу...