1

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

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

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

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

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

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

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

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

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

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

 1584 17
Добавленоkeramik602 дня назад
Последняя активность596 дней назад


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

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

Привет!

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

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

В Коде

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

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

Ответить

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

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

Ответить

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

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

Ответить

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

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

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

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

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

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

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

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

Ответить

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

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

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

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

Ответить

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

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

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

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

Ответить

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

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

Ответить

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

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

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

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

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

Ответить

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

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

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

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

Ответить

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

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

Ответить

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

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

Ответить

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

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

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

Ответить

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

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

Ответить

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

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

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

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

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

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

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

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

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

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

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

Ответить

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

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

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

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

Ответить

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

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

Ответить

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

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

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

Всё верно )))

Ответить

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

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

Наш канал на Youtube

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

Похожее

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

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

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

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

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

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

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

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

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

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

Новое

Расчет районного коэффициента в больничном листе

Добрый день! Очень нужна помощь! При расчете б/л не верно считает положительную ...

Отражение зарплаты в регламентирован ним учете

Использую Зуп 2.5 Потребовался отчёт для выборки данных по сотрудникам из докуме...

Возврат по картам по зарплате, в случае изменения реквизитов банка

По карте была перечислена зарплата, но платеж вернулся (изменились реквизиты бан...

Составление отчета

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

Не могу активировать настройку

Добрый день, скачал учебную версию 8.3 Захотел внести изменения в конфигурацию З...