Как получить виды субконто счета Пример получения возможных видов субконто у счета
Код 1C v 8.2 УП &НаСервере
Процедура ВывестиСубконтоСчета(сч)
ТаблицаСубконто = Сч.ВидыСубконто;
Для Каждого ТекущаяСтрока Из ТаблицаСубконто Цикл
Сообщить(ТекущаяСтрока.ВидСубконто);
КонецЦикла;
КонецПроцедуры
Пример получения значений субконто в движениях документа
Код 1C v 8.2 УП &НаСервере
Процедура ВывестиСубконтоДокумента(ДокументПроверки)
Регистр = РегистрыБухгалтерии.Бухгалтерский;
ДвиженияБУ = Регистр.ВыбратьПоРегистратору(ДокументПроверки);
Пока ДвиженияБУ.Следующий() Цикл
Сообщить("Проводка "+ДвиженияБУ.НомерСтроки);
Сообщить("Счет Дт " +ДвиженияБУ.СчетДт);
ТаблицаСубконтоДт = ДвиженияБУ.СчетДт.ВидыСубконто;
Для Каждого ТекущаяСтрока Из ТаблицаСубконтоДт Цикл
Сообщить("Субконто Дт"+ТекущаяСтрока.НомерСтроки +" - "+ДвиженияБУ.СубконтоДт[ТекущаяСтрока.ВидСубконто]);
КонецЦикла;
Сообщить("Счет Кт " +ДвиженияБУ.СчетКт);
ТаблицаСубконтоКт = ДвиженияБУ.СчетКт.ВидыСубконто;
Для Каждого ТекущаяСтрока Из ТаблицаСубконтоКт Цикл
Сообщить("Субконто Кт"+ТекущаяСтрока.НомерСтроки +" - "+ДвиженияБУ.СубконтоКт[ТекущаяСтрока.ВидСубконто]);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Категория:
Регистры бухгалтерии Проведение документа по регистру бухгалтерии Задача: Есть два склада Склад1 и Склад2. Нужно переместить определенное количество товара со склада1 на склад2. При списании со склада1 нужно проверять остаток, что хватает товара. Проведение сделать по регистру бухгалтерии.(проверку тоже по регистру бухгалтерии).
Решение: В Шапке документа Склад1 и Склад2. В Табличной части номенклатура и количество.
Код 1C v 8.х Процедура ОбработкаПроведения(Отказ, Режим)
Движения.Хозрасчетный.Очистить();
Движения.Хозрасчетный.Записать();
Движения.Хозрасчетный.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Запрос = Новый Запрос; //проверяем сколько осталось на складе1
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.КоличествоОстатокДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
|ГДЕ
| ХозрасчетныйОстатки.Счет = &Счет
| И ХозрасчетныйОстатки.Субконто1 = &Субконто1
| И ХозрасчетныйОстатки.Субконто2 = &Субконто2";
Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.ТоварыНаСкладах); //41.1
Запрос.УстановитьПараметр("Субконто1",ТекСтрокаТовары.Номенклатура);
Запрос.УстановитьПараметр("Субконто2",Склад1);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.КоличествоОстатокДт < ТекСтрокаТовары.Количество Тогда
Сообщить("На складе1 остака: " + СокрЛП(Выборка.КоличествоОстатокДт));
Отказ = Истина;
Возврат;
КонецЕсли;
Иначе
Сообщить("нет остатка на складе1");
Отказ = Истина;
Возврат;
КонецЕсли;
Движение = Движения.Хозрасчетный.Добавить();
Движение.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах; //Списываем
Движение.СчетДт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах; //приходуем
Движение.Период = Дата;
Движение.КоличествоКт = ТекСтрокаТовары.Количество;
Движение.ДатаЗаписи = Дата;
Движение.Содержание = "Перемещение";
БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт,Движение.СубконтоКт,
"Номенклатура",ТекСтрокаТовары.Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт,Движение.СубконтоКт,
"Склады",Склад1);
БухгалтерскийУчет.УстановитьСубконто(Движение.СчетДт,Движение.СубконтоДт,
"Номенклатура",ТекСтрокаТовары.Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(Движение.СчетДт,Движение.СубконтоДт,
"Склады",Склад2);
//Или так
//Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Номенклатура;
//Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = Склад1;
//Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Номенклатура;
//Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = Склад2;
КонецЦикла;
КонецПроцедуры
Категория:
Регистры бухгалтерии Как добавить новый вид субконто к счету? Код 1C v 8.х ВидМенеджеры = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию("Менеджеры", Истина);
// Добавить новый вид характеристик.
Если ВидМенеджеры.Пустая() Тогда
ВидМенеджеры = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СоздатьЭлемент();
ВидМенеджеры.Наименование = "Менеджеры";
ВидМенеджеры.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Пользователи");
ВидМенеджеры.Записать();
КонецЕсли;
// Получить нужный счет.
Счет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
Если (Не Счет.Пустая()) И (Счет.ВидыСубконто.Найти(ВидМенеджеры) = Неопределено) Тогда
// Добавить новый вид субконто к счету.
ОбъектСчета = Счет.ПолучитьОбъект();
НовыйВидСубконто = ОбъектСчета.ВидыСубконто.Добавить();
НовыйВидСубконто.ВидСубконто = ВидМенеджеры;
НовыйВидСубконто.ТолькоОбороты = Истина;
НовыйВидСубконто.Суммовой = Истина;
ОбъектСчета.Записать();
КонецЕсли;
Категория:
Регистры бухгалтерии Как выбрать все счета, в аналитике которых есть вид субконто Контрагент и вид субконто Номенклатура? Код 1C v 8.х ВЫБРАТЬ
ХозрасчетныйВидыСубконто.Ссылка КАК Счет
ИЗ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто1
ПО
ХозрасчетныйВидыСубконто.Ссылка = ХозрасчетныйВидыСубконто1.Ссылка
ГДЕ
(ХозрасчетныйВидыСубконто.ВидСубконто.Наименование = "Контрагенты")
И
(ХозрасчетныйВидыСубконто1.ВидСубконто.Наименование = "Номенклатура")
Категория:
Регистры бухгалтерии Как изменить, присвоить, указать Тип Значения Ячейки табличной части? Создаем табличную часть и в ней реквизит с разными типами значений:
Код 1C v 8.х //Создадим строки с разним типом значения
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = 12345;
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = "Это строка";
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = ТекущаяДата();
НовСтрока = ТабЧасть.Добавить();
НовСтрока.РеквизитПроизвольный = Истина;
// измененим тип значения в ячейке ТЧ
// Найдем Строку и заменим на Дату
НайденСтрока = ТабЧасть.Найти("Это строка", "РеквизитПроизвольный");
НайденСтрока.РеквизитПроизвольный = ТекущаяДата();
// Найдем Число и заменим на Пустую ссылку справочника Номенклатуры (полученную с Вида судконто)
Счет = ПланыСчетов.Хозрасчетный.ТоварыНаСкладе;
НайденСтрока = ТабЧасть.Найти(12345, "РеквизитПроизвольный");
// Получим первое субконто Номенклатура
Субконото1 = Счет.ВидыСубконто[1];
// Присвоим тип значения
НайденСтрока.РеквизитПроизвольный = Субконото1.ВидСубконто.ТипЗначения.ПривестиЗначение();
Категория:
Работа с Типами данных Как получить значение Субконто Код 1C v 8.х Функция ПолучитьСубконто(Счет, Субконто, ИмяСубконто) Экспорт
Если Счет = Неопределено ИЛИ Счет.Пустая() Тогда
Возврат Неопределено;
КонецЕсли;
Если ТипЗнч(ИмяСубконто) = Тип("Число") Тогда
Если ИмяСубконто > Счет.ВидыСубконто.Количество() Тогда
Возврат Неопределено;
КонецЕсли;
ВидСубк = Счет.ВидыСубконто[ИмяСубконто - 1].ВидСубконто;
Иначе
ВидСубк = ПланыВидовХарактеристик[Метаданные.НайтиПоТипу(ТипЗнч(Счет)).ВидыСубконто.Имя][ИмяСубконто];
Если Счет.ВидыСубконто.Найти( ВидСубк) = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
КонецЕсли;
Возврат Субконто[ВидСубк];
КонецФункции
Категория:
Регистры бухгалтерии Как установить значение Субконто Код 1C v 8.х Процедура УстановитьСубконто(Счет, Субконто, ИмяСубконто, ЗначениеСубконто) Экспорт
Если Счет = Неопределено ИЛИ Счет.Пустая() Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(ИмяСубконто) = Тип("Число") Тогда
Если ИмяСубконто > Счет.ВидыСубконто.Количество() Тогда
Возврат;
КонецЕсли;
ВидСубк = Счет.ВидыСубконто[ИмяСубконто - 1].ВидСубконто;
Иначе
ВидСубк = ПланыВидовХарактеристик[Метаданные.НайтиПоТипу(ТипЗнч(Счет)).ВидыСубконто.Имя][ИмяСубконто];
Если Счет.ВидыСубконто.Найти( ВидСубк) = Неопределено Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Если ВидСубк.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеСубконто)) Тогда
Субконто.Вставить(ВидСубк, ЗначениеСубконто);
Иначе
Сообщить("Неверное значение """ + ЗначениеСубконто + """ для вида субконто <" + ВидСубк + ">");
КонецЕсли;
КонецПроцедуры
Пример использования:
Код 1C v 8.х // где Выборка - Выборка из результата запроса
Проводка = Движения.Международный.Добавить();
Проводка.Период = ДатаЗакрытияПериода;
Проводка.СчетДт = Выборка.Счет;
Проводка.СчетКт = ПланыСчетов.Международный.СуммарныеДоходыИРасходы;
Проводка.Организация = Организация;
Проводка.Сумма = Выборка.СуммаОстатокКт;
Проводка.Содержание = "Закрытие счетов в конце финансового года";
Проводка.НомерЖурнала = "Рег";
НомерСубконто = 0;
Для каждого ВидСубконто Из Проводка.СчетДт.ВидыСубконто Цикл
НомерСубконто = НомерСубконто + 1;
ЗначениеСубконто = Выборка["Субконто"+НомерСубконто];
Если ЗначениеЗаполнено(ЗначениеСубконто) Тогда
УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, НомерСубконто, ЗначениеСубконто);
КонецЕсли;
КонецЦикла;
Категория:
Регистры бухгалтерии Как программно изменить проводку в Регистре Бухгалтерии? Код 1C v 8.х //Необходимо изменить существующие проводки и добавить значение Субконто
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Объект.Ссылка);
Набор.Прочитать();
Для каждого Запись из Набор Цикл
Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами Тогда
// для переборов субконто
Запись.СубконтоКт[Запись.СчетКт.ВидыСубконто[1]] = Объект.ДоговорКонтрагента;
// указывая конкретное значение
//Запись.СубконтоКт.Договоры = Объект.ДоговорКонтрагента;
КонецЕСли;
КонецЦикла;
Набор.Записать();
Код 1C v 8.х // Перебор и замена реквизитов в проводках операции
НаборЗаписейБУ = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей();
НаборЗаписейБУ.Отбор.Регистратор.Использование = Истина;
НаборЗаписейБУ.Отбор.Регистратор.Значение = ОперацияБух;
НаборЗаписейБУ.Прочитать();
Для Каждого ЗаписьБУ Из НаборЗаписейБУ Цикл
Если (ЗаписьБУ.СчетКт = ПланыСчетов.Типовой.ИндивидуальныйПодоходныйНалог) или
(ЗаписьБУ.СчетКт = ПланыСчетов.Типовой.СоциальныйНалог) Тогда
ВидСубк = ЗаписьБУ.СчетКт.ВидыСубконто[2].ВидСубконто;
ЗаписьБУ.СубконтоКт.Вставить(ВидСубк, Контрагент);
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьИзменения Тогда
НаборЗаписейБУ.Записать();
КонецЕсли;
Категория:
Регистры бухгалтерии Получаем список валютных счетов Код 1C v 8.х // Код получает валютные счета и их субконто!
// с отбором по счетам (только валютные счета, исключая забалансовые, авансовые и те, которые переоцениваются
// особым способом.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Хозрасчетный.Ссылка КАК Счет,
| ХозрасчетныйВидыСубконто.ВидСубконто,
| ПРЕДСТАВЛЕНИЕ(ХозрасчетныйВидыСубконто.ВидСубконто.ТипЗначения)
|ИЗ
| ПланСчетов.Хозрасчетный КАК Хозрасчетный
| ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
| ПО (ХозрасчетныйВидыСубконто.Ссылка = Хозрасчетный.Ссылка)
|ГДЕ
| Хозрасчетный.Валютный
| И (НЕ Хозрасчетный.Забалансовый)
| И (НЕ Хозрасчетный.Ссылка В
| (ВЫБРАТЬ
| СчетаСОсобымПорядкомПереоценки.Счет
| ИЗ
| РегистрСведений.СчетаСОсобымПорядкомПереоценкиБУ КАК СчетаСОсобымПорядкомПереоценки))
| И (НЕ Хозрасчетный.Ссылка В (&СписокАвансовыхСчетов))";
СписокАвансовыхСчетов = Новый СписокЗначений;
СписокАвансовыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданнымВал);
СписокАвансовыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданнымУЕ);
СписокАвансовыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученнымВал);
СписокАвансовыхСчетов.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученнымУЕ);
Запрос.УстановитьПараметр("СписокАвансовыхСчетов",СписокАвансовыхСчетов);
ТЗСчетаВидыСубконтоИЗначения = Запрос.Выполнить().Выгрузить();
Категория:
Запросы