Перепроведение документа через регламентное задание. #783308


#0 by Ly_Alena
Добрый день! Появилась необходимость перепроводить документы, в том числе закрытого периода, но только по одному регистру через регламентное задание. На одном сайте нашла пример как это можно осуществить. В модуле регламентных заданий в процедуре: Запрос = Новый Запрос; Выдает ошибку:"{ОбщийМодуль.МодульРегламентныхЗаданий.Модуль}: Ошибка при вызове метода контекста (Записать) по причине: по причине: Не удалось провести «Документ К0000000209 от 05.02.2016 10:33:23″!"
#1 by Boleev
продолжайте наблюдение
#2 by iceman2112
от нас что ннвжн?
#3 by iceman2112
нужно*
#4 by Ly_Alena
Нужно сказать почему выходит ошибка на метод "Записать" и как исправить ее.
#5 by Boleev
100$
#6 by Ly_Alena
какой высокий у вас прайс )
#7 by Mankubus
отладчик в руки и вперед
#8 by Ly_Alena
что может показать мне отладчик на метод записать?
#9 by DrShad
попадешь в процедуры ПередЗаписью, ПриЗаписи, ОбработкаПроверкиЗаполнения, ОбработкаПроведения и там найдешь свою ошибку
#10 by Это_mike
разве в этих процедурах анализируется ДНК?
#11 by DrShad
еще как
#12 by Dmitrii
Попробуйте взять Документ К0000000209 от 05.02.2016 10:33:23 и провести его вручную (вы ведь на копии тренируетесь). Наверняка система не даст вам этого сделать. Если повезёт, то получите какое-то осмысленное сообщение об ошибке.
#13 by Альбатрос
Чот я смысла кода не понял. Проводим док, берем его движения и   их же опять записываем? Или что?
#14 by catena
Записываем движения только одного регистра. Чтобы остальные не послетали.
#15 by Wirtuozzz
Предлагаю запись поместить в Попытку и по исключению записывать в Журнал регистрации ОписаниеОшибки; будет дана более детальная инфа, для раздумий.
#16 by Ly_Alena
Спасибо, попробую.
#17 by Ly_Alena
Теперь новый уровень - говорит что проводит все нормально. но в регистре записей нет... Если провести документ вручную - записи есть в регистре.
#18 by Ly_Alena
В коде регламетного ничего не поменялось.
#19 by Lexey_
НаборЗаписей.Отбор.Регистратор.Установить(ДокументОбъект); - тип неправильный?
#20 by Ly_Alena
вместо ДокументОбъект стоит ЭлементРезультата.ДокументДляПерепроведения Ссылку передает
#21 by eskor
Отладчик и еще раз отладчик. Что оказалось в наборе записей?
#22 by Ly_Alena
Как отключить все проверки типа ПередЗаписью?
#23 by Mankubus
ОбменДанными.Загрузка = Истина
#24 by Ly_Alena
Спасибо! Кажется получилось. Буду проверять при изменении данных.
#25 by ЧеловекДуши
Лена код документа проверь :)
#26 by ЧеловекДуши
За что спасибо? Документ при этом не проводится. А записи в регистры нужно уже формировать самой, т.е. кодом из какого либо модуля :)
#27 by Ly_Alena
Да... вижу. Мое имя Алена. Код документа нормальный - по кнопке проводится все хорошо. С регламентным засада.
#28 by Ly_Alena
На строчке: ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); Идет в процедуру "ПередЗаписью", оттуда через кучу процедур и проверок в ПередЗаписьюДокументаУстановкаАвтораПередЗаписью После чего выходит ошибка: "{Отчет.ПроверкаРегламентногоНаПроведениеЗаказовПоставщиков.Форма.ФормаОтчета.Форма}: Ошибка при вызове метода контекста (Записать)         ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); по причине: Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!"
#29 by ЧеловекДуши
Лена, Алена, побоку, ... Хоть Евдакия... Вы код смотрите, но ни черта не видите. Запустите отладчик и выполните свое регламентное задание по отладчику. ...Отладчик может... Делайте это в тестовой
#30 by Ly_Alena
Естественно я это делаю через отладчик, а не силой мысли!
#31 by ЧеловекДуши
+ 1. Запускаете конфигуратор 2. Ставите точку останова на том месте кода, который хотели бы отладить. 3. Запускаете отладку. 4. Заходите в консоль регламентных задач - Это такая обработка 5. Выполняете свою регламентную на сервере, не перепутайте.    - Сдается мне, что у вас есть принципиальное отличие, где выполняется код... Проще говоря, у вас ГУАНО код в модуле документа :) 6. Находите свою ошибку ... 20. Как правило ошибка "Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!" предвещает тому, что документ при проведении пишется несколько раз, и криво обрабатывается :)
#32 by ЧеловекДуши
+ Проверьте подписка на события, бывает так, что туда чего лепят :)
#33 by DrShad
сделай проще, у каждого объекта есть структура ДополнительныеСвойства, вставь в нее какой-то свой ключ (к примеру "РегламентноеПроведение") далее в процедурах модуля объекта ПриЗаписи, ПередЗаписью и ОбработкаПроверкиЗаполнения вставь условие наподобии проверки ОбменДанными.Загрузка и будет тебе счастие
#34 by Ly_Alena
Спасибо! Я нашла ошибку - в процедуре проведения еще менялся реквизит и записывался. Закомментировала в доке, перенесла в регламентное и все провелось. Буду проверять как ведут себя другие регистры.
#35 by Ly_Alena
Хотелось бы возобновить тему. регламентное запускается, все проходит успешно, в журнале регистрации в нужном мне регистре статус транзакции "Зафиксирована", а записей в регистре нет. Фоновое задание завершено успешно. Делаю внешнюю обработку - запихиваю туда код - запускаю - все проходит как по маслу и запись в регистре появляется. В чем может быть дело?
#36 by eddy_n
Взведён признак Записывать Набора записей регистра в процедуре фонового задания?
#37 by Ly_Alena
Сообщить("Не удалось провести документ: " + ЭлементРезультата.ЗаказПоставщику);
#38 by Ly_Alena
Последняя строка ЗафиксироватьТранзакцию уже дописано от безисходности.
#39 by aleks_default
Фоновое задание под каким пользователем? Есть у него права на проведение документа?
#40 by Ly_Alena
Фоновое запускается с сервера как я понимаю
#41 by aleks_default
И что?
#42 by Ly_Alena
фоновое запускается разве вне зависимости от пользователей? Как посмотреть?
#43 by aleks_default
в консоли рег. заданий.
#44 by разработчик 1с
дата запрета на пользователя заданий стоит
#45 by Ly_Alena
там пользователя нет
#46 by aleks_default
ну значит нужно указать
#47 by Ly_Alena
у меня ни для одного регламентного нет пользователя и как-то работает...
#48 by Ly_Alena
Хорошо, попробуем с пользователем - как его прописать?
#49 by Ly_Alena
Если пользователь регламентного задания не указан, то выполнение происходит с правами, которые определяются набором ролей, указанных в свойстве конфигурации ОсновныеРоли. В том случае, если в этом свойстве не указано ни одной роли, выполнение происходит без ограничения прав доступа.
#50 by Жан Пердежон
у тебя ОтменитьТранзакцию;         всегда происходить что ли безусловно? было бы удивительно, если бы что-то записалось
#51 by Ly_Alena
да всегда - чтобы записи не менялись в прошлом периоде. С внешней обработки все работает.
#52 by Ly_Alena
процедура проводит документ только по одному регистру.
#53 by Жан Пердежон
смотри тогда журнал регистрации; если там ничего нет - пиши туда сама ОписаниеОшибки вместо сообщить
#54 by Жан Пердежон
+ для набора записей кстати тоже работает ОбменДанными.Загрузка = Истина;
#55 by Ly_Alena
выше писала что по журналу - все пишет и нет никаких ошибок.
#56 by 1sanekmaloi1
А весь этот ужас нельзя переписать? Зачем 2 раза проводится документ? Нельзя сформировать таблицу для регистра и записать набор?
#57 by Ly_Alena
в документ пишутся ссылки на документы-движения приход/расход. в документе есть изменяемые реквизиты. эти реквизиты пишутся вместе с данными документов-движений в РН. Когда период документов-движений закрыт и перепровести документы нельзя - можно переповести мой документ и он запишет то что нужно по этим документам в РН. Смысл в том чтобы этот документ перезаписывал только в один регистр, по другим данные не перепроводил.
#58 by Ly_Alena
НаборЗаписей.Загрузить(ТаблицаДвиженийРегистра); разве это не то, о чем Вы говорите?
#59 by 1sanekmaloi1
Я говорю что наверняка в модуле объекта дока есть что наподобие: ОбщийМодуль.СформироватьДвиженеиПоРегистру или аналог , процедура для формирования необходимой таблицы для движений документа по этому регистру. И ее можно адаптировать для получения ТЗ(при этом документ не нужно записывать,проводить и прочее) а эту ТЗ уже в регистр.
#60 by Ly_Alena
есть и по кнопке по регистру перепроводится. Но тогда пользователю нужно будет заходить в документ и перепроводить его. Кто-то забыл это сделать например. Пусть машина за день записывает все движения. Если я Вас правильно поняла.
#61 by 1sanekmaloi1
Не возражаю, пусть машина за день записывает все движения.
#62 by 1sanekmaloi1
Вообще то я имел ввиду чтобы регламентное выглядело вот так:
#63 by Ly_Alena
процедура не в общем модуле. я вас не так поняла. Процедура записи в модуле документа при проведении и по нажатию кнопки.
#64 by 1sanekmaloi1
Может программиста позвать?
#65 by Ly_Alena
Давайте позовем )
#66 by Ly_Alena
только чур не такого "пропиши пользователя регламентному заданию"
#67 by Ly_Alena
Как-то не откликаются на зов программисты...
#68 by 1sanekmaloi1
Может зовете неправильно? Хотя для решения вашей задачи уже все расписано как нужно сделать.
#69 by Ly_Alena
а если без общего модуля?
#70 by 1sanekmaloi1
Разрешаю и без общего, скопируйте код из модуля объекта документа, который формирует набор для данного регистра и используйте этот кусок в регламентном.
#71 by 1sanekmaloi1
+ Использовать проведение и откат транзакции для получения тз это как "на такси в булошную"
#72 by 1sanekmaloi1
+Кстати вы так и не ответили зачем в вашей конструкции проводится документ 2 раза?один раз в попытке и второй раз без попытки?
#73 by Ly_Alena
Была такая мысль, но потом наткнулась на перепроведение документов только по нужному регистру и возрадовалась.
#74 by craxx
ЧТо-то в коде логику не улавливаю ОтменитьТранзакцию там зачем??
#75 by Ly_Alena
по факту не проводится ни разу как мне надо. Это уже мудрила
#76 by craxx
а понял. там надо копать модуль набора записей регистра накоплений. походу там тоже подвязка под дату запрета. и это.. я бы набор записей в ТЗ выгружал, а потом уже транзакцию отменял. как-то так.
#77 by craxx
+ там надо перед выгрузкой прочитать набор записей.
#78 by Ly_Alena
перед выгрузкой итак читает, после выгрузки отменяет.
#79 by Ly_Alena
Не уверена что отсюда взято, но пример кода был такой.
#80 by Ly_Alena
С внешней обработки все работает...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С