Как выбрать все счета, в аналитике которых есть вид субконто Контрагент и вид субконто Номенклатура? Код 1C v 8.х ВЫБРАТЬ
ХозрасчетныйВидыСубконто.Ссылка КАК Счет
ИЗ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто1
ПО
ХозрасчетныйВидыСубконто.Ссылка = ХозрасчетныйВидыСубконто1.Ссылка
ГДЕ
(ХозрасчетныйВидыСубконто.ВидСубконто.Наименование = "Контрагенты")
И
(ХозрасчетныйВидыСубконто1.ВидСубконто.Наименование = "Номенклатура")
Категория:
Регистры бухгалтерии Как перенести остаток со счета на счет? Код 1C v 8.х Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.СуммаОстатокДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, ,
| Субконто1 = &Контрагент И Организация = &Организация И Субконто2 = &Договор) КАК ХозрасчетныйОстатки";
// Считаем что на счете ведется аналитика только в разрезе контрагентов
// и договоров.
Запрос.УстановитьПараметр("Период", Период1);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Договор", Договор);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.РасчетыСПокупателями);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = РабочаяДата;
Документ.Организация = Организация;
Документ.Содержание = "Погашение дебиторской задолженности";
Проводка = Документ.Движения.Хозрасчетный.Добавить();
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
Проводка.СубконтоДт.Контрагенты = Контрагент;
Проводка.СубконтоДт.Договоры = Договор;
Проводка.Сумма = Выборка.СуммаОстатокДт;
Документ.СуммаОперации = Выборка.СуммаОстатокДт;
Форма = Документ.ПолучитьФорму();
Форма.Открыть();
КонецЕсли;
Категория:
Регистры бухгалтерии Документ "Операция" - Как программно создать и заполнить? В бухгалтерских подсистемах типовых конфигураций есть всем известный документ «Операция». Бухгалтерам не приходится долго объяснять, как им пользоваться. Все по-бухгалтерски просто и лаконично: счет дебета, счет кредита, субконто, количество, сумма и прочие атрибуты бухгалтерских проводок. Проводки вводятся вручную, поэтому результат абсолютно прозрачен и понятен.
Время от времени возникает необходимость массово ввести большое количество проводок. Ситуации могут быть самыми разными: загрузка остатков или наоборот - списание с учета, исправление ошибок в учете и т. д. И тут уже дело за программистом.
На первый взгляд задача может показаться простой: создать документ, заполнить таблицу проводок данными и провести. Но не тут-то было! Как только дело доходит до «Конфигуратора», начинаются сюрпризы. Оказывается, у документа «Операция» вообще нет таблицы проводок, которую мы видим в пользовательском режиме.
Как же так? А вот так! Документ «Операция" используется в качестве регистратора, а проводки пишутся непосредственно в регистр бухгалтерии.
Решается задача довольно просто. Рассмотрим в качестве примера фрагмент кода обработки загрузки остатков по счету 001 «Арендованные основные средства» из dbf-таблицы.
Код 1C v 8.х
ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
ДокОперация.Дата = ДатаДокумента;
ДокОперация.Организация = Организация;
ДокОперация.Ответственный = Ответственный;
ДокОперация.Содержание = Содержание;
ДокОперация.Комментарий = Комментарий;
ДокОперация.Записать();
ДокОперацияСсылка = ДокОперация.Ссылка;
РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
ДБФ.Первая();
Пока Не ДБФ.ВКонце() Цикл
КодКонтрагента = СокрП(ДБФ.CA);
Контрагент = Справочники.Контрагенты.НайтиПоКоду(КодКонтрагента);
Если Контрагент.Пустая() Тогда
Сообщить("Не найден контрагент с кодом " + КодКонтрагента, СтатусСообщения.Внимание);
КонецЕсли;
КодОС = СокрП(ДБФ.OS);
ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(КодОС);
Если ОсновноеСредство.Пустая() Тогда
Сообщить("Не найдено ОС с кодом " + КодОС, СтатусСообщения.Внимание);
КонецЕсли;
РегЗапись = РегХозрасчетный.Добавить();
РегЗапись.Период = ДатаДокумента;
РегЗапись.Регистратор = ДокОперацияСсылка;
РегЗапись.Организация = Организация;
РегЗапись.Содержание = "Корректировка стоимости ОС с 0 стоимостью";
РегЗапись.СчетДт = Сч001;
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Контрагенты", Контрагент);
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
РегЗапись.Сумма = ДБФ.Sum;
ДБФ.Следующая();
КонецЦикла;
РегХозрасчетный.Записать();
Я полагаю, принцип работы кода понятен из примера. Сначала создаем и записываем документ «Операция». Сам документ не содержит никаких проводок. Затем создаем набор записей регистра бухгалтерии и записываем в него проводки, используя документ «Операция» в качестве регистратора.
Источник Категория:
Документы Вывести все виды субконто, прикрепленные к заданному счету? Для ведения аналитического учета в 1С используется термин “субконто”. Субконто в системе 1С:Предприятие называется объект аналитического учета.
Термином «субконто» могут быть обозначены любые объекты аналитического учета: основные средства, нематериальные активы, материалы, организации, подотчетные лица, договоры, бюджеты.
Видом субконто, в свою очередь, называется множество однотипных объектов аналитического учета. Например, вид субконто “Контрагенты” типа Справочник.Контрагенты, субконто – “Магазин Красная Заря”.
В 1С версии 7.7 у счета может быть до 5 прикрепленных видов субконто. Максимальное количество видов субконто задается в Конфигураторе, но не может превышать 5.
Код 1C v 7.x // вывести все виды субконто, прикрепленные к заданному счету
Счета = СоздатьОбъект(“Счет.Основной”);
Счета.НайтиПоКоду(“10.1”);
Для Ном = 1 По Счета.КоличествоСубконто() Цикл
Сообщить(“Вид субконто “ + Счета.ВидСубконто(Ном));
КонецЦикла;
Категория:
Виды Субконто Как программно изменить проводку в Регистре Бухгалтерии? Код 1C v 8.х //Необходимо изменить существующие проводки и добавить значение Субконто
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Объект.Ссылка);
Набор.Прочитать();
Для каждого Запись из Набор Цикл
Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами Тогда
// для переборов субконто
Запись.СубконтоКт[Запись.СчетКт.ВидыСубконто[1]] = Объект.ДоговорКонтрагента;
// указывая конкретное значение
//Запись.СубконтоКт.Договоры = Объект.ДоговорКонтрагента;
КонецЕСли;
КонецЦикла;
Набор.Записать();
Код 1C v 8.х // Перебор и замена реквизитов в проводках операции
НаборЗаписейБУ = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей();
НаборЗаписейБУ.Отбор.Регистратор.Использование = Истина;
НаборЗаписейБУ.Отбор.Регистратор.Значение = ОперацияБух;
НаборЗаписейБУ.Прочитать();
Для Каждого ЗаписьБУ Из НаборЗаписейБУ Цикл
Если (ЗаписьБУ.СчетКт = ПланыСчетов.Типовой.ИндивидуальныйПодоходныйНалог) или
(ЗаписьБУ.СчетКт = ПланыСчетов.Типовой.СоциальныйНалог) Тогда
ВидСубк = ЗаписьБУ.СчетКт.ВидыСубконто[2].ВидСубконто;
ЗаписьБУ.СубконтоКт.Вставить(ВидСубк, Контрагент);
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьИзменения Тогда
НаборЗаписейБУ.Записать();
КонецЕсли;
Категория:
Регистры бухгалтерии Выбрать Остатки и Обороты по указанным счетам, отбор по субконто и выгрузка результата в EXCEL Код 1C v 8.х Запрос=Новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ
| ХозрасчетныйОстаткиИОбороты.Счет,
| ХозрасчетныйОстаткиИОбороты.Субконто1,
| ХозрасчетныйОстаткиИОбороты.Субконто2,
| ХозрасчетныйОстаткиИОбороты.Субконто3,
| ХозрасчетныйОстаткиИОбороты.Организация,
| ХозрасчетныйОстаткиИОбороты.СуммаОборот,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотДт,
| ХозрасчетныйОстаткиИОбороты.СуммаОборотКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
| &ДатаНач,
| &ДатаКон,
| Период,
| ,
| Счет В (&Cчета),
| ,";
//Если задан отбор по контрагенту
Если Не Контрагент.Пустая() Тогда
Запрос.Текст=Запрос.Текст+"
| Субконто1 = &Контрагент
| ИЛИ Субконто2 = &Договор";
КонецЕсли;
Запрос.Текст=Запрос.Текст+"
|) КАК ХозрасчетныйОстаткиИОбороты
|";
//Создадим список счетов
СписокСчетов=Новый СписокЗначений;
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками); //60,01
СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданным); //60,02
Запрос.УстановитьПараметр("Cчета",СписокСчетов);
Запрос.УстановитьПараметр("ДатаКон",ДатаК);
Запрос.УстановитьПараметр("ДатаНач",ДатаН);
Запрос.УстановитьПараметр("Договор",Договор);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Результат = Запрос.Выполнить();
ТабДок=ЭлементыФормы.ТД;
ТабДок.Очистить();
ПечатьТЗвТаб(ТабДок, Результат);
//Выгрузка выведенного результата запроса в Excel
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = "Excel(*.xls)|*.xls";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите куда сохранить файл Excel";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
ТабДок.Записать(ПутьКФайлу,ТипФайлаТабличногоДокумента.XLS97);
Категория:
Запросы Формирование проводок в регистре бухгалтерии Код 1C v 8.х
// Задать выбираемые значения.
ВыбранныйОтветственный = Справочники.Пользователи.НайтиПоНаименованию("Иванцова");
ВыбранныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду("00027");
ВыбранныйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("00013");
ВыбранныйДокумент = Документы.ДокументРасчетовСКонтрагентом.НайтиПоНомеру(2, '20050101');
ВыбранныйСчет = Справочники.БанковскиеСчета.НайтиПоКоду("00001");
ВыбраннаяСтатья = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("00002");
ВыбраннаяОрганизация = Справочники.Организации.НайтиПоКоду("00001");
ВыбраннаяВалюта = Справочники.Валюты.НайтиПоКоду(810);
// Создать будущий регистратор.
ДатаЗаписи = ТекущаяДата();
Документ = Документы.ОперацияБух.СоздатьДокумент();
Документ.Дата = ДатаЗаписи;
Документ.Организация = ВыбраннаяОрганизация;
Документ.Ответственный = ВыбранныйОтветственный;
Документ.Содержание = "Оплата поставщику";
Документ.Записать();
// Создать набор записей.
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Документ.Ссылка);
Движение = НаборЗаписей.Добавить();
Движение.Регистратор = Документ.Ссылка;
Движение.Период = ДатаЗаписи;
// Заполнить счет дебета.
Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");
// Заполнить аналитику счета дебета.
Движение.СубконтоДт.Контрагенты = ВыбранныйКонтрагент;
Движение.СубконтоДт.Договоры = ВыбранныйДоговор;
Движение.СубконтоДт.ДокументыРасчетовСКонтрагентами = ВыбранныйДокумент;
// Заполнить счет кредита.
Движение.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("51");
// Заполнить аналитику счета кредита.
Движение.СубконтоКт.БанковскиеСчета = ВыбранныйСчет;
Движение.СубконтоКт.СтатьиДвиженияДенежныхСредств = ВыбраннаяСтатья;
// Балансовое измерение.
Движение.Организация = ВыбраннаяОрганизация;
// Балансовый ресурс.
Движение.Сумма = 300000;
// Реквизиты.Движение.НомерЖурнала = "БК";
Движение.Содержание = "Оплата поставщику";
// Записать набор записей.
НаборЗаписей.Записать();
Категория:
Регистры бухгалтерии