Доброй ночи уважаемые форумчане!
Толкнулся с проблемой проведения программно созданного документа - Выпуск требование. При проведении не пишет в регистры почему то.
Всю голову сломал, не знаю что делать.
Если писать все движения вручную -
ВыпускПродукции.Движения.Т оварыНаСкладах.Добавить
и т.д.
то все работает. С регистрами по остаткам я еще справлюсь, но с бухгалтерскими очень туго придется. Да и не к чему это. ведь есть стандартный обработчик проведения в документе... НО ПОЧЕМУ ТО ОН НЕ ФУНЦИКЛИРУЕТ как бы мне хотелось...
Уверен, что что-то делаю не так. Но не пойму что, так как эта обработка - первое, что я сделал в 1С, поэтому спрячьте пожалуйста помидоры и тухлые яйца, я учусь только...
Вот что я соорудил:
// Создание и Заполнение данными документа ВЫПУСК ПРОДУКЦИИ;
ОкончаниеПериода = КонецДня(КонецПериода);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстаткиИОб ороты.Склад.Наименование КАК Склад,
| ТоварыНаСкладахОстаткиИОб ороты.КоличествоКонечныйО� �таток,
| ТоварыНаСкладахОстаткиИОб ороты.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстаткиИОб ороты.Номенклатура.Единица ХраненияОстатков КАК ЕдИзм
|ИЗ
| РегистрНакопления.ТоварыН� �Складах.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, , , ) КАК ТоварыНаСкладахОстаткиИОб ороты
|ГДЕ
| ТоварыНаСкладахОстаткиИОб ороты.КоличествоКонечныйО� �таток < 0
| И ТоварыНаСкладахОстаткиИОб ороты.Номенклатура.ВидНоме нклатуры.Код В (""000000003"", ""000000004"")
| И ТоварыНаСкладахОстаткиИОб ороты.Склад.Код = ""000000051""
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура";
НовыйВыпускГМЦ.Движения.То варыНаСкладах (не только этот регистр. но и се остальные, куда должен писать этот документ).Записывать = Истина;
ТОлку не прибавило.
Надеюсь на Вашу помощь. Спасибо!
Quiliansky
07.08.2016, 02:54
Время ночное, прошу прощения за очепятки:
Столкнулся с проблемой..
Документ не Выпуск требование - а ВыпускПродукции
Quiliansky
07.08.2016, 03:02
Да и небольшое пояснение. В Цехе выпускают полуфабрикаты и реализуют их на Отдел, Т.е создается документ РеализацияТоваровУслуг из Цеха в Отдел. Но так как выпуск продукции не осуществлен остаток по Цеху получается отрицательный и в количестве отрицательного остатка, переведенного в положительный, я выпускаю продукцию, чтобы убрать красноту.
Схема мудреная, но так делали у нас всегда. Сейчас все делается в ручную, страсть как надоело, поэтому пытаюсь автоматизировать процесс.
Застрял на финише....
alexandr_ll
07.08.2016, 11:43
Так программно созданный документ есть в журнале?
Интерактивно он проводится?
Как выглядит команда НовыйВыпуск.Записать() в приведенном куске кода?
Quiliansky
07.08.2016, 14:56
Боюсь неправильно могу понять, то что Вы спрашиваете, извиняюсь заранее.
Этот документ при записи я могу найти в журнале, т.е. он там появляется. Более того там пиктограмма слева, что он проведен (табличка с галочкой).
Когда нажимаешь провести, то он меняет статус с Новый*, на Проведен.
Нажимаю Перейти - Движения по регистрам и вижу, что он пишет в регистры "ТоварыНаСкладах" и "ТоварыОрганизации" только наименования номенклатуры из документов, количество не пишет - пусто.
Если я пишу вручную Регистр.ТоварыНаСкладах.До бавить.Количество для цикла перебора табличной части и беру это количество из запроса. То количество добавляется.
НО... помимо этих двух регистров, документ должен писать в регистры бухгалтерии "Журнал проводок" и "Учет затрат". Там вручную я не справлюсь, так как совсем не бухгалтер.
Но по прежнему ничего не работает. И то я его с интернета взял, не особо понимаю его смысла, так как теперь при нажатии кнопки "Записать" он его проводит.... :confused:
И это не кусок кода, а весь:)
Попробовал точкой останова поймать обработчик проведения, но там очень все запутано, я замучился F11 нажимать и так и до конца не дошел.
Думаете лентяй - нет, просто мозг закипает уже!:eek:
alexandr_ll
08.08.2016, 09:25
Почему документ должен проводиться "так. как бы вам хотелось"?
Как проводятся документы ранее введенные без вашей обработки?
Если нормально, то сравните документы между собой (типа "найди 10 отличий")
Quiliansky
08.08.2016, 12:24
Если создаешь документ просто и проводишь, то все проводится без проблем.
Все сверил, все одинаково, все реквизиты проставил как в обычном документе. Не пойму в чем причина?
Грешил на количество из запроса, из него выгружается количество с отрицательным значением, а в документ я записываю те же значения, только с плюсом
Если документы одинаковые, то и проводиться они должны одинаково. Значит есть различия, ищите.
Quiliansky
11.08.2016, 02:15
Со своими скудными знаниями в области 1с немного приблизился к решению проблемы.
Проблема может быть в вызове события. Т.е. при создании документа ВыпускПродукции событие "ПриОткрытии" срабатывает. (Поймали точкой)
Но когда дело доходит до табличной части возникает "болезнь пятой точки":
При добавлении строки табличной части вручную, первое что нужно заполнить - это номенклатура. Когда её заполняешь (Там поле ввода, которое вызывает "ФормуВыбора" справочника "Номенклатура", т.е по сути надо значение "выбрать"), то все остальные строчки заполняются сами.
Посмотрели, что на это влияет процедура в модуле формы Самого документа - "ПродукцияПриИзмененииНоме нклатуры" (Эта Процедура находится в свойствах поля ввода таблично части, колонка Номенклатура)
Пробовал заполнять Номенклатуру через элемент формы:
Я делаю Вывод, что программно надо сделать так:
1. Встать на поле "номенклатура" табличной части, только что созданной новый строки;
2. В поле ввода нажать на кнопочку с тремя точками;
3. Выбрать в форме выбора справочника "Номенклатура" нужную номенклатуру;
И все случиться.
Я все это понимаю, но как программно выполнить не соображу. Прошу Вашей помощи!
Или второй вариант. Каким то образом вызвать Событие "ПродукцияПриИзмененииНоме нклатуры".
Единственный вариант который придумал скудный мозг - это "ПолучитьДействие", но к табличной части я его не смог прикрутить.
Вообщем очень надеюсь на Вашу помощь!
alexandr_ll
11.08.2016, 09:35
Со своими скудными знаниями в области 1с немного приблизился к решению проблемы.
Проблема может быть в вызове события. Т.е. при создании документа ВыпускПродукции событие "ПриОткрытии" срабатывает. (Поймали точкой)
Но когда дело доходит до табличной части возникает "болезнь пятой точки":
При добавлении строки табличной части вручную, первое что нужно заполнить - это номенклатура. Когда её заполняешь (Там поле ввода, которое вызывает "ФормуВыбора" справочника "Номенклатура", т.е по сути надо значение "выбрать"), то все остальные строчки заполняются сами.
Посмотрели, что на это влияет процедура в модуле формы Самого документа - "ПродукцияПриИзмененииНоме нклатуры" (Эта Процедура находится в свойствах поля ввода таблично части, колонка Номенклатура)
Пробовал заполнять Номенклатуру через элемент формы:
Я делаю Вывод, что программно надо сделать так:
1. Встать на поле "номенклатура" табличной части, только что созданной новый строки;
2. В поле ввода нажать на кнопочку с тремя точками;
3. Выбрать в форме выбора справочника "Номенклатура" нужную номенклатуру;
И все случиться.
Я все это понимаю, но как программно выполнить не соображу. Прошу Вашей помощи!
Или второй вариант. Каким то образом вызвать Событие "ПродукцияПриИзмененииНоме нклатуры".
Единственный вариант который придумал скудный мозг - это "ПолучитьДействие", но к табличной части я его не смог прикрутить.
Вообщем очень надеюсь на Вашу помощь!
Ну и пропишите в своей обработке все действия, которые выполняет процедура "ПродукцияПриИзмененииНоме нклатуры", все нужные пол и заполнятся
alexandr_ll
11.08.2016, 09:36
Со своими скудными знаниями в области 1с немного приблизился к решению проблемы.
Проблема может быть в вызове события. Т.е. при создании документа ВыпускПродукции событие "ПриОткрытии" срабатывает. (Поймали точкой)
Но когда дело доходит до табличной части возникает "болезнь пятой точки":
При добавлении строки табличной части вручную, первое что нужно заполнить - это номенклатура. Когда её заполняешь (Там поле ввода, которое вызывает "ФормуВыбора" справочника "Номенклатура", т.е по сути надо значение "выбрать"), то все остальные строчки заполняются сами.
Посмотрели, что на это влияет процедура в модуле формы Самого документа - "ПродукцияПриИзмененииНоме нклатуры" (Эта Процедура находится в свойствах поля ввода таблично части, колонка Номенклатура)
Пробовал заполнять Номенклатуру через элемент формы:
Я делаю Вывод, что программно надо сделать так:
1. Встать на поле "номенклатура" табличной части, только что созданной новый строки;
2. В поле ввода нажать на кнопочку с тремя точками;
3. Выбрать в форме выбора справочника "Номенклатура" нужную номенклатуру;
И все случиться.
Я все это понимаю, но как программно выполнить не соображу. Прошу Вашей помощи!
Или второй вариант. Каким то образом вызвать Событие "ПродукцияПриИзмененииНоме нклатуры".
Единственный вариант который придумал скудный мозг - это "ПолучитьДействие", но к табличной части я его не смог прикрутить.
Вообщем очень надеюсь на Вашу помощь!
Ну и пропишите в своей обработке все действия, которые выполняет процедура "ПродукцияПриИзмененииНоме нклатуры", все нужные пол и заполнятся
Quiliansky
11.08.2016, 22:25
Спасибо, все получилось. Поля заполняет, но опять уперся в проблему. Не заполняются счета учета БУ в строках табличной части. Не дает провести.
Я вот что подумал, сейчас мы лезем все глубже и глубже в дебри 1Совских разработок. Может этого и не стоит делать?
Может Вы подскажите как программно выбрать изменить реквизит формы так, чтобы вызвать обработчик "ПриИзменении".