1с как изменить регистр накопления
Перейти к содержимому

1с как изменить регистр накопления

  • автор:

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

Распечатать

Распечатать

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Microsoft SQL Server Native Client Добавление значения в столбец «datetime» привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец «datetime» привело к переполнению Подробнее текст такой: . по причине: Ошибка компоновки данных по причине: Ошибка получени QR код в 1С 21
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог ZIP-архив Разделить и Объединить Файл 0
При работе с большими объемами данных могут возникнуть проблемы при пересылке архивных файлов. Типичной такой ситуацией является ограничение некоторых почтовых серверов на размер сообщения — если письмо превышает некий заранее установленный размер, о Посмотреть все результаты поиска похожих

Еще в этой же категории

Ключевые слова и Изображения

Слова упорядочены по частоте использования в тексте

Только текст:

Текст и код:

Изображения

Отсутствуют
Комментарии

28.03.2018 16:47 Комментарий: 1

Я бы добавил, что отбор можно делать только по Регистратору

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

[ Главная | FAQ: Все | 7.х | 8.х | 8.2 УП | 8.3 | Видео | Files | Forum | Freelance | Поиск | Реклама на HelpF.pro | Обратная связь ]
HelpF.pro [old Help1C.com] 2009-2023 Все материалы, размещенные на сайте, добавлены посетителями сайта или взяты из свободных источников. Подробнее.

Редактирование регистров вручную

В 1С:Предприятии 8 существует возможность организовать в форме редактирование пользователем записей любого регистра, в том числе, и для подчиненного регистратору. Данная возможность соответствует общему подходу, принятому в 1С:Предприятии 8 в отношении модификации записей регистров. Система допускает и программное, и интерактивное изменение записей регистра без какого-либо участия регистратора (документа). Для выполнения таких изменений достаточно указать только ссылку на регистратор, чтобы определить значение отбора записей регистра.

Следует заметить, что эта возможность никак не противоречит типовой стратегии формирования движений при проведении документов. Система допускает, наряду с основной стратегией, используемой в большинстве случаев и предполагающей формирование движений в процессе проведения, и другие варианты. Например, непосредственное изменение движений может использоваться для создания документов, предназначенных для ручного редактирования движений регистров. Такая возможность широко используется для регистров бухгалтерского учета, но может применяться и для других регистров. Это позволяет предоставить пользователю или администратору системы возможность отражения в регистре операций, для которых не предусмотрено в конфигурации специального документа. Такая возможность никак не нарушает общую модель использования регистра как централизованной системы учета, а позволяет решать в нем дополнительные, заранее не предусмотренные задачи. Другим вариантом использования ручного редактирования регистров может являться предоставление пользователю возможности вносить изменения в движения, сформированные документом (в форме документа или в отдельной форме). Разумеется, реализация такой возможности требует от разработчика конфигурации решения вопросов связанных с регулированием полномочий пользователя и возможностью повторного формирования движений документом после их ручной корректировки. Например, может отмечаться, что движения данного документа изменены вручную и не должны обновляться при проведении. Система предоставляет весь необходимый набор средств для поддержки таких решений (расширения табличного поля, предназначенные для редактирования наборов записей, возможность отключения активности записей, отключение автоматического удаления движений и т.д.) Соответственно, это решение может применяться разработчиком, если он считает необходимым наличие такой возможности в прикладном решении.

В качестве примера рассмотрим создание документа «РучнаяОперация» для изменения данных регистра «УчетНоменклатуры».

Прежде всего, следует запретить проведение документа «РучнаяОперация». Работа стандартного механизма проведения документов нам, в данном случае, будет не нужна, поскольку мы собираемся вручную изменять записи в регистре накопления.
Затем, несмотря на то, что документ «РучнаяОперация» не проводится, следует указать, что движения документа будут находиться в регистре накопления «УчетНоменклатуры». Это необходимо для того, чтобы в форме документа нам был доступен для редактирования набор записей регистра накопления, содержащий движения документа «РучнаяОперация». Данная ситуация как раз очень хорошо иллюстрирует тот факт, что изменение записей регистра может выполняться не только при проведении документа, но и другими способами.

