gifts2017

Списание спецодежды и спецоснастки

Опубликовал Ольга (kondrashka) в раздел Обработки - Обработка документов

Списание спецодежды и спецоснастки. 1С:Предприятие 8.1 (8.1.12.101), Управление производственным предприятием, редакция 1.2 (1.2.19.1). Одно списание за период для одного подразделения, но можно наложить фильтр по человеку и списать по нему.

Вводим дату, выбираем организацию и подразделение. Априори считаем на одно подразделение, т.к. создаем один документ списания.

Документ списания автоматически создается со способом списания расходов "Использовать назначение использования".

В начале можно сформировать предварительную печать, а потом по кнопке "Заполнить" заполняем, начиная от сохи.

Кнопка "Проставить на все" программно проставляет возможное списание, но никто не отменял и ручной ввод в поле Количество списания.

Кнопка "Снять у всех" говорит сама за себя.

Затем жмем кнопку "Сформировать документ" - ОК.

Если спецодежда или спецостастка была учтена только по УУ, тогда, оптичиваем, выбираем подразделение и вперед. В этом случае документ списания будет проведен только по УУ.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Списание спец одежды и спец оснастки
.1228818591 20,60Kb
18.10.14
184
.1228818591 20,60Kb 184 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Артур Аюханов (artbear) 12.12.08 09:55
1. Запрос медленный, т.к. отбор составлен неверно. Отбирать нужно в условиях для виртуальной таблицы.
2. Текст запроса ИМХО скопирован из какого-то отчета, т.к. в тексте полно секций с фигурными скобками { и }, которые в обычном запросе не используются.

И т.д. и т.п.
Исправляйся.
Тогда поставлю плюс.
2. Артур Аюханов (artbear) 12.12.08 10:22
(0)
3. также в запросе запрашивается куча ненужных полей
4. периодичность по регистратору также не нужна - убери запрос будет побыстрее.
5. Было бы удобно добавить заполнение с ограничением по физ.лицу.
3. Ольга (kondrashka) 12.12.08 10:23
Спасибо за комментарий! Запрос изменила, но у нас скорость запроса по старому =8, а по новому 6 сек на 450 строках. Это нормально.
Да, действительно запрос взят из какого-то отчета, но просто надо срочно, ведь конец года.
4. Ольга (kondrashka) 12.12.08 10:25
Заполнение с ограничением по физ.лицу не надо, тк документ списания оформляется
по подразделению, хотя уточню нужность у бухов. Запрос до конца упрощу позже.
Еще раз спасибо за науку!
5. Ольга (kondrashka) 12.12.08 11:21
Выложена последняя версия с упрощенным запросом. А где обещанный плюс?
6. Артур Аюханов (artbear) 12.12.08 12:26
(0) 6. Лучше юзать ВТ Остатки вместо ВТ ОстаткиИОбороты
7. Ольга (kondrashka) 12.12.08 12:29
Почему? Информация достоверна в обоих.
8. Артур Аюханов (artbear) 12.12.08 12:38
7. За такой код
Код
   Номенклатура.Загрузить(Запрос.Выполнить().Выгрузить());
   Номенклатура.Свернуть("ФизЛицо,Номенклатура,НазначениеИспользования,ДокументПередачи", "КолПриход,КолРасход,СумПриход,СумРасход,ПогашСумПриход,ПогашСумРасход");
   Для Каждого ТекущаяСтрока Из Номенклатура Цикл
      ТекущаяСтрока.Остаток = ТекущаяСтрока.СумПриход - ТекущаяСтрока.ПогашСумПриход;
      ТекущаяСтрока.Дата= ТекущаяСтрока.ДокументПередачи.Дата;
      ТекущаяСтрока.Срок=ТекущаяСтрока.НазначениеИспользования.СрокПолезногоИспользования;
   КонецЦикла;   
Показать полностью


Плюс ты никак не получишь :(
Весь этот код прекрасно выполняется в запросе - т.е. выше скорость выполнения, код проще и т.д.

Например, я только что сделал аналогичную обработку по заполнению ТЧ для списания спец.одежды по организации, подразделению, физ.лицу.
Там все просто :) :
Код
РезультатЗапроса = ПолучитьРезультатЗапроса(Объект.Дата, Организация, Подразделение, ФизЛицо);
Объект[ИмяТабличнойЧасти].Загрузить(РезультатЗапроса.Выгрузить());
Показать полностью

9. Артур Аюханов (artbear) 12.12.08 12:40
(7) Тебе же нужны только остатки на нужную дату, движения/обороты ты зря юзаешь :( ИМХО это неверно.
10. Ольга (kondrashka) 12.12.08 12:45
Хорошо, убедил. На следующей неделе исправлю. Но, по-моему, ты теоретик, что-то все выкапываешь, а я практик, на мне кроме этого весь УПП висит,
от З/П до себестоимости. Критику восприняла. Исправлюсь..., но все же плюсани!
Хотя бы за то, что прислушиваюсь, и принимаю к действию...
11. Артур Аюханов (artbear) 12.12.08 12:49
(10) Без теории нормальной практики не будет :)
Если ты сделаешь нормальный вариант, и самой будет полезно, и людям приятно :)

На мне самом висит и УПП, и ЗУП-ы разных контор, + куча различных семерочных баз и т.д. и т.п.

Не обижайся, твой опыт только повысится от этого, в следующий раз другую вещь лучше и быстрее сделаешь.

Жду исправлений, а уж потом будет плюс :)
12. Ольга (kondrashka) 12.12.08 13:24
Исправила запрос по заполнению, но в печатной форме бухи хотят видеть и приход и расход, так что оставила. Реагируй!
13. Артур Аюханов (artbear) 12.12.08 13:32
(0) Также в описании нужно отметить, что обработка рассчитана на очень специфически способ ведения учета :( - одно списание за период для одного подразделения, т.е. не очень универсальна, к сожалению.
14. Артур Аюханов (artbear) 12.12.08 13:36
(12) Бухгалтеров сильно не слушай, они очень часто сами не знают, что хотят :(
Зачем им в данной обработке все движения за всю жизнь базы?
Для этого существуют штатные специализированные отчеты по спецодежде, например, по партиям.

В итоге сейчас тратится куча времени на получение движений :(
Убери в запросе периодичность по регистратору, жить станет веселее :)
15. Ольга (kondrashka) 12.12.08 13:37
16. Артур Аюханов (artbear) 12.12.08 13:39
(12) Твоя обработка предназначена только для списания, поэтому тут никакие приходы/расходы не нужны, а только остатки на текущий/нужный момент.

Юзай ВТ Остатки.

ЗЫ все равно отчет по партиям материалов в эксплуатации мощнее твоей обработки, за ним не нужно гнаться - отборы, группировки и т.п. настройки там лучше.
17. Ольга (kondrashka) 12.12.08 13:42
Не каждый пользователь может настроить так как ему надо, и потом, здесь есть АВТОМАТИЧЕСКОЕ формирование всего...
18. Артур Аюханов (artbear) 12.12.08 13:46
(15) Цитата: "Одно списание за период для одного подразделения, но можно наложить фильтр по человеку и списать по нему."
В коде не увидел ничего подобного по физ.лицу :(
Тестирование также показало, что отбор по физ.лицу не действует :(

Далее - у тебя практически одинаковые куски кода по УУ и БУ, убери это дублирование, и код станет проще и надежнее.

Также поправь код
[code]
|ИЗ
| РегистрНакопления.ПартииМатериаловВЭксплуатации.Остатки(
| &ДатаКон,
| Подразделение = &Подразделение
| И ДокументПередачи.Проведен = &Проведен) КАК ПартииМатериаловВЭксплуатацииОстатки
|ГДЕ
| ПартииМатериаловВЭксплуатацииОстатки.ДокументПередачи.Проведен = &Проведен
[\code]
1. Одна проверка на Проведен лишняя :)
2. Если нужен только непроведенный док, можно написать проще - НЕ ДокументПередачи.Проведен - т.е. без лишнего параметра
19. Артур Аюханов (artbear) 12.12.08 13:48
(17) Пользователя очень-очень редко нужно все :(
Большие объемы данных все равно никто никогда не будет разбирать, это давным-давно известно.

В УПП в типовых отчетах есть возможность импортировать чужие настройки как свои прямо в форме отчета, очень удобная фича как раз для разных пользователей.
20. Ольга (kondrashka) 12.12.08 13:52
"Тестирование также показало, что отбор по физ.лицу не действует :("
все работает, а то как бы мы могли проверять по бешеному кол-ву людей!!!
"В коде не увидел ничего подобного по физ.лицу :(" а это и не в коде, а в фильтре на ТЧ
И, вообще это выискивание блох...
21. Ольга (kondrashka) 12.12.08 13:55
А двойное условие - из-за того, что торопилась.Sorry!
22. Артур Аюханов (artbear) 12.12.08 13:58
(20) Еще небольшая подсказка:
Вместо кода типа
Код
НовСтрока.Номенклатура         = ТекНоменклатура.Номенклатура;
НовСтрока.ФизЛицо=ТекНоменклатура.ФизЛицо;
НовСтрока.ЕдиницаИзмерения      = ТекНоменклатура.Номенклатура.ЕдиницаХраненияОстатков;
НовСтрока.Количество         = ТекНоменклатура.КоличествоСписания;
НовСтрока.НазначениеИспользования= ТекНоменклатура.НазначениеИспользования;
НовСтрока.Коэффициент         = 1;
НовСтрока.ДокументПередачи= ТекНоменклатура.ДокументПередачи;
Показать полностью

можно, а чаще всего нужно, написать проще и быстрее:
Код
ЗаполнитьЗначенияСвойств(НовСтрока, ТекНоменклатура);
НовСтрока.ЕдиницаИзмерения      = ТекНоменклатура.Номенклатура.ЕдиницаХраненияОстатков;
НовСтрока.Количество         = ТекНоменклатура.КоличествоСписания;
Показать полностью

Т.е. все одинаковые свойства 1С сама быстро занесет в НовСтрока, а ты только те, у которых наименования расходятся :)
23. Артур Аюханов (artbear) 12.12.08 14:11
Кстати, вот код моей обработки для заполнения табличной части документа списания по организации, подразделению и физ.лицу - как раз вчера написал :)
Дарю :)
Код
#Если Клиент Тогда
   
Функция ПолучитьРезультатЗапроса(ДатаАктуальности, Организация, Подразделение, ФизЛицо)
   
   Запрос = Новый Запрос(
   "
   |ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.Номенклатура,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.ДокументПередачи,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.ФизЛицо,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.НазначениеИспользования,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.ХарактеристикаНоменклатуры,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.СерияНоменклатуры,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.КоличествоОстаток КАК Количество,
   |   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.КоличествоОстаток КАК КоличествоМест
   //,
   //|   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.СтоимостьОстаток КАК Сумма,
   //|   ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки.СтоимостьОстаток КАК СуммаРегл
   |   , Значение(ПланСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации) КАК СчетПередачиБУ
   |   , Значение(ПланСчетов.Налоговый.СпецоснасткаИСпецодеждаВЭксплуатации) КАК СчетПередачиНУ
   |   ,1 КАК Коэффициент
   |ИЗ
   |   РегистрНакопления.ПартииМатериаловВЭксплуатацииБухгалтерскийУчет.Остатки(
   |         &ДатаКон,
   |         Организация = &Организация
   |            И Подразделение = &Подразделение
   |            И ФизЛицо = &ФизЛицо) КАК ПартииМатериаловВЭксплуатацииБухгалтерскийУчетОстатки
   |");
   
   Запрос.УстановитьПараметр("ДатаКон", ДатаАктуальности);
   Запрос.УстановитьПараметр("Организация", Организация);
   Запрос.УстановитьПараметр("Подразделение", Подразделение);
   Запрос.УстановитьПараметр("ФизЛицо", ФизЛицо);
   
   РезультатЗапроса = Запрос.Выполнить();
   Возврат РезультатЗапроса;
КонецФункции
 
// Основная процедура заполнения, вызываемая системой      
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) экспорт
   Организация = Объект.Организация;
   Если НЕ ЗначениеЗаполнено(Организация) Тогда
      Сообщить("Не выбрана организация");
      Возврат;   
   КонецЕсли; 
   
   //Подразделение = Объект.Подразделение;
   Подразделение = Объект.ПодразделениеОрганизации;
   Если НЕ ЗначениеЗаполнено(Подразделение) Тогда
      Сообщить("Не выбрано Подразделение");
      Возврат;   
   КонецЕсли; 
   
   лКлючУникальности = Новый УникальныйИдентификатор;
   Форма = Справочники.ФизическиеЛица.ПолучитьФормуВыбора(, лКлючУникальности);
   ФизЛицо = Форма.ОткрытьМодально();
   Если НЕ ЗначениеЗаполнено(ФизЛицо) Тогда
      Сообщить("Не выбрано физ.лицо");
      ВОзврат;
   КонецЕсли;
   
   РезультатЗапроса = ПолучитьРезультатЗапроса(Объект.Дата, Организация, Подразделение, ФизЛицо);
   Объект[ИмяТабличнойЧасти].Загрузить(РезультатЗапроса.Выгрузить());
КонецПроцедуры

#КонецЕсли
Показать полностью


Этот код нужно занести в обработку типа epf и далее как обычно - хорошее описание такой схемы есть в http://infostart.ru/blogs/345/?ref=4246
24. Ольга (kondrashka) 12.12.08 14:14
За подарок и ликбез спасибо.
25. Артур Аюханов (artbear) 12.12.08 14:17
(20) По отбору по физ.лицу
у тебя самой написано: "можно наложить фильтр по человеку и списать по нему."
Я же говорю именно о списании по физ.лицу, а не о отборе в табличной части :)
Попробуй наложи этот фильтр и сделай так, чтобы документ создался только по этому человеку.
А ведь этого не получится в текущем варианте обработки - ИМХО! Если не прав, жду комментария :)

ЗЫ да и сама подумай, если у тебя возможен всего один док на подразделение, значит, списание на одного чела не имеет смысла, т.к. списание на след.чела удалит пред.документ :(
26. Ольга (kondrashka) 12.12.08 14:32
У нас задача списания по человеку не стояла. Надо было списать по подразделению,
а фильтр для удобства работы. Обойдут всех челов, а потом только жмут на сформировать документ. Согласна, что можно доработать - ведь нет предела совершенству...
Выложила, что получилось( удобное и работающее у меня), код открыт, кому надо тот
доделает!
27. Николай Корнев (kns77) 11.04.12 09:45
То что мне надо, только почему то списывает одно и тоже каждый месяц, я списал ботинки уже с человека, а он на следующий месяц опять их же списывает. Сейчас буду искать и править ошибку.
28. Николай Корнев (kns77) 11.04.12 10:11
Видимо ошибка в комплексной конфе, документ списание материалов из эксплуатации не влияет на регистр накопления "Партии материалов в эксплуатации". Но влияет на регистр "материалы в эксплуатации"
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа