Движения по регистрам в программно созданном документе (8.2 КА 1.1)
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Комбинированный просмотр

  1. #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");
    Пробовал добавить:
    Код:
    НовыйВыпускГМЦ.Движения.ТоварыНаСкладах (не только этот регистр. но и се остальные, куда должен писать этот документ).Записывать = Истина;
    ТОлку не прибавило.
    Надеюсь на Вашу помощь. Спасибо!

  2. #2
    Пришел за помощью

    Регистрация
    10.07.2016
    Сообщений
    12
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Время ночное, прошу прощения за очепятки:
    Столкнулся с проблемой..
    Документ не Выпуск требование - а ВыпускПродукции

  3. #3
    Пришел за помощью

    Регистрация
    10.07.2016
    Сообщений
    12
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Да и небольшое пояснение. В Цехе выпускают полуфабрикаты и реализуют их на Отдел, Т.е создается документ РеализацияТоваровУслуг из Цеха в Отдел. Но так как выпуск продукции не осуществлен остаток по Цеху получается отрицательный и в количестве отрицательного остатка, переведенного в положительный, я выпускаю продукцию, чтобы убрать красноту.
    Схема мудреная, но так делали у нас всегда. Сейчас все делается в ручную, страсть как надоело, поэтому пытаюсь автоматизировать процесс.
    Застрял на финише....

  4. #4
    Магистр

    Регистрация
    29.11.2013
    Адрес
    Берег Волги
    Сообщений
    3801
    Сказал(а) спасибо
    639
    Поблагодарили 10037 раз(а) в 2615 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Так программно созданный документ есть в журнале?
    Интерактивно он проводится?
    Как выглядит команда НовыйВыпуск.Записать() в приведенном куске кода?

  5. Пользователь сказал cпасибо:

    valleha (12.11.2016)

  6. #5
    Пришел за помощью

    Регистрация
    10.07.2016
    Сообщений
    12
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Боюсь неправильно могу понять, то что Вы спрашиваете, извиняюсь заранее.
    Этот документ при записи я могу найти в журнале, т.е. он там появляется. Более того там пиктограмма слева, что он проведен (табличка с галочкой).
    Когда нажимаешь провести, то он меняет статус с Новый*, на Проведен.
    Нажимаю Перейти - Движения по регистрам и вижу, что он пишет в регистры "ТоварыНаСкладах" и "ТоварыОрганизации" только наименования номенклатуры из документов, количество не пишет - пусто.
    Если я пишу вручную Регистр.ТоварыНаСкладах.До бавить.Количество для цикла перебора табличной части и беру это количество из запроса. То количество добавляется.
    НО... помимо этих двух регистров, документ должен писать в регистры бухгалтерии "Журнал проводок" и "Учет затрат". Там вручную я не справлюсь, так как совсем не бухгалтер.

    По поводу команды записать:
    Код:
    НовыйВыпускГМЦ.Записать(РежимЗаписиДокумента.Проведение);
    Но по прежнему ничего не работает. И то я его с интернета взял, не особо понимаю его смысла, так как теперь при нажатии кнопки "Записать" он его проводит.... :confused:
    И это не кусок кода, а весь:)

    Попробовал точкой останова поймать обработчик проведения, но там очень все запутано, я замучился F11 нажимать и так и до конца не дошел.
    Думаете лентяй - нет, просто мозг закипает уже!:eek:

  7. #6
    Магистр

    Регистрация
    29.11.2013
    Адрес
    Берег Волги
    Сообщений
    3801
    Сказал(а) спасибо
    639
    Поблагодарили 10037 раз(а) в 2615 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Почему документ должен проводиться "так. как бы вам хотелось"?
    Как проводятся документы ранее введенные без вашей обработки?
    Если нормально, то сравните документы между собой (типа "найди 10 отличий")

  8. Пользователь сказал cпасибо:

    valleha (12.11.2016)

  9. #7
    Пришел за помощью

    Регистрация
    10.07.2016
    Сообщений
    12
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Если создаешь документ просто и проводишь, то все проводится без проблем.
    Все сверил, все одинаково, все реквизиты проставил как в обычном документе. Не пойму в чем причина?
    Грешил на количество из запроса, из него выгружается количество с отрицательным значением, а в документ я записываю те же значения, только с плюсом

    НоваяСтрокаТЧ.Количество = -Выборка.КоличествоКонечны� �Остаток;

    Может быть из за этого?

  10. #8
    Магистр

    Регистрация
    29.11.2013
    Адрес
    Берег Волги
    Сообщений
    3801
    Сказал(а) спасибо
    639
    Поблагодарили 10037 раз(а) в 2615 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Если документы одинаковые, то и проводиться они должны одинаково. Значит есть различия, ищите.

  11. Пользователь сказал cпасибо:

    valleha (12.11.2016)

  12. #9
    Пришел за помощью

    Регистрация
    10.07.2016
    Сообщений
    12
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Со своими скудными знаниями в области 1с немного приблизился к решению проблемы.
    Проблема может быть в вызове события. Т.е. при создании документа ВыпускПродукции событие "ПриОткрытии" срабатывает. (Поймали точкой)
    Но когда дело доходит до табличной части возникает "болезнь пятой точки":
    При добавлении строки табличной части вручную, первое что нужно заполнить - это номенклатура. Когда её заполняешь (Там поле ввода, которое вызывает "ФормуВыбора" справочника "Номенклатура", т.е по сути надо значение "выбрать"), то все остальные строчки заполняются сами.

    Посмотрели, что на это влияет процедура в модуле формы Самого документа - "ПродукцияПриИзмененииНом� �нклатуры" (Эта Процедура находится в свойствах поля ввода таблично части, колонка Номенклатура)

    Пробовал заполнять Номенклатуру через элемент формы:

    ФормаВыпуск.Открыть();
    ФормаВыпуск.ЭлементыФормы. Продукция.ДобавитьСтроку();
    СтрокаТабличнойЧасти = ФормаВыпуск.ЭлементыФормы. Продукция.ТекущиеДанные;
    СтрокаТабличнойЧасти.Номе� �клатура = Выборка.Номенклатура;

    Не цепляется это событие.

    Я делаю Вывод, что программно надо сделать так:
    1. Встать на поле "номенклатура" табличной части, только что созданной новый строки;
    2. В поле ввода нажать на кнопочку с тремя точками;
    3. Выбрать в форме выбора справочника "Номенклатура" нужную номенклатуру;
    И все случиться.
    Я все это понимаю, но как программно выполнить не соображу. Прошу Вашей помощи!

    Или второй вариант. Каким то образом вызвать Событие "ПродукцияПриИзмененииНом� �нклатуры".
    Единственный вариант который придумал скудный мозг - это "ПолучитьДействие", но к табличной части я его не смог прикрутить.

    Вообщем очень надеюсь на Вашу помощь!

  13. #10
    Магистр

    Регистрация
    29.11.2013
    Адрес
    Берег Волги
    Сообщений
    3801
    Сказал(а) спасибо
    639
    Поблагодарили 10037 раз(а) в 2615 сообщениях

    По умолчанию Re: Движения по регистрам в программно созданном документе (8.2 КА 1.1)

    Цитата Сообщение от Quiliansky Посмотреть сообщение
    Со своими скудными знаниями в области 1с немного приблизился к решению проблемы.
    Проблема может быть в вызове события. Т.е. при создании документа ВыпускПродукции событие "ПриОткрытии" срабатывает. (Поймали точкой)
    Но когда дело доходит до табличной части возникает "болезнь пятой точки":
    При добавлении строки табличной части вручную, первое что нужно заполнить - это номенклатура. Когда её заполняешь (Там поле ввода, которое вызывает "ФормуВыбора" справочника "Номенклатура", т.е по сути надо значение "выбрать"), то все остальные строчки заполняются сами.

    Посмотрели, что на это влияет процедура в модуле формы Самого документа - "ПродукцияПриИзмененииНом� �нклатуры" (Эта Процедура находится в свойствах поля ввода таблично части, колонка Номенклатура)

    Пробовал заполнять Номенклатуру через элемент формы:

    ФормаВыпуск.Открыть();
    ФормаВыпуск.ЭлементыФормы. Продукция.ДобавитьСтроку();
    СтрокаТабличнойЧасти = ФормаВыпуск.ЭлементыФормы. Продукция.ТекущиеДанные;
    СтрокаТабличнойЧасти.Номе� �клатура = Выборка.Номенклатура;

    Не цепляется это событие.

    Я делаю Вывод, что программно надо сделать так:
    1. Встать на поле "номенклатура" табличной части, только что созданной новый строки;
    2. В поле ввода нажать на кнопочку с тремя точками;
    3. Выбрать в форме выбора справочника "Номенклатура" нужную номенклатуру;
    И все случиться.
    Я все это понимаю, но как программно выполнить не соображу. Прошу Вашей помощи!

    Или второй вариант. Каким то образом вызвать Событие "ПродукцияПриИзмененииНом� �нклатуры".
    Единственный вариант который придумал скудный мозг - это "ПолучитьДействие", но к табличной части я его не смог прикрутить.

    Вообщем очень надеюсь на Вашу помощь!
    Ну и пропишите в своей обработке все действия, которые выполняет процедура "ПродукцияПриИзмененииНом� �нклатуры", все нужные пол и заполнятся

  14. Пользователь сказал cпасибо:

    valleha (12.11.2016)

Страница 1 из 2 12 ПоследняяПоследняя

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •