0
- 17.12.2013 - 17:08
|
привет всем! только учусь прогать в 7.7. мне поставили задачу сделать чтоб из документа операция выбиралось самое последнее значение, количество. счет СП количественный би = СоздатьОбъект("БухгалтерскиеИтоги"); //би.ИспользоватьСубконто(ВидыСубконто.Транспорт,,1); БИ.ИспользоватьСубконто(ВидыСубконто.Транспорт,Транспорт,2); // БИ.ВыполнитьЗапрос(ДатаЗапроса,ДатаЗапроса,"СП,ТБ"); БИ.ВыбратьПериоды(); Пока БИ.ПолучитьПериод() = 1 Цикл БИ.ВыбратьСубконто(1); //Пер = СоздатьОбъект("Периодический"); Пока БИ.ПолучитьСубконто(1)=1 цикл // Пер.ВыбратьЗначения(ДатаЗапроса,ДатаЗапроса); // Пока Пер.ПолучитьЗначение() = 1 Цикл Если БИ.ПолучитьСчет(,СчетПоКоду("СП"))=1 Тогда Транспорт = БИ.Субконто(1); Остаток = БИ.СКД("К") - БИ.СКК(); КонецЕсли КонецЦикла; КонецЦикла; из этого кода получается что БИ.СКД("К") выводится, но плюсуется и с другими значениями. как можно сделать так, чтоб бралось только последнее значение (последнее количество)на эту дату? что я делаю не так? | |
1
- 17.12.2013 - 17:22
| Обязательно через бух. итоги? тогда детализацию по проводкам | |
2
- 17.12.2013 - 17:34
| ну не обязательно наверное, а как еще можно, просто работаю с 8.2, пример можно... | |
3
- 17.12.2013 - 17:35
| проверяю проводки по счету СП, как тогда еще можно получить самое последнее количество на эту дату. | |
4
- 17.12.2013 - 17:38
|
0-Buf > Прежде надо было выучить, как в 7.7 хранятся Итоги и Обороты. По вопросу видны пробелы в учебе... [b]Итоги[/b] в БД всегда существуют (физически) только на начало периода. В отличии от [b]оборотов[/b]. Получить итог на временную точку внутри периода возможно только через перебор оборотов от начала периода. И никак иначе. | |
5
- 17.12.2013 - 17:52
| вот по этому и пишу на форум, спросить как можно сделать еще.неужели никто показать на примере не может? | |
6
- 17.12.2013 - 18:00
| 0-Buf > вот, например: БИ.ВыбратьПериоды(); - тут зачем? если через это, то в БИ задать периодичность по проводкам и ловить последнюю проводку | |
7
- 17.12.2013 - 18:05
| это уже от безысходности.... как говорится.но цифра всеравно хоть как делать одна и та же - не правильная | |
8
- 17.12.2013 - 18:13
| 7-Buf > а где задана периодичность в запросе? | |
9
- 17.12.2013 - 18:22
|
5-Buf > Цель твоя не ясна. Замысел не виден. Вот, например, в бухгалтерских документах (когда есть контроль по количеству на момент формирования проводок) используют сам документ границей периода. Например: [em]БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),спСчетов,,,,,"СК");[/em] Здесь движок самостоятельно организует запрос к качалу периода, и сам пройдется по движениям до нужной временной точки, и выдаст модулю нужные итоги. | |
10
- 17.12.2013 - 18:34
| да, в первую очередь - выплюнуть жвачку:) что значит "последнее количество"? оставшееся? или приход/расход? если приход/расход по последней строке, то тогда лучше через обороты или вообще по документу без БИ | |
11
- 17.12.2013 - 18:37
|
пишу док путевой лист. задача такая: при записи документа создается бух итоги с количесвом - спидометр, и субконто транспорт. дальше, если формировать новый документ на эту машинку нужно чтоб спидометр проставлялся автоматом, т.е. брался из бух.итогов количество по этой машине.нужно сделать именно при записи документа эту штуку.проведение не устраивает. допустим есть 2 дока от 17.12.2013 на одну машинку, нужно выписать новый док от 18.12.2013на эту же машинку, но чтоб бралось количество из бух итогов именно по последней операции, | |
12
- 17.12.2013 - 18:41
| 11-Buf > тогда логичнее брать итоги на начало новой операции:) только я все-равно ничего не поняла: при записи... проведение не устраивает... и т.п. пред. документы хоть проведены? | |
13
- 17.12.2013 - 18:44
| может БИ.СНД("К") подойдет при БИ.ВыполнитьЗапрос(ТекущийДокумент(),,"СП,ТБ", ,,,,"СК");? | |
14
- 17.12.2013 - 18:46
| 11-Buf > Между текущим документом и предыдущим (именно для конкретной аналитике) движений никаких нет. Следовательно, между предыдущим документом [b]после проведения[/b], и текущим [b]до проведения[/b] итоги никак изменится не могут. Поэтому искать этот предыдущий документ совсем не надо ;) | |
15
- 17.12.2013 - 18:47
| записаны документы, но созданы операции. | |
16
- 17.12.2013 - 18:47
| может автору надо что-нить в типовой посмотреть? напр. АО... | |
17
- 17.12.2013 - 19:25
| БИ.СНД("К") выдает ту же самую цифру, которая сложенная.неужели никаких вариантов как это можно реализовать? | |
18
- 17.12.2013 - 19:40
| элементарный запрос. толькоя не совсем поняла, что нужно - количество по последнему документу или просто остаток? | |
19
- 17.12.2013 - 19:52
|
это... С[b]К[/b]Д и так выдаёт последнее значение, уверяю :) у Вас просто конструкция: Пока БИ.ПолучитьСубконто(1)=1 цикл Транспорт = БИ.Субконто(1); Остаток = БИ.СКД("К") - БИ.СКК(); КонецЦикла; не привязывает Остаток к конкретному транспорту... пока перебираете Транспорт в цикле, Остаток бежит... | |
20
- 17.12.2013 - 19:55
| 19-Гена > Транспорт = БИ.Субконто(1) вот это находит нужную маштну, тогда как по ней вывести БИ.СКД("К"), именно по ней? что у меня не так? | |
21
- 17.12.2013 - 19:59
| разве не весь транспорт цикл пробегает? | |
22
- 17.12.2013 - 20:30
| 18-Helen1986 >вот я тоже нифига не поняла, что нужно:) | |
23
- 17.12.2013 - 20:31
|
переписала код: БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Транспорт, Транспорт); БИ.ВыполнитьЗапрос(ДатаЗапроса, ДатаЗапроса, "СП"); БИ.ВыбратьСубконто(1); Пока БИ.ПолучитьСубконто(1) = 1 Цикл Остаток = БИ.СКД("К") - БИ.СКК(); КонецЦикла; БИ.СКД("К") = всем сложенным количествам, т.е. он берет не последнее значение как взять самое последнее значение? | |
24
- 17.12.2013 - 20:32
| нужно количество по последнему документу | |
25
- 17.12.2013 - 20:34
| 21-Гена > транспорт не весь, т.к. БИ.ИспользоватьСубконто(ВидыСубконто.Транспорт,Тра нспорт,2);, но цикл по субконто вообще не нужен. а вот что со спидометром, не понятно... | |
26
- 17.12.2013 - 20:36
|
[quote=Buf;33372780]переписала код:[/quote] что там про гусаров то?;) | |
27
- 17.12.2013 - 20:39
|
[quote=Buhta;33372859] Цитата: Сообщение от Buf переписала код: что там про гусаров то?;) [/quote] ну в смысле убрала все лишнее | |
28
- 17.12.2013 - 21:15
| я уже даже стесняюсь что-то спрашивать:) | |
29
- 17.12.2013 - 21:15
| ну неужеле никто не знает как сделать можно | |
30
- 17.12.2013 - 21:20
| 29-Buf >а что нужно? можно как-то более внятно изложить? а то "машинки", "штуки" при записи и т.п. БИ.СКК() - это вообще что? | |
31
- 17.12.2013 - 21:28
|
БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Транспорт, Транспорт,2); БИ.ВыполнитьЗапрос(ДатаЗапроса, ДатаЗапроса, "СП",,,,"Проводка","К"); БИ.ВыбратьПериоды(); Пока БИ.ПолучитьПериод() = 1 Цикл ПоследнееКоличество= БИ.ДО("К"); КонецЦикла; может так прокатит? хотя незачем всю дату шерстить и смысл задачи так и остается загадкой... | |
32
- 17.12.2013 - 21:39
|
БИ.ПолучитьПериод() оео равно ноль в цикл:Пока БИ.ПолучитьПериод() = 1 Цикл даже не заходит | |
33
- 17.12.2013 - 21:52
|
смысл в том, чтобы вывести количество по последнему документу операции, и вставить его в документ путевого листа (значение спидометр) 17 выписан один путевой лист, спидометр конечный записывается в бух итоги в операцию, 18 нужно выписать еще один путевой лист, но чтоб в него автоматом встал спидометр начальный, равный конечному спидометру путевого листа за 17 число | |
34
- 17.12.2013 - 22:00
|
(0) какова цель накопления пробега в регистрах бухгалтерии? чем не устраивает хранение общего пробега в реквизите справочника транспортных средств? | |
35
- 17.12.2013 - 22:14
|
32-Buf > тогда добавить выборку по субконто. БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Транспорт, Транспорт,2); БИ.ВыполнитьЗапрос(ДатаЗапроса, ДатаЗапроса, "СП",,,,"Проводка","К"); БИ.ВыбратьСубконто(); Пока БИ.ПолучитьСубконто() = 1 Цикл БИ.ВыбратьПериоды(); Пока БИ.ПолучитьПериод() = 1 Цикл ПоследнееКоличество= БИ.ДО("К"); КонецЦикла; КонецЦикла; а зачем вообще спидометры складываются??? не, ну складывать пробег за единицу времени - понятно. тогда на начало - последнее показание спидометра, т.е. СНД., но складывать показания спидометров... какой тут смысл количественного учета? | |
36
- 17.12.2013 - 22:16
| кто первоначальный автор конфигурации? | |
37
- 17.12.2013 - 22:23
|
33-Buf > угу, тогда в проводке по пробегу документ Путевой лист должен записывать количество пробега за поездку, то есть в нём два реквизита "Пробег на начало", "Пробег на конец". Разница записывается в количество в проводку документа. Если Пробег хранится в количестве проводки (то есть учёт по субконто Транспортные средства ведётся по количеству, а сам счёт количественный), то получается БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Транспорт,Тра нспорт,2); БИ.ВыполнитьЗапрос(ТекущийДокумент(),,"НашКолчественныйСчетСчетНаКоторомВКоличествеХранитсяПробегПоСубконтоТранспортныеСредства",,,1,,"К"); БИ.ВыполнитьЗапрос(); БИ.ВыбратьСубконто(1); Если БИ.ПолучитьСубконто(1)=1 Тогда Остаток = БИ.СНК("К"); КонецЕсли документ при этом должен быть уже записан, иначе его в базе ещё нет, а только открыта форма для его ввода. но в нашем случае лучше использовать расчет временных итогов, а не запрос по бухитогам. т.е.: БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.Рассчитать(ТекущийДокумент(),,"НашСчет"); НашПробегНаНачало = БИ.СНК("НашСчет","К",,НашеТранспортноеСредство); документ с транспортным средством в нём опять же должен быть записан. | |
38
- 17.12.2013 - 22:24
|
34-Зелёный тролль >[em]чем не устраивает хранение [em]общего[/em] пробега в реквизите справочника транспортных средств?[/em] Да не нужен ей общий пробег. Ты живой бумажный путевой лист видел? там есть графы - "Показание спидометра при выезде" (из гаража), "Показания спидометра при заезде" (в гараж). Вечером машина заезжает в гараж. Водила сдает путевой лист. Диспетчер заносит и обрабатывает путевой лист в программе. (заправка, остаток в баке при выезде, остаток в баке при заезде, пробег с грузом, часов на линии и т.д. и т.п. В том числе показания спидометра при заезде.) Утром следующего дня [em]другой [/em]диспетчер выписывает новый путевой лист. И диспетчеру при этом нужно, чтобы "Показания спидометра при выезде" приняли значение "Показаний спидометра при заезде" предыдущего дня. Для этого ничего из вышеописанного не нужно. Никаких забалансовых счетов, никаких бухитогов и всякой прочей ерунды. Достаточно просто писать в справочник транспортных средств реквизит "Крайнее показание спидометра". Один- единственный реквизит. Утром считывать и подставлять в "При выезде", вечером в него записывать значение "При заезде". зы: при этом за несвоевременную сдачу и обработку путевых листов драть организационно. Значение спидометра разрешить корректировать только доверенным лицам. Все "ручные действия" (исправления в справочнике) с показаниями спидометров протоколировать. Дабы не было мухлежа с пробегом и списанием горючего. а все эти забалансовые СП - от лукавого. Спидометр должен контролироваться жестко. Потому как горючее. | |
39
- 17.12.2013 - 22:29
|
35-Buhta >[em]складывать показания спидометров... какой тут смысл количественного учета?[/em] суммировать общий пробег транспортного средства. На основании этого строятся графики плановых ТО-1 и ТО-2. А также нормы расхода резины. Ты свою "нюську" на первое ТО когда отвела - через 3000 км. А на ТО-2 - через 15000 км? А если у тебя 100 таких нюсек (таксопарк, к примеру). И водителей текучка... и никто за машинкой Тут заранее нужно планировать всякие ТО... | |
| Интернет-форум Краснодарского края и Краснодара |