1) Проверка результата запроса на пустоту: 3
2) Вопрос запрета оперативного проведения: 3
3) Свойство «Удаление движений»: 4
5)Получение данных за период: 4
6) Флаг Общего модуля "Вызов сервера": 4
7) Обращение к реквизиту составного типа в запросе: 4
8) Основные задачи, решаемые при реализации количественного учета: 5
9)Оптимальное проведение документа списания товаров при реализации количественного учета. 5
10) «Защита от дурака» за счёт установки свойств элементов интерфейса: 5
11) Привязка сообщения к элементу форму: 5
12) Рекомендации по установке управляемой блокировки при использовании старой методики проведения: 6
14) Использование объектной модели "РегистрНакопления.Менеджер". 6
15) Составление схемы запроса выполняется по следующей методике для новичков: 8
16) Произвольное условие в конструкторе запросов: 9
17) Правила выполнения запросов: 9
18) Управляемые блокировки: 10
19) Правила внесения изменений в структуру регистров рабочей базы: 10
20) Направления оптимизации алгоритма проведения: 11
21)Оптимизация оборотных регистров. Агрегаты: 12
1)Ручная операция, уточнения по кор.счету: 13
3) Реализация аналитического учёта : 13
4)Рекомендации по определению субконто: 14
5) Индексирование таблиц регистра бухгалтерии: 14
6) Анализ результата запроса, когда неизвестно на каком месте находится какое субконто: 15
7)Получение развернутого сальдо из виртуальных таблиц: 15
10) Документ РучнаяОперация: 16
11) Объект НаборЗаписей регистра бухгалтерии. 18
12) МодульНабораЗаписей регистра бухгалтерии. 18
13) Признаки учета субконто: 19
1) Корректировка записей регистров: 20
2) Оптимизированный алгоритм проведения документа. 21
3) Правило упрощения реализации запроса по нескольким источникам.. 21
5) Реализация партионного учета. 23
6)Организация планирования процесса оказания постпродажных услуг. Работа с регистром сведений. 23
2) Состав расчетных механизмов платформы: 25
3) Настройка расчетных свойств плана видов расчета: 26
4) Выбор критерия попадания в базовый период: 27
5) Вытесняющие виды расчета: 28
7) Настройка Измерений, Ресурсов и Реквизитов РР: 29
8) Этапы сеанса расчета зарплаты: 30
9) Особенности метода Записать набора записей РР. 31
10) Виртуальная таблица РР ДанныеГрафика: 32
11) Подход к установлению соответствия строк регистра и строки необходимых данных. 33
12) Виртуальная таблица РР ФактическийПериодДействия. 34
13) Виртуальная таблица База РР. 34
14) Параметры виртуальной таблицы База. 35
15) Состав полей виртуальной таблицы База : 36
16) Использование периода действия в качестве базового периода. 36
17) Расчет суммы начисления , зависящей от нескольких базовых начислений. 36
18) Частичное попадание периода действия базового вида расчета в базовый период. 37
19) Получение суммы базы в разрезе базовых ВР: 38
20) Построения отчета по начислениям. 38
21) Корректировка результатов расчета за прошедший период. 38
23) Объект конфигурации Перерасчет. 40
24) Объектная модель работы с перерасчетом.. 41
25) Две особенности реализации Перерасчетов. 42
26) Расчет зарплаты по табелю.. 42
28) МногократноеИзменениеОклада: 53
Общее (ОУ,БУ,ПР)
1) Проверка результата запроса на пустоту:
ЗначениеЗаполнено для Результат запроса неверно использовать, т.к. есть моменты когда это отработает некорректно. Рекомендуется использовать Результат.Пустой()
2) Вопрос запрета оперативного проведения:
Насчет оперативного проведения: нигде не прописано, что его не нужно обрабатывать, и в курсах 1С по подготовке к экзамену этого нет -там преподаватели обрабатывают оперативное проведение.
Тем не менее его можно не обрабатывать, и даже запретить, т.к. это упростило бы жизнь.
Вот сообщение, где сказано (в самом конце), что за это делали замечания:
http://forum.chistov.pro/index.php?topic=993.msg47005..
Дальше обсуждали - это замечание основано на ошибке из перечня: "Если при проведении документа используются каким-то образом данные, считываемые из регистров, обязательно требуется предусмотреть получение таких данных на момент проведения документа". Эта ошибка = -1 балл. При обработке оперативного проведения как раз получаются данные НЕ на момент проведения документа.
По поводу запрета оперативного проведения - идея не нова, так делают много лет, тема поднималась в сообщениях 2011-2012 годов, насколько мне известно, за это замечаний не
Цитата 1С:Специалиста по платформе:
«
… Я сам на экз опер проведение запрещал во всех доках, но, по-моему, на это Гончаров просто не смотрел; в коде оперативное проведение я не обрабатывал, это Гончаров, естественно, видел, замечаний не было…
»
Оперативное проведение чаще всего не нужно при решении бухгалтерских задач.
Выдержка из курса "Решение задач бух.учета", стр.45
"...
Свойство "Оперативное проведение" устанавливаем в значение "Запретить". Контроль оперативности имеет смысл только для учета в реальном времени и в бухгалтерском учете совсем или почти не используется
..."
3) Свойство «Удаление движений»:
Свойство "Удаление движений" устанавливаем в значение "Удалять автоматически при отмене проведения" - это стандартный вариант. Это позволит перезаписывать набор записей регистра при перепроведении документа без предварительной очистки существующих. Существующие будут удаляться автоматически, только если документ снимается с проведения (удаляется).
В обработчике проведения необходимо сначала записывать пустой набор в базу данных. В свойствах документа свойство "Удалять движения" по умолчанию установлено в значение "Удалять автоматически при отмене проведения", поэтому при перепроведении документа его старые проводки будут находиться в наборе движений, иначе говоря будут доступны для считывания, потому их и нужно таким образом очистить. Если пользователь при перепроведении не изменит время документа на более позднее, тогда ошибки не будет, поскольку остатки считываются на момент времени документа , т.е. его проводки не включатся. Если пользователь не записывает набор пустых движений и изменит время проведения документа на более позднее или проведение будет оперативным, возникнет ошибка, т.к. движения документа, записанные до перепроведения будут учтены, что будет ошибкой.
NB: Только при проведении по-старому, когда нужно считать данные с регистра чтобы их потом изменить, нужно делать запись пустых значений, а при новой методике проведения -этого делать не нужно.
4)Режим разделения итогов:
Режим разделения итогов включен по умолчанию для регистров конфигурации
5)Получение данных за период:
При получении данных ЗА ПЕРИОД следует брать конец периода даты окончания периода:
- СКД КонецПериода(&ИмяПериода,"День");
- Параметр запроса КонецДня(ИмяПараметра)
При получении остатка НА ДАТУ(конец дня, включая его последнюю секунду) следует воспользоваться объектом Граница:
В
Момент = Новый Граница(КонецДня(ИмяПараметра),ВидГраницы.Включая);
, где ИмяПараметра - параметр, содержащий значение даты окончания
6) Флаг Общего модуля "Вызов сервера":
Флаг Общего модуля "Вызов сервера" необходимо установить, если вызов экспортных методов данного модуля(выполняемых на сервере), вызывается из области, выполняемой на Клиенте.
7) Обращение к реквизиту составного типа в запросе:
В случае осуществления запроса к реквизиту значения составного типа необходимо использовать предложение ВЫРАЗИТЬ, например:
ВЫРАЗИТЬ ( ОстаткиИОбороты.Субконто1 КАК Справочник.Номенклатура) КАК Субконто1
8) Основные задачи, решаемые при реализации количественного учета:
1.Эффективное считывание данных из базы и документа, необходимых для проведения.
2.Расчет стоимости списания, которую обычно рассчитывают по одной из принятых методик ( по средней, FIFO или LIFO):
Окр(Выборка.СуммаОстаток * Выборка.Количество / Выборка.КоличествоОстаток, 2)
(видел в методичке 1с Решение задач БУ : стр.135)
3.Контроль возможности проведения документа / контроль остатков
4.Блокирование считываемых данных при многопользовательском режиме в клиент - серверной реализации.
9)Оптимальное проведение документа списания товаров при реализации количественного учета
Запрос использует временные таблицы и состоит из нескольких пакетов:
1.1. Первый пакет запроса получает сгруппированные данные табличной части документа с отбором по данному документу и необходимыми условиями (например отбор только Товаров) с индексацией по номенклатуре. Результат выполнения помещён во временную таблицу. По данным этой временной таблицы имеет смысл блокировать записи таблицы РН, в случае использования старой методики проведения, т.е. тогда, когда реализовать списание товара из регистра невозможно без получения данных из регистра. Например, для списания себестоимости необходимо знать количество и стоимость остатков списываемой номенклатуры.
1.2. Второй пакет запроса получает остатки с отбором по номенклатуре из первого пакета, значения ресурсов проверены на отсутствие значения (NULL), данные из временной таблицы соединены левым соединением с виртуальной таблицей остатков (при необходимости сгруппированы по номенклатуре (если это партионный учет, отсортированы по моменту времени Партии))
10) «Защита от дурака» за счёт установки свойств элементов интерфейса:
Следует помнить о возможности установки ограничений в полях ввода в формах, а именно где необходимо – запрещать незаполненные значения, устанавливать маски, устанавливать диапазон допустимых значений. В большинстве случаев это решает вопрос «защиты от дурака» на начальном уровне.
11) Привязка сообщения к элементу форму:
Прикрепление сообщения о нехватке товара при списании к столбцу Количество ТЧ Товары. Рекомендуется делать во всех случаях для доведения приема до автоматизма(одна из задач на УФ):
Сообщение. Текст = " Не хватает" + Выборка.Представление + " в количестве " + Число(Выборка.Количество - Выборка.КоличествоОстаток) ;
Сообщение. Поле = "Товары[" + (Выборка.НомерСтроки -1) + "].Количество";
Сообщение.УстановитьДанные(ЭтотОбъект);
12) Рекомендации по установке управляемой блокировки при использовании старой методики проведения:
1. Следует устанавливать блокировку максимально близко к концу транзакции (чем меньше блокировка длится, тем больше пользователей работает одновременно, т.е. выше параллельность).
2. Известно, какие данные блокировать
3.Блокировка должна производиться до обращения к конкурентному ресурсу, например, виртуальной таблице РегистраБухгалтерии.
БУ:
Уточняющие условия можно установить с применением метода УстановитьЗначение для блокировки по значению. Для тех свойств блокировки, где в качестве параметра нужно передать список или массив значений, можно использовать свойств ИсточникДанных и метод ИспользоватьИзИсточникаДанных. В свойство ИсточникДанных можно поместить табличную часть документа, таблицу значений или результат запроса, а в методе вторым параметром указать имя колонки, значения и которой используются для фильтра.
Для субконто есть специфика установки значения блокировки - не всегда точно известно на какой позиции закреплено искомое субконто, поэтому используется ссылка на вид характеристики (вид субконто) для обозначения поля пространства блокировки.
13) Новая технология проведения предполагает следующий порядок действий при реализации количественного учета:
1.Описываем формирование движений документа, установив для них специальный флаг блокирования данных итогов (БлокироватьПриИзменении).
2.Выполняем запись набора движений в регистр, при этом на данные итогов, соответствующие значениям измерений, используемых в наборе, накладывается блокировка.
3.После записи и установки блокировки выполняем контроль остатков, при этом ищем отрицательные . При наличии отрицательных остатков отменяем проведение и выводим уведомление пользователю.
14) Использование объектной модели "РегистрНакопления.Менеджер"
В большинстве случаев получение данных в виде таблицы значений считается менее эффективным. По этой причине объектная модель получения данных считается менее эффективной нежели табличная. Например, результат выполнения метода Остатки объекта РегистрНакопленияМенеджер есть таблица значений, заполненная итогами, содержащая колонки с ресурсами, указанными в параметре Ресурсы.
Рассмотрим данную технологию на примере. Необходимо дать пользователю возможность контролировать остатки в старых документах на дату их проведения. Для этого необходимо показать на форме документа остатки товаров, попавших в табличную часть, актуальные на момент регистрации самого документа. Эта задача реализована следующим образом:
1.В форму документа добавлен реквизит Остаток(Строка).
2. Поскольку необходимо обработать событие изменения табличной части документа, код будет располагаться в обработчике события "ПриАктивизацииСтроки" форму документа. В обработчике пропишем следующий код:
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
Стр = Элементы.Товары.ТекущиеДанные;
Если Стр <> Неопределено Тогда
Ост = ОпределениеОстаткаТовара(Стр.Номенклатура,
Объект.Склад, Объект.Дата, Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОпределениеОстаткаТовара (ТекТовар, Склад, Дата, Ссылка)
ОстаткиТов = РегистрыНакопления.ОстаткиНоменклатуры;
Фильтр = Новый Структура;
Фильтр.Вставить("Номенклатура", ТекТовар);
Фильтр.Вставить("Склад", Склад);
Если ЗначениеЗаполнено(Ссылка) Тогда
//если док. есть в базе, у него заполнены поля дата и ссылка, значит по ним можно
//сформировать МоментВремени для отбора остатков
ВременнойМомент = Новый МоментВремени(Дата, Ссылка);
Иначе
//получаем самые актуальные остатки
ВременнойМомент = Неопределено;
КонецЕсли;
ТаблицаОст = ОстаткиТов.Остатки(ВременнойМомент, Фильтр,"Номенклатура, Количество");
//возврат итога по колонке Количество
Возврат ТаблицаОст.Итог("Количество");
КонецФункции
Объектная модель используется пока нужно получать итоги с отборами типа "равно определенному значению". Рассмотрим пример, когда применение объектной модели будет невозможно:
1. Нужно показать остатки по складу и фирме в целом;
2. Нужно получить остатки по всем товарам, попавшим в табличную часть документа;
3. нужно получить свободный остаток по товару
Все эти задачи не решить эффективно посредством объектной за одно обращение к БД.
Наиболее частые случаи использования объектной модели это:
1.Когда прикладной объект надо записать в БД
2.Когда прикладной объект надо модифицировать в БД (прочитать в оперативную память, изменить и записать измененный в БД).
3.Когда в алгоритме нужно использовать механизм динамического чтения данных больших массивов прикладных объектов ( суть механизма - чтение данных из БД блоками по небольшому количеству записей), можно использовать объект манипулирования данными <СправочникВыборка.<ИмяСправочника», <ДокументВыборка.<ИмяДокумента», <РегистрНакопленияВыборка.<ИмяРегистра» и т.п.
4.Когда данные уже находятся в оперативной памяти и к ним нужно обратиться.
В остальных случаях применение запроса для решения задачи или одинаково эффективно с объектной моделью или более эффективно.
15) Составление схемы запроса выполняется по следующей методике для новичков:
Составление схемы запроса выполняется по следующей методике для новичков:
1.Нарисовать эскиз выходной таблицы запроса с вариантом заполнения данных;
2.Обозначить на эскизе количество выходных полей.
3. Обозначить для каждого поля таблицу - источник ( по возможности консолидируя разрезы)
4. Обозначить дополнительное действие в запросе.
К дополнительным действиям чаще всего относятся:
- фильтрация, отбор ( когда речь идёт об отборе по значению измерения виртуальной таблицы, тогда надо делать отбор в параметрах самой таблицы, в остальных случаях - отборы с предложением ГДЕ).
- свертка таблицы (СГРУППИРОВАТЬ ПО);
- разворачивание таблицы за счет добавления строк с промежуточными итогами ( ИТОГИ ПО);
- сортировка (УПОРЯДОЧИТЬ ПО).
16) Произвольное условие в конструкторе запросов:
Произвольное условие в конструкторе запросов (на вкладке "Условия") можно построить путём вложенного вызова конструктора произвольных выражений конструктора запросов. Для этого после установки флага "Произвольное" следует однократно нажать в правый угол поля, в котором располагается произвольное условие. Таким образом можно будет активировать кнопку выбора в конце строки. При нажатии на данную кнопку выбора будет вызван конструктор произвольных выражений.
17) Правила выполнения запросов:
С точки зрения техники выполнения запроса желательно помнить следующие правила:
1. Соединение - попытка в одном запросе получить все возможные комбинации записей исходных таблиц источников, ограниченная количеством и видами связей. Связь - условие, которому обязательно соответствуют выбираемые комбинации.
Если связей не накладывать, тогда записи таблиц соединятся по схеме "каждый с каждым". Во избежание этого при написании запроса руководствуются правилом: "Минимальное количество связей на единицу меньше количества таблиц источников" - больше связей допустимо, меньше - нет.
2. В прикладных задачах чаще всего есть возможность определить ведущий и ведомый источники данных. Выходные поля группировочных сущностей должны определяться из ведущих источников.
При написании запроса, помимо СКД, важно помнить следующую закономерность. Когда в качестве источника выбрана виртуальная таблица, имеет смысл войти в свойства виртуальной таблицы и указать имена всем внешним параметрам, связанным со временем построения виртуальной таблицы.
В СКД эти параметры устанавливаются системой автоматически.
Когда нужно выбрать все данные, методически правильнее использовать параметр, который будет установлен в значение Неопределено или '00010101', что соответствует значению Неопределено для типа данных Дата.
При написании запроса, если в самом запросе необходимо наложить условие на виртуальную таблицу, и условие касается отбора по одному или нескольким значениям измерений, такое условие должно накладываться в параметрах виртуальной таблицы. Такое условие выполняется сразу при построении виртуальной таблицы. Если наложить условие по измерению после построения виртуальной таблицы, быстродействие запроса значительно снизится по понятным причинам.
Для повышения эффективности запроса имеет смысл накладывать условия на виртуальные таблицы по максимуму. Кроме того в запросах по полям отбора целесообразно строить индекс, чтобы повысить скорость построения виртуальной таблицы по заданному условию.
При оперативном проведении, чтобы документы располагались последовательно и не попадали внутрь одной секунды ( внутри секунды порядок следования не определен) система выполняет автоматическое изменение времени документа. Дата документа получает значение оперативной отметки времени, которая рассчитывается системой по следующему алгоритму: дата оперативно проводимого документа равна текущей или на секунду больше предыдущей выданной оперативной отметки времени. При оперативном проведении документов система позволяет добиться расстановки документов в правильном хронологическом порядке (каждое событие зарегистрировано на момент его отражения в учете) и, кроме того, известить об этом обработчик проведения ( с точки зрения отражения документа в учёте сам механизм оперативного проведения не выполняет действий, а передаёт параметр в обработчик проведения). Это даёт разработчику возможность отличать ситуации проведения документов реальным временем от прочих ситуаций, что используется для решения прикладных задач. Например, в случае оперативного проведения можно получить актуальные остатки, что гораздо быстрее, чем получение остатков на произвольный момент времени.
3. Объединение - это добавление снизу к выходной таблице запроса по первому источнику выходных таблиц по последующим источникам, значит, в случае Объединения для каждого источника нужен свой запрос. Это значит, что колонки с группировками (например, номенклатурой) должны указываться в качестве выходных полей в каждом из этих запросов.
4. При реализации объединения важно, чтобы каждый из объединяемых запросов имел одинаковое количество полей. Если для одного из наборов поля объединения отсутствуют, отсутствующие поля следует дополнить пустыми значениями, чтобы сделать количество полей равным.
18) Управляемые блокировки:
Управляемые блокировки:
Установка полей блокировки для единичных значений используется метод УстановитьЗначение объекта ЭлементБлокировки. Для установки отбора на поля блокировки по множеству значений используется поле ИсточникДанных и метод ИспользоватьИзИсточникаДанных. Источником данных могут быть объекты типов РезультатЗапроса, ТабличнаяЧасть, ТаблицаЗначений. В методе ИспользоватьИзИсточникаЗначений следует указывать поле блокируемого объекта и поле, из которого берутся значения для блокировки.
19) Правила внесения изменений в структуру регистров рабочей базы:
Правила внесения изменений в структуру регистров рабочей базы:
1. Продумать все детали изменений регистра (какие будут структурные изменения, какие документы делают движения прихода, какие документы делают движения расхода по новым измерениям )
2. Внести структурные изменения в регистр. Следует учесть, что изменение структуры регситров не потребует для обеспечения правильности синтаксиса изменения текстов программных модулей, читающих данные из регистров. Тем не менее это может отразиться на скорости их исполнения, т.к. скорость доступа к первым измерениям выше, чем к последним.
3. Реализовать движения прихода по этому регистру(регистрам) и отладить написанный алгоритм проведения на примере одного документа, но для каждого вида документов приходования при различных вариантах исходных данных.
4. Реализовать движения расхода по этому регистру (регистрам) или движения сторно для РегистровРасчета, РегистровНакопления типа Обороты и Регистров Сведений и отладить написанный алгоритм проведения на примере одного документа, но для каждого вида документов расходования при различных вариантах исходных данных.
5. Убедиться в корректности работы всех программных механизмов , которые базируются на этом регистре (регистрах), то есть корректность работы отчетов, обусловленного проведения других документов.
Часть механизмов базируется на работе с набором записей нашего регистра, поэтому целесообразно посмотреть наличие обработчиков событий ПередЗаписью и ПриЗаписи в модуле набора записей регистра. Затем для просмотра всех остальных механизмов на панели инструментов Конфигурация следует вызвать кнопку Поиск во всех текстах. В полученном окне проставить условия поиска (например, Модули, Роли). Результат поиска будут отражены внизу в табло. Однократным нажатием на строку результата поиск можно перейти в объект, содержащий данные, по которым можно оценить корректность применения нового механизма.
6. Затем следует перепровести все документы, связанные с данным регистром. В случае невозможности проведения старых документов по новым законам придётся реализовать корректное использование нужного механизма в зависимости от даты документа.
20) Направления оптимизации алгоритма проведения:
Направления оптимизации алгоритма проведения в условиях повышенных требований к быстродействию системы можно разделить на следующие варианты:
1.Минимизация количества обращений к базе.
2.Минимизация объема данных, обрабатываемых 
Вступайте в нашу телеграмм-группу Инфостарт