Показано с 1 по 10 из 13
Комбинированный просмотр
-
07.08.2016, 02:49 #1
- Регистрация
- 10.07.2016
- Сообщений
- 12
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Доброй ночи уважаемые форумчане!
Толкнулся с проблемой проведения программно созданного документа - Выпуск требование. При проведении не пишет в регистры почему то.
Всю голову сломал, не знаю что делать.
Если писать все движения вручную -
Код:ВыпускПродукции.Движения.ТоварыНаСкладах.Добавить и т.д.
Уверен, что что-то делаю не так. Но не пойму что, так как эта обработка - первое, что я сделал в 1С, поэтому спрячьте пожалуйста помидоры и тухлые яйца, я учусь только...
Вот что я соорудил:
Код:// Создание и Заполнение данными документа ВЫПУСК ПРОДУКЦИИ; ОкончаниеПериода = КонецДня(КонецПериода); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование КАК Склад, | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдИзм |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, , , ) КАК ТоварыНаСкладахОстаткиИОбороты |ГДЕ | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток < 0 | И ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ВидНоменклатуры.Код В (""000000003"", ""000000004"") | И ТоварыНаСкладахОстаткиИОбороты.Склад.Код = ""000000051"" | |УПОРЯДОЧИТЬ ПО | Номенклатура"; Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода); Запрос.УстановитьПараметр("ОкончаниеПериода",ОкончаниеПериода); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); НовыйВыпускГМЦ = Документы.ВыпускПродукции.СоздатьДокумент(); НовыйВыпускГМЦ.Склад = Справочники.Склады.НайтиПоКоду("000000051"); НовыйВыпускГМЦ.Организация = Справочники.Организации.НайтиПоКоду("000000005"); НовыйВыпускГМЦ.Подразделение = Справочники.Подразделения.НайтиПоКоду("000000033"); НовыйВыпускГМЦ.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000025"); НовыйВыпускГМЦ.Комментарий = "Выпуск продукции за период "+НачалоПериода+" по "+ОкончаниеПериода; Пока Выборка.Следующий () Цикл НоваяСтрокаТЧ = НовыйВыпускГМЦ.Продукция.Добавить(); НоваяСтрокаТЧ.Номенклатура = Выборка.Номенклатура; НоваяСтрокаТЧ.ЕдиницаИзмерения = Выборка.ЕдИзм; НоваяСтрокаТЧ.Количество = -Выборка.КоличествоКонечныйОстаток; НоваяСтрокаТЧ.СчетУчетаБУ = ПланыСчетов.Хозрасчетный.ВыпускПродукции; НоваяСтрокаТЧ.Качество = Справочники.Качество.НайтиПоНаименованию("Новый"); КонецЦикла; Иначе Возврат КонецЕсли; НовыйВыпускГМЦ.ПолучитьФорму("ФормаДокумента").Открыть(); НовыйВыпускГМЦ.ОтражатьВУправленческомУчете = Истина; НовыйВыпускГМЦ.ОтражатьВБухгалтерскомУчете = Истина; НовыйВыпускГМЦ.Продукция.Сортировать("Номенклатура Возр"); НовыйВыпускГМЦ.Дата = ОкончаниеПериода - 3519; НовыйВыпускГМЦ.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01.2");
Код:НовыйВыпускГМЦ.Движения.ТоварыНаСкладах (не только этот регистр. но и се остальные, куда должен писать этот документ).Записывать = Истина;
Надеюсь на Вашу помощь. Спасибо!
-
07.08.2016, 02:54 #2
- Регистрация
- 10.07.2016
- Сообщений
- 12
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Время ночное, прошу прощения за очепятки:
Столкнулся с проблемой..
Документ не Выпуск требование - а ВыпускПродукции
-
07.08.2016, 03:02 #3
- Регистрация
- 10.07.2016
- Сообщений
- 12
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Да и небольшое пояснение. В Цехе выпускают полуфабрикаты и реализуют их на Отдел, Т.е создается документ РеализацияТоваровУслуг из Цеха в Отдел. Но так как выпуск продукции не осуществлен остаток по Цеху получается отрицательный и в количестве отрицательного остатка, переведенного в положительный, я выпускаю продукцию, чтобы убрать красноту.
Схема мудреная, но так делали у нас всегда. Сейчас все делается в ручную, страсть как надоело, поэтому пытаюсь автоматизировать процесс.
Застрял на финише....
-
07.08.2016, 11:43 #4
- Регистрация
- 29.11.2013
- Адрес
- Берег Волги
- Сообщений
- 2015
- Сказал(а) спасибо
- 650
- Поблагодарили 10224 раз(а) в 2693 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Так программно созданный документ есть в журнале?
Интерактивно он проводится?
Как выглядит команда НовыйВыпуск.Записать() в приведенном куске кода?
-
Пользователь сказал cпасибо:
valleha (12.11.2016)
-
07.08.2016, 14:56 #5
- Регистрация
- 10.07.2016
- Сообщений
- 12
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Боюсь неправильно могу понять, то что Вы спрашиваете, извиняюсь заранее.
Этот документ при записи я могу найти в журнале, т.е. он там появляется. Более того там пиктограмма слева, что он проведен (табличка с галочкой).
Когда нажимаешь провести, то он меняет статус с Новый*, на Проведен.
Нажимаю Перейти - Движения по регистрам и вижу, что он пишет в регистры "ТоварыНаСкладах" и "ТоварыОрганизации" только наименования номенклатуры из документов, количество не пишет - пусто.
Если я пишу вручную Регистр.ТоварыНаСкладах.До бавить.Количество для цикла перебора табличной части и беру это количество из запроса. То количество добавляется.
НО... помимо этих двух регистров, документ должен писать в регистры бухгалтерии "Журнал проводок" и "Учет затрат". Там вручную я не справлюсь, так как совсем не бухгалтер.
По поводу команды записать:
Код:НовыйВыпускГМЦ.Записать(РежимЗаписиДокумента.Проведение);
И это не кусок кода, а весь:)
Попробовал точкой останова поймать обработчик проведения, но там очень все запутано, я замучился F11 нажимать и так и до конца не дошел.
Думаете лентяй - нет, просто мозг закипает уже!:eek:
-
08.08.2016, 09:25 #6
- Регистрация
- 29.11.2013
- Адрес
- Берег Волги
- Сообщений
- 2015
- Сказал(а) спасибо
- 650
- Поблагодарили 10224 раз(а) в 2693 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Почему документ должен проводиться "так. как бы вам хотелось"?
Как проводятся документы ранее введенные без вашей обработки?
Если нормально, то сравните документы между собой (типа "найди 10 отличий")
-
Пользователь сказал cпасибо:
valleha (12.11.2016)
-
08.08.2016, 12:24 #7
- Регистрация
- 10.07.2016
- Сообщений
- 12
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Если создаешь документ просто и проводишь, то все проводится без проблем.
Все сверил, все одинаково, все реквизиты проставил как в обычном документе. Не пойму в чем причина?
Грешил на количество из запроса, из него выгружается количество с отрицательным значением, а в документ я записываю те же значения, только с плюсом
НоваяСтрокаТЧ.Количество = -Выборка.КоличествоКонечны� �Остаток;
Может быть из за этого?
-
08.08.2016, 18:00 #8
- Регистрация
- 29.11.2013
- Адрес
- Берег Волги
- Сообщений
- 2015
- Сказал(а) спасибо
- 650
- Поблагодарили 10224 раз(а) в 2693 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Если документы одинаковые, то и проводиться они должны одинаково. Значит есть различия, ищите.
-
Пользователь сказал cпасибо:
valleha (12.11.2016)
-
11.08.2016, 02:15 #9
- Регистрация
- 10.07.2016
- Сообщений
- 12
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)
Со своими скудными знаниями в области 1с немного приблизился к решению проблемы.
Проблема может быть в вызове события. Т.е. при создании документа ВыпускПродукции событие "ПриОткрытии" срабатывает. (Поймали точкой)
Но когда дело доходит до табличной части возникает "болезнь пятой точки":
При добавлении строки табличной части вручную, первое что нужно заполнить - это номенклатура. Когда её заполняешь (Там поле ввода, которое вызывает "ФормуВыбора" справочника "Номенклатура", т.е по сути надо значение "выбрать"), то все остальные строчки заполняются сами.
Посмотрели, что на это влияет процедура в модуле формы Самого документа - "ПродукцияПриИзмененииНом� �нклатуры" (Эта Процедура находится в свойствах поля ввода таблично части, колонка Номенклатура)
Пробовал заполнять Номенклатуру через элемент формы:
ФормаВыпуск.Открыть();
ФормаВыпуск.ЭлементыФормы. Продукция.ДобавитьСтроку();
СтрокаТабличнойЧасти = ФормаВыпуск.ЭлементыФормы. Продукция.ТекущиеДанные;
СтрокаТабличнойЧасти.Номе� �клатура = Выборка.Номенклатура;
Не цепляется это событие.
Я делаю Вывод, что программно надо сделать так:
1. Встать на поле "номенклатура" табличной части, только что созданной новый строки;
2. В поле ввода нажать на кнопочку с тремя точками;
3. Выбрать в форме выбора справочника "Номенклатура" нужную номенклатуру;
И все случиться.
Я все это понимаю, но как программно выполнить не соображу. Прошу Вашей помощи!
Или второй вариант. Каким то образом вызвать Событие "ПродукцияПриИзмененииНом� �нклатуры".
Единственный вариант который придумал скудный мозг - это "ПолучитьДействие", но к табличной части я его не смог прикрутить.
Вообщем очень надеюсь на Вашу помощь!
-
-
11.08.2016, 09:35 #10
- Регистрация
- 29.11.2013
- Адрес
- Берег Волги
- Сообщений
- 2015
- Сказал(а) спасибо
- 650
- Поблагодарили 10224 раз(а) в 2693 сообщениях
-
Пользователь сказал cпасибо:
valleha (12.11.2016)
Социальные закладки