Легкая доработка документа "Требование-накладная"

1. AndrewUs 13 23.03.15 17:55 Сейчас в теме
Здравствуйте!
Мы пользуемся программой 1С Бухгалтерия Предприятия 2.0 и Альфа-авто: автосалон+автосервис+автозапчасти проф, ред 2.0
Между этими конфигурациями осуществлен обмен, но есть одна проблемка, которая усложняет жизнь, а именно, давальческое сырье. Для этого собственно и переделал "Требование-накладная". В документе создал две кнопки "В материалы заказчика" и "Перенести в материалы" на закладках "Материалы" и "Материалы заказчика" соответственно по аналогии с услугами и агентскими услугами в документе "Реализация товаров и услуг", но давальческого сырья много и перемещать по одной позиции неудобно. Подскажите, как можно переместить группу материалов, если они все на одном счете?
Спасибо.
По теме из базы знаний
Найденные решения
23. minimajack 80 30.03.15 12:10 Сейчас в теме
(21) AndrewUs,
    Давальческий = ПланыСчетов.Хозрасчетный.НайтиПоКоду("003.01");
    Для каждого СтрокаТабличнойЧасти из Материалы Цикл
			   Если ЗначениеЗаполнено(СтрокаТабличнойЧасти) 
				   И СтрокаТабличнойЧасти.Счет = Давальческий Тогда

                НоваяСтрока = МатериалыЗаказчика.Добавить();
                ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТабличнойЧасти);
                Материалы.Удалить(СтрокаТабличнойЧасти);
            КонецЕсли;    
    КонецЕсли;
Показать
Denis_CFO; AndrewUs; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Denis_CFO 49 23.03.15 18:11 Сейчас в теме
(1) AndrewUs, можно циклом:
Для каждого СтрокаМатериалаЗаказчика Из Объект.МатериалыЗаказчика Цикл
СтрокаМатериала = Объект.Материалы.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаМатериала, СтрокаМатериалаЗаказчика); //вот здесь, по-ходу надо источник и приемник местами поменять.
КонецЦикла

Вроде так должно работать, для колонок, с одинаковым названием.
10. minimajack 80 24.03.15 12:27 Сейчас в теме
вы используете текущие данные ЭлементыФормы.Материалы.ТекущиеДанные
попробуйте в цикле пройтись по всем материалам
типа (2)
	кУдалению = Новый Массив;
	Для каждого СтрокаТабличнойЧасти Из Материалы Цикл
		Если ЗначениеЗаполнено(СтрокаТабличнойЧасти) Тогда
			НоваяСтрока = МатериалыЗаказчика.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТабличнойЧасти);
			кУдалению.Добавить( СтрокаТабличнойЧасти);
		КонецЕсли;
	КонецЦикла
	//Удаляем перенесенные	
	Для каждого мСтрока Из кУдалению Цикл
		Материалы.Удалить(СтрокаТабличнойЧасти);
	КонецЦикла;
Показать
11. AndrewUs 13 24.03.15 12:39 Сейчас в теме
(10) minimajack,
{Документ.ТребованиеНакладная.Форма.ФормаДокумента.Форма(1182)}: Ошибка при вызове метода контекста (Удалить)
Материалы.Удалить(СтрокаТабличнойЧасти);
по причине:
Значение индекса выходит за границы диапазона
выдает ошибку, попутно увеличивая количество номенклатуры в документе.
12. minimajack 80 24.03.15 12:41 Сейчас в теме
(11) AndrewUs,
Материалы.Удалить(Материалы.Индекс(СтрокаТабличнойЧасти));
14. AndrewUs 13 24.03.15 12:45 Сейчас в теме
(12) minimajack, такая же ошибка
15. minimajack 80 24.03.15 12:53 Сейчас в теме
(14) AndrewUs, ну во первых на Легкая доработка документа "Требование-накладная" - это не катит. Так как в данном случае необходимо производить запрос и проверять позиции номенклатуры на остатках по счетам и в зависимости от этого перемещать - либо нет. Значит вам необходимо изучить что такое запрос, как получать остатки.
Решить что делать с материалом который в наличии и там и там...в каком порядке списывать.
В общем ищите готовое решение, альтруиста - либо нанимайте программиста.
16. AndrewUs 13 24.03.15 12:58 Сейчас в теме
(15) minimajack, понятно, спасибо большое за помощь, очень вам признателен.
17. AndrewUs 13 27.03.15 09:06 Сейчас в теме
(15) minimajack, Здравствуйте, а если не проверять наличие на складе, а просто, встав на строчку материала, счет учета которого 003.01, переместить все материалы, у которых совпадает счет учета?
18. Denis_CFO 49 28.03.15 20:00 Сейчас в теме
(17) AndrewUs, ну и поставь условие в цикле типа
Давальческий = ПланыСчетов.Хозрасчетный.НайтиПоКоду("003.01");
Если СтрокаТабличнойЧасти.СчетУчета = Давальческий Тогда
///пошло выполнение цикла как в (10) у minimajack
КонецЕсли;
AndrewUs; +1 Ответить
19. AndrewUs 13 28.03.15 20:30 Сейчас в теме
(18) Denis_CFO, Спасибо, я обязательно попробую.
20. AndrewUs 13 30.03.15 11:35 Сейчас в теме
(18) Denis_CFO, Попробовал, не получилось. Перемещение какое-то странное получается, часть перемещает, часть оставляет, да и еще и другие товары и материалы попадают, которые должны были остаться.
13. AndrewUs 13 24.03.15 12:43 Сейчас в теме
(10) minimajack, плюс этот цикл переносит все материалы, как я понял, а необходимо определенную группу. Сейчас объясню. В документ требование накладная попадают все материалы, которые списываются, как находящиеся в собственности организации так и давальческие. Собственные - учет на 41.01 (не обращайте внимания на то, что 41 счет), а давальческие - 003.01. Было бы все хорошо, если бы документ проводился. Но для корректного проведения необходимо, чтобы материалы на счете 003.01 переместились из вкладки "Материалы" на вкладку "Материалы заказчика" и только эти материалы, а не все.
5. Martinian 10 24.03.15 11:18 Сейчас в теме
(1) AndrewUs, знаете, что такое "Цикл"?
6. AndrewUs 13 24.03.15 11:53 Сейчас в теме
3. AndrewUs 13 24.03.15 10:20 Сейчас в теме
Сейчас у меня такая процедура:

СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;
	Если ЗначениеЗаполнено(СтрокаТабличнойЧасти) Тогда
		НоваяСтрока = МатериалыЗаказчика.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТабличнойЧасти);
		Материалы.Удалить(СтрокаТабличнойЧасти);
	КонецЕсли;
4. Tiger86 24.03.15 10:38 Сейчас в теме
ну вот совместите код из 2 и 3 поста и будет ваш вариант
7. AndrewUs 13 24.03.15 11:59 Сейчас в теме
Я прекрасно понимаю, ребят, что многие посмеиваются, встречая начинающих работу с 1С как программиста, но вы не забывайте, пожалуйста, что все такими были когда-то.
8. minimajack 80 24.03.15 12:15 Сейчас в теме
(7) AndrewUs, такими многие врятли были...прежде чем работать с механизмами - необходимо знать как устроены базовые конструкции языка - иначе много дров можно наломать. 1С - это прежде всего бизнес(деньги) - где любая ошибка может вылезти боком.
зы мне не смешно - мне грустно от того что вы не знаете
9. AndrewUs 13 24.03.15 12:21 Сейчас в теме
(8) minimajack, Если я не знаю, то отписываю сюда, в ожидании не "лекции" по поводу недостатков знания, а помощи ...
21. AndrewUs 13 30.03.15 11:40 Сейчас в теме
В процедуре прописано:
СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные;
	Давальческий = ПланыСчетов.Хозрасчетный.НайтиПоКоду("003.01");
	Если СтрокаТабличнойЧасти.Счет = Давальческий Тогда
		Для каждого СтрокаТабличнойЧасти из Материалы Цикл
			Если ЗначениеЗаполнено(СтрокаТабличнойЧасти) Тогда
				НоваяСтрока = МатериалыЗаказчика.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТабличнойЧасти);
				Материалы.Удалить(СтрокаТабличнойЧасти);
			КонецЕсли;	
		КонецЦикла;	
	КонецЕсли;
Показать


Уверен, что ошибся, но где? Подскажите, пожалуйста.
23. minimajack 80 30.03.15 12:10 Сейчас в теме
(21) AndrewUs,
    Давальческий = ПланыСчетов.Хозрасчетный.НайтиПоКоду("003.01");
    Для каждого СтрокаТабличнойЧасти из Материалы Цикл
			   Если ЗначениеЗаполнено(СтрокаТабличнойЧасти) 
				   И СтрокаТабличнойЧасти.Счет = Давальческий Тогда

                НоваяСтрока = МатериалыЗаказчика.Добавить();
                ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТабличнойЧасти);
                Материалы.Удалить(СтрокаТабличнойЧасти);
            КонецЕсли;    
    КонецЕсли;
Показать
Denis_CFO; AndrewUs; +2 Ответить
24. AndrewUs 13 30.03.15 12:30 Сейчас в теме
(23) minimajack, Спасибо, помогло. Правда не всегда все перемещает, но тут можно и допереместить.
Спасибо.
22. AndrewUs 13 30.03.15 11:51 Сейчас в теме
А самое интересное, что перемещение идет через один.
Оставьте свое сообщение

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