После этого в форме документа «РучнаяОперация» следует расположить табличное поле с командной панелью. Тип значения этого табличного поля должен быть «РегистрНакопленияНаборЗаписей.УчетНоменклатуры». Затем следует указать, что источником данных для этого табличного поля будут являться движения документа «РучнаяОперация» по регистру «УчетНоменклатуры»:

Все, по большому счету, ручная операция готова. Можно в режиме «1С:Предприятие» создать новый документ, и используя пиктограммы командной панели, связанной с табличным полем, вручную редактировать набор записей этого документа.

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

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

Таким образом, мы рассмотрели общий случай создания ручной операции. Однако логика конкретного прикладного решения может накладывать различные ограничения на создаваемую ручную операцию. Одним из самых распространенных ограничений является требование синхронизации даты движений с датой самого документа.
Самым простым способом такой синхронизации является принудительная установка нужной даты движений в модуле формы документа:

Если теперь в режиме "1С:Предприятие" перезаписать созданные ранее документы "РучнаяОперация", можно убедиться, что дата движений будет синхронизирована с датой документа.

Такой способ синхронизации является самым простым и не учитывает возможность программной записи документа «РучнаяОперация». В самом деле, при программном вызове метода Записать() у объекта документа, он будет записан без участия формы документа. Это значит, что событие «При записи» формы документа вызвано не будет, и наш код обработчика не отработает. Чтобы предусмотреть возможность синхронизации периода движений документа с датой документа и в случае программной записи объекта документ, следует использовать обработчик события Перед записью() объекта документ, а не формы документа.

Удалим обработчик события Перед записью() формы документа и рассмотрим, как выполняется синхронизация даты документа и движений в модуле объекта. Для этого следует создать обработчик события Перед записью() в модуле объекта документа «РучнаяОперация», содержащий следующий текст:

 ОбновитьДатуДвижений  Запрос      В этом случае обработчик будет содержать больше кода за счет дополнительных проверок, которые выполняются в результате того, что возможна как интерактивная, так и программная запись объекта.

Поясним содержание обработчика. Если записывается новый документ или были изменены его движения — следует обновить дату движений. В противном случае мы считываем запросом дату документа из базы данных и сравниваем ее с датой, установленной у записываемого объекта. Если даты разные – также следует обновить дату движений.

Перед установкой даты мы проверяем, был ли прочитан набор записей в свойстве «Движения» объекта и изменялся ли он. Если оба этих условия ложны – это значит, что набор записей в свойстве «Движения» объекта пуст, и это состояние не связано с его изменением. В этом случае, чтобы предотвратить ошибочное удаление записей в регистре (перезапись пустым набором записей), мы предварительно читаем движения из регистра в набор записей в свойстве «Движения». Затем, как и в предыдущем случае, устанавливаем нужную дату для всех записей этого набора. При выполнении записи объекта документ, этот набор будет записан в регистр накопления.

Аналогичным образом в процессе записи документа «РучнаяОперация» можно управлять не только периодом записей регистра накопления, но и значениями других полей регистра.

Например, таким же образом может быть создан документ «Операция», позволяющий вводить ручные операции в регистр бухгалтерии. При этом, вероятно, кроме управления периодом записей регистра, вам потребуется управлять значением поля «Активность» («включать» и «выключать» проводки документа) и т.д.

В заключение следует сказать, что выбор обработчика, в котором будет размещен текст процедуры, зависит от логики работы создаваемого объекта. Если конфигурация не предусматривает программной записи объекта – можно выбрать обработчик модуля формы. Если предполагается и программная модификация объекта – следует выбирать обработчик модуля объекта.

Заметьте, что оба эти способа не исключают модификацию записей регистра через объект «РегистрНаборЗаписей.». Поэтому, если логика конфигурации подразумевает возможность программной модификации объекта набор записей, код обработки следует размещать в обработчике события набора записей. Все попытки изменить данные регистра будут сведены, в конечном счете, к записи именно набора записей.

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

Регистры накопления — это прикладные объекты конфигурации. Они составляют основу механизма учета движения средств (финансов, товаров, материалов и т. д.), который позволяет автоматизировать такие направления, как складской учет, взаиморасчеты, планирование.

Регистр накопления образует многомерную систему измерений и позволяет «накапливать» числовые данные в разрезе нескольких измерений. Например, в таком регистре можно накапливать информацию об остатках товаров в разрезе номенклатуры и склада, или информацию об объемах продаж в разрезе номенклатуры и подразделения компании.

Структура

Информация в регистре накопления хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.

Измерения регистра описывают разрезы, в которых хранится информация, а в ресурсах регистра накапливаются нужные числовые данные. Например, для регистра ТоварныеЗапасы, который имеет следующую структуру:

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

записи, производящие изменение ресурсов регистра в базе данных, будут выглядеть следующим образом:

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

Поскольку регистр накопления служит для накопления числовых значений, каждая запись выполняет изменение хранимых ресурсов — движение. Движения, в общем случае, могут либо добавлять некоторые приращения к хранимым ресурсам, либо отнимать их. Если должно выполняться увеличение хранимых ресурсов, — такое движение называется движением прихода («+»), если уменьшение хранимых ресурсов — движением расхода («-»).

Вместе с каждой записью, находящейся в регистре накопления, можно хранить дополнительную произвольную информацию. Для этого служат реквизиты регистра накопления.

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

Связь с регистратором

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

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

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

Состав документов, которые могут создавать записи в регистре накопления, задается разработчиком в процессе создания прикладного решения:

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

Конструктор движений

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

Уникальность записей

Система обеспечивает контроль уникальности записей, хранящихся в регистре накопления. Благодаря этому в регистре накоплений не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.

Регистры остатков и регистры оборотов

Существует два вида регистров накопления: регистры накопления остатков и регистры накопления оборотов. Регистр накопления остатков позволяет хранить как итоговые значения ресурсов — остатки, так и изменения этих ресурсов — обороты. Регистр накопления оборотов является более «специализированным» видом регистра накопления и позволяет хранить только изменения ресурсов — обороты.

Существование регистра накопления оборотов связано с тем, что при автоматизации экономической деятельности существует большое количество ситуаций, когда требуется накапливать только обороты, а значения остатков не имеют смысла. Типичным примером использования регистра накопления оборотов является регистр Выручка и себестоимость продаж, хранящий информацию об объемах продаж:

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

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

Агрегаты

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

Форма списка и форма набора записей

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

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

Функциональные возможности регистра накопления

Основными функциональными возможностями, которые предоставляет регистр накопления разработчику, являются:

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

Смотрите также:

1C. Как изменить записи в регистре не трогая документ-регистратор.

Бывают ситуации, когда нужно изменить движения какого-то документа в регистре накопления или регистре сведений, для которого документ является регистратором.

В таком случае не обязательно проводить манипуляции с документом, можно изменить его движения непосредственно в регистре.

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

При изменении записей регистра можно использовать набор записей, входящий в коллекцию движений документа (свойство Движения объекта ДокументОбъект), либо можно использовать набор записей, созданный с помощью менеджера регистра.

Итак, чтобы изменить записи регистра нужно:

– Создать набор записей;
– Установить отбор по определенному регистратору;
– Прочитать набор;
– Изменить записи набора;
– Записать набор.

Например, изменим записи в регистре накопления «Данные о начислениях».

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

Документ , ФизическоеЛицоВыбранноеЗначение , ФизическоеЛицоНовоеЗначение – это реквизиты формы внешней обработки, с помощью которой мы изменяем записи регистра.

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

  • Регистр накопления
  • Программирование 1С
  • Документы

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *