Имя: Пароль:
1C
1C 7.7
v7: Бухитоги (партионный учет): вытянуть документ и количество ТМЦ по нему
,
0 1CLOH
 
18.10.11
12:14
Здравствуйте.
Изучаю потихоньку программинг в 1С (7-ку и 8-ку) на примере типовых конфигураций.
Сильно не пинайте, только учусь.
Вот добрался до партионного учета. Речь будет идти о 7-ке.

В бухгалтерской конфигурации (установлена только компонента бухучета) партии присутствуют в виде подчиненного справочника "Партии", который имеет всего три реквизита: Док (ссылка на документ прихода), Цена_прих и Дата_прих.
ПН при проведении создает новый элемент в этом справочнике, а затем эти партии учитываются в расходных и возвратных документах.
Правда в типовой конфигурации полноценно не реализовано автоматическое списание и подстановка партий в расходных документах (там это делается руками).

В своей учебной конфигурауции я хочу реализовать автоматическую подборку партий по FIFO.
Поскольку все это дело варится только в рамках компоненты бухучета (т.е. нет регистров), то попытался сделать сие через бухзапросы:

Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит1.ИспользоватьСубконто(ВидыСубконто.МестаХранения, ЗаполнитьСклад(1), 2);
Ит1.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ТоварБезНДС, 2);
Ит1.ВыполнитьЗапрос(ДатаПН,,"281",,,,,4);
Ит1.ВыбратьСубконто(ВидыСубконто.ТМЦ);
Пока Ит1.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл
  Сообщить(Ит1.СНД(3));
КонецЦикла;

Этот код получает документы с ненулевыми остатками по данному складу и товару. Цену прихода пока не учитываем.
На выводе в окне сообщений видим:

ПН-000001
ПН-000002
ПН-000003
ПН-000004
...
ПН-00000N

Вопрос.
Как получить еще и количество на складе ? Т.е. чтобы в выводе было:

ПН-000001 --- 143 шт.

Можно ли это реализовать через бухзапросы или нужно использовать Язык запросов ?
1 viktor_vv
 
18.10.11
12:17
Текст сообщения не соотвествует коду. Или код не оттуда или сообщение не из этого кода.
2 1CLOH
 
18.10.11
12:18
Извиняюсь, действительно не то, вот правильный:

Ит2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит2.ИспользоватьСубконто(ВидыСубконто.Партии,, 1);
Ит2.ИспользоватьСубконто(ВидыСубконто.МестаХранения, ЗаполнитьСклад(1), 2);
Ит2.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ТоварБезНДС, 2);
Ит2.ВыполнитьЗапрос(ДатаПН,,"281",,,,,);
Ит2.ВыбратьСубконто(ВидыСубконто.Партии);
Пока Ит2.ПолучитьСубконто() = 1 Цикл
  Сообщить(Ит2.Субконто());
КонецЦикла;
3 viktor_vv
 
18.10.11
12:22
Сообщить(""+Ит2.Субконто()+"--"+Ит2.СНД(3)+" шт.");

и вот здесь лучше сам документ передавать в виде границ запроса.

Ит2.ВыполнитьЗапрос(ПеременнаяСДокументом,,"281",,,,,);
4 viktor_vv
 
18.10.11
12:24
Только кажется в укрбухии там и так все это есть.
5 1CLOH
 
18.10.11
12:33
ммм, не работает:

Ит2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит2.ИспользоватьСубконто(ВидыСубконто.Партии,, 1);
Ит2.ИспользоватьСубконто(ВидыСубконто.МестаХранения, ЗаполнитьСклад(1), 2);
Ит2.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ТоварБезНДС, 2);
Ит2.ВыполнитьЗапрос(ДатаДок,,"281",,,,,);
Ит2.ВыбратьСубконто(ВидыСубконто.Партии);
Пока Ит2.ПолучитьСубконто() = 1 Цикл
  Сообщить(Ит2.Субконто() + " --- " + Ит2.СНД(3) + " шт.");
КонецЦикла;

Просто выводит документы ПН как и раньше, без указания кол-ва.
Штатная ОСВ по счету выводит и кол-во, т.е. операции по счету есть.

В той, на которой учусь (БУ для Украины, 7.70.288) - насколько смог разобраться даже при выставленном методе списания FIFO все равно в РН требует руками выставить партию в строке, а в возвратных вообще создает новую партию специально для списания. Да и еще при удалении ПН партия не удаляется, просто нет такого кода (или вызова из Глобального модуля) в обработке отмены проведения/удаления.
6 zuza
 
18.10.11
12:37
а так?
Ит2 = СоздатьОбъект("БухгалтерскиеИтоги");
Ит2.ИспользоватьСубконто(ВидыСубконто.Партии,, 1);
Ит2.ИспользоватьСубконто(ВидыСубконто.МестаХранения, ЗаполнитьСклад(1), 2);
Ит2.ИспользоватьСубконто(ВидыСубконто.ТМЦ, ТоварБезНДС, 2);
Ит2.ВыполнитьЗапрос(ДатаДок,,"281",,,,,);
Ит2.ВыбратьСубконто(ВидыСубконто.Партии);
Пока Ит2.ПолучитьСубконто() = 1 Цикл
  Сообщить(""+Ит2.Субконто() + " --- " + Ит2.СНД(3) + " шт.");
КонецЦикла;
7 1CLOH
 
18.10.11
12:37
По поводу отсутствия удаления партии при удалении документа ПН - проверял в работе, если документ ПН удалить, в справочнике партия остается.
8 1CLOH
 
18.10.11
12:40
(3), (6)
Допер :-)

Сообщить(СокрП(Ит2.Субконто()) + " --- " + Ит2.СНД(3) + " шт.");

Тоже работает :-)
9 zuza
 
18.10.11
12:41
(8) к строке привести надо было ;)
10 1CLOH
 
18.10.11
12:43
(9)
Ааа. А я то думал что в окно сообщения строка не влезает, потому и удалить пробелы надо.

А по поводу корректности остатков - этот бухзапрос ведь показывает реальные остатки в разрезе партий, ТМЦ и склада на дату документа ?
11 zuza
 
18.10.11
12:46
(10) Вроде, да.
12 1CLOH
 
18.10.11
12:47
Ок, всем пасиба !
13 1CLOH
 
18.10.11
13:32
Извиняюсь, а заодно упорядочить все партии по реквизиту даты прихода в бухгалтерском запросе ведь нельзя ?
14 1CLOH
 
18.10.11
13:34
Потому что иначе по FIFO придется использовать Язык запросов или бухзапросом выводить результаты в таблицу значений и затем ее упорядочивать
15 viktor_vv
 
18.10.11
13:54
ну и в зависимости от FIFO или LIFO
ЗначениеДляОбратногоПорядка = 0 или 1 ;

Ит2.ВыбратьСубконто(ВидыСубконто.Партии,,,,,"Дата_прих",ЗначениеДляОбратногоПорядка);
16 1CLOH
 
18.10.11
14:00
(15) Ок, БОЛЬШОЕ спасибо.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой