Счета, план счетов

Получить свойства счёта

&НаСервере

Функция ПолучитьСвойстваСчета(Знач Счет)

ДанныеСчета = Новый Структура;

ДанныеСчета.Вставить("Ссылка" , ПланыСчетов.Хозрасчетный.ПустаяСсылка());

ДанныеСчета.Вставить("Наименование" , "");

ДанныеСчета.Вставить("Код" , "");

ДанныеСчета.Вставить("Родитель" , ПланыСчетов.Хозрасчетный.ПустаяСсылка());

ДанныеСчета.Вставить("Вид" , Неопределено);

ДанныеСчета.Вставить("Забалансовый" , Ложь);

ДанныеСчета.Вставить("ЗапретитьИспользоватьВПроводках", Ложь);

ДанныеСчета.Вставить("Валютный" , Ложь);

ДанныеСчета.Вставить("Количественный" , Ложь);

ДанныеСчета.Вставить("УчетПоПодразделениям" , Ложь);

ДанныеСчета.Вставить("НалоговыйУчет" , Ложь);

ДанныеСчета.Вставить("КоличествоСубконто" , 0);

МаксКоличествоСубконто = ПолучитьМаксКоличествоСубконто();

Для ИндексСубконто = 1 По МаксКоличествоСубконто Цикл

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто, Неопределено);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "Наименование", Неопределено);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "ТипЗначения", Неопределено);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "Суммовой", Ложь);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "ТолькоОбороты", Ложь);

КонецЦикла;

Если НЕ ЗначениеЗаполнено(Счет) Тогда

Возврат ДанныеСчета;

КонецЕсли;

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Счет", Счет);

Запрос.Текст =

//Виртуальная таблица сведений о самом счете

"ВЫБРАТЬ

| Хозрасчетный.Ссылка,

| Хозрасчетный.Родитель,

| Хозрасчетный.Код,

| Хозрасчетный.Наименование,

| Хозрасчетный.Вид,

| Хозрасчетный.Забалансовый,

| Хозрасчетный.ЗапретитьИспользоватьВПроводках,

| Хозрасчетный.Валютный,

| Хозрасчетный.Количественный,

| Хозрасчетный.УчетПоПодразделениям,

| Хозрасчетный.НалоговыйУчет

|ИЗ

| ПланСчетов.Хозрасчетный КАК Хозрасчетный

|ГДЕ

| Хозрасчетный.Ссылка = &Счет

|;

|

|////////////////////////////////////////////////////////////////////////////////

//Виртуальная таблица сведений о субконтах счета

|ВЫБРАТЬ

| ХозрасчетныйВидыСубконто.НомерСтроки КАК НомерСтроки,

| ХозрасчетныйВидыСубконто.ВидСубконто КАК ВидСубконто,

| ХозрасчетныйВидыСубконто.ВидСубконто.Наименование КАК Наименование,

| ХозрасчетныйВидыСубконто.ВидСубконто.ТипЗначения КАК ТипЗначения,

| ХозрасчетныйВидыСубконто.ТолькоОбороты КАК ТолькоОбороты,

| ХозрасчетныйВидыСубконто.Суммовой КАК Суммовой

|ИЗ

| ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто

|ГДЕ

| ХозрасчетныйВидыСубконто.Ссылка = &Счет

|

|УПОРЯДОЧИТЬ ПО

| ХозрасчетныйВидыСубконто.НомерСтроки";

МассивРезультатов = Запрос.ВыполнитьПакет();

Выборка = МассивРезультатов[0].Выбрать();

Если Выборка.Следующий() Тогда

ЗаполнитьЗначенияСвойств(ДанныеСчета, Выборка);

КонецЕсли;

ВыборкаВидыСубконто = МассивРезультатов[1].Выбрать();

ДанныеСчета.КоличествоСубконто = ВыборкаВидыСубконто.Количество();

ИндексСубконто = 0;

Пока ВыборкаВидыСубконто.Следующий() Цикл

ИндексСубконто = ИндексСубконто + 1;

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто, ВыборкаВидыСубконто.ВидСубконто);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "Наименование", ВыборкаВидыСубконто.Наименование);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "ТипЗначения", ВыборкаВидыСубконто.ТипЗначения);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "Суммовой", ВыборкаВидыСубконто.Суммовой);

ДанныеСчета.Вставить("ВидСубконто" + ИндексСубконто + "ТолькоОбороты", ВыборкаВидыСубконто.ТолькоОбороты);

КонецЦикла;

Возврат ДанныеСчета;

КонецФункции

Описание субконто

ОписанияТиповВидовСубконто = Новый Структура;

ОписанияТиповВидовСубконто.Вставить("Номенклатура" , ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура.ТипЗначения);

ОписанияТиповВидовСубконто.Вставить("Склад" , ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады.ТипЗначения);

ОписанияТиповВидовСубконто.Вставить("Контрагент" , ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты.ТипЗначения);

ОписанияТиповВидовСубконто.Вставить("ДоговорКонтрагента" , ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры.ТипЗначения);

ОписанияТиповВидовСубконто.Вставить("Партия" , ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии.ТипЗначения);

ОписанияТиповВидовСубконто.Вставить("ДокументРасчетовСКонтрагентами", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами.ТипЗначения);

Управление Видимостью полей субконто на форме

&НаКлиенте

Процедура СчетИнтернетПродажПриИзменении(Элемент)

//Предварительно инициализировать данные

Элементы.СубконтоИ1.ОграничениеТипа = Новый ОписаниеТипов("Неопределено"); Элементы.СубконтоИ1.Заголовок = "Субконто 1"; Элементы.СубконтоИ1.Видимость = Истина;

Элементы.СубконтоИ2.ОграничениеТипа = Новый ОписаниеТипов("Неопределено"); Элементы.СубконтоИ2.Заголовок = "Субконто 2"; Элементы.СубконтоИ2.Видимость = Истина;

Элементы.СубконтоИ3.ОграничениеТипа = Новый ОписаниеТипов("Неопределено"); Элементы.СубконтоИ3.Заголовок = "Субконто 3"; Элементы.СубконтоИ3.Видимость = Истина;

ОбновитьОтображениеДанных(); // Обновить форму

Если СокрЛП(СчетИнтернетПродаж) <> "" Тогда

// Получить сведения о счете и привезать типы полей к типам субконто

ПоляФормы = Новый Структура;

ПоляФормы.Вставить("Субконто1", Элементы.СубконтоИ1.Имя);

ПоляФормы.Вставить("Субконто2", Элементы.СубконтоИ2.Имя);

ПоляФормы.Вставить("Субконто3", Элементы.СубконтоИ3.Имя);

ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Счет);

//Обход полей субконто

Для Индекс = 1 По 3 Цикл

Если Индекс <= ДанныеСчета.КоличествоСубконто Тогда

Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ОграничениеТипа = ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"]; //ограничить тип данных

Форма.Элементы[ПоляФормы["Субконто" + Индекс]].ПодсказкаВвода = ДанныеСчета["ВидСубконто" + Индекс + "Наименование"];

КонецЕсли;

КонецЦикла;

//Инициализировать по результатам обхода

Если НЕ(СокрЛП(Элементы.СубконтоИ1.ОграничениеТипа)= "") Тогда

Элементы.СубконтоИ1.Заголовок = Лев(СокрЛП(Элементы.СубконтоИ1.ПодсказкаВвода),30);

Иначе

Элементы.СубконтоИ1.Заголовок = "Субконто 1"; Элементы.СубконтоИ1.Видимость = Ложь;

КонецЕсли;

Если НЕ(СокрЛП(Элементы.СубконтоИ2.ОграничениеТипа)= "") Тогда

Элементы.СубконтоИ2.Заголовок = Лев(СокрЛП(Элементы.СубконтоИ2.ПодсказкаВвода),30);

Иначе

Элементы.СубконтоИ2.Заголовок = "Субконто 2"; Элементы.СубконтоИ2.Видимость = Ложь;

КонецЕсли;

Если НЕ(СокрЛП(Элементы.СубконтоИ3.ОграничениеТипа)= "") Тогда

Элементы.СубконтоИ3.Заголовок = Лев(СокрЛП(Элементы.СубконтоИ3.ПодсказкаВвода),30);

Иначе

Элементы.СубконтоИ3.Заголовок = "Субконто 3"; Элементы.СубконтоИ3.Видимость = Ложь;

КонецЕсли;

КонецЕсли;

ОбновитьОтображениеДанных(); // Обновить форму

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