1с добавить субконто в расширение
Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней на практических примерах рассматривается механизм предопределенных данных, в т.ч. и в распределенной информационной базе.
Применимость
В статье рассматривается платформа 1С:Предприятие версии 8.3.4.465. Материал актуален и для текущих релизов платформы.
Предопределенные элементы в «1С:Предприятие 8.3»
При реализации алгоритмов разработчики часто опираются на определенные данные – элементы справочников, планов счетов, планов видов расчета и т.д.
Во встроенном языке существуют методы для поиска данных, например, НайтиПоКоду() или НайтиПоНаименованию().
Однако алгоритмы, опирающиеся на код или наименование, зачастую являются ненадежными.
Поскольку в пользовательском режиме код или наименование элемента справочника могут быть изменены, что может привести к неработоспособности алгоритмов.
Именно для решения этой проблемы и предназначены предопределенные данные – данные, созданные в конфигураторе, обратиться к которым возможно по имени, не прибегая к предварительному поиску элемента.
Таким образом, у предопределенных данных есть две “стороны”: во-первых, существует список предопределенных элементов, созданный в конфигураторе, а, во-вторых, для данных информационной базы указывается, является ли конкретный элемент предопределенным.
Предопределенные элементы могут быть созданы у:
- справочников;
- планов счетов;
- планов видов характеристик;
- планов видов расчета.
В статье рассмотрены новшества, касающиеся предопределенных данных на платформе 8.3, а также особенности работы с ними в распределенных базах (как центральных, так и периферийных) и в информационных базах в режиме разделения данных.
Для примера, создадим в справочнике Организации предопределенный элемент ОсновнаяОрганизация:
Для увеличения нажмите на изображение.
Обращение к этому элементу из программного кода будет следующим:
В платформе 8.3 реализована возможность связать предопределенные данные с элементами соответствующего типа.
Для этого у объектов, которые могут иметь предопределенные элементы (они указаны выше), добавлено новое свойство ИмяПредопределенныхДанных. Оно отображается в списке стандартных реквизитов:
Выберем при помощи запроса все поля из справочника Организации:
Для увеличения нажмите на изображение.
На рисунке видно, что в поле ИмяПредопределенныхДанных указан именно тот идентификатор, который мы ввели в режиме конфигуратора.
Предопределенный элемент в списке отображается специальной пиктограммой:
Чтобы “отсоединить” элемент данных от элемента предопределенных данных, нужно присвоить свойству ИмяПредопределенныхДанных пустую строку и записать элемент:
&НаКлиентеПроцедура Отсоединить ( Команда )
ОтсоединитьНаСервере ();
КонецПроцедуры
Пиктограмма в списке изменилась:
Теперь предопределенный элемент существует только в конфигурации и в данных нет элемента, привязанного к идентификатору ОсновнаяОрганизация:
Для увеличения нажмите на изображение.
Обращение из программного кода к предопределенному элементу вызовет исключение:
Чтобы связать предопределенный элемент с новой записью, нужно присвоить свойству ИмяПредопределенныхДанных имя предопределенного элемента:
&НаКлиентеПроцедура Привязать ( Команда )
ПривязатьНаСервере ();
КонецПроцедуры
Выборка из регистра бухгалтерии и работа с виртуальными таблицами мало чем отличается от выборки из регистра накопления. Поэтому перед чтением данной статьи рекомендую ознакомиться со статьей про работу с виртуальными таблица регистра накопления. В данной статье подробно будет рассмотрена только та функциональность, которая есть только у регистра бухгалтерии.
Выборка из регистра бухгалтерии
Помимо выборки из основной таблицы регистра бухгалтерии в запросе можно выбрать данные из таблицы субконто.
РегистрБухгалтерии.РегистрБухгалтерии1 КАК РегистрБухгалтерии1
Выборка значений субконто:
РегистрБухгалтерии1Субконто.Регистратор КАК Регистратор , РегистрБухгалтерии1Субконто.МоментВремени КАК МоментВремени , РегистрБухгалтерии1Субконто.НомерСтроки КАК НомерСтроки , РегистрБухгалтерии1Субконто.ВидДвижения КАК ВидДвижения , РегистрБухгалтерии.РегистрБухгалтерии1.Субконто КАК РегистрБухгалтерии1Субконто
Виртуальные таблицы регистра бухгалтерии
У регистра бухгалтерии немного больше виртуальных таблиц, чем у регистра накопления:
При этом у регистра бухгалтерии без поддержки корреспонденции не будет виртуальной таблицы ОборотыДтКт.
ДвиженияССубконто
Виртуальная таблица ДвиженияССубконто содержит в себе поля как основной таблицы регистра бухгалтерии, так и таблицы значений субконто:
Данная таблица получается соединением основной таблицы и таблицы значений субконто. Из всех виртуальных таблиц только данная таблица может содержать неактивные записи (поле Активность = Ложь), но при этом в самой таблице есть поле Активность, поэтому неактивные записи можно будет исключить в запросе.
Таблица ДвиженияССубконто имеет следующие параметры:
- С помощью параметров НачалоПериода и КонецПериода можно ограничить выборку записей по периоду. Тип может быть Дата, МоментВремени, Граница.
- Параметр Условие позволяет наложить отбор на любые поля таблицы.
- Параметр Упорядочивание позволяет задать поле по которому нужно отсортировать таблицу. После имени поля можно указать ВОЗР или УБЫВ для определения порядка сортировки (по возрастанию или по убыванию).
- Параметр Первые позволяет ограничить количество выбираемых записей.
Данный запрос выберет первые 10 записей за период между &НачДата и &КонДата, с отбором по счету дебета = &СчетДт, выборка будет отсортирована по полю Организация.
Все отборы, сортировку и ограничение количества записей можно указать не в параметрах виртуальной таблицы, а в тексте запроса. Преимущество использования параметров в том, что они будут использованы в процессе формирования виртуальной таблицы, что положительно скажется на производительности запроса.
Как правило данную таблицу используют для получения проводок вместе с субконто.
Виртуальная таблица остатки
Отличия от виртуальной таблицы регистра накопления
Виртуальная таблица остатков регистра бухгалтерии очень сильно похожа на виртуальную таблицу остатков регистра накопления, поэтому рассмотрим только основные отличия.
Во-первых помимо измерений регистра бухгалтерии в таблице остатков присутствуют поля Счет и субконто. Количество субконто равно максимальному количеству субконто в плане счетов.
В нашем примере в настройках плана счетов было указано максимум два субконто, поэтому в таблице есть два поля для субконто: Субконто1 и Субконто2. Если на каком-то счете присутствует только одно субконто, то в поле Субконто2 будет NULL.
Во-вторых, для каждого ресурса создается по пять полей:
- Остаток
- ОстатокДт
- ОстатокКт
- РазвернутыйОстатокДт
- РазвернутыйОстатокКт
В поле Остаток будет остаток, как он хранится в таблице итогов. Дебетовый остаток будет больше нуля, кредитовый меньше.
Поля ОстатокДт и ОстатокКт рассчитываются по разному, в зависимости от вида счета:
- Для активного счета ОстатокКт всегда равен нулю, а ОстатокДт = Остаток.
- Для пассивного счета ОстатокДт всегда равен нулю, а ОстатокКт = -Остаток.
- Для активно-пассивного счета, если Остаток > 0, то ОстатокДт = Остаток, а ОстатокКт = 0. Если Остаток < 0, то ОстатокДт = 0, а ОстатокКт = -Остаток.
Даже если у активного счета остаток будет меньше нуля, то он будет отображаться как дебетовый остаток, но с минусом. Аналогично с пассивным счетом: если остаток больше нуля, то он будет по кредиту, но с минусом:
Признак Балансовый у измерений и ресурсов никак не влияет на количество полей.
В-четвертых, есть два новых параметра: УсловиеСчета и Субконто:
УсловиеСчета позволяет задать отбор по счетам учета, можно указать несколько счетов.
В параметре Условие можно задать отбор по измерениям и субконто, данный параметр аналогичен параметру для виртуальной таблицы регистра накопления.
Кому интересно вопрос решен следующим образом:
1. Кроме сделанного ранее, необходимо в "Предопределенные" ДополнительныеРеквизитыОпераций во "ВсеТипы" добавить новый справочник.
2. В макет "ПредопределенныеДанные" в блок <Все типы> также добавить запись о новом справочнике.
3. Запустить с ключем "/C ЗапуститьОбновлениеИнформационнойБазы"
После этого все заработало.
Всем спасибо, тема закрыта.
Типовые операции
Добрый день! Имеется справочник ТиповыеОперации, создаю шаблон, прорисовываю параметры, но вот.
Типовые операции с одномерными массивами
Помогите пожалуйста решить вот эту задачу, желательно с комментариями, чтобы было понятно. .
Типовые операции с матрицей для консоли
Здравствуйте! Прошу помощи. Мало аналогов в Интернете в отличие от VB6, поэтому никак не могу.
Как изменить длину строки? Перечислите типовые операции над строками
Добрый день! Помогите, пожалуйста, правильно и грамотно ответить на вопросы: 1)Как изменить.
Обороты по субконто
Здраствуйте. Подскажите, как в 1С 7.7 вытащить д*цензура*овые обороты по конкретным субконто 26.
v8: Проблемы с 4 субКонто
Приветствую! Постараюсь описать ситуацию.. Есть Оборотно-сальдовая ведомость по счету 36 за.
Заполнение Субконто
Доброго времени суток. Нашел в интернете внешний обработчик. Пытаюсь немного переделать под.
добавление третьего субконто
Можно ли в 1С Бухгалтерия 7.7 добавить третье субконто для субсчета 62.1 без внесения изменений в.
Признак учета субконто
Фишка задачи: номенклатура хранится в разрезе сроков годности, но стоимость расчитывается разрезе.
Изменение представления субконто
Вот в чем вопрос, есть субконто Договора с типом значений Документ, как мне в стандартных отчетах.
Вывод сумм по субконто в отчете
Всем привет! Есть такая проблема: Нужно построить отчет по счету 304.01, который будет выводить.
Построить три вида фигуры. На месте вида спереди и вида слева совместить часть вида с частью разреза - AutoCAD
Меня уже совсем выносит. Правильно ли я делаю. Не могу представить нормально вид слева. Что делаю.
Создать форму такого вида
Создать форму вида: По нажатию кнопки “Открыть…” форма должна увеличится в размерах и на ней.
Можно просто:
Счет_Д.ВидСубконто(1).Идентификатор();
Но спасибо за помощь.)
Тоже ок. Спасибо.
А вот ещё вопрос:
Создаю проводку. На форме надо выбирать дебетовый счёт и кредитовый. При выборе 3 поля автоматом на форме заполняются видами субконто, если таковые есть у выбранного счёта. Возле полей с видами субконто есть поля, в которых должны быть значения этих субконто. Значения назначаются пользователем, само собой. Каждому субконто назначен соответствующий справочник. Как это реализовать? У меня пока ничего не выходит.(
Подсмотреть. Например, в форме элемента справочника ОСтиповая бух
ща гляну сам
Добавлено через 3 минуты
duk337. Или тип на ходу можно сменить?
Хорошо, назначил я этому полю тип программно (хотя не понимаю зачем, если можно сразу назначить нужный в Конфигураторе), но проблема-то не решена. Как ща сделать, чтоб в этом поле назначать Значение Субконто?
Добавлено через 31 минуту
Я сделал так:
Люди могут подумать, что Вам что рекомендуй, что нет Внимательнее, плз
Извиняюсь. Но я зелёный новичёк. С 1С раньше не сталкивался, а теперь нужно осваивать самому. Учебников нормальных вообще нет. Поэтому и туплю.
А решение Ваше не помогает. Если просто "НазначитьТип(бла-бла)", то ругается:
НазначитьТип<<?>>("СД" + А,Счет_Д.ВидСубконто(А));
: Процедура не обнаружена (НазначитьТип)
А если добавить перед этим Форма.СД.бла-бла, то ничего не происходит. Но и ошибок не выдаёт.
У меня просто подозрение, что Вы не можете понять, чего я вообще хочу, из-за того, что я не могу ясно это объяснить.(
Добавлено через 1 час 24 минуты
В общем, я понял, что вы мне советовали (наконец-то!). И да, было бы неплохо, если бы это работало. Но как я написал выше, оно либо ругается (по Вашему варианту), либо не ругается, но ничего с полем не происходит. Т.е. там не появляется многоточие для выбора конкретного значения Субконто.(( Я чувствую, что решение близко! Но не могу его найти.(
Читайте также: