|
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) Ок, БОЛЬШОЕ спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |