Не все строки добавляются из запроса

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. PhoenixAOD 62 23.01.14 11:30 Сейчас в теме
Доброго времени суток всем читающим. Сложилась такая ситуация, что бухи готовят продажу конторки одной, но есть N-ное количество товаров в БП 2.0 которое нельзя выбрать из товароучетной программы, оно лишнее, и взято было из старой базы БП. Проблема состоит в следующем, есть такой вот запросик
"ВЫБРАТЬ
|	ХозрасчетныйОстаткиИОбороты.Организация,
|	ХозрасчетныйОстаткиИОбороты.Счет,
|	ХозрасчетныйОстаткиИОбороты.Субконто2,
|	ХозрасчетныйОстаткиИОбороты.Субконто1,
|	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
|	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонечныйОстаток
|ПОМЕСТИТЬ Вт1
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата, &Дата, , ДвиженияИГраницыПериода, , , ) КАК ХозрасчетныйОстаткиИОбороты
|ГДЕ
|	ХозрасчетныйОстаткиИОбороты.Счет = &Счет
|	И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
|;
|
| X 
|ВЫБРАТЬ
|	ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Организация,
|	ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата,
|	ИнвентаризацияТоваровНаСкладеТовары.Номенклатура,
|	ИнвентаризацияТоваровНаСкладеТовары.СчетУчета
|ПОМЕСТИТЬ Вт2
|ИЗ
|	Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
|ГДЕ
|	ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата = &Дата
|	И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Организация = &Организация
|	И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.ПометкаУдаления = Ложь
|;
|
| X 
|ВЫБРАТЬ
|	Вт1.Организация,
|	Вт1.Счет,
|	Вт1.Субконто2,
|	Вт1.Субконто1,
|	Вт1.КоличествоКонечныйОстаток,
|	Вт1.СуммаКонечныйОстаток,
|	Вт2.Организация КАК Организация1,
|	Вт2.Дата,
|	Вт2.Номенклатура,
|	Вт2.СчетУчета,
|	ВЫБОР
|		КОГДА Вт2.Номенклатура ЕСТЬ NULL 
|			ТОГДА 0
|		ИНАЧЕ 1
|	КОНЕЦ КАК Поле1
|ПОМЕСТИТЬ Вт3
|ИЗ
|	Вт1 КАК Вт1
|		ЛЕВОЕ СОЕДИНЕНИЕ Вт2 КАК Вт2
|		ПО Вт1.Организация = Вт2.Организация
|			И Вт1.Субконто1 = Вт2.Номенклатура
|;
|
| X 
|ВЫБРАТЬ
|	Вт3.Организация,
|	Вт3.Счет,
|	Вт3.Субконто2,
|	Вт3.Субконто1,
|   Вт3.КоличествоКонечныйОстаток,
|	Вт3.СуммаКонечныйОстаток,
|	Вт3.Организация1,
|	Вт3.Дата,
|	Вт3.Номенклатура,
|	Вт3.СчетУчета,
|	Вт3.Поле1
|ИЗ
|	Вт3 КАК Вт3
|ГДЕ
|	Вт3.Поле1 = 0
|   И Вт3.КоличествоКонечныйОстаток <> 0";
Показать


Он выдерат номенклатуру с положительными и отрицательными остатками, и должен создаться новый документ инвентаризация. В консоли показывает точное количество, этого не прошедшего товара, но при создании документа, заполняется всего 228 позиций, а их много больше, причем многие получаются нулевыми, подскажите что я делаю не так?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. Rothschild 23.01.14 11:51 Сейчас в теме
(5) PhoenixAOD,
посмотри, что творится в обработчике ПередЗаписью() объекта документа.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 23.01.14 11:32 Сейчас в теме
(1) PhoenixAOD, если в консоли запросов результат не такой, как в программе, - смотри параметры :)
3. PhoenixAOD 62 23.01.14 11:34 Сейчас в теме
(2) starjevschik, как раз в консоли результат тот который нужен. а при загрузке в ТЧ инвентаризации он неверный
4. Rothschild 23.01.14 11:38 Сейчас в теме
(3) PhoenixAOD,
как грузишь в табчасть?
пример кода...если нетрудно
6. tolyan_ekb 105 23.01.14 11:41 Сейчас в теме
(3) PhoenixAOD, в отладчике перед заполнением ТЧ при получении результата запроса тоже 228 строк?
7. PhoenixAOD 62 23.01.14 11:42 Сейчас в теме
(6) tolyan_ekb, нет там 7645 строк
18. tolyan_ekb 105 23.01.14 12:04 Сейчас в теме
(7) PhoenixAOD, если в результате больше 228 строк, то в цикле и должно создаться столько же. Код простой, попробуй убрать заполнение ТЧ и просто добавить строки, заполнив счет, например.
8. starjevschik 23.01.14 11:44 Сейчас в теме
(3) PhoenixAOD, ну значит параметры в программе неправильно поставлены. В чем проблема их проверить-то?
9. PhoenixAOD 62 23.01.14 11:45 Сейчас в теме
(8) starjevschik, все параметры верны. все перепроверно, отбор идет именно такой какой нужен, пробовал в другой док выгрузить, все строки появляются, в инвентаризации нет.
5. PhoenixAOD 62 23.01.14 11:41 Сейчас в теме
ТабДок = ДОкументы.ИнвентаризацияТоваровНаСкладе.СоздатьДокумент();
 ТабДок.Дата = Дата;
 ТабДок.Организация = Организация;
 Пока выборка.Следующий() Цикл
	Номен = Справочники.Номенклатура.НайтиПоНаименованию(выборка.субконто1);
	Стр = ТабДок.Товары.Добавить();
	Стр.Номенклатура = Номен;
	Стр.Количество = Выборка.КоличествоКонечныйОстаток;
	Стр.Сумма = Выборка.СуммаКонечныйОстаток;
	Стр.СчетУчета = Счет;
КонецЦикла;
ТабДок.Записать();
ТабДок.ПолучитьФорму("ФормаДокумента").Открыть();
Показать
10. tolyan_ekb 105 23.01.14 11:46 Сейчас в теме
(5) PhoenixAOD, зачем поиск по наименованию?
11. PhoenixAOD 62 23.01.14 11:49 Сейчас в теме
(10) tolyan_ekb, разницы нету. что наприямую указать Субконто1 или через номен. Меня интерисую не это, меня интерисует почему не все позиции из запроса попадают в таб часть.
12. Rothschild 23.01.14 11:51 Сейчас в теме
(5) PhoenixAOD,
посмотри, что творится в обработчике ПередЗаписью() объекта документа.
13. Rothschild 23.01.14 11:53 Сейчас в теме
(5) PhoenixAOD,
и еще поле Субконто1 в запросе - это никак не строка,
почему тогда
Номен = Справочники.Номенклатура.НайтиПоНаименованию(выборка.субконто1);
???
14. Rothschild 23.01.14 11:55 Сейчас в теме
(13)
если
выборка.субконто1
- это и есть номенклатура,
то его и надо использовать, а не искать в справочнике
15. PhoenixAOD 62 23.01.14 11:59 Сейчас в теме
(14) Rothschild, да я понимаю. что так что так заполняется всего 228 позиций.
16. Rothschild 23.01.14 12:00 Сейчас в теме
(15) PhoenixAOD,
что-нибудь странного-нестандартног нет в обработчике ПередЗаписью() в модуле объекта???
17. Rothschild 23.01.14 12:03 Сейчас в теме
(16)
еще советую
в запросе сформировать выборку с именами полей
один-в-один как табчасти ИнвентаризацияТоваровНаСкладе
и загрузить ТЗ непосредственн в табличную часть:

тзДанные = Запрос.Выполнить().Выгрузить();
...
ТабДок.Товары.Загрузить(ТабДок.Товары);
19. tolyan_ekb 105 23.01.14 12:05 Сейчас в теме
(17) Rothschild,
ТабДок.Товары.Загрузить(ТабДок.Товары);

сама в себя грузиться чтоли?
Rothschild; +1 Ответить
20. Rothschild 23.01.14 12:10 Сейчас в теме
(19) tolyan_ekb,
пардонс ;)
тзДанные = Запрос.Выполнить().Выгрузить();
...
ТабДок.Товары.Загрузить(тзДанные);
21. Rothschild 23.01.14 12:11 Сейчас в теме
(20)
спешилс, мыслью поделиться
:)
24. PhoenixAOD 62 24.01.14 01:51 Сейчас в теме
(20) Rothschild, так тоже пробовал. Изначально делал, но в итоге так же 228 строк.
22. kuza2000 217 23.01.14 14:07 Сейчас в теме
Ставим точку останова после строки:

тзДанные = Запрос.Выполнить().Выгрузить();

Внимательно смотрим параметры и результат по Shift+F9
23. Rothschild 23.01.14 14:48 Сейчас в теме
(22) kuza2000,
если установишь подсистемку
http://infostart.ru/public/97707/
то можно написать для отладки в режиме 1С:Предприятие:
ViewTable(Запрос.Выполнить().Выгрузить(),"Результат запроса");

и так тоже можно:
ViewTable(Запрос.Выполнить(),"Результат запроса");

красиво выводит для просмотра "табличное представление" интересуемого объекта
26. PhoenixAOD 62 24.01.14 02:09 Сейчас в теме
(23) Rothschild, нашел косяк, спасибо за подсказку!
25. PhoenixAOD 62 24.01.14 02:09 Сейчас в теме
изменил немного запрос и все встало как надо.
	  "ВЫБРАТЬ
|	ХозрасчетныйОстаткиИОбороты.Организация,
|	ХозрасчетныйОстаткиИОбороты.Счет,
|	ХозрасчетныйОстаткиИОбороты.Субконто2,
|	ХозрасчетныйОстаткиИОбороты.Субконто1,
|	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт,
|	ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт,
|	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт,
|	ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокКт
|ПОМЕСТИТЬ Вт1
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Дата, &Дата, , ДвиженияИГраницыПериода, , , ) КАК ХозрасчетныйОстаткиИОбороты
|ГДЕ
|	ХозрасчетныйОстаткиИОбороты.Счет = &Счет
|	И ХозрасчетныйОстаткиИОбороты.Организация = &Организация
|;
|
| X 
|ВЫБРАТЬ
|	ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Организация,
|	ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата,
|	ИнвентаризацияТоваровНаСкладеТовары.Номенклатура,
|	ИнвентаризацияТоваровНаСкладеТовары.СчетУчета
|ПОМЕСТИТЬ Вт2
|ИЗ
|	Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
|ГДЕ
|	ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Дата = &Дата
|	И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.Организация = &Организация
|	И ИнвентаризацияТоваровНаСкладеТовары.Ссылка.ПометкаУдаления = ИСТИНА
|;
|
| X 
|ВЫБРАТЬ
|	Вт1.Организация,
|	Вт1.Счет,
|	Вт1.Субконто2,
|	Вт1.Субконто1,
|	Вт1.СуммаКонечныйОстатокДт,
|	Вт1.СуммаКонечныйОстатокКт,
|	Вт1.КоличествоКонечныйОстатокДт,
|	Вт1.КоличествоКонечныйОстатокКт,
|	Вт2.Организация КАК Организация1,
|	Вт2.Дата,
|	ВЫБОР
|		КОГДА Вт2.Номенклатура ЕСТЬ NULL 
|			ТОГДА 0
|		ИНАЧЕ 1
|	КОНЕЦ КАК Поле1,
|	Вт2.СчетУчета
|ПОМЕСТИТЬ Вт3
|ИЗ
|	Вт1 КАК Вт1
|		ЛЕВОЕ СОЕДИНЕНИЕ Вт2 КАК Вт2
|		ПО Вт1.Организация = Вт2.Организация
|			И Вт1.Субконто1 = Вт2.Номенклатура
|;
|
| X 
|ВЫБРАТЬ
|	Вт3.Организация,
|	Вт3.Счет,
|	Вт3.Субконто2,
|	Вт3.Субконто1 как Номенклатура,
|	Вт3.СуммаКонечныйОстатокДт КАК Сумма,
|	Вт3.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт,
|	Вт3.КоличествоКонечныйОстатокДт КАК Количество,
|	Вт3.КоличествоКонечныйОстатокКт КАК КоличествоКонечныйОстатокКт,
|	Вт3.Организация1,
|	Вт3.Дата,
|	Вт3.Поле1,
|	Вт3.СчетУчета
|ИЗ
|	Вт3 КАК Вт3";
Показать

Всем спасибо!
27. PhoenixAOD 62 24.01.14 02:10 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот