|
|||
pushinkaff
27.12.10 — 16:41 |
Помогите найти по коду счета, чтобы в последствии учесть их в балансе! Бухгалтера давно добавили вручную и теперь не идут в баланс… Как это делается? |
||
butterbean
1 — 27.12.10 — 16:42 |
ПланыСчетов.Хозрасчетный.НайтиПоКоду(ТвойКод); |
||
pushinkaff
2 — 27.12.10 — 16:46 |
а как дальше его присуммировать к остальным? |
||
mikecool
3 — 27.12.10 — 16:48 |
(2) искать места, где подставляются счета в отчет и подсовывать к остальным.. |
||
pushinkaff
4 — 27.12.10 — 16:52 |
3 — это понятно. Просто пока не совсем поянла, у меня, к примеру, считается 610 строка так: П010061003 = СНК(Счет66); т.е. тут считается только по предопределенным счетам? А как добавить 66.05, который был добавлен в предприятии? |
||
mikecool
5 — 27.12.10 — 16:53 |
(4) таки смотри, как заполняется Счет66, вот туда и подсовывай свой счет |
||
pushinkaff 6 — 27.12.10 — 16:56 |
лады, сейчас попробую) Спасибо) |
TurboConf — расширение возможностей Конфигуратора 1С
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
/// Как прочитать бухгалтерские проводки без значений /// субконто в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьПроводкиБезСубконтоНаСервере() // За журнал проводок отвечает таблица РегистрБухгалтерии.Хозрасчетный. // Обратите внимание, что в ней нет информации о субконто - аналитике // счетов, участвующих в проводках. // получим все бухгалтерские проводки Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Период КАК Период, | Хозрасчетный.Организация, | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.КоличествоДт, | Хозрасчетный.КоличествоКт, | Хозрасчетный.Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Активность = Истина |УПОРЯДОЧИТЬ ПО | Период"; РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "[" + Формат(Записи.Период, "ДФ=dd.MM.yy") + "] " + "Дт " + Записи.СчетДт + " " + "Кт " + Записи.СчетКт + " " + Записи.Сумма + " руб."); КонецЦикла; КонецПроцедуры /// Как прочитать бухгалтерские проводки вместе со /// значениями субконто в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьПроводкиВместеССубконтоНаСервере() // За получение бухгалтерских проводок вместе с их аналитикой (субконто) // отвечает виртуальная таблица ДвиженияССубконто, // у неё есть параметры: // 1. Начало периода // 2. Конец периода // 3. Условие // 4. Порядок (влияет только на отбор первых) // 5. Первые (отбор перых N записей) // Получим проводки за 1 квартал 2014 года, где счёт 41.01 в // дебете или кредите, вместе с их аналитикой (субконто). Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйДвиженияССубконто.Период КАК Период, | ХозрасчетныйДвиженияССубконто.Организация, | ХозрасчетныйДвиженияССубконто.Регистратор, | ХозрасчетныйДвиженияССубконто.Активность, | ХозрасчетныйДвиженияССубконто.СчетДт, | ХозрасчетныйДвиженияССубконто.СубконтоДт1, | ХозрасчетныйДвиженияССубконто.СубконтоДт2, | ХозрасчетныйДвиженияССубконто.СубконтоДт3, | ХозрасчетныйДвиженияССубконто.СчетКт, | ХозрасчетныйДвиженияССубконто.СубконтоКт1, | ХозрасчетныйДвиженияССубконто.СубконтоКт2, | ХозрасчетныйДвиженияССубконто.СубконтоКт3, | ХозрасчетныйДвиженияССубконто.Сумма, | ХозрасчетныйДвиженияССубконто.КоличествоДт, | ХозрасчетныйДвиженияССубконто.КоличествоКт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 03, 31, 23, 59, 59), | Активность = Истина И ( | СчетДт = &ВыбСчет ИЛИ СчетКт = &ВыбСчет) | ) | КАК ХозрасчетныйДвиженияССубконто |УПОРЯДОЧИТЬ ПО | Период Возр"; Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "[" + Формат(Записи.Период, "ДФ=dd.MM.yy") + "] " + "Дт " + Записи.СчетДт + " " + "(" + Записи.СубконтоДт1 + ", " + Записи.СубконтоДт2 + ")" + " " + "Кт " + Записи.СчетКт + " " + "(" + Записи.СубконтоКт1 + ", " + Записи.СубконтоКт2 + ")" + " " + Записи.Сумма + " руб."); КонецЦикла; КонецПроцедуры /// Как получить обороты между бухгалтерскими счетами в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьОборотыМеждуСчетамиНаСервере() // Пример №1 Сообщить("Пример №1"); // За получение оборотов между счётом и корреспондирующим счётом // за произвольный период с заданной периодичностью в различных // разрезах аналитики отвечает виртуальная таблица Обороты, // у неё есть следующие параметры: // 1. Начало периода // 2. Конец периода // 3. Периодичность (например, Период, Запись, Год, Месяц...) // 4. Условие счета (например, Счет = &ВыбСчет) // 5. Субконто (список видов субконто, влияет на доступность // и смысл Субконто1, Субконто2.., которыми можно оперировать // в запросе). // 6. Условие (например, Субконто1 = &ВыбСклад) // 7. Условие корсчета (аналогично условию счёта) // 8. КорСубконто (аналогично субконто) // Узнаем сколько пришло и сколько ушло товара на основной склад // за январь 2014 года. То есть получим дебетовые и кредитовые // обороты по счёту 41.01, субконто Склады (значение "Основной склад") Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.Субконто1 КАК Склад, | ХозрасчетныйОбороты.Организация, | ХозрасчетныйОбороты.СуммаОборотДт КАК ПришёлТовар, | ХозрасчетныйОбороты.СуммаОборотКт КАК УшёлТовар, | ХозрасчетныйОбороты.СуммаОборот КАК Разница |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 01, 31, 23, 59, 59), | Период, | Счет = &ВыбСчет, | &ВидыСубконто, | Субконто1 = &ВыбСклад | ) |КАК ХозрасчетныйОбороты"; Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01") ); ВидыСубконто = Новый Массив; ВидыСубконто.Добавить( ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады ); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); Запрос.УстановитьПараметр("ВыбСклад", Справочники.Склады.НайтиПоНаименованию("Основной") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Если Записи.Следующий() Тогда Сообщить("Счёт " + Записи.Счет + " (" + Записи.Склад + ")"); Сообщить("Пришёл товар на " + Записи.ПришёлТовар + " руб."); Сообщить("Ушёл товар на " +Записи.УшёлТовар + " руб."); Сообщить("Разница между поступление и списанием " + Записи.Разница + " руб." ); КонецЕсли; // =========================================================== // Пример №2 Сообщить("Пример №2"); // Узнаем сколько пришло товара на основной склад // за каждый месяц 2014 года. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Период, | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.Субконто1 КАК Склад, | ХозрасчетныйОбороты.Организация, | ХозрасчетныйОбороты.СуммаОборотДт КАК ПришёлТовар |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59), | Месяц, | Счет = &ВыбСчет, | &ВидыСубконто, | Субконто1 = &ВыбСклад | ) КАК ХозрасчетныйОбороты |УПОРЯДОЧИТЬ ПО | Период Возр"; Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01") ); ВидыСубконто = Новый Массив; ВидыСубконто.Добавить( ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады ); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); Запрос.УстановитьПараметр("ВыбСклад", Справочники.Склады.НайтиПоНаименованию("Основной") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( Формат(Записи.Период, "ДФ=ММММ") + ": " + Записи.ПришёлТовар + " руб." ); КонецЦикла; // =========================================================== // Пример №3 Сообщить("Пример №3"); // Узнаем сколько денег поступило в кассу от покупателей за 2014 год. // То есть проанализируем дебетовые обороты между 50.01 и 62.01 Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.КорСчет, | ХозрасчетныйОбороты.СуммаОборотДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59), | Период, | Счет = &ВыбСчет, | , | , | КорСчет = &ВыбКорСчет | ) КАК ХозрасчетныйОбороты"; Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01") ); Запрос.УстановитьПараметр("ВыбКорСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить( "За 2014 год на " + Записи.Счет + " с " + Записи.КорСчет + " пришло " + Записи.СуммаОборотДт + " руб." ); КонецЦикла; КонецПроцедуры /// Как получить остатки по бухгалтерскому счету в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьОстаткиПоСчетуНаСервере() // За получение остатков по бухгалтерским счетам // в разрезе аналитики отвечает виртуальная // таблица Остатки, у неё есть следующие параметры: // 1. Период (на который считаем остатки) // 2. Условие счета (например, Счет = &ВыбСчет) // 3. Субконто (список видов субконто, влияет на доступность // и смысл Субконто1, Субконто2.., которыми можно оперировать // в запросе // 4. Условие (например, Субконто1 = &ВыбСклад) // Найдём остатки товаров на всех складах на конец 2014 года. // То есть запросим дебетовые остатки по всем счетам, // входящих в группу 41 счёта в разрезе субконто Номенклатура. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстатки.Счет, | ХозрасчетныйОстатки.Субконто1 КАК Товар, | ХозрасчетныйОстатки.КоличествоОстатокДт, | ХозрасчетныйОстатки.СуммаОстатокДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59), | Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто | ) КАК ХозрасчетныйОстатки"; Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41") ); ВидыСубконто = Новый Массив; ВидыСубконто.Добавить( ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура ); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Сообщить("Остатки товаров по всем складам на конец 2014 года."); Пока Записи.Следующий() Цикл Сообщить( Записи.Товар.Наименование + " Количество [" + Записи.КоличествоОстатокДт + " шт.]" + " Сумма [" + Записи.СуммаОстатокДт + " руб.]" ); КонецЦикла; КонецПроцедуры /// Как получить сразу остатки и обороты по бухгалтерскому счету /// в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьСразуОстаткиИОборотыПоСчетуНаСервере() // За получение остатков и обротов за произвольный период // с заданной периодичностью в разрезе аналитики отвечает // виртуальная таблица ОстаткиИОбороты, у неё есть параметры: // 1. Начало периода // 2. Конец периода // 3. Периодичность (например, Период, Год, Месяц...) // 4. Метод дополнения периодов (Движение или ДвиженияИГраницыПериода) // 5. Условие счета (например, Счет = &ВыбСчет) // 6. Субконто (список видов субконто, влияет на доступность // и смысл Субконто1, Субконто2.., которыми можно оперировать // в запросе // 7. Условие (например, Субконто1 = &ВыбТовар) // Для примера получим начальный остаток, приход, расход, и // конечный остаток банана на всех складах за каждый месяц // 2014 года. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Период, | ХозрасчетныйОстаткиИОбороты.Счет, | ХозрасчетныйОстаткиИОбороты.Субконто1, | ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт, | ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт, | ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00), | ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59), | Месяц, ДвиженияИГраницыПериода, | Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто, | Субконто1 = &ВыбТовар | ) КАК ХозрасчетныйОстаткиИОбороты"; Запрос.УстановитьПараметр("ВыбСчет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41") ); ВидыСубконто = Новый Массив; ВидыСубконто.Добавить( ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура ); Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто); Запрос.УстановитьПараметр("ВыбТовар", Справочники.Номенклатура.НайтиПоНаименованию("Банан") ); РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать(); Пока Записи.Следующий() Цикл Сообщить(Формат(Записи.Период, "ДФ=ММММ") + ": "); Сообщить( Строка(Записи.Счет) + " " + Записи.Субконто1 + " " + "Нач. остаток " + Записи.КоличествоНачальныйОстатокДт + " приход " + Записи.КоличествоОборотДт + ", расход " + Записи.КоличествоОборотКт + " Кон. остаток " + Записи.КоличествоКонечныйОстатокДт ); КонецЦикла; КонецПроцедуры /// Как найти и изменить программно бухгалтерские проводки /// документа в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиИИзменитьПроводкиДокументаНаСервере() // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает следующие // проводки по регистру бухгалтерии "Хозрасчетный": // - Дт 41.01 Кт 60.01 // - Дт 60.01 Кт 50.01 // наша задача: найти эти проводки бухгалтерские проводки // и изменить их (например, удвоим количество по дебету 41.01) // и записать вместо старых // используем объектную технику получения проводок, // ведь мы будем их изменять Поступление = ПоступлениеСсылка.ПолучитьОбъект(); // получим набор проводок этого документа в регистр "Хозрасчетный" НаборПроводок = Поступление.Движения.Хозрасчетный; // прочитаем проводки из базы данных НаборПроводок.Прочитать(); Для Каждого Проводка Из НаборПроводок Цикл // выведем старые значения Сообщить( "Дт " + Проводка.СчетДт + " (" + Проводка.КоличествоДт + " шт.) " + "Кт " + Проводка.СчетКт + " (" + Проводка.КоличествоКт + " шт.) " + Проводка.Сумма + " руб." ); Если Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01") Тогда // эта проводка в дебет 41 счёта // изменим её, удвоив количество по дебету Проводка.КоличествоДт = Проводка.КоличествоДт * 2; КонецЕсли; КонецЦикла; // добавим новую проводку НоваяПроводка = НаборПроводок.Добавить(); // дт НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"); НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = Справочники.Склады.НайтиПоНаименованию("Основной"); НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Справочники.Номенклатура.НайтиПоНаименованию("Банан"); НоваяПроводка.КоличествоДт = 333; // кт НоваяПроводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01"); НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = Справочники.Контрагенты.НайтиПоНаименованию("ООО ""Африка"""); // общая часть НоваяПроводка.Период = ТекущаяДата(); НоваяПроводка.Организация = Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка"""); НоваяПроводка.Сумма = 5000; НоваяПроводка.Содержание = "Проводка добавлена программно."; // разом запишем набор проводок НаборПроводок.Записать( Истина // удалим старые проводки и запишем вместо них новые ); // теперь бухгалтерские проводки документа № ВМБП-000002, // отличаются от тех, что были записаны документом при проведении // чтобы вернуть их к начальному виду - нужно // перепровести документ КонецПроцедуры /// Как прочитать бухгалтерские проводки документа запросом в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьПроводкиДокументаЗапросомНаСервере() // этот приём используется, если не требуется изменять // найденные проводки // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает проводки по // регистру бухгалтерии "Хозрасчетный" // прочитаем проводкипо регистру "Хозрасчетный" запросом Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.СчетДт, | Хозрасчетный.СчетКт, | Хозрасчетный.Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &ВыбРегистратор | |УПОРЯДОЧИТЬ ПО | Хозрасчетный.НомерСтроки"; Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( "Дт " + ВыборкаДетальныеЗаписи.СчетДт + " Кт " + ВыборкаДетальныеЗаписи.СчетКт + " " + ВыборкаДетальныеЗаписи.Сумма + " руб." ); КонецЦикла; КонецПроцедуры /// Как создать бухгалтерские проводки без привязки /// к документу в 1с 8.3, 8.2 &НаСервере Процедура КакСоздатьПроводкиБезДокументаНаСервере() // в нашей тестовой конфигурации нет документа // "ОперацияБух", который присутствует во всех // типовых Сообщить("Этот пример нельзя выполнить в этой базе."); Возврат; // бухгалтерские проводки обязательно должны быть к // привязаны к документу, в данном случае этим документом // будет документ "ОперацияБух", задуманный как раз для // ручных бухгалтерских операций // создаём и записываем пустой документ // пока без бухгалтерских проводок Операция = Документы.ОперацияБух.СоздатьДокумент(); Операция.Дата = ТекущаяДата(); Операция.Организация = Справочники.Организации.НайтиПоНаименованию("Ромашка"); Операция.СуммаОперации = 1000; Операция.Содержание = "Ручная операция по 41 счёту"; Операция.Записать(РежимЗаписиДокумента.Запись); // затем получаем его набор проводок (пустой) // заполняем его и записываем НаборПроводок = Операция.Движения.Хозрасчетный; Проводка = НаборПроводок.Добавить(); Проводка.Период = Операция.Дата; Проводка.Организация = Операция.Организация; // дт Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"); Проводка.СубконтоДт[ ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура ] = Справочники.Номенклатура.НайтиПоНаименованию("Банан"); На41ВедетсяУчетПоСкладам = Проводка.СчетДт.ВидыСубконто.Найти( ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады ) <> Неопределено; Если На41ВедетсяУчетПоСкладам Тогда Проводка.СубконтоДт[ ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады ] = Справочники.Склады.НайтиПоНаименованию("Основной"); КонецЕсли; Проводка.КоличествоДт = 3; // кт Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01"); Проводка.СубконтоКт[ ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты ] = Справочники.Контрагенты.НайтиПоНаименованию("Беркут"); // общее Проводка.Сумма = 500; НаборПроводок.Записать(Истина); КонецПроцедуры /// Как получить информацию о бухгалтерском счёте /// из плана счетов в 1с 8.3, 8.2 &НаСервере Процедура КакПолучитьИнформациюОСчетеНаСервере() // читаем информацию о счёте из плана счетов // находим счёт по коду Счёт41_1 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"); // смотрим состав субконто Для Каждого Субконто Из Счёт41_1.ВидыСубконто Цикл Сообщить("Субконто " + Субконто.ВидСубконто.Наименование); Сообщить(" Валютный " + Субконто.Валютный); Сообщить(" Количественный " + Субконто.Количественный); Сообщить(" Суммовой " + Субконто.Суммовой); КонецЦикла; // узнаем, ведётся ли на 41.01 учёт по складам // (другими словами есть ли у этого счёта субконто // склады) Если Счёт41_1.ВидыСубконто.Найти( ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады ) <> Неопределено Тогда Сообщить("На 41.01 ведётся учёт по складам."); Иначе Сообщить("На 41.01 ведётся учёт по складам не ведётся."); КонецЕсли; // узнаем является ли один счёт родителем другого Счёт41 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41"); Если Счёт41_1.ПринадлежитЭлементу(Счёт41) Тогда Сообщить(Счёт41.Код + " является родителем для " + Счёт41_1.Код); КонецЕсли; КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
#0
by Блондинистая Ромашка
Глупенький вопрос конечно Но как описать условие типа Если *СчетПоКоду(«60») есть в основном плане счетов* Тогда … Понимаю, что наверно надо через Метаданные, но пока не могу сообразить как
НайтиСчет(<?>) Синтаксис: НайтиСчет(<Счет>) Назначение: Метод выполняет поиск счета в плане счетов по значению типа »Счет». Возвращает: 1 — счет найден; 0 — счет не найден. Параметры: <Счет> — значение типа »Счет».
НайтиПоКоду(<?>) Синтаксис: НайтиПоКоду(<КодСчета>) Назначение: Выполняет поиск счета в плане счетов по коду счета. Возвращает: 1 — счет найден; 0 — счет не найден. Параметры: <КодСчета> — символьное выражение — код счета, как он указан в плане счетов. Этим методом почти единственно возможно работать, если доступ по OLE.
#3
by Блондинистая Ромашка
Тэги:
Комментарии доступны только авторизированным пользователям
&НаСервере
Процедура ПолучениеОборотовМеждуБухгалтерскимиСчетамиНаСервере()// За получение оборотов между счётом и корреспондирующим счётом за произвольный период с заданной периодичностью
// в различных разрезах аналитики отвечает виртуальная таблица Обороты, у неё есть следующие параметры:
// 1. Начало периода
// 2. Конец периода
// 3. Периодичность (например, Период, Запись, Год, Месяц…)
// 4. Условие счета (например, Счет = &ВыбСчет)
// 5. Субконто (список видов субконто, влияет на доступность и смысл Субконто1, Субконто2..,
// которыми можно оперировать в запросе).
// 6. Условие (например, Субконто1 = &ВыбСклад)
// 7. Условие корсчета (аналогично условию счёта)
// 8. КорСубконто (аналогично субконто)
// *** ПРИМЕР КОДА №1 *** //
// Узнаем сколько пришло и сколько ушло материала на основной склад за январь 2020 года.
// То есть получим дебетовые и кредитовые обороты по счёту 10.1, субконто Склады (значение «Основной склад»)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ХозрасчетныйОбороты.Счет,
| ХозрасчетныйОбороты.Субконто1 КАК Склад,
| ХозрасчетныйОбороты.Организация,
| ХозрасчетныйОбороты.СуммаОборотДт КАК ПоступилоМатериалов,
| ХозрасчетныйОбороты.СуммаОборотКт КАК СписаноМатериалов,
| ХозрасчетныйОбороты.СуммаОборот КАК Разница
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
| ДАТАВРЕМЯ(2020, 01, 31, 23, 59, 59),
| Период,Счет = &ВыбСчет,&ВидыСубконто, Субконто1 = &ВыбСклад)
|КАК ХозрасчетныйОбороты»;ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);Запрос.УстановитьПараметр(«ВидыСубконто», ВидыСубконто);
Запрос.УстановитьПараметр(«ВыбСчет»,ПланыСчетов.Хозрасчетный.НайтиПоКоду(«10.1») );
Запрос.УстановитьПараметр(«ВыбСклад»,Справочники.Склады.НайтиПоНаименованию(«Основной»));
РезультатЗапроса = Запрос.Выполнить();ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() ТогдаСообщить(«Счёт » + ВыборкаДетальныеЗаписи.Счет + » (» + ВыборкаДетальныеЗаписи.Склад + «)»);
Сообщить(«Поступило материалов на » + ВыборкаДетальныеЗаписи.ПоступилоМатериалов + » руб.»);
Сообщить(«Списано материалов на » +ВыборкаДетальныеЗаписи.СписаноМатериалов + » руб.»);
Сообщить(«Разница между поступление и списанием » + ВыборкаДетальныеЗаписи.Разница + » руб.»);
КонецЕсли;
// *** ПРИМЕР КОДА №2 *** //
// Узнаем сколько пришло материала на основной склад за каждый месяц 2020 года.
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ХозрасчетныйОбороты.Период,
| ХозрасчетныйОбороты.Счет,
| ХозрасчетныйОбороты.Субконто1 КАК Склад,
| ХозрасчетныйОбороты.Организация,
| ХозрасчетныйОбороты.СуммаОборотДт КАК ПоступлениеМатериалов
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
| ДАТАВРЕМЯ(2020, 12, 31, 23, 59, 59),
| Месяц,Счет = &ВыбСчет,&ВидыСубконто,
| Субконто1 = &ВыбСклад
| ) КАК ХозрасчетныйОбороты
|УПОРЯДОЧИТЬ ПО
| Период Возр»;ВидыСубконто = Новый Массив;
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);Запрос.УстановитьПараметр(«ВидыСубконто», ВидыСубконто);
Запрос.УстановитьПараметр(«ВыбСчет»,ПланыСчетов.Хозрасчетный.НайтиПоКоду(«10.1»));
Запрос.УстановитьПараметр(«ВыбСклад»,Справочники.Склады.НайтиПоНаименованию(«Основной»));
РезультатЗапроса = Запрос.Выполнить();ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклСообщить(Формат(ВыборкаДетальныеЗаписи.Период, «ДФ=ММММ») + «: » + ВыборкаДетальныеЗаписи.ПоступлениеМатериалов + » руб.»);
КонецЦикла;
// *** ПРИМЕР КОДА №3 *** //
// Узнаем сколько денег поступило в кассу от покупателей за 2020 год.
// То есть проанализируем дебетовые обороты между 50.1 и 62.1
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ХозрасчетныйОбороты.Счет,
| ХозрасчетныйОбороты.КорСчет,
| ХозрасчетныйОбороты.СуммаОборотДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
| ДАТАВРЕМЯ(2020, 12, 31, 23, 59, 59),
| Период,Счет = &ВыбСчет,,,КорСчет = &ВыбКорСчет) КАК ХозрасчетныйОбороты»;Запрос.УстановитьПараметр(«ВыбСчет»,ПланыСчетов.Хозрасчетный.НайтиПоКоду(«50.1»));
Запрос.УстановитьПараметр(«ВыбКорСчет»,ПланыСчетов.Хозрасчетный.НайтиПоКоду(«62.1»));
РезультатЗапроса = Запрос.Выполнить();ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклСообщить(«За 2020 год на » + ВыборкаДетальныеЗаписи.Счет + » с » +
ВыборкаДетальныеЗаписи.КорСчет + » пришло » + ВыборкаДетальныеЗаписи.СуммаОборотДт + » руб.»);
КонецЦикла;
КонецПроцедуры
В прошлом шаге полученный объект просто объект счета. Абстрактный, ни к чему не обязывающий. Нам же нужно выбрать конкретный счет. Можно сделать это по коду. Вот они:
Создать реальный объект можно по коду.
НайтиПоКоду
Выполняет поиск счета в плане счетов по коду счета.
Синтаксис:
НайтиПоКоду(<КодСчета>)
Англоязычный синоним:
FindByCode
Параметры:
<КодСчета>Символьное выражение — код счета, как он указан в плане счетов.
Возвращаемое значение:
Число: 1 — счет найден; 0 — счет не найден.
Описание:
Метод НайтиПоКоду выполняет поиск счета в плане счетов по коду счета, который передается методу в качестве параметра.
Если счет найден, метод возвращает 1 и позиционирует объект на выбранном счете.
Вот и выберем теперь счет по коду.
Обратите внимание, что в параметры мы опять передаем строку и, если с номером счета Вы ошиблись, то выяснится это только после запуска.