![]() |
|
v7: Порядки обхода запроса по бухитогам | ☑ | ||
---|---|---|---|---|
0
Tester
18.09.13
✎
17:14
|
Всем привет. Вроде опыта в 1С 7.7 достаточно, но попытки оптимизации в плане увеличения быстродействия привели в тупик.
Хочу выполнить один запрос к бухитогам по разным счетам, а потом только лишь обрабатывать результаты данного запроса. Выгрузки бухитогов в 2-мерную таблицы значений нету, потэтому приходится извращаться с обходами результатов. В общем вначале выполняется запрос, а потом 2 процедуры //******************************************* Процедура ПолучитьОстаток(Партия) Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет() = 1 Цикл Если Ит.Счет <> СчетПоКоду("РЗ") Тогда Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Если Ит.СКД("К") <> 0 Тогда ТЗ.Остаток = ТЗ.Остаток + Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры //******************************************* Процедура ПолучитьРезерв(Партия) Если Ит.ПолучитьСчет(, СчетПоКоду("РЗ")) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Если Ит.СКД("К") <> 0 Тогда ТЗ.Резерв = ТЗ.Резерв + Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры В одной процедуре мне нужно: 1. Получить партию 2. Перебрать счета 3. Перебрать склады А во второй: 1. Получить счет 2. Получить партию 3. Перебрать склады Процедура выполняются поочереди: 1-я, 2-я, 1-я, 2-я и т.д. для всех строк ТЗ. |
|||
1
zak555
18.09.13
✎
17:15
|
запрос весь где ?
|
|||
2
Tester
18.09.13
✎
17:18
|
Проблема в том, что 1-я работает правильно, 2-я нет. Если во второй поменять местами строки
Если Ит.ПолучитьСчет(, СчетПоКоду("РЗ")) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда то все работает. |
|||
3
Tester
18.09.13
✎
17:19
|
Вставлю весь код:
Перем Ит; //******************************************* //Процедура ПолучитьСклады(Партия) // Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда // Ит.ВыбратьСчета(); // Пока Ит.ПолучитьСчет() = 1 Цикл // Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); // Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл // ТЗ.Склад = ?(ПустоеЗначение(ТЗ.Склад)=1, СокрЛП(Ит.Субконто(ВидыСубконто.МестаХранения).Наименование), ТЗ.Склад + ", " + СокрЛП(Ит.Субконто(ВидыСубконто.МестаХранения))); // КонецЦикла; // КонецЦикла; // КонецЕсли; //КонецПроцедуры //******************************************* Процедура ПолучитьОстаток(Партия) Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет() = 1 Цикл Если Ит.Счет <> СчетПоКоду("РЗ") Тогда Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Если Ит.СКД("К") <> 0 Тогда ТЗ.Остаток = ТЗ.Остаток + Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры //******************************************* Процедура ПолучитьРезерв(Партия) Если Ит.ПолучитьСчет(, СчетПоКоду("РЗ")) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Если Ит.СКД("К") <> 0 Тогда ТЗ.Резерв = ТЗ.Резерв + Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры //******************************************* Процедура Сформировать() ТЗ.Очистить(); ТЗ.НоваяКолонка("Партия", "Справочник.Партии"); ТЗ.НоваяКолонка("Склад", "Строка"); ТЗ.НоваяКолонка("Остаток", "Число", 15, 3); ТЗ.НоваяКолонка("Резерв", "Число", 15, 3); Товар = СоздатьОбъект("Справочник.Номенклатура"); Товар.НайтиПоКоду("С00010738"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ВыполнитьЗапрос(, '10.09.2013', "41.1, 43.1, 41.5, РЗ",,,,, "К"); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет() = 1 Цикл Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Ит.ВыбратьСубконто(ВидыСубконто.Партии); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии) = 1 Цикл Если Ит.СКД("К") > 0 Тогда ТЗ.НоваяСтрока(); ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; // Повторим на всякий случай запрос, чтобы не иметь зависимости от результатов обхода Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ВыполнитьЗапрос(, '10.09.2013', "41.1, 43.1, 41.5, РЗ",,,,, "К"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл //ПолучитьСклады(ТЗ.Партия); ПолучитьОстаток(ТЗ.Партия); ПолучитьРезерв(ТЗ.Партия); КонецЦикла; КонецПроцедуры |
|||
4
Ёпрст
гуру
18.09.13
✎
17:29
|
>>>// Повторим на всякий случай запрос, чтобы не иметь зависимости от результатов обхода
Зачет, ага.. Ты это, в цикл его оберни, а то быстро слишком работает, не разглядеть ни черта, всё мелькает на экране - гораздо приятнее смотреть на белый мёртвый фон, на нём мухи отчетливее видны. |
|||
5
zak555
18.09.13
✎
17:33
|
почему отбор непоследний в использоватьСбуконто ?
|
|||
6
Tester
18.09.13
✎
17:36
|
(5) я же написал, что 2-й запрос здесь временно для исключения влияние результатов предыдущих обходов.
Объясни лучше как обходить по разным уровням итоги одного запроса?! |
|||
7
Tester
18.09.13
✎
17:37
|
(5) а какая разница 1-й он или последний?
|
|||
8
zak555
18.09.13
✎
17:37
|
(6) и первый и второй запросы неверны
|
|||
9
zak555
18.09.13
✎
17:38
|
перепиши так
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2); Ит.ВыполнитьЗапрос(, '10.09.2013', "41.1, 43.1, 41.5, РЗ",,,,, "К"); будет быстрее |
|||
10
Tester
18.09.13
✎
17:40
|
(9) Проверил, не влияет! Тут проблема в 2-й процедурах с разными порядками обхода.
Игрался с ВыбратьСчета(1) и с ВыбратьСубконто(, 1) - результат меняется, но все равно логики не пойму. |
|||
11
zak555
18.09.13
✎
17:43
|
зачем рассчитывать остатки по счету РЗ, если его результат не смотрится ?
|
|||
12
Tester
18.09.13
✎
17:45
|
Все смотрится: Процедура ПолучитьРезерв(Партия)
|
|||
13
Tester
18.09.13
✎
17:48
|
Сори, но вот ужал код, чтобы не было всяких ёпрст (без обид :-D ):
Перем Ит; //******************************************* Процедура ПолучитьОстаток(Партия) Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет() = 1 Цикл Если Ит.Счет <> СчетПоКоду("РЗ") Тогда Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Если Ит.СКД("К") <> 0 Тогда ТЗ.Остаток = ТЗ.Остаток + Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры //******************************************* Процедура ПолучитьРезерв(Партия) Если Ит.ПолучитьСчет(, СчетПоКоду("РЗ")) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Партии, , Партия) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Если Ит.СКД("К") <> 0 Тогда ТЗ.Резерв = ТЗ.Резерв + Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры //******************************************* Процедура Сформировать() ТЗ.Очистить(); ТЗ.НоваяКолонка("Партия", "Справочник.Партии"); ТЗ.НоваяКолонка("Склад", "Строка"); ТЗ.НоваяКолонка("Остаток", "Число", 15, 3); ТЗ.НоваяКолонка("Резерв", "Число", 15, 3); Товар = СоздатьОбъект("Справочник.Номенклатура"); Товар.НайтиПоКоду("С00010738"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2); Ит.ВыполнитьЗапрос(, '10.09.2013', "41.1, 43.1, 41.5, РЗ",,,,, "К"); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет() = 1 Цикл Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Ит.ВыбратьСубконто(ВидыСубконто.Партии); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии) = 1 Цикл Если Ит.СКД("К") > 0 Тогда ТЗ.НоваяСтрока(); ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ПолучитьОстаток(ТЗ.Партия); ПолучитьРезерв(ТЗ.Партия); КонецЦикла; КонецПроцедуры |
|||
14
zak555
18.09.13
✎
17:48
|
я всё равно не понял -- какая задача
|
|||
15
zak555
18.09.13
✎
17:49
|
+ (14) и почему нельзя получить ТЗ за один обход ?
|
|||
16
Tester
18.09.13
✎
17:51
|
(14) Задача любопытства. Выполняем 1 запрос, а после в разных процедурах получаем данные по результату запроса в различных разрезах и с разными порядками обхода результатов!
(15) За 1 обход получить можно без проблем, но... задача любопытства :) |
|||
17
Ёпрст
гуру
18.09.13
✎
17:53
|
(15) дык нужно замедлить, не мешай эксперементатору.
:) |
|||
18
zak555
18.09.13
✎
17:58
|
а так ?
ТЗ.Очистить(); ТЗ.НоваяКолонка("Партия", "Справочник.Партии"); ТЗ.НоваяКолонка("Склад", "Строка"); ТЗ.НоваяКолонка("Остаток", "Число", 15, 3); ТЗ.НоваяКолонка("Резерв", "Число", 15, 3); Товар = СоздатьОбъект("Справочник.Номенклатура"); Товар.НайтиПоКоду("С00010738"); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура, Товар, 2); Ит.ВыполнитьЗапрос(, '10.09.2013', "41.1, 43.1, 41.5, РЗ",,,,, "К"); Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения); Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл Ит.ВыбратьСубконто(ВидыСубконто.Партии); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии) = 1 Цикл Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет() = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Склад = Ит.Субконто(ВидыСубконто.МестаХранения) ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); Если Ит.Счет = СчетПоКоду("РЗ") Тогда ТЗ.Резерв = Ит.СКД("К"); Иначе ТЗ.Остаток = Ит.СКД("К"); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; ТЗ.Свернуть("Партия, Склад", "Резерв,Остаток"); |
|||
19
Tester
18.09.13
✎
18:06
|
(18) Спасибо, так будет работать. Но, не знаю как объяснить, нужно, чтобы был 1 запрос (!) и 2 разных (!) перебора результатов, например 1-й по по счетам/партиям, а 2-й по партиям/счетам и они должны следовать друг за другом для каждой строчки ТЗ!!!
В общем на сегодня спасибо за помощь, завтра буду дальше ковырять... |
|||
20
ADirks
18.09.13
✎
19:30
|
(0) Если нужна оптимизация - возьми AccounsRecordset http://www.1cpp.ru/forum/YaBB.pl?num=1181817217
работать с семёркой штатными методами ... ну, можно сказать, моветон уже ... |
|||
21
zak555
18.09.13
✎
19:31
|
(19) я не понимаю
|
|||
22
Tester
19.09.13
✎
11:35
|
Новый вброс :)
На форме ТЗ и 3 кнопки. Код такой: Перем Ит; //******************************************* Процедура Кнопка1ВыполнениеЗапроса() ТЗ.Очистить(); ТЗ.НоваяКолонка("Склад", "Справочник.МестаХранения"); ТЗ.НоваяКолонка("Товар", "Справочник.Номенклатура"); ТЗ.НоваяКолонка("Партия", "Справочник.Партии"); ТЗ.НоваяКолонка("Остаток", "Число", 15, 3); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ВыполнитьЗапрос(, РабочаяДата(), "41.1"); КонецПроцедуры //******************************************* Процедура Кнопка2ПолучениеИтоговПоСкладуИТовару() Если ПустоеЗначение(Ит) = 0 Тогда ТЗ.УдалитьСтроки(); Склад = СоздатьОбъект("Справочник.МестаХранения"); Товар = СоздатьОбъект("Справочник.Номенклатура"); Если (Склад.НайтиПоНаименованию("Склад №1") = 1) и (Товар.НайтиПоКоду("С00010738") = 1) Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения, , Склад) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Номенклатура, , Товар) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.Партии); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии) = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Склад = Ит.Субконто(ВидыСубконто.МестаХранения); ТЗ.Товар = Ит.Субконто(ВидыСубконто.Номенклатура); ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); ТЗ.Остаток = Ит.СКД("К"); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры //******************************************* Процедура Кнопка3ПолучениеИтоговПоТоваруИСкладу() Если ПустоеЗначение(Ит) = 0 Тогда ТЗ.УдалитьСтроки(); Склад = СоздатьОбъект("Справочник.МестаХранения"); Товар = СоздатьОбъект("Справочник.Номенклатура"); Если (Склад.НайтиПоНаименованию("Склад №1") = 1) и (Товар.НайтиПоКоду("С00010738") = 1) Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Номенклатура, , Товар) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения, , Склад) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.Партии); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии) = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Склад = Ит.Субконто(ВидыСубконто.МестаХранения); ТЗ.Товар = Ит.Субконто(ВидыСубконто.Номенклатура); ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); ТЗ.Остаток = Ит.СКД("К"); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Порядок нажатия кнопок: 1, 2 - получаем на складе "Склад №1" все партии товара "Арматура А500С 8мм" 1, 3 - получаем на складе "Склад №1" все партии товара "Арматура А500С 8мм" 1, 2, 3 - получаем остатки всех партий всех (!) товаров на складе "Склад № 1" 1, 3, 2 - получаем остатки всех партий товара "Арматура А500С 8мм" на всех (!) складах. Вопрос: как добиться единообразного(!) выполнения всех четырех вариантов комбинаций кнопок, не меняя (!) порядков обхода процедур? Другими словами, как после выполнения кнопки 2 сбить курсор в Ит, чтобы кнопка 3 выполнилась с таким же результатом? |
|||
23
Tester
19.09.13
✎
14:34
|
Разобрался вроде, но только с 1-м способом.
1-й способ - задача решается с помощью разделения выборок по номерам. Вот реально работающий код: Перем Ит; //******************************************* Процедура Кнопка1ВыполнениеЗапроса() ТЗ.Очистить(); ТЗ.НоваяКолонка("Склад", "Справочник.МестаХранения"); ТЗ.НоваяКолонка("Товар", "Справочник.Номенклатура"); ТЗ.НоваяКолонка("Партия", "Справочник.Партии"); ТЗ.НоваяКолонка("Остаток", "Число", 15, 3); Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.Партии); Ит.ВыполнитьЗапрос(, РабочаяДата(), "41.1"); КонецПроцедуры //******************************************* Процедура Кнопка2ПолучениеИтоговПоСкладуИТовару() Если ПустоеЗначение(Ит) = 0 Тогда ТЗ.УдалитьСтроки(); Склад = СоздатьОбъект("Справочник.МестаХранения"); Товар = СоздатьОбъект("Справочник.Номенклатура"); Если (Склад.НайтиПоНаименованию("Склад №1") = 1) и (Товар.НайтиПоКоду("С00010738") = 1) Тогда //// Открытие выборки по всем субконто //Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения, 1); //Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения); //Ит.ВыбратьСубконто(ВидыСубконто.Номенклатура, 1); //Ит.ПолучитьСубконто(ВидыСубконто.Номенклатура); //Ит.ВыбратьСубконто(ВидыСубконто.Партии, 1); //Ит.ПолучитьСубконто(ВидыСубконто.Партии); Если Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения, 1, Склад) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.Номенклатура, 1, Товар) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.Партии, , , 1); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии, 1) = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Склад = Ит.Субконто(ВидыСубконто.МестаХранения); ТЗ.Товар = Ит.Субконто(ВидыСубконто.Номенклатура); ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); ТЗ.Остаток = Ит.СКД("К"); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры //******************************************* Процедура Кнопка3ПолучениеИтоговПоТоваруИСкладу() Если ПустоеЗначение(Ит) = 0 Тогда ТЗ.УдалитьСтроки(); Склад = СоздатьОбъект("Справочник.МестаХранения"); Товар = СоздатьОбъект("Справочник.Номенклатура"); Если (Склад.НайтиПоНаименованию("Склад №1") = 1) и (Товар.НайтиПоКоду("С00010738") = 1) Тогда //// Открытие выборки по всем субконто //Ит.ВыбратьСубконто(ВидыСубконто.Номенклатура, 1); //Ит.ПолучитьСубконто(ВидыСубконто.Номенклатура); //Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения, 1); //Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения); //Ит.ВыбратьСубконто(ВидыСубконто.Партии, 1); //Ит.ПолучитьСубконто(ВидыСубконто.Партии); Если Ит.ПолучитьСубконто(ВидыСубконто.Номенклатура, 2, Товар) = 1 Тогда Если Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения, 2, Склад) = 1 Тогда Ит.ВыбратьСубконто(ВидыСубконто.Партии, , , 2); Пока Ит.ПолучитьСубконто(ВидыСубконто.Партии, 2) = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Склад = Ит.Субконто(ВидыСубконто.МестаХранения); ТЗ.Товар = Ит.Субконто(ВидыСубконто.Номенклатура); ТЗ.Партия = Ит.Субконто(ВидыСубконто.Партии); ТЗ.Остаток = Ит.СКД("К"); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры 2-й способ - без разделения на выборки с помощью открытия выборки по всем субконто (закомментированные участки кода), но я не могу разобраться в какой последовательности нужно переоткрывать выборки по всем субконто, как не игрался, результата не принесло. Если кто-то пояснит, то буду рад... |
|||
24
Tester
19.09.13
✎
15:25
|
Похоже я, как обычно, подвесил всех своими нетривиальными задачами :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |