Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
21 Янв 2018, 17:46
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Проблема с перезаписью документа  (Прочитано 3296 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн JOG

  • **
  • Сообщений: 77
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-15
  • Сайт: 
  • Профессия: Программист 8.1
Всем привет! Прошу помочь. Проблема в следующем:
Я создаю документ Залог в нем есть реквизит НомерРКО. При записи очередного документа Залог у меня создаётся НовыйДокумент РКО. Где есть некоторые реквизиты, записанные из Залога. Если я перепровожу Документ Залога, у меня создаётся новый документ РКО(очередной), но мне нужно чтобы запись происходила именно того РКО номер которого указан в Залоге.
Я сделал вот таким образом:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Запись в документ РКО
НовыйДокумент = Документы.РКО.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.НомерРКО = Объект.НомерРКО;
НовыйДокумент.Клиент = Объект.Клиент;
НовыйДокумент.Счет = Объект.Счет;
НовыйДокумент.СуммаРКО = Объект.СуммаКредита;
НовыйДокумент.Основание = "По З.Б." + Объект.НомерЗБ;
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
в РКО при перепроводке\перезаписи Залога выходит то, что на скрине


А как сделать перезапись не пойму..
Пробовал делать условие на проведение, то есть
Если (Объект.Проведен <> Истина) Тогда
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
Иначе
НовыйДокумент.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЕсли;

Но в этом случае залог проводится 1 раз, а если я допустим меняю сумму кредита в залоге и провожу, то в РКО суммакредита не занесётся, ибо документ залога уже был проведен.
То есть мне нужно чтобы при проведении данные из залога обновлялись и в РКО уже созданном, а если новый залог, то создавался новый РКО.

Есть мнение что надо написать условие существование Залог.НомерРКО = РКО.НомерЗалог, и от этого плясать? Но как проверить есть он или нет?



Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
НУ так вы с начало находите РКО, что то типа - РКО.НАйтипоНомеру(номер,ДАтаВкакомпериода);
А потом, найденный уже изменяйте
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн JOG

  • **
  • Сообщений: 77
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-15
  • Сайт: 
  • Профессия: Программист 8.1
НУ так вы с начало находите РКО, что то типа - РКО.НАйтипоНомеру(номер,ДАтаВкакомпериода);
А потом, найденный уже изменяйте

У меня проблема с этим,я не понимаю как этим пользоваться. Я так понимаю что функция НайтиПоНомеру выберет определенную строку. А мне нужно любую открываемую брать. Или вместо параметра номер вписать Объект.НомерРКО(то есть тот номер рко который прописан в залоге?)
Добавлено: 22 Ноя 2014, 14:11

НУ так вы с начало находите РКО, что то типа - РКО.НАйтипоНомеру(номер,ДАтаВкакомпериода);
А потом, найденный уже изменяйте

У меня проблема с этим,я не понимаю как этим пользоваться. Я так понимаю что функция НайтиПоНомеру выберет определенную строку. А мне нужно любую открываемую брать. Или вместо параметра номер вписать Объект.НомерРКО(то есть тот номер рко который прописан в залоге?)

Как ни пробовал, не выходит цветочек:(
Может кто поможет?
Грубо говоря надо наверное проверку на существование документа проверять и чтобы у этого документа реквизит НомерРКО совпадал с Залог.НомерРКО. И потом если существует, то сделать "обновление реквизитов". С этим тоже вопрос как обновить реквизиты данными из Залога?
Хоть почитать где скажите..
Добавлено: 23 Ноя 2014, 14:58

НУ так вы с начало находите РКО, что то типа - РКО.НАйтипоНомеру(номер,ДАтаВкакомпериода);
А потом, найденный уже изменяйте

У меня проблема с этим,я не понимаю как этим пользоваться. Я так понимаю что функция НайтиПоНомеру выберет определенную строку. А мне нужно любую открываемую брать. Или вместо параметра номер вписать Объект.НомерРКО(то есть тот номер рко который прописан в залоге?)
Добавлено: 22 Ноя 2014, 14:11

НУ так вы с начало находите РКО, что то типа - РКО.НАйтипоНомеру(номер,ДАтаВкакомпериода);
А потом, найденный уже изменяйте

У меня проблема с этим,я не понимаю как этим пользоваться. Я так понимаю что функция НайтиПоНомеру выберет определенную строку. А мне нужно любую открываемую брать. Или вместо параметра номер вписать Объект.НомерРКО(то есть тот номер рко который прописан в залоге?)

Как ни пробовал, не выходит цветочек:(
Может кто поможет?
Грубо говоря надо наверное проверку на существование документа проверять и чтобы у этого документа реквизит НомерРКО совпадал с Залог.НомерРКО. И потом если существует, то сделать "обновление реквизитов". С этим тоже вопрос как обновить реквизиты данными из Залога?
Хоть почитать где скажите..

Всё, победил. Сделал через НайтиПоРеквизиту) Долго пытал, но результат получил какой нада)
если может кому понадобится.
Суть в том чтобы при проводке 1 документа 2ой не перепроводился, а обновлялся.
ИскомыйРКО = Объект.РКО;
ДокРКО = Документы.РКО;
РезультатПоискаПоРеквизиту = ДокРКО.НайтиПоРеквизиту("НомерРКО",ИскомыйРКО);
Если РезультатПоискаПоРеквизиту = ДокРКО.ПустаяСсылка() Тогда   //если НомерРКО в Документы.РКО не найдет, то создаём новый документ иначе обновляем
НовыйДокумент = Документы.РКО.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.НомерРКО = Объект.НомерРКО;
НовыйДокумент.Клиент = Объект.Клиент;
НовыйДокумент.Счет = Объект.Счет;
НовыйДокумент.СуммаРКО = Объект.СуммаКредита;
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
Иначе
Выборка = ДокРКО.Выбрать();
Пока Выборка.Следующий() Цикл
    ВыборкаОбъект = РезультатПоискаПоРеквизиту.ПолучитьОбъект();
ВыборкаОбъект.НомерРКО = Объект.НомерРКО;
ВыборкаОбъект.Клиент = Объект.Клиент;
ВыборкаОбъект.Счет = Объект.Счет;
ВыборкаОбъект.СуммаРКО = Объект.СуммаКредита;
ВыборкаОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
КонецЕсли;

Последний раз редактировалось: JOG; 23 Ноя 2014, 14:58. Причина: Объединение сообщений

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
1. Зачем документу РКО отдельный реквизит НомерРКО? Ведь есть же стандартный реквизит Номер. И соответственно НайтиПоНомеру()
2. Ладно, пусть будет НайтиПоРеквизиту()... Документ нашелся. Какой сакральный смысл в
    Выборка = ДокРКО.Выбрать();
    Пока Выборка.Следующий() Цикл
        ...
??
Документ нашелся. ОДИН. Зачем тогда гонять цикл по ВСЕМ документам РКО и проводить N раз ОДИН ЕДИНСТВЕННЫЙ документ?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JOG

  • **
  • Сообщений: 77
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-15
  • Сайт: 
  • Профессия: Программист 8.1
1. Зачем документу РКО отдельный реквизит НомерРКО? Ведь есть же стандартный реквизит Номер. И соответственно НайтиПоНомеру()
2. Ладно, пусть будет НайтиПоРеквизиту()... Документ нашелся. Какой сакральный смысл в
    Выборка = ДокРКО.Выбрать();
    Пока Выборка.Следующий() Цикл
        ...
??
Документ нашелся. ОДИН. Зачем тогда гонять цикл по ВСЕМ документам РКО и проводить N раз ОДИН ЕДИНСТВЕННЫЙ документ?

С номером.. так рука взяла)
А по поводу зачем перепроводить, ибо пишу для людей, а люди тыкают "перепроводить". То есть в Залоге могут поменять сумму кредита чисто случайно\специально, а мне нужно чтобы сумма залога отражалась в документеРКО. Стало быть я перепровожу Залог и с ним РКО перепроведется с новой суммой. Не пинайте сильна, учусь жи..:dfbbdrfb:
Добавлено: 29 Ноя 2014, 17:15

С другой стороны, про НомерРКО. Как же его не использовать, если у меня НомерРКО в документе ЗАЛОГ и НомерРКО в документе РКО должны быть одинаковыми, поэтому и будет работать НайтиПоРеквизиту. А если НайтиПоНомеру, то как процедуру построить если у меня Номер в Документ.Залог один, а Номер в Документ.РКО другой? если поможете, буду очень благодарен! Или хотя бы разъясните. Я вот честно не понимаю как использовать функцию НайтиПоНомеру. Она работать будет, если вводить фиксированное значение, то есть НайтиПОНомеру(1, 12112008) тогда найдётся документ с номером один по определенной дате. А мне надо найти Номер документа, который появился на основании Залога. Как тогда переписать правильно?

Последний раз редактировалось: JOG; 29 Ноя 2014, 17:15. Причина: Объединение сообщений

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
появился на основании Залога

вот она - ключевая фраза!
механизм ввода на основании реализуется обычно с помощью реквизита ДокументОснование (в данном случае у РКО) соответствующего типа (в данном случае ДокументСсылка.Залог). С помощью него получаете железобетонную и однозначную связку через ссылку, в то время как номер - штука крайне не надежная....
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
А по поводу зачем перепроводить, ибо пишу для людей, а люди тыкают "перепроводить". То есть в Залоге могут поменять сумму кредита чисто случайно\специально, а мне нужно чтобы сумма залога отражалась в документеРКО. Стало быть я перепровожу Залог и с ним РКО перепроведется с новой суммой.

Цель - понятна. Вопрос вызвала реализация.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JOG

  • **
  • Сообщений: 77
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-15
  • Сайт: 
  • Профессия: Программист 8.1
появился на основании Залога

вот она - ключевая фраза!
механизм ввода на основании реализуется обычно с помощью реквизита ДокументОснование (в данном случае у РКО) соответствующего типа (в данном случае ДокументСсылка.Залог). С помощью него получаете железобетонную и однозначную связку через ссылку, в то время как номер - штука крайне не надежная....

То есть получается при создании документа залог, в ДокументеРКО, у меня будет сразу прописываться Залог.Ссылка в реквизите РКО ДокументОснование? И тогда можно проверять если ДокументОснование = ПустаяСсылка, тогда создать РКО, а если не пустая, то обновить, так? Или надо всё таки через конструктор ввода на основании прописывать все условия?

Я не особо разобрался, как работает Ввод на основании:(
Добавлено: 05 Дек 2014, 13:09

А мне наверное не подойдёт создание на основании документа. Как я понял "на основании" документ всё равно придётся создавать вручную? а мне нужно чтоб он автоматически формировался ведь.:xfbnsdfb:

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Ввод на основании - механизм сугубо условный.
Если например не прописать код в ОбработкеЗаполнения() у РКО, то ваще ничего не произойдет, хотя вроде как бы кнопка ввода на основании имеется. И связь между документами платформой не отслеживается ваще никак. Не пропишете в ОбработкеЗаполнения() заполнения реквизита ДокументОснование - ваще никак не узнаете из какого документа РКО создан.

Т.е. что хочу сказать... Ключевое - реализовать связь, чтобы РКО знал, из какого Залога он создан. Соответственно по ссылке на Залог можно было найти дочерние РКО...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн JOG

  • **
  • Сообщений: 77
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-06-15
  • Сайт: 
  • Профессия: Программист 8.1
Оно?
Если РезультатПоискаПоРеквизиту = ДокРКО.ПустаяСсылка() Тогда   
НовыйДокумент = Документы.РКО.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.НомерРКО = Объект.НомерРКО;
НовыйДокумент.Клиент = Объект.Клиент;
НовыйДокумент.Счет = Объект.Счет;
НовыйДокумент.СуммаРКО = Объект.СуммаКредита;
НовыйДокумент.Основание = "По З.Б." + Объект.НомерЗБ;
НовыйДокумент.ДокументОснование = Объект.Ссылка; // вот тут добавил
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
Иначе
Выборка = ДокРКО.Выбрать();
Пока Выборка.Следующий() Цикл
    ВыборкаОбъект = РезультатПоискаПоРеквизиту.ПолучитьОбъект();
ВыборкаОбъект.Дата = Объект.Дата;
ВыборкаОбъект.НомерРКО = Объект.НомерРКО;
ВыборкаОбъект.Клиент = Объект.Клиент;
ВыборкаОбъект.Счет = Объект.Счет;
ВыборкаОбъект.СуммаРКО = Объект.СуммаКредита;
ВыборкаОбъект.Основание = "По З.Б." + Объект.НомерЗБ;
ВыборкаОбъект.ДокументОснование = Объект.Ссылка; //и тут
ВыборкаОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
КонецЕсли;

А это вывод значений из документа РКО

Добавлено: 05 Дек 2014, 16:20

Не, наверное не оно <_<

Вопрос на засыпку, как проверить создавался ли документ с текущей датой или нет?
Мне просто надо записать расход приход в документ отдельный в табличную часть. И вот я хочу проверить если "сегодня" документ уже создавался, то дописать расходы приходы в таб часть, а если не создавался, то создать.
Что-то в роде НайтиПоРеквизиту(дата) но ругается, говорит нельзя так:dfbsdfbsdf:
Добавлено: 05 Дек 2014, 16:30

А может через пустую дату проверить? о_О

Последний раз редактировалось: JOG; 05 Дек 2014, 16:30. Причина: Объединение сообщений


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4593
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 16224
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4322
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 748
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7874
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
100 Сообщений
AIFrame
66 Сообщений
alex0402
32 Сообщений
kiksi
26 Сообщений
pavl_vs
24 Сообщений
alexandr_ll
18 Сообщений
andron81_81
16 Сообщений
Norfolk
16 Сообщений
KOI8-R
14 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений

* Кто онлайн

  • Точка Гостей: 380
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal