|
Помогите разобраться в коде | ☑ | ||
---|---|---|---|---|
0
keller
21.05.12
✎
08:35
|
Я сделал внешнюю печатную форму для акта сверки. добавлял функционал группировки по договорам. Я делаю для Бухгалтерии Казахстана. Это аналог Бухгалтерии предприятия. В последней этот функционал есть. Но у нас акт сверки более информативен и все сделано через цикл. А в российской через запрос.
вопрос такой. МаксИндекс = Макс(ПоДаннымОрганизации.Количество(), ПоДаннымКонтрагента.Количество()) - 1; Для Инд = 0 По МаксИндекс Цикл Если Инд < ПоДаннымОрганизации.Количество() Тогда СтрокаОрганизации = ПоДаннымОрганизации[Инд]; ------------------------------------ РегистраторПредставление = ""; Если не СтрокаОрганизации.Документ = Неопределено Тогда РегистраторПредставление = СтрокаОрганизации.Документ.Метаданные().Синоним +" " + ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаОрганизации.Документ, глСписокПрефиксовУзлов) + " от " + Формат(СтрокаОрганизации.Документ.Дата, "ДФ=dd.MM.yyyy"); Если СтрокаОрганизации.Документ.Метаданные().Реквизиты.Найти("ВидВходящегоДокумента") <> Неопределено Тогда Если ЗначениеЗаполнено(СтрокаОрганизации.Документ.НомерВходящегоДокумента) И ЗначениеЗаполнено(СтрокаОрганизации.Документ.ДатаВходящегоДокумента) Тогда РегистраторПредставление = РегистраторПредставление + ", " + СтрокаОрганизации.Документ.ВидВходящегоДокумента + " № вх. " + СтрокаОрганизации.Документ.НомерВходящегоДокумента + " от " + Формат(СтрокаОрганизации.Документ.ДатаВходящегоДокумента,"ДФ=dd.MM.yyyy"); КонецЕсли; КонецЕсли; КонецЕсли; ОбластьОбороты.Параметры.РегистраторПредставление = РегистраторПредставление; Это открывок из казахстанского кода. Пока ОбходПоДоговорам.Следующий() Цикл ОбластьДоговор.Параметры.Договор = ОбходПоДоговорам.Договор; ОбластьДоговор.Параметры.Регистратор = ОбходПоДоговорам.Договор; ТабДок.Вывести(ОбластьДоговор); ОбходПоДокументам=ОбходПоДоговорам.Выбрать(); //Создадим список документов по организации и контрагенту СписокДокументов = новый массив; СписокДокументовК = новый массив; Пока ОбходПоДокументам.Следующий() Цикл Если ОбходПоДокументам.Дата<>NULL Тогда СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт", ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт)); КонецЕсли; Если ОбходПоДокументам.ДатаК<>NULL Тогда СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр", ОбходПоДокументам.ДатаК,ОбходПоДокументам.ПредставлениеК,ОбходПоДокументам.СуммаДогДтКонтр,ОбходПоДокументам.СуммаДогКтКонтр)); КонецЕсли; КонецЦикла; //Для упрощения вывода, сравним списки по количеству элементов, добавив пустые МаксИндекс = Макс(СписокДокументов.Количество(), СписокДокументовК.Количество())-1; МинИндекс = Мин(СписокДокументов.Количество(), СписокДокументовК.Количество())-1; Если СписокДокументов.Количество()<СписокДокументовК.Количество() Тогда Для инд = МинИндекс По МаксИндекс-1 Цикл СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт","","","","","")); КонецЦикла; ИначеЕсли СписокДокументов.Количество()>СписокДокументовК.Количество() Тогда Для инд = МинИндекс По МаксИндекс-1 Цикл СписокДокументовК.Добавить(новый структура("ДатаДокументаКонтр,РегистраторПредставлениеКонтр,СуммаОборотДтКонтр,СуммаОборотКтКонтр","","","","")); КонецЦикла; КонецЕсли; Для Инд = 0 По МаксИндекс Цикл ОбластьОбороты.Параметры.Заполнить(СписокДокументов[Инд]); ОбластьОбороты.Параметры.Заполнить(СписокДокументовК[Инд]); ТабДок.Вывести(ОбластьОбороты); Мне нужно как-то влезть в запрос и изменить РегистраторПредставление. Должно получится примерно так: Поступление ТМЗ и услуг 376 от 06.01.2012, Расходная накладная № вх. 03/1 от 06.01.2012 |
|||
1
butterbean
21.05.12
✎
08:38
|
в запросе так не получится, тем более у тебя там похоже итоги по регистратору...
собирай строку сам |
|||
2
andrewks
21.05.12
✎
08:41
|
"Но у нас акт сверки более информативен и все сделано через цикл. А в российской через запрос. "
это пять |
|||
3
keller
21.05.12
✎
08:50
|
(2) в российской более удобно. и более профессионально. но у нас более информативен вывод, но больно усложнен код. Я же совета прошу. Неуместны эти смешки.
|
|||
4
keller
21.05.12
✎
08:51
|
(1) я неправильно выразился - не в запросе, а как обработать результат выборки чтоб получить результат. Плизз.
|
|||
5
Rizhij_Nikitos
21.05.12
✎
08:53
|
(4) извините, а что у вас делает щас данный код казахстанский?
|
|||
6
keller
21.05.12
✎
08:55
|
(4) Выхлоп примерно такой у казахстанского
_________________________________________ Поступление ТМЗ и услуг 376 от 06.01.2012, Расходная накладная № вх. 03/1 от 06.01.2012 _________________________________________ а у российского _________________________________________ Поступление ТМЗ и услуг 376 от 06.01.2012 ________________________________________ |
|||
7
andrewks
21.05.12
✎
08:57
|
(3) какие смешки? выражайся яснее, а то нифига непонятно
|
|||
8
andrewks
21.05.12
✎
09:00
|
(6) ну так ты сам привёл отрывок формирования текстового представления, в чём проблема? вставь его в свой код, немного допили.
вот здесь: СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт", ОбходПоДокументам.Дата,ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт)); |
|||
9
Rizhij_Nikitos
21.05.12
✎
09:01
|
(6) я тоже согласен с (7), я задачи че то не понял, ну выходит у тебя не красивое представление, сделай его сам когда структуру добавялешь
СписокДокументов.Добавить(новый структура("ДатаДокумента,РегистраторПредставление,Регистратор,СуммаОборотДт,СуммаОборотКт", ОбходПоДокументам.Дата,"Тута твое представление с текущим"+ОбходПоДокументам.Представление,ОбходПоДокументам.Документ,ОбходПоДокументам.СуммаДогДт,ОбходПоДокументам.СуммаДогКт)); |
|||
10
keller
21.05.12
✎
09:43
|
(9) в КЗ-коде происходит обращение к метаданным строк табличной части: СтрокаОрганизации.Документ.Метаданные(), СтрокаОрганизации.Документ.НомерВходящегоДокумента и пр.. как мне правильно обратится результату выборки как к объекту?
Так как если я обращаюсь ОбходПоДокументам.Документ.ДатаВходящегоДокумента то выходит ошибка "Значение не является значением объектного типа (НомерВходящегоДокумента) " Извиняйте за не совсем проф. язык. Сделайте скидку на неопытность. |
|||
11
Rizhij_Nikitos
21.05.12
✎
11:15
|
(10) у тебя видать ссылки, а тебе нужно получить объект, чтобы получить объект, тебе нужно сделать так
ТвойОбъект = ОбходПоДокументам.Документ.ПолучитьОбъект(); И дальше работаешь с твоимобъектом как надо. Взял поле ОбходПоДокументам.Документ потому, что это регистратор, а значит точно ссылка на документ. Пробуй, надеюсь ты меня понял |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |