|
Помогите упростить задачу. 🠗 (Волшебник 02.04.2018 19:32) | ☑ | ||
---|---|---|---|---|
0
Куникулус
02.04.18
✎
19:20
|
Написал отчет но как-то слишком громзко получилось.
Задача такая. Берем обороты контрагентов, есть счета контрагентов и есть корреспондирующие счета. Корреспондирующих счетов очень много, есть желание дать возможность выбирать какие кор. счета смотреть. На форме расположен список в котором галочками ведется отбор. Задача заполнить СписокЗначений счетами которые выводить не нужно (или наоборот которыми нужно.) Код примерно такой: Перем сч; Перем спСчетовРодителей; СписокКоррСчета.Добавить("Прочие", "Прочие (96, 97 и т.п.)", Ложь); СписокКоррСчета.Добавить("ДенежныеСредства", "Денежные средства (50, 51, 52)", Истина); СписокКоррСчета.Добавить("ДенежныеСредстваДоп", "Денежные средства доп. (55, 57)", Истина); СписокКоррСчета.Добавить("СРаботниками", "С работниками (70, 71, 73)", Истина); СписокКоррСчета.Добавить("Учредители", "Денежные средства (75, 84, 86)", Истина); СписокКоррСчета.Добавить("НалогиИВзносы", "Налоги и взносы (68, 69)", Истина); СписокКоррСчета.Добавить("Взаимозачеты", "Взаимозачеты (60,62, 63, 66, 67, 76)", Истина); СписокКоррСчета.Добавить("ЗакупкиТМЦ", "Закупки ТМЦ (08, 10, 41)", Истина); СписокКоррСчета.Добавить("ЗатратыСебестоимость", "Затраты себестоимость (20, 23, 25, 26, 29)", Истина); СписокКоррСчета.Добавить("ЗатратыКоммерческие", "Затраты коммерческие (44)", Истина); СписокКоррСчета.Добавить("Выручка", "Выручка (90)", Истина); СписокКоррСчета.Добавить("ПрочиеДиР", "Прочие доходы и расходы (91)", Истина); Заполняется приОткрытии; Процедура ЗаполнитьСтруктуруСоСчетами() сч = Новый Структура; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Хозрасчетный.Ссылка, | Хозрасчетный.Код КАК Код |ИЗ | ПланСчетов.Хозрасчетный КАК Хозрасчетный |ГДЕ | НЕ Хозрасчетный.Забалансовый | |УПОРЯДОЧИТЬ ПО | Код"; тзСчета =Запрос.Выполнить().Выгрузить(); спСчетовРодителей.Очистить(); Для Каждого стрТзСчета из тзСчета Цикл сч.Вставить("Счет"+СтрЗаменить(стрТзСчета.Код, ".",""), стрТзСчета.ССылка); ТекРод = стрТзСчета.ССылка.Родитель; Пока ЗначениеЗаполнено(ТекРод) Цикл элмСпРодителей = спСчетовРодителей.НайтиПоЗначению(ТекРод); Если элмСпРодителей = Неопределено ТОгда элмСпРодителей = спСчетовРодителей.Добавить(ТекРод); КонецеСли; элмСпРодителей.Представление = элмСпРодителей.Представление +"Счет"+СтрЗаменить(стрТзСчета.Код, ".","")+", "; ТекРод = ТекРод.Родитель; КонецЦикла; КонецЦикла; сч.Вставить("СчетПустой", ПланыСчетов.Хозрасчетный.ПустаяСсылка()); КонецПроцедуры ///////////////////////////////////////////////////////// ЗАполнение списка счетов: Процедура ЗаполнитьСписокНеНеСчетов(Запрос) спПрочихНеСчетов = Новый СписокЗначений; Для Каждого элСчет из сч Цикл спПрочихНеСчетов.Добавить(элСчет.Значение, элСчет.Ключ); КонецЦикла; соотНеСчетов = Новый Структура; соотНеСчетов.Вставить("ДенежныеСредства", "Счет50, Счет51, Счет52"); соотНеСчетов.Вставить("ДенежныеСредстваДоп", "Счет55, Счет57"); соотНеСчетов.Вставить("СРаботниками", "Счет70, Счет71, Счет73"); соотНеСчетов.Вставить("Учредители", "Счет75, Счет84, Счет86"); соотНеСчетов.Вставить("НалогиИВзносы", "Счет68, Счет69"); соотНеСчетов.Вставить("Взаимозачеты", "Счет60, Счет62, Счет63, Счет66, Счет67, Счет76"); соотНеСчетов.Вставить("ЗакупкиТМЦ", "Счет08, Счет10, Счет41"); соотНеСчетов.Вставить("ЗатратыСебестоимость", "Счет20, Счет23, Счет25, Счет26, Счет29"); соотНеСчетов.Вставить("ЗатратыКоммерческие", "Счет44"); соотНеСчетов.Вставить("Выручка", "Счет90"); соотНеСчетов.Вставить("ПрочиеДиР", "Счет91"); спНеПрочихСчетов = Новый Массив; Для Каждого элСтНесчето из соотНеСчетов Цикл Для Каждого элМассСтНесчетов из ПолучитьМассивСчетовИзСтр(элСтНесчето.Значение) Цикл элСППрочихНеСчетов = спПрочихНеСчетов.НайтиПоЗначению(элМассСтНесчетов); Если элСППрочихНеСчетов <> Неопределено Тогда спПрочихНеСчетов.Удалить(элСППрочихНеСчетов); КонецЕсли; КонецЦикла; КонецЦИкла; стрПрочихНеСчетов = ""; Для Каждого элмСпПрочихНеСчетов из спПрочихНеСчетов Цикл стрПрочихНеСчетов = стрПрочихНеСчетов + элмСпПрочихНеСчетов.Представление+", "; КонецЦикла; соотНеСчетов.Вставить("Прочие", стрПрочихНеСчетов); спНеКоррСчетов = Новый СписокЗначений; Для каждого элмСпКонтр из СписокКоррСчета Цикл Если не элмСпКонтр.Пометка Тогда ТекСчет = ""; соотНеСчетов.Свойство(элмСпКонтр.Значение, ТекСчет); Для Каждого элМассСтНесчетов из ПолучитьМассивСчетовИзСтр(ТекСчет) Цикл спНеКоррСчетов.Добавить(элМассСтНесчетов); КонецЦикла; КонецЕсли; КонецЦикла; Запрос.УстановитьПараметр("спНеКоррСчетов", спНеКоррСчетов); КонецПроцедуры //////////////////////////////////////////////////// Функция ПолучитьМассивСчетовИзСтр(СтрокаСосчетами) массРезульт = Новый Массив; массСчетаСтр = РазложитьСтрокуВМассивПодстрок(СтрокаСосчетами,","); Для Каждого элМасСчСтр Из массСчетаСтр Цикл Если СС(элМасСчСтр)<>"" тогда ТекСчет = сч.СчетПустой; Если сч.Свойство(СС(элМасСчСтр), ТекСчет)<>Неопределено Тогда массРезульт.Добавить(ТекСчет); элмСпРодителей = спСчетовРодителей.НайтиПоЗначению(ТекСчет); Если элмСпРодителей<>Неопределено Тогда МассДопСчетов = ПолучитьМассивСчетовИзСтр(элмСпРодителей.Представление); Для Каждого элмМассДопСчетов из МассДопСчетов Цикл массРезульт.Добавить(элмМассДопСчетов); КонецЦИкла; КонецЕсли; КонецЕсли; КонецеСЛи; КонецЦикла; Возврат массРезульт; КонецФункции |
|||
1
Волшебник
02.04.18
✎
19:28
|
пишется "громоздко"
|
|||
2
xXeNoNx
02.04.18
✎
19:29
|
(0) работает - не трогай!
|
|||
3
Куникулус
02.04.18
✎
19:30
|
(1) Где так пишется? В Израиле? Ну так мы в России живем.
|
|||
4
Волшебник
02.04.18
✎
19:31
|
(3) В России так пишется.
|
|||
5
shuhard
02.04.18
✎
19:32
|
(3) а казачок то засланный (с)
|
|||
6
Волшебник
02.04.18
✎
19:32
|
(5) Да, IP левый
|
|||
7
xXeNoNx
02.04.18
✎
19:33
|
(0) описанная задача не упрощается!
|
|||
8
Куникулус
02.04.18
✎
19:34
|
(5) Ты меня раскрыл. Всё пропало? Что меня выдало?
|
|||
9
Куникулус
02.04.18
✎
19:34
|
(7) решение упростить
|
|||
10
Волшебник
02.04.18
✎
19:35
|
(8) Тебя выдал парашют за спиной.
|
|||
11
VS-1976
02.04.18
✎
20:34
|
ССылка.Родитель это можно и в запрос закинуть, а не генерировать запросы в цикле...
Код действительно мутный, кручу верчу. Не понимаю зачем тебе всё это действо? Как минимум в СписокЗначений и Структуру можно в виде значения и массив запихнуть со значениями и не нужен этот лютый парсинг... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |