Волею судеб требуется создать программно документ ПриобретениеТоваровУслуг в УТ 11.5.8.263.
Столкнулся с тем, что просто заполнить поля, которые есть в форме, недостаточно. Более того, определённые реквизиты, видимо заполняются именно в модуле формы и именно в процессе заполнения формы. В пору спросить, как сэмулировать программно ввод документа через форму.
Вопрос простой: как сделать так, чтобы создать документ программно и он таки провёлся (опять же, программно)?
В процессе проведения всплывают "Не заполнен склад" (оказывается, в строках товаров надо заполнять невидимое поле "Склад"), "ДокументПоступления не может быть пустым" и т.п.
Вообще, задача возникла из переноса ПоступленийТоваровУслуг из БП3 в УТ11.
(1)Соглашусь с (2) и (3).
Единственное добавлю, есть обработки которые показывают значения всех реквизитов объектов и дают возможность сравнить объекты базы данных. Очень помогают в вашем случае. А то помимо "невидимых" реквизитов бывают которые необходимо заполнять пустыми ссылками...
(13) Инструменты разработчика, Редактор реквизитов объектов, в поиске. Направление решения в (12), проблему из (0) должен решить вызов "ПроверитьЗаполнитьСклад" (раскомментровать).
(6) оно почти так, но такое ощущение, что при заполнении реквизитов дополняются не только невидимые реквизиты, но и необходимые регистры, на которых явно в объекте нет ссылок. Только столкнулся на УД11.5 с этим ((((((
В процессе проведения всплывают "Не заполнен склад" (оказывается, в строках товаров надо заполнять невидимое поле "Склад"),
потому как документ в режиме приема на разные склады построчно... Точно реквизит не помню если его выставить, то будет только один склад в реквизитах документа а не строк
(7) Когда упомянутая опция установлена в состояние "Один склад", то на форме в строках товаров склад не выводится, но в модуле формы заполняется в каждой строке в "тени". Соответственно, если этого не знать (а я это обнаружил недавно), то можно усоздаваться программно документами - ни один из них не проведётся. По Док.Записать() ни одно событие формы не происходит и не обрабатывается. Шах и мат, как говорится. В прочем, это уже почти лирика :(
(8)Странно я в ЕРП 2.4 заполняю программно кучу документов, но нигде в строке не прописываю склад ;) Наверно потому что использую методы конфиги, а не придумываю свои ;)
(1) 100% рабочий механизм. Создаём вручную документ, а потом создаем программно. На ручном смотрим что и как должно быть заполнено, и это приписывает в обработке. Работает на 100% конфигураций! На 100% видов документов. (По секрету - и на справочниках тоже)
(9) Увы. При сохранении документа происходят какие-то дополнительные действия, в частности, делается запись в один из справочников (выяснил косвенно). В общем, ищем обходной путь решения... Спасибо всем откликнувшимся. Узнал много нового.
(1) Вот попытался даже создать документ руками(верхний на картинке) точно такой же, как и не руками(нижний). Разницы не заметил.
Это я пометил на удаление созданный программно и созданный руками и посмотреть на то, ЧТО удаляется.
Возможно обработка не показывает то, что МОЖНО удалить (((
Если Вы нашли решение, чиркните куда копать (
(34)
Вы как-то странно реквизиты сравниваете.
Возьмите обработку для просмотра реквизитов, а не через удаление.
И нужно заполнять все реквизиты, а не те которые на форме отображаются.
Если вы какой-то реквизит на форме заполнили, а с ним другой заполнился, то вам его и программно нужно заполнять.
(32)
(38) Вы думаете именно с этого я НЕ НАЧАЛ? Алгоритм был старый проверенный. 1) делаем руками документ. 2) делаем программно документ с обязательным заполнением ровно тех же реквизитов ДОКУМЕНТА. И заполняю не только те, которые на форме, потому как 10 лет назад этому учился на курсах "1С". Сертификат есть.
В УТ11.5 это по другому работает.
А через удаление смотрел какие ещё ОБЪЕКТЫ кроме реквизитов заполняются. Поэтому и вывел их в картинку в сообщении.
Во всех конфигурациях, с которыми поработал старый алгоритм создания прокатывает. И с КД2 тоже. А вот с УТ11.5 засада (((
Поэтому и прошу помощи
Я без понятия с чего вы начали, но если вы ищите ссылки на объект с помощью обработки удаления, хотя существует платформенная обработка, то тут можно задуматься.
Только что создал программно документ и никаких проблем не было.
Если у вас не проводится документ и ошибка при записи движений с незаполненным регистратором, то проблема тут не в том, что реквизит не заполнен, а в том, что он заполнен неверно. Здесь уже в бизнес-логике процессов нужно разбираться.
(42) Вы писали, что только что создали программно документ в УТ11.5. Можете привести пример кода?
Кстати, некоторые документы у меня проводятся, некоторые нет. Простое сравнение реквизитов не помогло - создаются одинаково, как и все сопутствующие реквизиты. Правила одни и те же. Сначала списка заметил, что проводится только один склад, чуть ниже именно этот склад перестал проводиться, значит не в складе дело. Проверил договоры. С одним и тем же договором один документ проводится , другой нет, значит дело не в договоре, хотя выводится сообщение
"Выбрано соглашение с таким вариантом приемки, при котором приобретение будет проводиться в рамках соглашения в целом.
Возможность создания документов с такими соглашениями оставлена для того, что бы закрыть уже начатые движения по соглашениям.
Создавать новые документы с такими соглашениями не рекомендуется"
контрагент один и тот же, организация одна и та же
Возможно в конвертации порядок заполнения реквизитов важен...
Проверил и удалил обработку, т.к. ничего особенного в ней не было.
Код примерно следующий:
Док = Документы.ПриобретениеТоваровИУслуг.СоздатьДокумент();
// заполнение реквизитов в соответствии с реквизитами интерактивно созданного и проведенного документа
...
Док.Дата = ...
Док.ВидОперации = ...
...
Док.Записать(РежимЗаписиДокумента.Проведение);
(51) спасибо! Разбираюсь. Доделывать всё равно надо. Пытаюсь после синхронизации сразу сохранить и провести документ (в рамках самой синхронизации). Часть получилась уже. 2007-2009 год почти весь сделался. Потом руками перепровожу - тоже всё ок. ХЗ пока. Не нашёл причины. А так я специально делал непроведёнными синхронизированные документы, а потом руками проводил, чтобы увидеть другие ошибки, если они возникнут
(40) Как придет решение, оставьте пж тут для потомков. В УТ11.4/ERP2.4 в 2020 создавал поступления / реализации программно в КД2 и ловил ошибку проведения.
Стоило что-то типа видов запасов оставить незаполненным - и документ при проведении это исправлял и проводился. Не претендую на точность, тогда решил методом тыка.
Если использовать логику ОбработкиЗаполнения - проблем обычно нет. А если кто найдется ОбработкуПроведения изучить и на ИС логику выложить - королем форума рискует стать).
Чтобы создать документ надо заполнить все необходимые реквизиты, по другом никак.
Можно разобрать процедуру, которая заполняет реквизиты при создании нового документа, либо заполнить тестовый документ данными, которые вам понадобятся и запросом посмотреть, какие еще реквизиты заполнились и также учесть это при создании.
Ну или отлавливать ошибки по одной и заполнять реквизиты при отладке.
(2) в УТ11 так не работает! Уже писали про это выше. При ручном заполнении реквизитов дополнительно заполняются регистры, справочники и ещё хрен пойми чего. И на это всё в реквизитах документа даже ссылок нет. Всё в "кишках" и общих модулях. 1С путать умеет (
Вот только с этим столкнулся на УТ11.5
(27)
Всегда работало и работает.
Никаких записей в справочнике или регистре сведений без которых нельзя провести документ - нет.
Если какой-то реквизит не заполнен, то он и в ошибке выведется.
(30)
(30)
Конечно выводится - ошибка типа "Не установлен отбор по регистратору (Регистр накопления: Запасы и потребности). А внизу другая ошибка "Выбрано соглашение с таким вариантом приемки, при котором приобретение будет проводиться в рамках соглашения в целом.
Возможность создания документов с такими соглашениями оставлена для того, что бы закрыть уже начатые движения по соглашениям.
Создавать новые документы с такими соглашениями не рекомендуется."
Причём соглашение одно и то же, только один документ создан программно, другой руками с теми же данными
В реквизитах ничего подобного нет, значит, как пишут в (12) нужно запустить процедуру не экспортную "ОбработкаЗаполнения" для этого объекта.
(31)
Ну это вы там чего-то не то заполняете.
Если интерактивно заполнить документ и провести, то программно созданный документ с такими же реквизитами проведется.
(32) сделал так сразу. НЕ ПРОВОДИТСЯ. Раз такая тема в инете обсуждается, значит проблема есть. Кстати для других конфигураций действительно всё проводится. Не первый год "замужем" )))
Тут засада (((
Причем это не только для поступлений, а для всех видов документов в УТ11.5
(12) а программно то как? Делаю синхронизацию КД2. Форму не откроешь, надо выполнить какой-то алгоритм уже при записи. Так-то можно в КД2 это включить, но надо знать точно
В правилах хорошего тона есть правило вызова обработки заполнения после создание элемента и документа, который как раз и заолняет все те скрытые поля при вводе нового.
Сравните документ, который создан программно с документом, который создан через форму через ИР портативный, там есть обработка сравнение документов. Заполните поля, которые программно создайте и все
(22) так в УТ11.5 это не работает. Писали выше.Только что с этим столкнулся ((((
И что за обработка такая красивая "Сравнение объектов УИ"... удобная. Где взять?
(47)
(47) это сразу делал. И так делал всегда до этого. Вообще всегда последовательность была такая: 1) сначала создаю руками документ; 2) создаю программно и сверяю всё ли одинаково. Так работало всегда. До того, как стал создавать документ в УТ11.5.
Сравнение - всё совпадает.
На всякий случай попытался сравнить при удалении (34) . По картинке видно, что при создании документа(без проведения пока) создаётся куча всего, кроме заполнения реквизитов документа. Там регистры сведений ещё и справочники. Но всё равно что-то не хватает ещё.
Причем, при проведении уже, ругается на одно(не заполнен регистратор в графике оплаты), а через СООБЩИТЬ() выдает, что использовано не то соглашение. Хотя в ручном документе именно тоже соглашение. Короче пока не разобрался ((((((((
через консоль запросов откройте документы созданный "вручную" и программно, и чисто визуально сравните поля, ну и в программе потом добавьте то чего не хватает
(43)
Ну не работает, значит не работает. Ищите другие способы, пока остальные будут использовать "не рабочий механизм".
Вам один вариант уже назвали, а вы все упираетесь. Ну как сравните реквизиты, в том числе и в табличных частях, может и заработает.
(44) брат, тема не моя, значит есть проблема. Мало того, в поисковике нашел много подобных вопросов именно по УТ11.
У меня за спиной 11 лет стажа программирования в 1С(и не только) и опыт есть. Что рабочее и что не рабочее отличить могу
Раньше, в обычном приложении, мы смотрели на обработчики событий у реквизитов формы "ПриВыбореКонтрагента()", "ПриИзмененииОрганизации()" и т.д. Там внутри, раньше вызывались процедуры типа "ОбработкаТабличныхЧастей.ЗаполнитьСчетаУчета()" или что то в этом роде, сейчас в управляемых формах немного сложнее, в обработчиках событий под капотом, есть что то типа "ОбработкаТабличныхЧастейКлиент.ЗаполнитьСчетаУчета()", а в КД2 или в обработках, в которых мы программно создаем документ, мы обычно находимся на сервере, поэтому напрямую использовать клиентские процедуры мы не можем, надо искать модули с аналогичным названием, но с постфиксом "Сервер", и получится что то типа "ОбработкаТабличныхЧастейСервер.ЗаполнитьСчетаУчета()"
Клиентские Модули обычно дублируют нужные процедуры в серверных модулях. Все, после того как определились какие алгоритмы срабатывают и заполняют скрытые поля на форме, вызываем нужные процедуры, в нужное время, получается аналог интерактивного заполнения.
и этот путь более правильный, нежели смотреть какие скрытые реквизиты заполнились при интерактивном вводе - там же не просто надо чем попало заполнить, а должны отработать алгоритмы заполнения, которые выберут нужные данные, для заполнения.
У кого-то все-таки удалось программно сформировать нормальный документ ПриобретениеТоваровУслуг?
Я сейчас пытаюсь сделать, все бы неплохо. Даже проводится. Но товары не появляются на складе. Может я что-то не понял в конфигурации. Ковыраю демо конфигу от 1С из поставки.