|
перестал работать самописный документ | ☑ | ||
---|---|---|---|---|
0
JedaiMaster
24.02.14
✎
05:42
|
в конфигурации есть документ Распределение отклонений счета 10_20
(писаный франчем у которого не спросить) который хорошо отрабатывал свое, но вот в октябре он перестал работать не формирует проводки. Опытным путем было определено что на этом участке кода не формируется Выборка.Где тыкать что бы понять почему октябрь он мне бракует и не работает? Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.КорСчет, | ХозрасчетныйОбороты.Субконто1, | ХозрасчетныйОбороты.Субконто2, | ХозрасчетныйОбороты.Субконто3, | ХозрасчетныйОбороты.КорСубконто1, | ХозрасчетныйОбороты.КорСубконто2, | ХозрасчетныйОбороты.КорСубконто3, | ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт, | ЕСТЬNULL(ХозрасчетныйОбороты.ПодразделениеКор, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)) КАК Подразделение |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, , Счет В ИЕРАРХИИ (&СписокСчетов10), , Субконто"+НомерСубконто+" = &Склад, НЕ КорСчет В (&ИсключаемыеКорСчета), ) КАК ХозрасчетныйОбороты"; Запрос.УстановитьПараметр("ИсключаемыеКорСчета",ВернутьСписокИсклСчетов()); Результат = Запрос.Выполнить(); СуммаТМЦ = Результат10.ОстатокТМЦ + Результат10.ОборотТМЦ; ТаблицаДвижений = Движения.ДоляСписанияЗСР.ВыгрузитьКолонки(); ТаблицаДвижений.Колонки.Добавить("КорСчет"); ТаблицаДвижений.Колонки.Добавить("КорСубконто1"); ТаблицаДвижений.Колонки.Добавить("КорСубконто2"); ТаблицаДвижений.Колонки.Добавить("КорСубконто3"); ТаблицаДвижений.Колонки.Добавить("Статья"); ОстатокЗСР = 0;ОборотЗСР = 0;ДоляСписания = 0; Пока Результат10_20.Следующий() Цикл ОстатокЗСР = ОстатокЗСР + Результат10_20.ОстатокЗСР; ОборотЗСР = ОборотЗСР + Результат10_20.ОборотЗСР; ДоляСписания = ДоляСписания + ((Результат10_20.ОстатокЗСР + Результат10_20.ОборотЗСР) / СуммаТМЦ); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока = ТаблицаДвижений.Добавить(); НоваяСтрока.Организация = СтруктураШапкиДокумента.Организация; НоваяСтрока.ПериодРасчета = КонецМесяца(ПериодРегистрации); НоваяСтрока.Статья = Результат10_20.Статья; |
|||
1
Wobland
24.02.14
✎
05:45
|
тыкать в Результат10_20. внезапно, правда?
|
|||
2
JedaiMaster
24.02.14
✎
05:49
|
(1) очень внезапно *_*
|
|||
3
JedaiMaster
24.02.14
✎
05:53
|
(1) попробовал сделать как ты сказал.
В обоих случаях (месяц когда все норм и когда нет ) эта переменная похожа |
|||
4
Godofsin
24.02.14
✎
05:54
|
(3) Всмысле похожа? ))))
|
|||
5
Godofsin
24.02.14
✎
05:54
|
Выборка есть или нет?
|
|||
6
JedaiMaster
24.02.14
✎
05:55
|
Процедура РаспределениеОтклоненийСчета10_20(СтруктураШапкиДокумента, Отказ, Заголовок)
НомерСубконто = ВернутьНомерСубконтоСклады(); Запрос = Новый Запрос("ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто"+НомерСубконто+" КАК Склад, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК ОстатокТМЦ, | ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК ОборотТМЦ |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &НачПериода, | &КонПериода, | Месяц, | ДвиженияИГраницыПериода, | Счет В (&СписокСчетов10), | , | Организация = &Организация | И Субконто"+НомерСубконто+" = &Склад) КАК ХозрасчетныйОстаткиИОбороты"); Запрос.УстановитьПараметр("Организация", Организация); Запрос.УстановитьПараметр("НачПериода", НачалоМесяца(ПериодРегистрации)); Запрос.УстановитьПараметр("КонПериода", КонецМесяца(ПериодРегистрации)); Запрос.УстановитьПараметр("СписокСчетов10", ВернутьСписокСчетов10()); Запрос.УстановитьПараметр("Склад", Склад); Результат10 = Запрос.Выполнить().Выбрать(); Если НЕ Результат10.Следующий() Тогда Возврат; КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Статья, | СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт) КАК ОстатокЗСР, | СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотЗСР |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, Месяц, ДвиженияИГраницыПериода, Счет = &Счет10_20, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОбороты.Субконто1"; Запрос.УстановитьПараметр("Счет10_20",ПланыСчетов.Хозрасчетный.ЗаготовительноСкладскиеРасходыПоМатериалам); Результат10_20 = Запрос.Выполнить().Выбрать(); Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.КорСчет, | ХозрасчетныйОбороты.Субконто1, | ХозрасчетныйОбороты.Субконто2, | ХозрасчетныйОбороты.Субконто3, | ХозрасчетныйОбороты.КорСубконто1, | ХозрасчетныйОбороты.КорСубконто2, | ХозрасчетныйОбороты.КорСубконто3, | ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт, | ЕСТЬNULL(ХозрасчетныйОбороты.ПодразделениеКор, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)) КАК Подразделение |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, , Счет В ИЕРАРХИИ (&СписокСчетов10), , Субконто"+НомерСубконто+" = &Склад, НЕ КорСчет В (&ИсключаемыеКорСчета), ) КАК ХозрасчетныйОбороты"; Запрос.УстановитьПараметр("ИсключаемыеКорСчета",ВернутьСписокИсклСчетов()); Результат = Запрос.Выполнить(); СуммаТМЦ = Результат10.ОстатокТМЦ + Результат10.ОборотТМЦ; ТаблицаДвижений = Движения.ДоляСписанияЗСР.ВыгрузитьКолонки(); ТаблицаДвижений.Колонки.Добавить("КорСчет"); ТаблицаДвижений.Колонки.Добавить("КорСубконто1"); ТаблицаДвижений.Колонки.Добавить("КорСубконто2"); ТаблицаДвижений.Колонки.Добавить("КорСубконто3"); ТаблицаДвижений.Колонки.Добавить("Статья"); ОстатокЗСР = 0;ОборотЗСР = 0;ДоляСписания = 0; Пока Результат10_20.Следующий() Цикл ОстатокЗСР = ОстатокЗСР + Результат10_20.ОстатокЗСР; ОборотЗСР = ОборотЗСР + Результат10_20.ОборотЗСР; ДоляСписания = ДоляСписания + ((Результат10_20.ОстатокЗСР + Результат10_20.ОборотЗСР) / СуммаТМЦ); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока = ТаблицаДвижений.Добавить(); НоваяСтрока.Организация = СтруктураШапкиДокумента.Организация; НоваяСтрока.ПериодРасчета = КонецМесяца(ПериодРегистрации); НоваяСтрока.Статья = Результат10_20.Статья; НоваяСтрока.Подразделение = Выборка.Подразделение; НоваяСтрока.ОстатокЗСР = Результат10_20.ОстатокЗСР; НоваяСтрока.ОборотЗСР = Результат10_20.ОборотЗСР; НоваяСтрока.ОстатокТМЦ = Результат10.ОстатокТМЦ; НоваяСтрока.ОборотТМЦ = Результат10.ОборотТМЦ; НоваяСтрока.ДоляСписания = (Результат10_20.ОстатокЗСР + Результат10_20.ОборотЗСР) / СуммаТМЦ; НоваяСтрока.СуммаСписания = Окр(Выборка.СуммаОборотКт * НоваяСтрока.ДоляСписания ,2,1); НоваяСтрока.КорСчет = Выборка.КорСчет; НоваяСтрока.КорСубконто1 = Выборка.КорСубконто1; НоваяСтрока.КорСубконто2 = Выборка.КорСубконто2; НоваяСтрока.КорСубконто3 = Выборка.КорСубконто3; КонецЦикла; КонецЦикла; ТаблицаСписания = ТаблицаДвижений.Скопировать(); ТаблицаСписания.Свернуть("Статья,Подразделение,КорСчет,КорСубконто1,КорСубконто2,КорСубконто3","СуммаСписания"); Для Каждого СтрокаТЗ Из ТаблицаСписания Цикл Проводка = мПроводкиБУ.Добавить(); Проводка.Период = КонецМесяца(ПериодРегистрации); Проводка.Организация = СтруктураШапкиДокумента.Организация; Проводка.СчетДт = СтрокаТЗ.КорСчет; Проводка.ПодразделениеДт = СтрокаТЗ.Подразделение; БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, 1, СтрокаТЗ.КорСубконто1); БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, 2, СтрокаТЗ.КорСубконто2); БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, 3, СтрокаТЗ.КорСубконто3); Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ЗаготовительноСкладскиеРасходыПоМатериалам; БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "ЗаготовительноСкладскиеРасходы", СтрокаТЗ.Статья); Проводка.Сумма = СтрокаТЗ.СуммаСписания; Проводка.Содержание = "Списаны затраты собственных сил - "+СтруктураШапкиДокумента.Склад; //НалоговыйУчет.ЗаполнитьНалоговыеСуммыПроводки( //СуммаПроводкиНУ, СуммаПроводкиНУ, СуммаПроводкиПР, СуммаПроводкиПР, СуммаПроводкиВР ,СуммаПроводкиВР , Проводка); КонецЦикла; ТаблицаДвижений.Свернуть("Организация,ПериодРасчета,Подразделение,ОстатокТМЦ,ОборотТМЦ","ОстатокЗСР,ОборотЗСР,ДоляСписания,ОборотТМЦКт,СуммаСписания"); ТЗ = Результат.Выгрузить(); ТЗ.Свернуть("Подразделение","СуммаОборотКт"); Для Каждого СтрокаТЗ Из ТЗ Цикл СтрокаТД = ТаблицаДвижений.Найти(СтрокаТЗ.Подразделение,"Подразделение"); Если СтрокаТД <> Неопределено Тогда СтрокаТД.ОборотТМЦКт = СтрокаТЗ.СуммаОборотКт; КонецЕсли; КонецЦикла; ТаблицаДвижений.ЗаполнитьЗначения(ОстатокЗСР,"ОстатокЗСР"); ТаблицаДвижений.ЗаполнитьЗначения(ОборотЗСР,"ОборотЗСР"); ТаблицаДвижений.ЗаполнитьЗначения(ДоляСписания,"ДоляСписания"); Движения.ДоляСписанияЗСР.Очистить(); Движения.ДоляСписанияЗСР.Загрузить(ТаблицаДвижений); КонецПроцедуры Функция ВернутьЗначениеСубконто(Выборка, Счет,СубконтоДтКт, ИмяТипа) Для х =1 По Счет.ВидыСубконто.Количество() Цикл Если ТипЗнч(Выборка[СубконтоДтКт+СокрЛП(Строка(х))]) = Тип(ИмяТипа) Тогда Возврат Выборка[СубконтоДтКт+СокрЛП(Строка(х))]; КонецЕсли; КонецЦикла; Возврат Неопределено; КонецФункции // Выполняет движения по регистрам // Процедура ДвиженияПоРегистрам(СтруктураШапкиДокумента, Отказ, Заголовок) РаспределениеОтклоненийСчета10_20(СтруктураШапкиДокумента, Отказ, Заголовок); КонецПроцедуры |
|||
7
JedaiMaster
24.02.14
✎
05:56
|
(5) да, данные в выборке есть
|
|||
8
Wobland
24.02.14
✎
05:59
|
Пока Результат10_20.Следующий() Цикл
Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл это что за адовы циклы? |
|||
9
Godofsin
24.02.14
✎
06:01
|
(7) в обоих?
|
|||
10
JedaiMaster
24.02.14
✎
06:05
|
(8) работа франча
(9) Выборка = Результат.Выбрать(); тут уже нет, http://imageban.ru/show/2014/02/24/af278512c1f737b73acfc2d2387e9edb/jpg |
|||
11
Wobland
24.02.14
✎
06:11
|
(10) вот вообще не убедил, что Выборка пуста
|
|||
12
JedaiMaster
24.02.14
✎
06:34
|
||||
13
Wobland
24.02.14
✎
06:35
|
смотри на неё после вызова Следующего()
|
|||
14
JedaiMaster
24.02.14
✎
06:41
|
||||
15
echo77
24.02.14
✎
06:44
|
(14) после, а не ДО
|
|||
16
Godofsin
24.02.14
✎
06:45
|
(14) .....
|
|||
17
echo77
24.02.14
✎
06:46
|
А вообще смотри в табло Результат.Выгрузить()
|
|||
18
Feunoir
24.02.14
✎
06:51
|
(8) Не говори так! Это же франч писал, а значит код красив, гладок и шелковист.
|
|||
19
JedaiMaster
24.02.14
✎
06:53
|
(16) да не дотягиваю до опытного, поэтому и запостил
|
|||
20
JedaiMaster
24.02.14
✎
06:58
|
(17) Выборка = Результат.Выгрузить().ВыбратьСтроку();
выдает пустоту |
|||
21
Wobland
24.02.14
✎
06:58
|
(18) да, я так и чувствую, как мои волосы на затылке начинают приобретать гладкость и шелковистость. пока не стояли торчком, я этого и не замечал
|
|||
22
Godofsin
24.02.14
✎
06:59
|
(20) Выборка = Результат.Выгрузить()[0]
|
|||
23
Wobland
24.02.14
✎
07:01
|
(22) ну нету у него ни одной строки
(20) теперь у тебя есть вопрос, который возвращает пустоту. он это правильно делает? |
|||
24
JedaiMaster
24.02.14
✎
07:03
|
(22) за пределами индекса
|
|||
25
Feunoir
24.02.14
✎
07:03
|
(20) Бери запрос
На строчке Результат = Запрос.Выполнить(); ставь точку останова и смотри какие параметры передаются в запрос. Потом текст запроса копируй в любую консоль запроса и выполняй там с теми-же параметрами. Потом смотри оборотку по 10 счету и сравнивай с твоим запросом. Либо не тот склад, либо что-то с корсчетами накосячили |
|||
26
JedaiMaster
24.02.14
✎
07:04
|
(23)да пустоты не должно быть, и ее нет когда провожу документ -сентябрь, когда провожу октябрь то путсота
|
|||
27
Wobland
24.02.14
✎
07:12
|
(26) ну нет движений за такой период по таким условиями
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |